diff --git a/extension/duckdb_scanner/test/test_files/duckdb_scanner.test b/extension/duckdb_scanner/test/test_files/duckdb_scanner.test index 9dd82d97b5..e8c9e29226 100644 --- a/extension/duckdb_scanner/test/test_files/duckdb_scanner.test +++ b/extension/duckdb_scanner/test/test_files/duckdb_scanner.test @@ -57,6 +57,23 @@ Binder exception: No database named tinysnb has been attached. -STATEMENT LOAD FROM tinysnb.person RETURN count(*); ---- 1 8 +-LOG UseDatabaseStatement +-STATEMENT USE other; +---- ok +-STATEMENT LOAD FROM person RETURN *; +---- 4 +1 +2 +3 +5 +-STATEMENT USE tinysnb; +---- ok +-STATEMENT LOAD FROM person RETURN count(*); +---- 1 +8 +-STATEMENT LOAD FROM other.person RETURN count(*); +---- 1 +4 -CASE InvalidDuckDBDatabase -STATEMENT LOAD FROM tinysnb1.person RETURN *; @@ -65,3 +82,8 @@ Binder exception: No database named tinysnb1 has been attached. -STATEMENT LOAD FROM tinysnb1_person RETURN *; ---- error Binder exception: Variable tinysnb1_person is not in scope. + +-CASE InvalidUseDatabaseName +-STATEMENT USE NONEXIST; +---- error +Runtime exception: No database named NONEXIST. diff --git a/scripts/antlr4/Cypher.g4.copy b/scripts/antlr4/Cypher.g4.copy index 392ff316f4..1ec1dc6807 100644 --- a/scripts/antlr4/Cypher.g4.copy +++ b/scripts/antlr4/Cypher.g4.copy @@ -38,7 +38,8 @@ oC_Statement | kU_ExportDatabase | kU_ImportDatabase | kU_AttachDatabase - | kU_DetachDatabase; + | kU_DetachDatabase + | kU_UseDatabase; kU_CopyFrom : COPY SP oC_SchemaName ( ( SP? kU_ColumnNames SP? ) | SP ) FROM SP kU_ScanSource ( SP? kU_ParsingOptions )? ; @@ -76,6 +77,12 @@ DBTYPE: kU_DetachDatabase : DETACH SP oC_SchemaName; +kU_UseDatabase + : USE SP oC_SchemaName; + +USE: + ( 'U' | 'u') ( 'S' | 's') ( 'E' | 'e'); + kU_StandaloneCall : CALL SP oC_SymbolicName SP? '=' SP? oC_Literal ; @@ -779,6 +786,7 @@ kU_NonReservedKeywords | IMPORT | EXPORT | DATABASE + | USE ; UnescapedSymbolicName diff --git a/src/antlr4/Cypher.g4 b/src/antlr4/Cypher.g4 index 392ff316f4..1ec1dc6807 100644 --- a/src/antlr4/Cypher.g4 +++ b/src/antlr4/Cypher.g4 @@ -38,7 +38,8 @@ oC_Statement | kU_ExportDatabase | kU_ImportDatabase | kU_AttachDatabase - | kU_DetachDatabase; + | kU_DetachDatabase + | kU_UseDatabase; kU_CopyFrom : COPY SP oC_SchemaName ( ( SP? kU_ColumnNames SP? ) | SP ) FROM SP kU_ScanSource ( SP? kU_ParsingOptions )? ; @@ -76,6 +77,12 @@ DBTYPE: kU_DetachDatabase : DETACH SP oC_SchemaName; +kU_UseDatabase + : USE SP oC_SchemaName; + +USE: + ( 'U' | 'u') ( 'S' | 's') ( 'E' | 'e'); + kU_StandaloneCall : CALL SP oC_SymbolicName SP? '=' SP? oC_Literal ; @@ -779,6 +786,7 @@ kU_NonReservedKeywords | IMPORT | EXPORT | DATABASE + | USE ; UnescapedSymbolicName diff --git a/src/binder/bind/CMakeLists.txt b/src/binder/bind/CMakeLists.txt index 94a306f249..76d8ab81e2 100644 --- a/src/binder/bind/CMakeLists.txt +++ b/src/binder/bind/CMakeLists.txt @@ -21,7 +21,8 @@ add_library( bind_updating_clause.cpp bind_extension.cpp bind_export_database.cpp - bind_import_database.cpp) + bind_import_database.cpp + bind_use_database.cpp) set(ALL_OBJECT_FILES ${ALL_OBJECT_FILES} $ diff --git a/src/binder/bind/bind_attach_database.cpp b/src/binder/bind/bind_attach_database.cpp index cad7a9b2bf..6780d98e07 100644 --- a/src/binder/bind/bind_attach_database.cpp +++ b/src/binder/bind/bind_attach_database.cpp @@ -1,14 +1,12 @@ #include "binder/binder.h" #include "binder/bound_attach_database.h" -#include "common/cast.h" #include "parser/attach_database.h" namespace kuzu { namespace binder { std::unique_ptr Binder::bindAttachDatabase(const parser::Statement& statement) { - auto& attachDatabase = - common::ku_dynamic_cast(statement); + auto& attachDatabase = statement.constCast(); return std::make_unique(attachDatabase.getAttachInfo()); } diff --git a/src/binder/bind/bind_detach_database.cpp b/src/binder/bind/bind_detach_database.cpp index 849bd2311a..41177b3fb3 100644 --- a/src/binder/bind/bind_detach_database.cpp +++ b/src/binder/bind/bind_detach_database.cpp @@ -1,14 +1,12 @@ #include "binder/binder.h" #include "binder/bound_detach_database.h" -#include "common/cast.h" #include "parser/detach_database.h" namespace kuzu { namespace binder { std::unique_ptr Binder::bindDetachDatabase(const parser::Statement& statement) { - auto& detachDatabase = - common::ku_dynamic_cast(statement); + auto& detachDatabase = statement.constCast(); return std::make_unique(detachDatabase.getDBName()); } diff --git a/src/binder/bind/bind_use_database.cpp b/src/binder/bind/bind_use_database.cpp new file mode 100644 index 0000000000..83a3762518 --- /dev/null +++ b/src/binder/bind/bind_use_database.cpp @@ -0,0 +1,14 @@ +#include "binder/binder.h" +#include "binder/bound_use_database.h" +#include "parser/use_database.h" + +namespace kuzu { +namespace binder { + +std::unique_ptr Binder::bindUseDatabase(const parser::Statement& statement) { + auto useDatabase = statement.constCast(); + return std::make_unique(useDatabase.getDBName()); +} + +} // namespace binder +} // namespace kuzu diff --git a/src/binder/bind/read/bind_load_from.cpp b/src/binder/bind/read/bind_load_from.cpp index b13dec12ee..e8ccac67ae 100644 --- a/src/binder/bind/read/bind_load_from.cpp +++ b/src/binder/bind/read/bind_load_from.cpp @@ -16,6 +16,22 @@ using namespace kuzu::catalog; namespace kuzu { namespace binder { +static TableFunction getObjectScanFunc(const ObjectScanSource* objectSource, + main::ClientContext* clientContext) { + // Bind external database table + auto dbName = objectSource->objectNames[0]; + auto attachedDB = clientContext->getDatabaseManager()->getAttachedDatabase(dbName); + if (attachedDB == nullptr) { + throw BinderException{stringFormat("No database named {} has been attached.", dbName)}; + } + auto tableName = objectSource->objectNames[1]; + auto attachedCatalog = attachedDB->getCatalogContent(); + auto tableID = attachedCatalog->getTableID(tableName); + auto entry = attachedCatalog->getTableCatalogEntry(tableID); + auto tableEntry = ku_dynamic_cast(entry); + return tableEntry->getScanFunction(); +} + std::unique_ptr Binder::bindLoadFrom(const ReadingClause& readingClause) { auto& loadFrom = readingClause.constCast(); TableFunction scanFunction; @@ -23,31 +39,26 @@ std::unique_ptr Binder::bindLoadFrom(const ReadingClause& re auto source = loadFrom.getSource(); switch (source->type) { case ScanSourceType::OBJECT: { - auto objectSource = source->constPtrCast(); + auto objectSource = reinterpret_cast(source); KU_ASSERT(!objectSource->objectNames.empty()); if (objectSource->objectNames.size() == 1) { // Bind external object as table auto objectName = objectSource->objectNames[0]; auto replacementData = clientContext->tryReplace(objectName); - if (replacementData == nullptr) { + if (replacementData != nullptr) { + scanFunction = replacementData->func; + bindData = scanFunction.bindFunc(clientContext, &replacementData->bindInput); + } else if (clientContext->getDatabaseManager()->hasDefaultDatabase()) { + objectSource->objectNames.insert(objectSource->objectNames.begin(), + clientContext->getDatabaseManager()->getDefaultDatabase()); + scanFunction = getObjectScanFunc(objectSource, clientContext); + auto bindInput = function::TableFuncBindInput(); + bindData = scanFunction.bindFunc(clientContext, &bindInput); + } else { throw BinderException(ExceptionMessage::variableNotInScope(objectName)); } - scanFunction = replacementData->func; - bindData = scanFunction.bindFunc(clientContext, &replacementData->bindInput); } else if (objectSource->objectNames.size() == 2) { - // Bind external database table - auto dbName = objectSource->objectNames[0]; - auto attachedDB = clientContext->getDatabaseManager()->getAttachedDatabase(dbName); - if (attachedDB == nullptr) { - throw BinderException{ - stringFormat("No database named {} has been attached.", dbName)}; - } - auto tableName = objectSource->objectNames[1]; - auto attachedCatalog = attachedDB->getCatalogContent(); - auto tableID = attachedCatalog->getTableID(tableName); - auto entry = attachedCatalog->getTableCatalogEntry(tableID); - auto tableEntry = ku_dynamic_cast(entry); - scanFunction = tableEntry->getScanFunction(); + scanFunction = getObjectScanFunc(objectSource, clientContext); auto bindInput = function::TableFuncBindInput(); bindData = scanFunction.bindFunc(clientContext, &bindInput); } else { diff --git a/src/binder/binder.cpp b/src/binder/binder.cpp index cadf737cc2..27267b2754 100644 --- a/src/binder/binder.cpp +++ b/src/binder/binder.cpp @@ -74,6 +74,9 @@ std::unique_ptr Binder::bind(const Statement& statement) { case StatementType::DETACH_DATABASE: { boundStatement = bindDetachDatabase(statement); } break; + case StatementType::USE_DATABASE: { + boundStatement = bindUseDatabase(statement); + } break; default: { KU_UNREACHABLE; } diff --git a/src/binder/bound_statement_visitor.cpp b/src/binder/bound_statement_visitor.cpp index ce00260db7..2b58d4d0ad 100644 --- a/src/binder/bound_statement_visitor.cpp +++ b/src/binder/bound_statement_visitor.cpp @@ -61,6 +61,9 @@ void BoundStatementVisitor::visit(const BoundStatement& statement) { case StatementType::DETACH_DATABASE: { visitDetachDatabase(statement); } break; + case StatementType::USE_DATABASE: { + visitUseDatabase(statement); + } break; default: KU_UNREACHABLE; } diff --git a/src/include/binder/binder.h b/src/include/binder/binder.h index 4e8c6ab7f5..ffd6734bb0 100644 --- a/src/include/binder/binder.h +++ b/src/include/binder/binder.h @@ -119,6 +119,7 @@ class Binder { std::unique_ptr bindAttachDatabase(const parser::Statement& statement); std::unique_ptr bindDetachDatabase(const parser::Statement& statement); + std::unique_ptr bindUseDatabase(const parser::Statement& statement); /*** bind scan source ***/ std::unique_ptr bindScanSource(parser::BaseScanSource* scanSource, diff --git a/src/include/binder/bound_database_statement.h b/src/include/binder/bound_database_statement.h new file mode 100644 index 0000000000..ab2502e40d --- /dev/null +++ b/src/include/binder/bound_database_statement.h @@ -0,0 +1,21 @@ +#pragma once + +#include "binder/bound_statement.h" + +namespace kuzu { +namespace binder { + +class BoundDatabaseStatement : public BoundStatement { +public: + explicit BoundDatabaseStatement(common::StatementType statementType, std::string dbName) + : BoundStatement{statementType, BoundStatementResult::createEmptyResult()}, + dbName{std::move(dbName)} {} + + std::string getDBName() const { return dbName; } + +private: + std::string dbName; +}; + +} // namespace binder +} // namespace kuzu diff --git a/src/include/binder/bound_detach_database.h b/src/include/binder/bound_detach_database.h index a99f88372b..34d37da8fc 100644 --- a/src/include/binder/bound_detach_database.h +++ b/src/include/binder/bound_detach_database.h @@ -1,21 +1,14 @@ #pragma once -#include "binder/bound_statement.h" +#include "binder/bound_database_statement.h" namespace kuzu { namespace binder { -class BoundDetachDatabase final : public BoundStatement { +class BoundDetachDatabase final : public BoundDatabaseStatement { public: explicit BoundDetachDatabase(std::string dbName) - : BoundStatement{common::StatementType::DETACH_DATABASE, - BoundStatementResult::createEmptyResult()}, - dbName{std::move(dbName)} {} - - std::string getDBName() const { return dbName; } - -private: - std::string dbName; + : BoundDatabaseStatement{common::StatementType::DETACH_DATABASE, std::move(dbName)} {} }; } // namespace binder diff --git a/src/include/binder/bound_statement_visitor.h b/src/include/binder/bound_statement_visitor.h index efcd4318a3..b14d0a3965 100644 --- a/src/include/binder/bound_statement_visitor.h +++ b/src/include/binder/bound_statement_visitor.h @@ -50,6 +50,7 @@ class BoundStatementVisitor { virtual void visitProjectionBodyPredicate(const std::shared_ptr& /* predicate*/) {} virtual void visitAttachDatabase(const BoundStatement&) {} virtual void visitDetachDatabase(const BoundStatement&) {} + virtual void visitUseDatabase(const BoundStatement&) {} }; } // namespace binder diff --git a/src/include/binder/bound_use_database.h b/src/include/binder/bound_use_database.h new file mode 100644 index 0000000000..346a697840 --- /dev/null +++ b/src/include/binder/bound_use_database.h @@ -0,0 +1,15 @@ +#pragma once + +#include "binder/bound_database_statement.h" + +namespace kuzu { +namespace binder { + +class BoundUseDatabase final : public BoundDatabaseStatement { +public: + explicit BoundUseDatabase(std::string dbName) + : BoundDatabaseStatement{common::StatementType::USE_DATABASE, std::move(dbName)} {} +}; + +} // namespace binder +} // namespace kuzu diff --git a/src/include/common/enums/statement_type.h b/src/include/common/enums/statement_type.h index 6bc13472b9..58cedb14c6 100644 --- a/src/include/common/enums/statement_type.h +++ b/src/include/common/enums/statement_type.h @@ -22,6 +22,7 @@ enum class StatementType : uint8_t { IMPORT_DATABASE = 33, ATTACH_DATABASE = 34, DETACH_DATABASE = 35, + USE_DATABASE = 36, }; struct StatementTypeUtils { diff --git a/src/include/main/database_manager.h b/src/include/main/database_manager.h index 35be0a6738..961dfe37eb 100644 --- a/src/include/main/database_manager.h +++ b/src/include/main/database_manager.h @@ -7,12 +7,18 @@ namespace main { class DatabaseManager { public: + DatabaseManager(); + void registerAttachedDatabase(std::unique_ptr attachedDatabase); AttachedDatabase* getAttachedDatabase(const std::string& name); void detachDatabase(const std::string& databaseName); + std::string getDefaultDatabase() const { return defaultDatabase; } + bool hasDefaultDatabase() const { return defaultDatabase != ""; } + void setDefaultDatabase(const std::string& databaseName); private: std::vector> attachedDatabases; + std::string defaultDatabase; }; } // namespace main diff --git a/src/include/parser/database_statement.h b/src/include/parser/database_statement.h new file mode 100644 index 0000000000..1056f7bada --- /dev/null +++ b/src/include/parser/database_statement.h @@ -0,0 +1,22 @@ +#pragma once + +#include + +#include "parser/statement.h" + +namespace kuzu { +namespace parser { + +class DatabaseStatement : public Statement { +public: + explicit DatabaseStatement(common::StatementType type, std::string dbName) + : Statement{type}, dbName{std::move(dbName)} {} + + std::string getDBName() const { return dbName; } + +private: + std::string dbName; +}; + +} // namespace parser +} // namespace kuzu diff --git a/src/include/parser/detach_database.h b/src/include/parser/detach_database.h index 5a9b4f6bbe..13e3f83ff5 100644 --- a/src/include/parser/detach_database.h +++ b/src/include/parser/detach_database.h @@ -2,20 +2,15 @@ #include -#include "parser/statement.h" +#include "parser/database_statement.h" namespace kuzu { namespace parser { -class DetachDatabase final : public Statement { +class DetachDatabase final : public DatabaseStatement { public: explicit DetachDatabase(std::string dbName) - : Statement{common::StatementType::DETACH_DATABASE}, dbName{std::move(dbName)} {} - - std::string getDBName() const { return dbName; } - -private: - std::string dbName; + : DatabaseStatement{common::StatementType::DETACH_DATABASE, std::move(dbName)} {} }; } // namespace parser diff --git a/src/include/parser/parsed_statement_visitor.h b/src/include/parser/parsed_statement_visitor.h index 73673d1609..ed7e6b2724 100644 --- a/src/include/parser/parsed_statement_visitor.h +++ b/src/include/parser/parsed_statement_visitor.h @@ -52,6 +52,7 @@ class StatementVisitor { virtual void visitImportDatabase(const Statement& /*statement*/) {} virtual void visitAttachDatabase(const Statement& /*statement*/) {} virtual void visitDetachDatabase(const Statement& /*statement*/) {} + virtual void visitUseDatabase(const Statement& /*statement*/) {} // LCOV_EXCL_STOP }; diff --git a/src/include/parser/transformer.h b/src/include/parser/transformer.h index a44a9f25bb..db4f4ccbd2 100644 --- a/src/include/parser/transformer.h +++ b/src/include/parser/transformer.h @@ -218,9 +218,10 @@ class Transformer { // Transform comment on. std::unique_ptr transformCommentOn(CypherParser::KU_CommentOnContext& ctx); - // Transform attach/detach database. + // Transform attach/detach/use database. std::unique_ptr transformAttachDatabase(CypherParser::KU_AttachDatabaseContext& ctx); std::unique_ptr transformDetachDatabase(CypherParser::KU_DetachDatabaseContext& ctx); + std::unique_ptr transformUseDatabase(CypherParser::KU_UseDatabaseContext& ctx); private: CypherParser::Ku_StatementsContext& root; diff --git a/src/include/parser/use_database.h b/src/include/parser/use_database.h new file mode 100644 index 0000000000..2d3cedc515 --- /dev/null +++ b/src/include/parser/use_database.h @@ -0,0 +1,15 @@ +#pragma once + +#include "parser/database_statement.h" + +namespace kuzu { +namespace parser { + +class UseDatabase final : public DatabaseStatement { +public: + explicit UseDatabase(std::string dbName) + : DatabaseStatement{common::StatementType::USE_DATABASE, std::move(dbName)} {} +}; + +} // namespace parser +} // namespace kuzu diff --git a/src/include/planner/operator/logical_database.h b/src/include/planner/operator/logical_database.h new file mode 100644 index 0000000000..e41ab1ca27 --- /dev/null +++ b/src/include/planner/operator/logical_database.h @@ -0,0 +1,25 @@ +#pragma once + +#include "planner/operator/logical_operator.h" + +namespace kuzu { +namespace planner { + +class LogicalDatabase : public LogicalOperator { +public: + explicit LogicalDatabase(LogicalOperatorType operatorType, std::string dbName) + : LogicalOperator{operatorType}, dbName{std::move(dbName)} {} + + std::string getDBName() const { return dbName; } + + std::string getExpressionsForPrinting() const override { return dbName; } + + void computeFactorizedSchema() override { createEmptySchema(); } + void computeFlatSchema() override { createEmptySchema(); } + +protected: + std::string dbName; +}; + +} // namespace planner +} // namespace kuzu diff --git a/src/include/planner/operator/logical_detach_database.h b/src/include/planner/operator/logical_detach_database.h index feaa712b4e..802d02b1db 100644 --- a/src/include/planner/operator/logical_detach_database.h +++ b/src/include/planner/operator/logical_detach_database.h @@ -1,28 +1,18 @@ #pragma once -#include "planner/operator/logical_operator.h" +#include "planner/operator/logical_database.h" namespace kuzu { namespace planner { -class LogicalDetachDatabase final : public LogicalOperator { +class LogicalDetachDatabase final : public LogicalDatabase { public: explicit LogicalDetachDatabase(std::string dbName) - : LogicalOperator{LogicalOperatorType::DETACH_DATABASE}, dbName{std::move(dbName)} {} - - std::string getDBName() const { return dbName; } - - std::string getExpressionsForPrinting() const override { return dbName; } - - void computeFactorizedSchema() override { createEmptySchema(); } - void computeFlatSchema() override { createEmptySchema(); } + : LogicalDatabase{LogicalOperatorType::DETACH_DATABASE, std::move(dbName)} {} std::unique_ptr copy() override { return std::make_unique(dbName); } - -private: - std::string dbName; }; } // namespace planner diff --git a/src/include/planner/operator/logical_operator.h b/src/include/planner/operator/logical_operator.h index 17b83feebb..76c43cb550 100644 --- a/src/include/planner/operator/logical_operator.h +++ b/src/include/planner/operator/logical_operator.h @@ -55,6 +55,7 @@ enum class LogicalOperatorType : uint8_t { TRANSACTION, UNION_ALL, UNWIND, + USE_DATABASE, EXTENSION, EXPORT_DATABASE, IMPORT_DATABASE, diff --git a/src/include/planner/operator/logical_use_database.h b/src/include/planner/operator/logical_use_database.h new file mode 100644 index 0000000000..4845e89a64 --- /dev/null +++ b/src/include/planner/operator/logical_use_database.h @@ -0,0 +1,19 @@ +#pragma once + +#include "planner/operator/logical_database.h" + +namespace kuzu { +namespace planner { + +class LogicalUseDatabase final : public LogicalDatabase { +public: + explicit LogicalUseDatabase(std::string dbName) + : LogicalDatabase{LogicalOperatorType::USE_DATABASE, std::move(dbName)} {} + + std::unique_ptr copy() override { + return std::make_unique(dbName); + } +}; + +} // namespace planner +} // namespace kuzu diff --git a/src/include/planner/planner.h b/src/include/planner/planner.h index 009d267feb..cb3fb99890 100644 --- a/src/include/planner/planner.h +++ b/src/include/planner/planner.h @@ -52,6 +52,7 @@ class Planner { void appendExtension(const binder::BoundStatement& statement, LogicalPlan& plan); void appendAttachDatabase(const binder::BoundStatement& statement, LogicalPlan& plan); void appendDetachDatabase(const binder::BoundStatement& statement, LogicalPlan& plan); + void appendUseDatabase(const binder::BoundStatement& statement, LogicalPlan& plan); // Plan copy. std::unique_ptr planCopyTo(const binder::BoundStatement& statement); diff --git a/src/include/processor/operator/database_operator.h b/src/include/processor/operator/database_operator.h new file mode 100644 index 0000000000..761cc4e5b3 --- /dev/null +++ b/src/include/processor/operator/database_operator.h @@ -0,0 +1,22 @@ +#pragma once + +#include "processor/operator/physical_operator.h" + +namespace kuzu { +namespace processor { + +class DatabaseOperator : public PhysicalOperator { +public: + DatabaseOperator(PhysicalOperatorType physicalOperator, std::string dbName, uint32_t id, + const std::string& paramsString) + : PhysicalOperator{physicalOperator, id, paramsString}, dbName{std::move(dbName)} {} + + bool isSource() const override { return true; } + bool canParallel() const override { return false; } + +protected: + std::string dbName; +}; + +} // namespace processor +} // namespace kuzu diff --git a/src/include/processor/operator/detach_database.h b/src/include/processor/operator/detach_database.h index f40304eab6..0f7183ea0d 100644 --- a/src/include/processor/operator/detach_database.h +++ b/src/include/processor/operator/detach_database.h @@ -1,27 +1,21 @@ #pragma once -#include "processor/operator/physical_operator.h" +#include "processor/operator/database_operator.h" namespace kuzu { namespace processor { -class DetachDatabase final : public PhysicalOperator { +class DetachDatabase final : public DatabaseOperator { public: DetachDatabase(std::string dbName, uint32_t id, const std::string& paramsString) - : PhysicalOperator{PhysicalOperatorType::DETACH_DATABASE, id, paramsString}, - dbName{std::move(dbName)} {} - - bool isSource() const override { return true; } - bool canParallel() const override { return false; } + : DatabaseOperator{PhysicalOperatorType::DETACH_DATABASE, std::move(dbName), id, + paramsString} {} bool getNextTuplesInternal(ExecutionContext* context) override; std::unique_ptr clone() override { return std::make_unique(dbName, id, paramsString); } - -private: - std::string dbName; }; } // namespace processor diff --git a/src/include/processor/operator/physical_operator.h b/src/include/processor/operator/physical_operator.h index 203329da2a..cd95e1fefb 100644 --- a/src/include/processor/operator/physical_operator.h +++ b/src/include/processor/operator/physical_operator.h @@ -68,6 +68,7 @@ enum class PhysicalOperatorType : uint8_t { ORDER_BY_SCAN, UNION_ALL_SCAN, UNWIND, + USE_DATABASE, }; class PhysicalOperatorUtils { diff --git a/src/include/processor/operator/use_database.h b/src/include/processor/operator/use_database.h new file mode 100644 index 0000000000..5a90e7a8ba --- /dev/null +++ b/src/include/processor/operator/use_database.h @@ -0,0 +1,22 @@ +#pragma once + +#include "processor/operator/database_operator.h" + +namespace kuzu { +namespace processor { + +class UseDatabase final : public DatabaseOperator { +public: + UseDatabase(std::string dbName, uint32_t id, const std::string& paramsString) + : DatabaseOperator{PhysicalOperatorType::USE_DATABASE, std::move(dbName), id, + paramsString} {} + + bool getNextTuplesInternal(ExecutionContext* context) override; + + std::unique_ptr clone() override { + return std::make_unique(dbName, id, paramsString); + } +}; + +} // namespace processor +} // namespace kuzu diff --git a/src/include/processor/plan_mapper.h b/src/include/processor/plan_mapper.h index 0f29515846..df31ba649f 100644 --- a/src/include/processor/plan_mapper.h +++ b/src/include/processor/plan_mapper.h @@ -96,6 +96,7 @@ class PlanMapper { std::unique_ptr mapImportDatabase(planner::LogicalOperator* logicalOperator); std::unique_ptr mapAttachDatabase(planner::LogicalOperator* logicalOperator); std::unique_ptr mapDetachDatabase(planner::LogicalOperator* logicalOperator); + std::unique_ptr mapUseDatabase(planner::LogicalOperator* logicalOperator); std::unique_ptr createCopyRel( std::shared_ptr partitionerSharedState, diff --git a/src/main/database_manager.cpp b/src/main/database_manager.cpp index 23dc3d111f..588da9eec2 100644 --- a/src/main/database_manager.cpp +++ b/src/main/database_manager.cpp @@ -1,11 +1,17 @@ #include "main/database_manager.h" +#include "common/exception/runtime.h" #include "common/string_utils.h" namespace kuzu { namespace main { +DatabaseManager::DatabaseManager() : defaultDatabase{""} {} + void DatabaseManager::registerAttachedDatabase(std::unique_ptr attachedDatabase) { + if (defaultDatabase == "") { + defaultDatabase = attachedDatabase->getDBName(); + } attachedDatabases.push_back(std::move(attachedDatabase)); } @@ -34,5 +40,12 @@ void DatabaseManager::detachDatabase(const std::string& databaseName) { KU_UNREACHABLE; } +void DatabaseManager::setDefaultDatabase(const std::string& databaseName) { + if (getAttachedDatabase(databaseName) == nullptr) { + throw common::RuntimeException{common::stringFormat("No database named {}.", databaseName)}; + } + defaultDatabase = databaseName; +} + } // namespace main } // namespace kuzu diff --git a/src/parser/parsed_statement_visitor.cpp b/src/parser/parsed_statement_visitor.cpp index 957e843f5b..a2cf8bb616 100644 --- a/src/parser/parsed_statement_visitor.cpp +++ b/src/parser/parsed_statement_visitor.cpp @@ -59,6 +59,9 @@ void StatementVisitor::visit(const Statement& statement) { case StatementType::DETACH_DATABASE: { visitDetachDatabase(statement); } break; + case StatementType::USE_DATABASE: { + visitUseDatabase(statement); + } break; default: KU_UNREACHABLE; } diff --git a/src/parser/transform/CMakeLists.txt b/src/parser/transform/CMakeLists.txt index e98fe0caa0..082abf0c4a 100644 --- a/src/parser/transform/CMakeLists.txt +++ b/src/parser/transform/CMakeLists.txt @@ -15,7 +15,8 @@ add_library(kuzu_parser_transform transform_extension.cpp transform_port_db.cpp transform_attach_database.cpp - transform_detach_database.cpp) + transform_detach_database.cpp + transform_use_database.cpp) set(ALL_OBJECT_FILES ${ALL_OBJECT_FILES} $ diff --git a/src/parser/transform/transform_use_database.cpp b/src/parser/transform/transform_use_database.cpp new file mode 100644 index 0000000000..91bbed5678 --- /dev/null +++ b/src/parser/transform/transform_use_database.cpp @@ -0,0 +1,14 @@ +#include "parser/transformer.h" +#include "parser/use_database.h" + +namespace kuzu { +namespace parser { + +std::unique_ptr Transformer::transformUseDatabase( + CypherParser::KU_UseDatabaseContext& ctx) { + auto dbName = transformSchemaName(*ctx.oC_SchemaName()); + return std::make_unique(std::move(dbName)); +} + +} // namespace parser +} // namespace kuzu diff --git a/src/parser/transformer.cpp b/src/parser/transformer.cpp index dc9d59a00e..5db7babfad 100644 --- a/src/parser/transformer.cpp +++ b/src/parser/transformer.cpp @@ -66,6 +66,8 @@ std::unique_ptr Transformer::transformStatement(CypherParser::OC_Stat return transformAttachDatabase(*ctx.kU_AttachDatabase()); } else if (ctx.kU_DetachDatabase()) { return transformDetachDatabase(*ctx.kU_DetachDatabase()); + } else if (ctx.kU_UseDatabase()) { + return transformUseDatabase(*ctx.kU_UseDatabase()); } else { KU_UNREACHABLE; } diff --git a/src/planner/plan/append_simple.cpp b/src/planner/plan/append_simple.cpp index 5765caf6cd..d0460b6e3b 100644 --- a/src/planner/plan/append_simple.cpp +++ b/src/planner/plan/append_simple.cpp @@ -6,6 +6,7 @@ #include "binder/bound_extension_statement.h" #include "binder/bound_standalone_call.h" #include "binder/bound_transaction_statement.h" +#include "binder/bound_use_database.h" #include "binder/ddl/bound_alter.h" #include "binder/ddl/bound_create_table.h" #include "binder/ddl/bound_drop_table.h" @@ -21,6 +22,7 @@ #include "planner/operator/logical_extension.h" #include "planner/operator/logical_standalone_call.h" #include "planner/operator/logical_transaction.h" +#include "planner/operator/logical_use_database.h" #include "planner/planner.h" using namespace kuzu::binder; @@ -117,5 +119,13 @@ void Planner::appendDetachDatabase(const BoundStatement& statement, LogicalPlan& plan.setLastOperator(std::move(detachDatabase)); } +void Planner::appendUseDatabase(const BoundStatement& statement, LogicalPlan& plan) { + auto& boundUseDatabase = + common::ku_dynamic_cast( + statement); + auto useDatabase = std::make_shared(boundUseDatabase.getDBName()); + plan.setLastOperator(std::move(useDatabase)); +} + } // namespace planner } // namespace kuzu diff --git a/src/planner/planner.cpp b/src/planner/planner.cpp index a59e944de9..050096f398 100644 --- a/src/planner/planner.cpp +++ b/src/planner/planner.cpp @@ -69,6 +69,9 @@ std::unique_ptr Planner::getBestPlan(const BoundStatement& statemen case StatementType::DETACH_DATABASE: { appendDetachDatabase(statement, *plan); } break; + case StatementType::USE_DATABASE: { + appendUseDatabase(statement, *plan); + } break; default: KU_UNREACHABLE; } diff --git a/src/processor/map/CMakeLists.txt b/src/processor/map/CMakeLists.txt index c7aa880fcd..080b92259f 100644 --- a/src/processor/map/CMakeLists.txt +++ b/src/processor/map/CMakeLists.txt @@ -49,6 +49,7 @@ add_library(kuzu_processor_mapper map_transaction.cpp map_union.cpp map_unwind.cpp + map_use_database.cpp map_port_db.cpp plan_mapper.cpp) diff --git a/src/processor/map/map_attach_database.cpp b/src/processor/map/map_attach_database.cpp index c8dbd5d1c1..aca3403c64 100644 --- a/src/processor/map/map_attach_database.cpp +++ b/src/processor/map/map_attach_database.cpp @@ -9,8 +9,7 @@ using namespace kuzu::planner; std::unique_ptr PlanMapper::mapAttachDatabase( planner::LogicalOperator* logicalOperator) { - auto attachDatabase = - common::ku_dynamic_cast(logicalOperator); + auto attachDatabase = logicalOperator->constPtrCast(); return std::make_unique(attachDatabase->getAttachInfo(), getOperatorID(), attachDatabase->getExpressionsForPrinting()); } diff --git a/src/processor/map/map_detach_database.cpp b/src/processor/map/map_detach_database.cpp index be70e803e9..c53699a15e 100644 --- a/src/processor/map/map_detach_database.cpp +++ b/src/processor/map/map_detach_database.cpp @@ -9,8 +9,7 @@ using namespace kuzu::planner; std::unique_ptr PlanMapper::mapDetachDatabase( planner::LogicalOperator* logicalOperator) { - auto detachDatabase = - common::ku_dynamic_cast(logicalOperator); + auto detachDatabase = logicalOperator->constPtrCast(); return std::make_unique(detachDatabase->getDBName(), getOperatorID(), detachDatabase->getExpressionsForPrinting()); } diff --git a/src/processor/map/map_use_database.cpp b/src/processor/map/map_use_database.cpp new file mode 100644 index 0000000000..30f1a02c83 --- /dev/null +++ b/src/processor/map/map_use_database.cpp @@ -0,0 +1,18 @@ +#include "planner/operator/logical_use_database.h" +#include "processor/operator/use_database.h" +#include "processor/plan_mapper.h" + +namespace kuzu { +namespace processor { + +using namespace kuzu::planner; + +std::unique_ptr PlanMapper::mapUseDatabase( + planner::LogicalOperator* logicalOperator) { + auto useDatabase = logicalOperator->constPtrCast(); + return std::make_unique(useDatabase->getDBName(), getOperatorID(), + useDatabase->getExpressionsForPrinting()); +} + +} // namespace processor +} // namespace kuzu diff --git a/src/processor/map/plan_mapper.cpp b/src/processor/map/plan_mapper.cpp index c09c950ee5..137ef19ad3 100644 --- a/src/processor/map/plan_mapper.cpp +++ b/src/processor/map/plan_mapper.cpp @@ -183,6 +183,9 @@ std::unique_ptr PlanMapper::mapOperator(LogicalOperator* logic case LogicalOperatorType::DETACH_DATABASE: { physicalOperator = mapDetachDatabase(logicalOperator); } break; + case LogicalOperatorType::USE_DATABASE: { + physicalOperator = mapUseDatabase(logicalOperator); + } break; default: KU_UNREACHABLE; } diff --git a/src/processor/operator/CMakeLists.txt b/src/processor/operator/CMakeLists.txt index 4fd828a49d..8c6f307aed 100644 --- a/src/processor/operator/CMakeLists.txt +++ b/src/processor/operator/CMakeLists.txt @@ -35,7 +35,8 @@ add_library(kuzu_processor_operator semi_masker.cpp skip.cpp transaction.cpp - unwind.cpp) + unwind.cpp + use_database.cpp) set(ALL_OBJECT_FILES ${ALL_OBJECT_FILES} $ diff --git a/src/processor/operator/use_database.cpp b/src/processor/operator/use_database.cpp new file mode 100644 index 0000000000..1b18a4d228 --- /dev/null +++ b/src/processor/operator/use_database.cpp @@ -0,0 +1,15 @@ +#include "processor/operator/use_database.h" + +#include "main/database_manager.h" + +namespace kuzu { +namespace processor { + +bool UseDatabase::getNextTuplesInternal(kuzu::processor::ExecutionContext* context) { + auto dbManager = context->clientContext->getDatabaseManager(); + dbManager->setDefaultDatabase(dbName); + return false; +} + +} // namespace processor +} // namespace kuzu diff --git a/test/c_api/database_test.cpp b/test/c_api/database_test.cpp index 805a384b73..866e0bf899 100644 --- a/test/c_api/database_test.cpp +++ b/test/c_api/database_test.cpp @@ -65,3 +65,21 @@ TEST_F(CApiDatabaseTest, CreationHomeDir) { ASSERT_NE(database, nullptr); kuzu_database_destroy(database); } + +TEST_F(CApiDatabaseTest, CreationHomeDir1) { + createDBAndConn(); + conn->query("load extension " + "\"/Users/z473chen/Desktop/code/kuzu/extension/duckdb_scanner/build/" + "libduckdb_scanner.kuzu_extension\""); + conn->query("ATTACH " + "'/Users/z473chen/Desktop/code/kuzu/extension/duckdb_scanner/test/duckdb_database/" + "tinysnb.db' " + "as tinysnb (dbtype 'duckdb');"); + conn->query("ATTACH " + "'/Users/z473chen/Desktop/code/kuzu/extension/duckdb_scanner/test/duckdb_database/" + "other.db' " + "as other (dbtype 'duckdb');"); + printf("%s", conn->query("load from person return *;")->toString().c_str()); + printf("%s", conn->query("use other")->toString().c_str()); + printf("%s", conn->query("load from person return *;")->toString().c_str()); +} diff --git a/third_party/antlr4_cypher/cypher_lexer.cpp b/third_party/antlr4_cypher/cypher_lexer.cpp index 941952d1e1..f9f9c3e7d3 100644 --- a/third_party/antlr4_cypher/cypher_lexer.cpp +++ b/third_party/antlr4_cypher/cypher_lexer.cpp @@ -62,26 +62,26 @@ void cypherlexerLexerInitialize() { "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", - "T__41", "T__42", "T__43", "T__44", "ATTACH", "DBTYPE", "CALL", "COMMENT_", - "MACRO", "GLOB", "COPY", "FROM", "COLUMN", "EXPORT", "IMPORT", "DATABASE", - "NODE", "TABLE", "GROUP", "RDFGRAPH", "DROP", "ALTER", "DEFAULT", - "RENAME", "ADD", "PRIMARY", "KEY", "REL", "TO", "EXPLAIN", "PROFILE", - "BEGIN", "TRANSACTION", "READ", "ONLY", "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", - "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "INSTALL", "EXTENSION", "UNION", - "ALL", "LOAD", "HEADERS", "OPTIONAL", "MATCH", "UNWIND", "CREATE", - "MERGE", "ON", "SET", "DETACH", "DELETE", "WITH", "RETURN", "DISTINCT", - "STAR", "AS", "ORDER", "BY", "L_SKIP", "LIMIT", "ASCENDING", "ASC", - "DESCENDING", "DESC", "WHERE", "SHORTEST", "OR", "XOR", "AND", "NOT", - "INVALID_NOT_EQUAL", "MINUS", "FACTORIAL", "COLON", "IN", "STARTS", - "ENDS", "CONTAINS", "IS", "NULL_", "TRUE", "FALSE", "COUNT", "EXISTS", - "CASE", "ELSE", "END", "WHEN", "THEN", "StringLiteral", "EscapedChar", - "DecimalInteger", "HexLetter", "HexDigit", "Digit", "NonZeroDigit", - "NonZeroOctDigit", "ZeroDigit", "RegularDecimalReal", "UnescapedSymbolicName", - "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", "SP", - "WHITESPACE", "Comment", "FF", "EscapedSymbolicName_0", "RS", "ID_Continue", - "Comment_1", "StringLiteral_1", "Comment_3", "Comment_2", "GS", "FS", - "CR", "Sc", "SPACE", "Pc", "TAB", "StringLiteral_0", "LF", "VT", "US", - "ID_Start", "Unknown" + "T__41", "T__42", "T__43", "T__44", "ATTACH", "DBTYPE", "USE", "CALL", + "COMMENT_", "MACRO", "GLOB", "COPY", "FROM", "COLUMN", "EXPORT", "IMPORT", + "DATABASE", "NODE", "TABLE", "GROUP", "RDFGRAPH", "DROP", "ALTER", + "DEFAULT", "RENAME", "ADD", "PRIMARY", "KEY", "REL", "TO", "EXPLAIN", + "PROFILE", "BEGIN", "TRANSACTION", "READ", "ONLY", "WRITE", "COMMIT", + "COMMIT_SKIP_CHECKPOINT", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", + "INSTALL", "EXTENSION", "UNION", "ALL", "LOAD", "HEADERS", "OPTIONAL", + "MATCH", "UNWIND", "CREATE", "MERGE", "ON", "SET", "DETACH", "DELETE", + "WITH", "RETURN", "DISTINCT", "STAR", "AS", "ORDER", "BY", "L_SKIP", + "LIMIT", "ASCENDING", "ASC", "DESCENDING", "DESC", "WHERE", "SHORTEST", + "OR", "XOR", "AND", "NOT", "INVALID_NOT_EQUAL", "MINUS", "FACTORIAL", + "COLON", "IN", "STARTS", "ENDS", "CONTAINS", "IS", "NULL_", "TRUE", + "FALSE", "COUNT", "EXISTS", "CASE", "ELSE", "END", "WHEN", "THEN", + "StringLiteral", "EscapedChar", "DecimalInteger", "HexLetter", "HexDigit", + "Digit", "NonZeroDigit", "NonZeroOctDigit", "ZeroDigit", "RegularDecimalReal", + "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", + "SP", "WHITESPACE", "Comment", "FF", "EscapedSymbolicName_0", "RS", + "ID_Continue", "Comment_1", "StringLiteral_1", "Comment_3", "Comment_2", + "GS", "FS", "CR", "Sc", "SPACE", "Pc", "TAB", "StringLiteral_0", "LF", + "VT", "US", "ID_Start", "Unknown" }, std::vector{ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" @@ -99,19 +99,20 @@ void cypherlexerLexerInitialize() { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "'*'", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "'!='", "'-'", "'!'", "':'", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'0'" + "", "", "", "", "'*'", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "'!='", "'-'", "'!'", "':'", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "'0'" }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "ATTACH", "DBTYPE", - "CALL", "COMMENT_", "MACRO", "GLOB", "COPY", "FROM", "COLUMN", "EXPORT", - "IMPORT", "DATABASE", "NODE", "TABLE", "GROUP", "RDFGRAPH", "DROP", - "ALTER", "DEFAULT", "RENAME", "ADD", "PRIMARY", "KEY", "REL", "TO", - "EXPLAIN", "PROFILE", "BEGIN", "TRANSACTION", "READ", "ONLY", "WRITE", - "COMMIT", "COMMIT_SKIP_CHECKPOINT", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", + "USE", "CALL", "COMMENT_", "MACRO", "GLOB", "COPY", "FROM", "COLUMN", + "EXPORT", "IMPORT", "DATABASE", "NODE", "TABLE", "GROUP", "RDFGRAPH", + "DROP", "ALTER", "DEFAULT", "RENAME", "ADD", "PRIMARY", "KEY", "REL", + "TO", "EXPLAIN", "PROFILE", "BEGIN", "TRANSACTION", "READ", "ONLY", + "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "INSTALL", "EXTENSION", "UNION", "ALL", "LOAD", "HEADERS", "OPTIONAL", "MATCH", "UNWIND", "CREATE", "MERGE", "ON", "SET", "DETACH", "DELETE", "WITH", "RETURN", "DISTINCT", "STAR", "AS", "ORDER", "BY", "L_SKIP", @@ -126,7 +127,7 @@ void cypherlexerLexerInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,0,152,1201,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, + 4,0,153,1207,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, @@ -152,624 +153,627 @@ void cypherlexerLexerInitialize() { 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,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,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,14,1,15,1,15,1,16,1,16,1,16,1,17,1,17,1,18,1,18,1, - 18,1,19,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1, - 24,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1, - 31,1,32,1,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1, - 38,1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,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,1,46,1,46,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,49,1,49,1, - 49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,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,54,1,54,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,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,58,1,58,1, - 58,1,58,1,58,1,58,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,61,1,61,1,61,1,61,1,61,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,64,1,64,1,64,1,64,1, - 64,1,64,1,64,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,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,70,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,73,1,73,1,73,1,73,1,73,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,75,1,75,1,75,1,75,1,75,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,78,1, - 78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,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,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1, - 80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,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,81,1,82,1,82,1,82,1,82,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, - 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,87,1, - 87,1,87,1,87,1,87,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,92,1,92,1,92,1,93,1,93,1,93,1,93,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,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,98,1,98,1,99,1,99,1,100,1,100,1,100,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,104,1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105, - 1,105,1,105,1,105,1,105,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,107,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,110,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,113,1,113, - 1,113,1,113,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,116,1,116,1,117, - 1,117,1,118,1,118,1,119,1,119,1,119,1,120,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,122,1,122,1,122,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,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,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129, + 7,170,2,171,7,171,2,172,7,172,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4, + 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,14,1,15,1,15,1,16,1,16,1,16,1,17,1,17, + 1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23, + 1,24,1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30, + 1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37, + 1,37,1,38,1,38,1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44, + 1,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,1,46, + 1,46,1,47,1,47,1,47,1,47,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,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51, + 1,51,1,52,1,52,1,52,1,52,1,52,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,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,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,59,1,59,1,59,1,59,1,59,1,59,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,62,1,62,1,62, + 1,62,1,62,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,65,1,65,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,68,1,68,1,68,1,68,1,69,1,69,1,69, + 1,69,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,72,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,74,1,74,1,75,1,75,1,75,1,75, + 1,75,1,76,1,76,1,76,1,76,1,76,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,79,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,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,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,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,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,82,1,82, + 1,83,1,83,1,83,1,83,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,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87, + 1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,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,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,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93, + 1,93,1,94,1,94,1,94,1,94,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,96,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,99,1,99,1,99,1,100,1,100, + 1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,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,105,1,106, + 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,108,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,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,111,1,111,1,112,1,112,1,112,1,113, + 1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,116, + 1,116,1,116,1,117,1,117,1,118,1,118,1,119,1,119,1,120,1,120,1,120,1,121, + 1,121,1,121,1,121,1,121,1,121,1,121,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,123,1,124,1,124,1,124,1,125, + 1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,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,129,1,129,1,129, 1,129,1,129,1,129,1,129,1,130,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,133,1,133,1,133,1,133,1,133,1,134, - 1,134,1,134,5,134,1005,8,134,10,134,12,134,1008,9,134,1,134,1,134,1,134, - 1,134,5,134,1014,8,134,10,134,12,134,1017,9,134,1,134,3,134,1020,8,134, - 1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135, - 1,135,1,135,1,135,1,135,1,135,1,135,3,135,1040,8,135,1,136,1,136,1,136, - 5,136,1045,8,136,10,136,12,136,1048,9,136,3,136,1050,8,136,1,137,3,137, - 1053,8,137,1,138,1,138,3,138,1057,8,138,1,139,1,139,3,139,1061,8,139, - 1,140,1,140,3,140,1065,8,140,1,141,1,141,1,142,1,142,1,143,5,143,1072, - 8,143,10,143,12,143,1075,9,143,1,143,1,143,4,143,1079,8,143,11,143,12, - 143,1080,1,144,1,144,5,144,1085,8,144,10,144,12,144,1088,9,144,1,145, - 1,145,3,145,1092,8,145,1,146,1,146,3,146,1096,8,146,1,147,1,147,5,147, - 1100,8,147,10,147,12,147,1103,9,147,1,147,4,147,1106,8,147,11,147,12, - 147,1107,1,148,4,148,1111,8,148,11,148,12,148,1112,1,149,1,149,1,149, - 1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,3,149,1127,8,149, - 1,150,1,150,1,150,1,150,1,150,1,150,5,150,1135,8,150,10,150,12,150,1138, - 9,150,1,150,1,150,1,150,1,150,1,150,1,150,5,150,1146,8,150,10,150,12, - 150,1149,9,150,1,150,3,150,1152,8,150,1,150,1,150,3,150,1156,8,150,3, - 150,1158,8,150,1,151,1,151,1,152,1,152,1,153,1,153,1,154,1,154,1,155, - 1,155,1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,160,1,160,1,161, - 1,161,1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165,1,166,1,166,1,167, - 1,167,1,168,1,168,1,169,1,169,1,170,1,170,1,171,1,171,0,0,172,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,0,305,0,307,0,309, - 0,311,0,313,0,315,0,317,0,319,0,321,0,323,0,325,0,327,0,329,0,331,0,333, - 0,335,0,337,0,339,0,341,0,343,152,1,0,45,2,0,65,65,97,97,2,0,84,84,116, - 116,2,0,67,67,99,99,2,0,72,72,104,104,2,0,68,68,100,100,2,0,66,66,98, - 98,2,0,89,89,121,121,2,0,80,80,112,112,2,0,69,69,101,101,2,0,76,76,108, + 1,131,1,131,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,134, + 1,134,1,134,1,134,1,134,1,135,1,135,1,135,5,135,1011,8,135,10,135,12, + 135,1014,9,135,1,135,1,135,1,135,1,135,5,135,1020,8,135,10,135,12,135, + 1023,9,135,1,135,3,135,1026,8,135,1,136,1,136,1,136,1,136,1,136,1,136, + 1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136, + 3,136,1046,8,136,1,137,1,137,1,137,5,137,1051,8,137,10,137,12,137,1054, + 9,137,3,137,1056,8,137,1,138,3,138,1059,8,138,1,139,1,139,3,139,1063, + 8,139,1,140,1,140,3,140,1067,8,140,1,141,1,141,3,141,1071,8,141,1,142, + 1,142,1,143,1,143,1,144,5,144,1078,8,144,10,144,12,144,1081,9,144,1,144, + 1,144,4,144,1085,8,144,11,144,12,144,1086,1,145,1,145,5,145,1091,8,145, + 10,145,12,145,1094,9,145,1,146,1,146,3,146,1098,8,146,1,147,1,147,3,147, + 1102,8,147,1,148,1,148,5,148,1106,8,148,10,148,12,148,1109,9,148,1,148, + 4,148,1112,8,148,11,148,12,148,1113,1,149,4,149,1117,8,149,11,149,12, + 149,1118,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,3,150,1133,8,150,1,151,1,151,1,151,1,151,1,151,1,151,5,151, + 1141,8,151,10,151,12,151,1144,9,151,1,151,1,151,1,151,1,151,1,151,1,151, + 5,151,1152,8,151,10,151,12,151,1155,9,151,1,151,3,151,1158,8,151,1,151, + 1,151,3,151,1162,8,151,3,151,1164,8,151,1,152,1,152,1,153,1,153,1,154, + 1,154,1,155,1,155,1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,160, + 1,160,1,161,1,161,1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165,1,166, + 1,166,1,167,1,167,1,168,1,168,1,169,1,169,1,170,1,170,1,171,1,171,1,172, + 1,172,0,0,173,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,0,307,0,309,0,311,0,313,0,315,0,317,0,319,0,321,0,323, + 0,325,0,327,0,329,0,331,0,333,0,335,0,337,0,339,0,341,0,343,0,345,153, + 1,0,45,2,0,65,65,97,97,2,0,84,84,116,116,2,0,67,67,99,99,2,0,72,72,104, + 104,2,0,68,68,100,100,2,0,66,66,98,98,2,0,89,89,121,121,2,0,80,80,112, + 112,2,0,69,69,101,101,2,0,85,85,117,117,2,0,83,83,115,115,2,0,76,76,108, 108,2,0,79,79,111,111,2,0,77,77,109,109,2,0,78,78,110,110,2,0,82,82,114, - 114,2,0,71,71,103,103,2,0,70,70,102,102,2,0,85,85,117,117,2,0,88,88,120, - 120,2,0,73,73,105,105,2,0,83,83,115,115,2,0,75,75,107,107,2,0,87,87,119, - 119,13,0,34,34,39,39,66,66,70,70,78,78,82,82,84,84,92,92,98,98,102,102, - 110,110,114,114,116,116,2,0,65,70,97,102,8,0,160,160,5760,5760,6158,6158, - 8192,8202,8232,8233,8239,8239,8287,8287,12288,12288,1,0,12,12,1,0,96, - 96,1,0,30,30,768,0,48,57,65,90,95,95,97,122,170,170,181,181,183,183,186, - 186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886, - 887,890,893,895,895,902,906,908,908,910,929,931,1013,1015,1153,1155,1159, - 1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471,1473,1474, - 1476,1477,1479,1479,1488,1514,1519,1522,1552,1562,1568,1641,1646,1747, - 1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037, - 2042,2042,2045,2045,2048,2093,2112,2139,2144,2154,2160,2183,2185,2190, - 2200,2273,2275,2403,2406,2415,2417,2435,2437,2444,2447,2448,2451,2472, - 2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519, - 2524,2525,2527,2531,2534,2545,2556,2556,2558,2558,2561,2563,2565,2570, - 2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620, - 2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677, - 2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745, - 2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815, - 2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873, - 2876,2884,2887,2888,2891,2893,2901,2903,2908,2909,2911,2915,2918,2927, - 2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972, - 2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021, - 3024,3024,3031,3031,3046,3055,3072,3084,3086,3088,3090,3112,3114,3129, - 3132,3140,3142,3144,3146,3149,3157,3158,3160,3162,3165,3165,3168,3171, - 3174,3183,3200,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257, - 3260,3268,3270,3272,3274,3277,3285,3286,3293,3294,3296,3299,3302,3311, - 3313,3315,3328,3340,3342,3344,3346,3396,3398,3400,3402,3406,3412,3415, - 3423,3427,3430,3439,3450,3455,3457,3459,3461,3478,3482,3505,3507,3515, - 3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567, - 3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722, - 3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3790,3792,3801, - 3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897, - 3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169, - 4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685, - 4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789, - 4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954, - 4957,4959,4969,4977,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759, - 5761,5786,5792,5866,5870,5880,5888,5909,5919,5940,5952,5971,5984,5996, - 5998,6000,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157, - 6159,6169,6176,6264,6272,6314,6320,6389,6400,6430,6432,6443,6448,6459, - 6470,6509,6512,6516,6528,6571,6576,6601,6608,6618,6656,6683,6688,6750, - 6752,6780,6783,6793,6800,6809,6823,6823,6832,6845,6847,6862,6912,6988, - 6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304, - 7312,7354,7357,7359,7376,7378,7380,7418,7424,7957,7960,7965,7968,8005, - 8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116, - 8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172, - 8178,8180,8182,8188,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348, - 8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469, - 8472,8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521, - 8526,8526,8544,8584,11264,11492,11499,11507,11520,11557,11559,11559,11565, - 11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696, - 11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744, - 11775,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441, - 12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784, - 12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560, - 42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42954,42960, - 42961,42963,42963,42965,42969,42994,43047,43052,43052,43072,43123,43136, - 43205,43216,43225,43232,43255,43259,43259,43261,43309,43312,43347,43360, - 43388,43392,43456,43471,43481,43488,43518,43520,43574,43584,43597,43600, - 43609,43616,43638,43642,43714,43739,43741,43744,43759,43762,43766,43777, - 43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868, - 43881,43888,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243, - 55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298, - 64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467, - 64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65071,65075, - 65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343, - 65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498, - 65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616, - 65629,65664,65786,65856,65908,66045,66045,66176,66204,66208,66256,66272, - 66272,66304,66335,66349,66378,66384,66426,66432,66461,66464,66499,66504, - 66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816, - 66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967, - 66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424, - 67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594, - 67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808, - 67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096, - 68099,68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159, - 68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416, - 68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864, - 68903,68912,68921,69248,69289,69291,69292,69296,69297,69373,69404,69415, - 69415,69424,69456,69488,69509,69552,69572,69600,69622,69632,69702,69734, - 69749,69759,69818,69826,69826,69840,69864,69872,69881,69888,69940,69942, - 69951,69956,69959,69968,70003,70006,70006,70016,70084,70089,70092,70094, - 70106,70108,70108,70144,70161,70163,70199,70206,70209,70272,70278,70280, - 70280,70282,70285,70287,70301,70303,70312,70320,70378,70384,70393,70400, - 70403,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453, - 70457,70459,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493, - 70499,70502,70508,70512,70516,70656,70730,70736,70745,70750,70753,70784, - 70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168, - 71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450,71453, - 71467,71472,71481,71488,71494,71680,71738,71840,71913,71935,71942,71945, - 71945,71948,71955,71957,71958,71960,71989,71991,71992,71995,72003,72016, - 72025,72096,72103,72106,72151,72154,72161,72163,72164,72192,72254,72263, - 72263,72272,72345,72349,72349,72368,72440,72704,72712,72714,72758,72760, - 72768,72784,72793,72818,72847,72850,72871,72873,72886,72960,72966,72968, - 72969,72971,73014,73018,73018,73020,73021,73023,73031,73040,73049,73056, - 73061,73063,73064,73066,73102,73104,73105,73107,73112,73120,73129,73440, - 73462,73472,73488,73490,73530,73534,73538,73552,73561,73648,73648,73728, - 74649,74752,74862,74880,75075,77712,77808,77824,78895,78912,78933,82944, - 83526,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880, - 92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047,93053, - 93071,93760,93823,93952,94026,94031,94087,94095,94111,94176,94177,94179, - 94180,94192,94193,94208,100343,100352,101589,101632,101640,110576,110579, - 110581,110587,110589,110590,110592,110882,110898,110898,110928,110930, - 110933,110933,110948,110951,110960,111355,113664,113770,113776,113788, - 113792,113800,113808,113817,113821,113822,118528,118573,118576,118598, - 119141,119145,119149,119154,119163,119170,119173,119179,119210,119213, - 119362,119364,119808,119892,119894,119964,119966,119967,119970,119970, - 119973,119974,119977,119980,119982,119993,119995,119995,119997,120003, - 120005,120069,120071,120074,120077,120084,120086,120092,120094,120121, - 120123,120126,120128,120132,120134,120134,120138,120144,120146,120485, - 120488,120512,120514,120538,120540,120570,120572,120596,120598,120628, - 120630,120654,120656,120686,120688,120712,120714,120744,120746,120770, - 120772,120779,120782,120831,121344,121398,121403,121452,121461,121461, - 121476,121476,121499,121503,121505,121519,122624,122654,122661,122666, - 122880,122886,122888,122904,122907,122913,122915,122916,122918,122922, - 122928,122989,123023,123023,123136,123180,123184,123197,123200,123209, - 123214,123214,123536,123566,123584,123641,124112,124153,124896,124902, - 124904,124907,124909,124910,124912,124926,124928,125124,125136,125142, - 125184,125259,125264,125273,126464,126467,126469,126495,126497,126498, - 126500,126500,126503,126503,126505,126514,126516,126519,126521,126521, - 126523,126523,126530,126530,126535,126535,126537,126537,126539,126539, - 126541,126543,126545,126546,126548,126548,126551,126551,126553,126553, - 126555,126555,126557,126557,126559,126559,126561,126562,126564,126564, - 126567,126570,126572,126578,126580,126583,126585,126588,126590,126590, - 126592,126601,126603,126619,126625,126627,126629,126633,126635,126651, - 130032,130041,131072,173791,173824,177977,177984,178205,178208,183969, - 183984,191456,194560,195101,196608,201546,201552,205743,917760,917999, - 1,0,42,42,2,0,39,39,92,92,2,0,10,10,13,13,1,0,47,47,1,0,29,29,1,0,28, - 28,1,0,13,13,21,0,36,36,162,165,1423,1423,1547,1547,2046,2047,2546,2547, - 2555,2555,2801,2801,3065,3065,3647,3647,6107,6107,8352,8384,43064,43064, - 65020,65020,65129,65129,65284,65284,65504,65505,65509,65510,73693,73696, - 123647,123647,126128,126128,1,0,32,32,6,0,95,95,8255,8256,8276,8276,65075, - 65076,65101,65103,65343,65343,1,0,9,9,2,0,34,34,92,92,1,0,10,10,1,0,11, - 11,1,0,31,31,659,0,65,90,97,122,170,170,181,181,186,186,192,214,216,246, - 248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895, - 902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366, - 1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747, - 1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839, - 1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074, - 2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249, - 2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448, - 2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525, - 2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608, - 2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701, - 2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768, - 2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867, - 2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954, - 2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986, - 2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133, - 3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240, - 3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340, - 3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455, - 3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635, - 3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760, - 3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911, - 3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193, - 4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301, - 4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744, - 4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822, - 4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740, - 5743,5759,5761,5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969, - 5984,5996,5998,6000,6016,6067,6103,6103,6108,6108,6176,6264,6272,6312, - 6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601, - 6656,6678,6688,6740,6823,6823,6917,6963,6981,6988,7043,7072,7086,7087, - 7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359, - 7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965, - 7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061, - 8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155, - 8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450, - 8455,8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488, - 8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11502, - 11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631, - 11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718, - 11720,11726,11728,11734,11736,11742,12293,12295,12321,12329,12337,12341, - 12344,12348,12353,12438,12443,12447,12449,12538,12540,12543,12549,12591, - 12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237, - 42240,42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42735, - 42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969, - 42994,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187, - 43250,43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388, - 43396,43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560, - 43584,43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697, - 43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754, - 43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822, - 43824,43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291, - 63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296, - 64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433, - 64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276, - 65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495, - 65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613, - 65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335, - 66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517, - 66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938, - 66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001, - 67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504, - 67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644, - 67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861, - 67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119, - 68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405, - 68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850, - 68864,68899,69248,69289,69296,69297,69376,69404,69415,69415,69424,69445, - 69488,69505,69552,69572,69600,69622,69635,69687,69745,69746,69749,69749, - 69763,69807,69840,69864,69891,69926,69956,69956,69959,69959,69968,70002, - 70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,70161, - 70163,70187,70207,70208,70272,70278,70280,70280,70282,70285,70287,70301, - 70303,70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448, - 70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708, - 70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,71086, - 71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450, - 71488,71494,71680,71723,71840,71903,71935,71942,71945,71945,71948,71955, - 71957,71958,71960,71983,71999,71999,72001,72001,72096,72103,72106,72144, - 72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272, - 72284,72329,72349,72349,72368,72440,72704,72712,72714,72750,72768,72768, - 72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061, - 73063,73064,73066,73097,73112,73112,73440,73458,73474,73474,73476,73488, - 73490,73523,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808, - 77824,78895,78913,78918,82944,83526,92160,92728,92736,92766,92784,92862, - 92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823, - 93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,100343, - 100352,101589,101632,101640,110576,110579,110581,110587,110589,110590, - 110592,110882,110898,110898,110928,110930,110933,110933,110948,110951, - 110960,111355,113664,113770,113776,113788,113792,113800,113808,113817, - 119808,119892,119894,119964,119966,119967,119970,119970,119973,119974, - 119977,119980,119982,119993,119995,119995,119997,120003,120005,120069, - 120071,120074,120077,120084,120086,120092,120094,120121,120123,120126, - 120128,120132,120134,120134,120138,120144,120146,120485,120488,120512, - 120514,120538,120540,120570,120572,120596,120598,120628,120630,120654, - 120656,120686,120688,120712,120714,120744,120746,120770,120772,120779, - 122624,122654,122661,122666,122928,122989,123136,123180,123191,123197, - 123214,123214,123536,123565,123584,123627,124112,124139,124896,124902, - 124904,124907,124909,124910,124912,124926,124928,125124,125184,125251, - 125259,125259,126464,126467,126469,126495,126497,126498,126500,126500, - 126503,126503,126505,126514,126516,126519,126521,126521,126523,126523, - 126530,126530,126535,126535,126537,126537,126539,126539,126541,126543, - 126545,126546,126548,126548,126551,126551,126553,126553,126555,126555, - 126557,126557,126559,126559,126561,126562,126564,126564,126567,126570, - 126572,126578,126580,126583,126585,126588,126590,126590,126592,126601, - 126603,126619,126625,126627,126629,126633,126635,126651,131072,173791, - 173824,177977,177984,178205,178208,183969,183984,191456,194560,195101, - 196608,201546,201552,205743,1217,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, - 343,1,0,0,0,1,345,1,0,0,0,3,347,1,0,0,0,5,349,1,0,0,0,7,351,1,0,0,0,9, - 353,1,0,0,0,11,355,1,0,0,0,13,357,1,0,0,0,15,359,1,0,0,0,17,361,1,0,0, - 0,19,363,1,0,0,0,21,365,1,0,0,0,23,367,1,0,0,0,25,370,1,0,0,0,27,373, - 1,0,0,0,29,375,1,0,0,0,31,378,1,0,0,0,33,380,1,0,0,0,35,383,1,0,0,0,37, - 385,1,0,0,0,39,388,1,0,0,0,41,391,1,0,0,0,43,393,1,0,0,0,45,395,1,0,0, - 0,47,397,1,0,0,0,49,399,1,0,0,0,51,402,1,0,0,0,53,404,1,0,0,0,55,406, - 1,0,0,0,57,408,1,0,0,0,59,410,1,0,0,0,61,412,1,0,0,0,63,414,1,0,0,0,65, - 416,1,0,0,0,67,418,1,0,0,0,69,420,1,0,0,0,71,422,1,0,0,0,73,424,1,0,0, - 0,75,426,1,0,0,0,77,428,1,0,0,0,79,430,1,0,0,0,81,432,1,0,0,0,83,434, - 1,0,0,0,85,436,1,0,0,0,87,438,1,0,0,0,89,440,1,0,0,0,91,442,1,0,0,0,93, - 449,1,0,0,0,95,456,1,0,0,0,97,461,1,0,0,0,99,469,1,0,0,0,101,475,1,0, - 0,0,103,480,1,0,0,0,105,485,1,0,0,0,107,490,1,0,0,0,109,497,1,0,0,0,111, - 504,1,0,0,0,113,511,1,0,0,0,115,520,1,0,0,0,117,525,1,0,0,0,119,531,1, - 0,0,0,121,537,1,0,0,0,123,546,1,0,0,0,125,551,1,0,0,0,127,557,1,0,0,0, - 129,565,1,0,0,0,131,572,1,0,0,0,133,576,1,0,0,0,135,584,1,0,0,0,137,588, - 1,0,0,0,139,592,1,0,0,0,141,595,1,0,0,0,143,603,1,0,0,0,145,611,1,0,0, - 0,147,617,1,0,0,0,149,629,1,0,0,0,151,634,1,0,0,0,153,639,1,0,0,0,155, - 645,1,0,0,0,157,652,1,0,0,0,159,675,1,0,0,0,161,684,1,0,0,0,163,709,1, - 0,0,0,165,717,1,0,0,0,167,727,1,0,0,0,169,733,1,0,0,0,171,737,1,0,0,0, - 173,742,1,0,0,0,175,750,1,0,0,0,177,759,1,0,0,0,179,765,1,0,0,0,181,772, - 1,0,0,0,183,779,1,0,0,0,185,785,1,0,0,0,187,788,1,0,0,0,189,792,1,0,0, - 0,191,799,1,0,0,0,193,806,1,0,0,0,195,811,1,0,0,0,197,818,1,0,0,0,199, - 827,1,0,0,0,201,829,1,0,0,0,203,832,1,0,0,0,205,838,1,0,0,0,207,841,1, - 0,0,0,209,846,1,0,0,0,211,852,1,0,0,0,213,862,1,0,0,0,215,866,1,0,0,0, - 217,877,1,0,0,0,219,882,1,0,0,0,221,888,1,0,0,0,223,897,1,0,0,0,225,900, - 1,0,0,0,227,904,1,0,0,0,229,908,1,0,0,0,231,912,1,0,0,0,233,915,1,0,0, - 0,235,917,1,0,0,0,237,919,1,0,0,0,239,921,1,0,0,0,241,924,1,0,0,0,243, - 931,1,0,0,0,245,936,1,0,0,0,247,945,1,0,0,0,249,948,1,0,0,0,251,953,1, - 0,0,0,253,958,1,0,0,0,255,964,1,0,0,0,257,970,1,0,0,0,259,977,1,0,0,0, - 261,982,1,0,0,0,263,987,1,0,0,0,265,991,1,0,0,0,267,996,1,0,0,0,269,1019, - 1,0,0,0,271,1021,1,0,0,0,273,1049,1,0,0,0,275,1052,1,0,0,0,277,1056,1, - 0,0,0,279,1060,1,0,0,0,281,1064,1,0,0,0,283,1066,1,0,0,0,285,1068,1,0, - 0,0,287,1073,1,0,0,0,289,1082,1,0,0,0,291,1091,1,0,0,0,293,1095,1,0,0, - 0,295,1105,1,0,0,0,297,1110,1,0,0,0,299,1126,1,0,0,0,301,1157,1,0,0,0, - 303,1159,1,0,0,0,305,1161,1,0,0,0,307,1163,1,0,0,0,309,1165,1,0,0,0,311, - 1167,1,0,0,0,313,1169,1,0,0,0,315,1171,1,0,0,0,317,1173,1,0,0,0,319,1175, - 1,0,0,0,321,1177,1,0,0,0,323,1179,1,0,0,0,325,1181,1,0,0,0,327,1183,1, - 0,0,0,329,1185,1,0,0,0,331,1187,1,0,0,0,333,1189,1,0,0,0,335,1191,1,0, - 0,0,337,1193,1,0,0,0,339,1195,1,0,0,0,341,1197,1,0,0,0,343,1199,1,0,0, - 0,345,346,5,59,0,0,346,2,1,0,0,0,347,348,5,40,0,0,348,4,1,0,0,0,349,350, - 5,44,0,0,350,6,1,0,0,0,351,352,5,41,0,0,352,8,1,0,0,0,353,354,5,46,0, - 0,354,10,1,0,0,0,355,356,5,61,0,0,356,12,1,0,0,0,357,358,5,91,0,0,358, - 14,1,0,0,0,359,360,5,93,0,0,360,16,1,0,0,0,361,362,5,123,0,0,362,18,1, - 0,0,0,363,364,5,125,0,0,364,20,1,0,0,0,365,366,5,124,0,0,366,22,1,0,0, - 0,367,368,5,46,0,0,368,369,5,46,0,0,369,24,1,0,0,0,370,371,5,60,0,0,371, - 372,5,62,0,0,372,26,1,0,0,0,373,374,5,60,0,0,374,28,1,0,0,0,375,376,5, - 60,0,0,376,377,5,61,0,0,377,30,1,0,0,0,378,379,5,62,0,0,379,32,1,0,0, - 0,380,381,5,62,0,0,381,382,5,61,0,0,382,34,1,0,0,0,383,384,5,38,0,0,384, - 36,1,0,0,0,385,386,5,62,0,0,386,387,5,62,0,0,387,38,1,0,0,0,388,389,5, - 60,0,0,389,390,5,60,0,0,390,40,1,0,0,0,391,392,5,43,0,0,392,42,1,0,0, - 0,393,394,5,47,0,0,394,44,1,0,0,0,395,396,5,37,0,0,396,46,1,0,0,0,397, - 398,5,94,0,0,398,48,1,0,0,0,399,400,5,61,0,0,400,401,5,126,0,0,401,50, - 1,0,0,0,402,403,5,36,0,0,403,52,1,0,0,0,404,405,5,10216,0,0,405,54,1, - 0,0,0,406,407,5,12296,0,0,407,56,1,0,0,0,408,409,5,65124,0,0,409,58,1, - 0,0,0,410,411,5,65308,0,0,411,60,1,0,0,0,412,413,5,10217,0,0,413,62,1, - 0,0,0,414,415,5,12297,0,0,415,64,1,0,0,0,416,417,5,65125,0,0,417,66,1, - 0,0,0,418,419,5,65310,0,0,419,68,1,0,0,0,420,421,5,173,0,0,421,70,1,0, - 0,0,422,423,5,8208,0,0,423,72,1,0,0,0,424,425,5,8209,0,0,425,74,1,0,0, - 0,426,427,5,8210,0,0,427,76,1,0,0,0,428,429,5,8211,0,0,429,78,1,0,0,0, - 430,431,5,8212,0,0,431,80,1,0,0,0,432,433,5,8213,0,0,433,82,1,0,0,0,434, - 435,5,8722,0,0,435,84,1,0,0,0,436,437,5,65112,0,0,437,86,1,0,0,0,438, - 439,5,65123,0,0,439,88,1,0,0,0,440,441,5,65293,0,0,441,90,1,0,0,0,442, - 443,7,0,0,0,443,444,7,1,0,0,444,445,7,1,0,0,445,446,7,0,0,0,446,447,7, - 2,0,0,447,448,7,3,0,0,448,92,1,0,0,0,449,450,7,4,0,0,450,451,7,5,0,0, - 451,452,7,1,0,0,452,453,7,6,0,0,453,454,7,7,0,0,454,455,7,8,0,0,455,94, - 1,0,0,0,456,457,7,2,0,0,457,458,7,0,0,0,458,459,7,9,0,0,459,460,7,9,0, - 0,460,96,1,0,0,0,461,462,7,2,0,0,462,463,7,10,0,0,463,464,7,11,0,0,464, - 465,7,11,0,0,465,466,7,8,0,0,466,467,7,12,0,0,467,468,7,1,0,0,468,98, - 1,0,0,0,469,470,7,11,0,0,470,471,7,0,0,0,471,472,7,2,0,0,472,473,7,13, - 0,0,473,474,7,10,0,0,474,100,1,0,0,0,475,476,7,14,0,0,476,477,7,9,0,0, - 477,478,7,10,0,0,478,479,7,5,0,0,479,102,1,0,0,0,480,481,7,2,0,0,481, - 482,7,10,0,0,482,483,7,7,0,0,483,484,7,6,0,0,484,104,1,0,0,0,485,486, - 7,15,0,0,486,487,7,13,0,0,487,488,7,10,0,0,488,489,7,11,0,0,489,106,1, - 0,0,0,490,491,7,2,0,0,491,492,7,10,0,0,492,493,7,9,0,0,493,494,7,16,0, - 0,494,495,7,11,0,0,495,496,7,12,0,0,496,108,1,0,0,0,497,498,7,8,0,0,498, - 499,7,17,0,0,499,500,7,7,0,0,500,501,7,10,0,0,501,502,7,13,0,0,502,503, - 7,1,0,0,503,110,1,0,0,0,504,505,7,18,0,0,505,506,7,11,0,0,506,507,7,7, - 0,0,507,508,7,10,0,0,508,509,7,13,0,0,509,510,7,1,0,0,510,112,1,0,0,0, - 511,512,7,4,0,0,512,513,7,0,0,0,513,514,7,1,0,0,514,515,7,0,0,0,515,516, - 7,5,0,0,516,517,7,0,0,0,517,518,7,19,0,0,518,519,7,8,0,0,519,114,1,0, - 0,0,520,521,7,12,0,0,521,522,7,10,0,0,522,523,7,4,0,0,523,524,7,8,0,0, - 524,116,1,0,0,0,525,526,7,1,0,0,526,527,7,0,0,0,527,528,7,5,0,0,528,529, - 7,9,0,0,529,530,7,8,0,0,530,118,1,0,0,0,531,532,7,14,0,0,532,533,7,13, - 0,0,533,534,7,10,0,0,534,535,7,16,0,0,535,536,7,7,0,0,536,120,1,0,0,0, - 537,538,7,13,0,0,538,539,7,4,0,0,539,540,7,15,0,0,540,541,7,14,0,0,541, - 542,7,13,0,0,542,543,7,0,0,0,543,544,7,7,0,0,544,545,7,3,0,0,545,122, - 1,0,0,0,546,547,7,4,0,0,547,548,7,13,0,0,548,549,7,10,0,0,549,550,7,7, - 0,0,550,124,1,0,0,0,551,552,7,0,0,0,552,553,7,9,0,0,553,554,7,1,0,0,554, - 555,7,8,0,0,555,556,7,13,0,0,556,126,1,0,0,0,557,558,7,4,0,0,558,559, - 7,8,0,0,559,560,7,15,0,0,560,561,7,0,0,0,561,562,7,16,0,0,562,563,7,9, - 0,0,563,564,7,1,0,0,564,128,1,0,0,0,565,566,7,13,0,0,566,567,7,8,0,0, - 567,568,7,12,0,0,568,569,7,0,0,0,569,570,7,11,0,0,570,571,7,8,0,0,571, - 130,1,0,0,0,572,573,7,0,0,0,573,574,7,4,0,0,574,575,7,4,0,0,575,132,1, - 0,0,0,576,577,7,7,0,0,577,578,7,13,0,0,578,579,7,18,0,0,579,580,7,11, - 0,0,580,581,7,0,0,0,581,582,7,13,0,0,582,583,7,6,0,0,583,134,1,0,0,0, - 584,585,7,20,0,0,585,586,7,8,0,0,586,587,7,6,0,0,587,136,1,0,0,0,588, - 589,7,13,0,0,589,590,7,8,0,0,590,591,7,9,0,0,591,138,1,0,0,0,592,593, - 7,1,0,0,593,594,7,10,0,0,594,140,1,0,0,0,595,596,7,8,0,0,596,597,7,17, - 0,0,597,598,7,7,0,0,598,599,7,9,0,0,599,600,7,0,0,0,600,601,7,18,0,0, - 601,602,7,12,0,0,602,142,1,0,0,0,603,604,7,7,0,0,604,605,7,13,0,0,605, - 606,7,10,0,0,606,607,7,15,0,0,607,608,7,18,0,0,608,609,7,9,0,0,609,610, - 7,8,0,0,610,144,1,0,0,0,611,612,7,5,0,0,612,613,7,8,0,0,613,614,7,14, - 0,0,614,615,7,18,0,0,615,616,7,12,0,0,616,146,1,0,0,0,617,618,7,1,0,0, - 618,619,7,13,0,0,619,620,7,0,0,0,620,621,7,12,0,0,621,622,7,19,0,0,622, - 623,7,0,0,0,623,624,7,2,0,0,624,625,7,1,0,0,625,626,7,18,0,0,626,627, - 7,10,0,0,627,628,7,12,0,0,628,148,1,0,0,0,629,630,7,13,0,0,630,631,7, - 8,0,0,631,632,7,0,0,0,632,633,7,4,0,0,633,150,1,0,0,0,634,635,7,10,0, - 0,635,636,7,12,0,0,636,637,7,9,0,0,637,638,7,6,0,0,638,152,1,0,0,0,639, - 640,7,21,0,0,640,641,7,13,0,0,641,642,7,18,0,0,642,643,7,1,0,0,643,644, - 7,8,0,0,644,154,1,0,0,0,645,646,7,2,0,0,646,647,7,10,0,0,647,648,7,11, - 0,0,648,649,7,11,0,0,649,650,7,18,0,0,650,651,7,1,0,0,651,156,1,0,0,0, - 652,653,7,2,0,0,653,654,7,10,0,0,654,655,7,11,0,0,655,656,7,11,0,0,656, - 657,7,18,0,0,657,658,7,1,0,0,658,659,5,95,0,0,659,660,7,19,0,0,660,661, - 7,20,0,0,661,662,7,18,0,0,662,663,7,7,0,0,663,664,5,95,0,0,664,665,7, - 2,0,0,665,666,7,3,0,0,666,667,7,8,0,0,667,668,7,2,0,0,668,669,7,20,0, - 0,669,670,7,7,0,0,670,671,7,10,0,0,671,672,7,18,0,0,672,673,7,12,0,0, - 673,674,7,1,0,0,674,158,1,0,0,0,675,676,7,13,0,0,676,677,7,10,0,0,677, - 678,7,9,0,0,678,679,7,9,0,0,679,680,7,5,0,0,680,681,7,0,0,0,681,682,7, - 2,0,0,682,683,7,20,0,0,683,160,1,0,0,0,684,685,7,13,0,0,685,686,7,10, - 0,0,686,687,7,9,0,0,687,688,7,9,0,0,688,689,7,5,0,0,689,690,7,0,0,0,690, - 691,7,2,0,0,691,692,7,20,0,0,692,693,5,95,0,0,693,694,7,19,0,0,694,695, - 7,20,0,0,695,696,7,18,0,0,696,697,7,7,0,0,697,698,5,95,0,0,698,699,7, - 2,0,0,699,700,7,3,0,0,700,701,7,8,0,0,701,702,7,2,0,0,702,703,7,20,0, - 0,703,704,7,7,0,0,704,705,7,10,0,0,705,706,7,18,0,0,706,707,7,12,0,0, - 707,708,7,1,0,0,708,162,1,0,0,0,709,710,7,18,0,0,710,711,7,12,0,0,711, - 712,7,19,0,0,712,713,7,1,0,0,713,714,7,0,0,0,714,715,7,9,0,0,715,716, - 7,9,0,0,716,164,1,0,0,0,717,718,7,8,0,0,718,719,7,17,0,0,719,720,7,1, - 0,0,720,721,7,8,0,0,721,722,7,12,0,0,722,723,7,19,0,0,723,724,7,18,0, - 0,724,725,7,10,0,0,725,726,7,12,0,0,726,166,1,0,0,0,727,728,7,16,0,0, - 728,729,7,12,0,0,729,730,7,18,0,0,730,731,7,10,0,0,731,732,7,12,0,0,732, - 168,1,0,0,0,733,734,7,0,0,0,734,735,7,9,0,0,735,736,7,9,0,0,736,170,1, - 0,0,0,737,738,7,9,0,0,738,739,7,10,0,0,739,740,7,0,0,0,740,741,7,4,0, - 0,741,172,1,0,0,0,742,743,7,3,0,0,743,744,7,8,0,0,744,745,7,0,0,0,745, - 746,7,4,0,0,746,747,7,8,0,0,747,748,7,13,0,0,748,749,7,19,0,0,749,174, - 1,0,0,0,750,751,7,10,0,0,751,752,7,7,0,0,752,753,7,1,0,0,753,754,7,18, - 0,0,754,755,7,10,0,0,755,756,7,12,0,0,756,757,7,0,0,0,757,758,7,9,0,0, - 758,176,1,0,0,0,759,760,7,11,0,0,760,761,7,0,0,0,761,762,7,1,0,0,762, - 763,7,2,0,0,763,764,7,3,0,0,764,178,1,0,0,0,765,766,7,16,0,0,766,767, - 7,12,0,0,767,768,7,21,0,0,768,769,7,18,0,0,769,770,7,12,0,0,770,771,7, - 4,0,0,771,180,1,0,0,0,772,773,7,2,0,0,773,774,7,13,0,0,774,775,7,8,0, - 0,775,776,7,0,0,0,776,777,7,1,0,0,777,778,7,8,0,0,778,182,1,0,0,0,779, - 780,7,11,0,0,780,781,7,8,0,0,781,782,7,13,0,0,782,783,7,14,0,0,783,784, - 7,8,0,0,784,184,1,0,0,0,785,786,7,10,0,0,786,787,7,12,0,0,787,186,1,0, - 0,0,788,789,7,19,0,0,789,790,7,8,0,0,790,791,7,1,0,0,791,188,1,0,0,0, - 792,793,7,4,0,0,793,794,7,8,0,0,794,795,7,1,0,0,795,796,7,0,0,0,796,797, - 7,2,0,0,797,798,7,3,0,0,798,190,1,0,0,0,799,800,7,4,0,0,800,801,7,8,0, - 0,801,802,7,9,0,0,802,803,7,8,0,0,803,804,7,1,0,0,804,805,7,8,0,0,805, - 192,1,0,0,0,806,807,7,21,0,0,807,808,7,18,0,0,808,809,7,1,0,0,809,810, - 7,3,0,0,810,194,1,0,0,0,811,812,7,13,0,0,812,813,7,8,0,0,813,814,7,1, - 0,0,814,815,7,16,0,0,815,816,7,13,0,0,816,817,7,12,0,0,817,196,1,0,0, - 0,818,819,7,4,0,0,819,820,7,18,0,0,820,821,7,19,0,0,821,822,7,1,0,0,822, - 823,7,18,0,0,823,824,7,12,0,0,824,825,7,2,0,0,825,826,7,1,0,0,826,198, - 1,0,0,0,827,828,5,42,0,0,828,200,1,0,0,0,829,830,7,0,0,0,830,831,7,19, - 0,0,831,202,1,0,0,0,832,833,7,10,0,0,833,834,7,13,0,0,834,835,7,4,0,0, - 835,836,7,8,0,0,836,837,7,13,0,0,837,204,1,0,0,0,838,839,7,5,0,0,839, - 840,7,6,0,0,840,206,1,0,0,0,841,842,7,19,0,0,842,843,7,20,0,0,843,844, - 7,18,0,0,844,845,7,7,0,0,845,208,1,0,0,0,846,847,7,9,0,0,847,848,7,18, - 0,0,848,849,7,11,0,0,849,850,7,18,0,0,850,851,7,1,0,0,851,210,1,0,0,0, - 852,853,7,0,0,0,853,854,7,19,0,0,854,855,7,2,0,0,855,856,7,8,0,0,856, - 857,7,12,0,0,857,858,7,4,0,0,858,859,7,18,0,0,859,860,7,12,0,0,860,861, - 7,14,0,0,861,212,1,0,0,0,862,863,7,0,0,0,863,864,7,19,0,0,864,865,7,2, - 0,0,865,214,1,0,0,0,866,867,7,4,0,0,867,868,7,8,0,0,868,869,7,19,0,0, - 869,870,7,2,0,0,870,871,7,8,0,0,871,872,7,12,0,0,872,873,7,4,0,0,873, - 874,7,18,0,0,874,875,7,12,0,0,875,876,7,14,0,0,876,216,1,0,0,0,877,878, - 7,4,0,0,878,879,7,8,0,0,879,880,7,19,0,0,880,881,7,2,0,0,881,218,1,0, - 0,0,882,883,7,21,0,0,883,884,7,3,0,0,884,885,7,8,0,0,885,886,7,13,0,0, - 886,887,7,8,0,0,887,220,1,0,0,0,888,889,7,19,0,0,889,890,7,3,0,0,890, - 891,7,10,0,0,891,892,7,13,0,0,892,893,7,1,0,0,893,894,7,8,0,0,894,895, - 7,19,0,0,895,896,7,1,0,0,896,222,1,0,0,0,897,898,7,10,0,0,898,899,7,13, - 0,0,899,224,1,0,0,0,900,901,7,17,0,0,901,902,7,10,0,0,902,903,7,13,0, - 0,903,226,1,0,0,0,904,905,7,0,0,0,905,906,7,12,0,0,906,907,7,4,0,0,907, - 228,1,0,0,0,908,909,7,12,0,0,909,910,7,10,0,0,910,911,7,1,0,0,911,230, - 1,0,0,0,912,913,5,33,0,0,913,914,5,61,0,0,914,232,1,0,0,0,915,916,5,45, - 0,0,916,234,1,0,0,0,917,918,5,33,0,0,918,236,1,0,0,0,919,920,5,58,0,0, - 920,238,1,0,0,0,921,922,7,18,0,0,922,923,7,12,0,0,923,240,1,0,0,0,924, - 925,7,19,0,0,925,926,7,1,0,0,926,927,7,0,0,0,927,928,7,13,0,0,928,929, - 7,1,0,0,929,930,7,19,0,0,930,242,1,0,0,0,931,932,7,8,0,0,932,933,7,12, - 0,0,933,934,7,4,0,0,934,935,7,19,0,0,935,244,1,0,0,0,936,937,7,2,0,0, - 937,938,7,10,0,0,938,939,7,12,0,0,939,940,7,1,0,0,940,941,7,0,0,0,941, - 942,7,18,0,0,942,943,7,12,0,0,943,944,7,19,0,0,944,246,1,0,0,0,945,946, - 7,18,0,0,946,947,7,19,0,0,947,248,1,0,0,0,948,949,7,12,0,0,949,950,7, - 16,0,0,950,951,7,9,0,0,951,952,7,9,0,0,952,250,1,0,0,0,953,954,7,1,0, - 0,954,955,7,13,0,0,955,956,7,16,0,0,956,957,7,8,0,0,957,252,1,0,0,0,958, - 959,7,15,0,0,959,960,7,0,0,0,960,961,7,9,0,0,961,962,7,19,0,0,962,963, - 7,8,0,0,963,254,1,0,0,0,964,965,7,2,0,0,965,966,7,10,0,0,966,967,7,16, - 0,0,967,968,7,12,0,0,968,969,7,1,0,0,969,256,1,0,0,0,970,971,7,8,0,0, - 971,972,7,17,0,0,972,973,7,18,0,0,973,974,7,19,0,0,974,975,7,1,0,0,975, - 976,7,19,0,0,976,258,1,0,0,0,977,978,7,2,0,0,978,979,7,0,0,0,979,980, - 7,19,0,0,980,981,7,8,0,0,981,260,1,0,0,0,982,983,7,8,0,0,983,984,7,9, - 0,0,984,985,7,19,0,0,985,986,7,8,0,0,986,262,1,0,0,0,987,988,7,8,0,0, - 988,989,7,12,0,0,989,990,7,4,0,0,990,264,1,0,0,0,991,992,7,21,0,0,992, - 993,7,3,0,0,993,994,7,8,0,0,994,995,7,12,0,0,995,266,1,0,0,0,996,997, - 7,1,0,0,997,998,7,3,0,0,998,999,7,8,0,0,999,1000,7,12,0,0,1000,268,1, - 0,0,0,1001,1006,5,34,0,0,1002,1005,3,333,166,0,1003,1005,3,271,135,0, - 1004,1002,1,0,0,0,1004,1003,1,0,0,0,1005,1008,1,0,0,0,1006,1004,1,0,0, - 0,1006,1007,1,0,0,0,1007,1009,1,0,0,0,1008,1006,1,0,0,0,1009,1020,5,34, - 0,0,1010,1015,5,39,0,0,1011,1014,3,313,156,0,1012,1014,3,271,135,0,1013, - 1011,1,0,0,0,1013,1012,1,0,0,0,1014,1017,1,0,0,0,1015,1013,1,0,0,0,1015, - 1016,1,0,0,0,1016,1018,1,0,0,0,1017,1015,1,0,0,0,1018,1020,5,39,0,0,1019, - 1001,1,0,0,0,1019,1010,1,0,0,0,1020,270,1,0,0,0,1021,1039,5,92,0,0,1022, - 1040,7,22,0,0,1023,1024,7,16,0,0,1024,1025,3,277,138,0,1025,1026,3,277, - 138,0,1026,1027,3,277,138,0,1027,1028,3,277,138,0,1028,1040,1,0,0,0,1029, - 1030,7,16,0,0,1030,1031,3,277,138,0,1031,1032,3,277,138,0,1032,1033,3, - 277,138,0,1033,1034,3,277,138,0,1034,1035,3,277,138,0,1035,1036,3,277, - 138,0,1036,1037,3,277,138,0,1037,1038,3,277,138,0,1038,1040,1,0,0,0,1039, - 1022,1,0,0,0,1039,1023,1,0,0,0,1039,1029,1,0,0,0,1040,272,1,0,0,0,1041, - 1050,3,285,142,0,1042,1046,3,281,140,0,1043,1045,3,279,139,0,1044,1043, - 1,0,0,0,1045,1048,1,0,0,0,1046,1044,1,0,0,0,1046,1047,1,0,0,0,1047,1050, - 1,0,0,0,1048,1046,1,0,0,0,1049,1041,1,0,0,0,1049,1042,1,0,0,0,1050,274, - 1,0,0,0,1051,1053,7,23,0,0,1052,1051,1,0,0,0,1053,276,1,0,0,0,1054,1057, - 3,279,139,0,1055,1057,3,275,137,0,1056,1054,1,0,0,0,1056,1055,1,0,0,0, - 1057,278,1,0,0,0,1058,1061,3,285,142,0,1059,1061,3,281,140,0,1060,1058, - 1,0,0,0,1060,1059,1,0,0,0,1061,280,1,0,0,0,1062,1065,3,283,141,0,1063, - 1065,2,56,57,0,1064,1062,1,0,0,0,1064,1063,1,0,0,0,1065,282,1,0,0,0,1066, - 1067,2,49,55,0,1067,284,1,0,0,0,1068,1069,5,48,0,0,1069,286,1,0,0,0,1070, - 1072,3,279,139,0,1071,1070,1,0,0,0,1072,1075,1,0,0,0,1073,1071,1,0,0, - 0,1073,1074,1,0,0,0,1074,1076,1,0,0,0,1075,1073,1,0,0,0,1076,1078,5,46, - 0,0,1077,1079,3,279,139,0,1078,1077,1,0,0,0,1079,1080,1,0,0,0,1080,1078, - 1,0,0,0,1080,1081,1,0,0,0,1081,288,1,0,0,0,1082,1086,3,291,145,0,1083, - 1085,3,293,146,0,1084,1083,1,0,0,0,1085,1088,1,0,0,0,1086,1084,1,0,0, - 0,1086,1087,1,0,0,0,1087,290,1,0,0,0,1088,1086,1,0,0,0,1089,1092,3,341, - 170,0,1090,1092,3,329,164,0,1091,1089,1,0,0,0,1091,1090,1,0,0,0,1092, - 292,1,0,0,0,1093,1096,3,309,154,0,1094,1096,3,325,162,0,1095,1093,1,0, - 0,0,1095,1094,1,0,0,0,1096,294,1,0,0,0,1097,1101,5,96,0,0,1098,1100,3, - 305,152,0,1099,1098,1,0,0,0,1100,1103,1,0,0,0,1101,1099,1,0,0,0,1101, - 1102,1,0,0,0,1102,1104,1,0,0,0,1103,1101,1,0,0,0,1104,1106,5,96,0,0,1105, - 1097,1,0,0,0,1106,1107,1,0,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108, - 296,1,0,0,0,1109,1111,3,299,149,0,1110,1109,1,0,0,0,1111,1112,1,0,0,0, - 1112,1110,1,0,0,0,1112,1113,1,0,0,0,1113,298,1,0,0,0,1114,1127,3,327, - 163,0,1115,1127,3,331,165,0,1116,1127,3,335,167,0,1117,1127,3,337,168, - 0,1118,1127,3,303,151,0,1119,1127,3,323,161,0,1120,1127,3,321,160,0,1121, - 1127,3,319,159,0,1122,1127,3,307,153,0,1123,1127,3,339,169,0,1124,1127, - 7,24,0,0,1125,1127,3,301,150,0,1126,1114,1,0,0,0,1126,1115,1,0,0,0,1126, - 1116,1,0,0,0,1126,1117,1,0,0,0,1126,1118,1,0,0,0,1126,1119,1,0,0,0,1126, - 1120,1,0,0,0,1126,1121,1,0,0,0,1126,1122,1,0,0,0,1126,1123,1,0,0,0,1126, - 1124,1,0,0,0,1126,1125,1,0,0,0,1127,300,1,0,0,0,1128,1129,5,47,0,0,1129, - 1130,5,42,0,0,1130,1136,1,0,0,0,1131,1135,3,311,155,0,1132,1133,5,42, - 0,0,1133,1135,3,317,158,0,1134,1131,1,0,0,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,1139,1,0,0,0,1138,1136, - 1,0,0,0,1139,1140,5,42,0,0,1140,1158,5,47,0,0,1141,1142,5,47,0,0,1142, - 1143,5,47,0,0,1143,1147,1,0,0,0,1144,1146,3,315,157,0,1145,1144,1,0,0, - 0,1146,1149,1,0,0,0,1147,1145,1,0,0,0,1147,1148,1,0,0,0,1148,1151,1,0, - 0,0,1149,1147,1,0,0,0,1150,1152,3,323,161,0,1151,1150,1,0,0,0,1151,1152, - 1,0,0,0,1152,1155,1,0,0,0,1153,1156,3,335,167,0,1154,1156,5,0,0,1,1155, - 1153,1,0,0,0,1155,1154,1,0,0,0,1156,1158,1,0,0,0,1157,1128,1,0,0,0,1157, - 1141,1,0,0,0,1158,302,1,0,0,0,1159,1160,7,25,0,0,1160,304,1,0,0,0,1161, - 1162,8,26,0,0,1162,306,1,0,0,0,1163,1164,7,27,0,0,1164,308,1,0,0,0,1165, - 1166,7,28,0,0,1166,310,1,0,0,0,1167,1168,8,29,0,0,1168,312,1,0,0,0,1169, - 1170,8,30,0,0,1170,314,1,0,0,0,1171,1172,8,31,0,0,1172,316,1,0,0,0,1173, - 1174,8,32,0,0,1174,318,1,0,0,0,1175,1176,7,33,0,0,1176,320,1,0,0,0,1177, - 1178,7,34,0,0,1178,322,1,0,0,0,1179,1180,7,35,0,0,1180,324,1,0,0,0,1181, - 1182,7,36,0,0,1182,326,1,0,0,0,1183,1184,7,37,0,0,1184,328,1,0,0,0,1185, - 1186,7,38,0,0,1186,330,1,0,0,0,1187,1188,7,39,0,0,1188,332,1,0,0,0,1189, - 1190,8,40,0,0,1190,334,1,0,0,0,1191,1192,7,41,0,0,1192,336,1,0,0,0,1193, - 1194,7,42,0,0,1194,338,1,0,0,0,1195,1196,7,43,0,0,1196,340,1,0,0,0,1197, - 1198,7,44,0,0,1198,342,1,0,0,0,1199,1200,9,0,0,0,1200,344,1,0,0,0,28, - 0,1004,1006,1013,1015,1019,1039,1046,1049,1052,1056,1060,1064,1073,1080, - 1086,1091,1095,1101,1107,1112,1126,1134,1136,1147,1151,1155,1157,0 + 114,2,0,71,71,103,103,2,0,70,70,102,102,2,0,88,88,120,120,2,0,73,73,105, + 105,2,0,75,75,107,107,2,0,87,87,119,119,13,0,34,34,39,39,66,66,70,70, + 78,78,82,82,84,84,92,92,98,98,102,102,110,110,114,114,116,116,2,0,65, + 70,97,102,8,0,160,160,5760,5760,6158,6158,8192,8202,8232,8233,8239,8239, + 8287,8287,12288,12288,1,0,12,12,1,0,96,96,1,0,30,30,768,0,48,57,65,90, + 95,95,97,122,170,170,181,181,183,183,186,186,192,214,216,246,248,705, + 710,721,736,740,748,748,750,750,768,884,886,887,890,893,895,895,902,906, + 908,908,910,929,931,1013,1015,1153,1155,1159,1162,1327,1329,1366,1369, + 1369,1376,1416,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488, + 1514,1519,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770, + 1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048, + 2093,2112,2139,2144,2154,2160,2183,2185,2190,2200,2273,2275,2403,2406, + 2415,2417,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486, + 2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534, + 2545,2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602, + 2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635, + 2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703, + 2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763, + 2765,2768,2768,2784,2787,2790,2799,2809,2815,2817,2819,2821,2828,2831, + 2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891, + 2893,2901,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949, + 2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984, + 2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046, + 3055,3072,3084,3086,3088,3090,3112,3114,3129,3132,3140,3142,3144,3146, + 3149,3157,3158,3160,3162,3165,3165,3168,3171,3174,3183,3200,3203,3205, + 3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274, + 3277,3285,3286,3293,3294,3296,3299,3302,3311,3313,3315,3328,3340,3342, + 3344,3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450, + 3455,3457,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530, + 3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3585,3642,3648, + 3662,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751, + 3773,3776,3780,3782,3782,3784,3790,3792,3801,3804,3807,3840,3840,3864, + 3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953, + 3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295, + 4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698, + 4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802, + 4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4969,4977,4992, + 5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870, + 5880,5888,5909,5919,5940,5952,5971,5984,5996,5998,6000,6002,6003,6016, + 6099,6103,6103,6108,6109,6112,6121,6155,6157,6159,6169,6176,6264,6272, + 6314,6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528, + 6571,6576,6601,6608,6618,6656,6683,6688,6750,6752,6780,6783,6793,6800, + 6809,6823,6823,6832,6845,6847,6862,6912,6988,6992,7001,7019,7027,7040, + 7155,7168,7223,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7376, + 7378,7380,7418,7424,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025, + 8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130, + 8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8255, + 8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421, + 8432,8450,8450,8455,8455,8458,8467,8469,8469,8472,8477,8484,8484,8486, + 8486,8488,8488,8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264, + 11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631, + 11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712, + 11718,11720,11726,11728,11734,11736,11742,11744,11775,12293,12295,12321, + 12335,12337,12341,12344,12348,12353,12438,12441,12447,12449,12538,12540, + 12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968, + 42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623, + 42737,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965, + 42969,42994,43047,43052,43052,43072,43123,43136,43205,43216,43225,43232, + 43255,43259,43259,43261,43309,43312,43347,43360,43388,43392,43456,43471, + 43481,43488,43518,43520,43574,43584,43597,43600,43609,43616,43638,43642, + 43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793, + 43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44010,44012, + 44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112, + 64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318, + 64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914, + 64967,65008,65019,65024,65039,65056,65071,65075,65076,65101,65103,65136, + 65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382, + 65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549, + 65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856, + 65908,66045,66045,66176,66204,66208,66256,66272,66272,66304,66335,66349, + 66378,66384,66426,66432,66461,66464,66499,66504,66511,66513,66517,66560, + 66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,66928, + 66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995, + 67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463, + 67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644, + 67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840, + 67861,67872,67897,67968,68023,68030,68031,68096,68099,68101,68102,68108, + 68115,68117,68119,68121,68149,68152,68154,68159,68159,68192,68220,68224, + 68252,68288,68295,68297,68326,68352,68405,68416,68437,68448,68466,68480, + 68497,68608,68680,68736,68786,68800,68850,68864,68903,68912,68921,69248, + 69289,69291,69292,69296,69297,69373,69404,69415,69415,69424,69456,69488, + 69509,69552,69572,69600,69622,69632,69702,69734,69749,69759,69818,69826, + 69826,69840,69864,69872,69881,69888,69940,69942,69951,69956,69959,69968, + 70003,70006,70006,70016,70084,70089,70092,70094,70106,70108,70108,70144, + 70161,70163,70199,70206,70209,70272,70278,70280,70280,70282,70285,70287, + 70301,70303,70312,70320,70378,70384,70393,70400,70403,70405,70412,70415, + 70416,70419,70440,70442,70448,70450,70451,70453,70457,70459,70468,70471, + 70472,70475,70477,70480,70480,70487,70487,70493,70499,70502,70508,70512, + 70516,70656,70730,70736,70745,70750,70753,70784,70853,70855,70855,70864, + 70873,71040,71093,71096,71104,71128,71133,71168,71232,71236,71236,71248, + 71257,71296,71352,71360,71369,71424,71450,71453,71467,71472,71481,71488, + 71494,71680,71738,71840,71913,71935,71942,71945,71945,71948,71955,71957, + 71958,71960,71989,71991,71992,71995,72003,72016,72025,72096,72103,72106, + 72151,72154,72161,72163,72164,72192,72254,72263,72263,72272,72345,72349, + 72349,72368,72440,72704,72712,72714,72758,72760,72768,72784,72793,72818, + 72847,72850,72871,72873,72886,72960,72966,72968,72969,72971,73014,73018, + 73018,73020,73021,73023,73031,73040,73049,73056,73061,73063,73064,73066, + 73102,73104,73105,73107,73112,73120,73129,73440,73462,73472,73488,73490, + 73530,73534,73538,73552,73561,73648,73648,73728,74649,74752,74862,74880, + 75075,77712,77808,77824,78895,78912,78933,82944,83526,92160,92728,92736, + 92766,92768,92777,92784,92862,92864,92873,92880,92909,92912,92916,92928, + 92982,92992,92995,93008,93017,93027,93047,93053,93071,93760,93823,93952, + 94026,94031,94087,94095,94111,94176,94177,94179,94180,94192,94193,94208, + 100343,100352,101589,101632,101640,110576,110579,110581,110587,110589, + 110590,110592,110882,110898,110898,110928,110930,110933,110933,110948, + 110951,110960,111355,113664,113770,113776,113788,113792,113800,113808, + 113817,113821,113822,118528,118573,118576,118598,119141,119145,119149, + 119154,119163,119170,119173,119179,119210,119213,119362,119364,119808, + 119892,119894,119964,119966,119967,119970,119970,119973,119974,119977, + 119980,119982,119993,119995,119995,119997,120003,120005,120069,120071, + 120074,120077,120084,120086,120092,120094,120121,120123,120126,120128, + 120132,120134,120134,120138,120144,120146,120485,120488,120512,120514, + 120538,120540,120570,120572,120596,120598,120628,120630,120654,120656, + 120686,120688,120712,120714,120744,120746,120770,120772,120779,120782, + 120831,121344,121398,121403,121452,121461,121461,121476,121476,121499, + 121503,121505,121519,122624,122654,122661,122666,122880,122886,122888, + 122904,122907,122913,122915,122916,122918,122922,122928,122989,123023, + 123023,123136,123180,123184,123197,123200,123209,123214,123214,123536, + 123566,123584,123641,124112,124153,124896,124902,124904,124907,124909, + 124910,124912,124926,124928,125124,125136,125142,125184,125259,125264, + 125273,126464,126467,126469,126495,126497,126498,126500,126500,126503, + 126503,126505,126514,126516,126519,126521,126521,126523,126523,126530, + 126530,126535,126535,126537,126537,126539,126539,126541,126543,126545, + 126546,126548,126548,126551,126551,126553,126553,126555,126555,126557, + 126557,126559,126559,126561,126562,126564,126564,126567,126570,126572, + 126578,126580,126583,126585,126588,126590,126590,126592,126601,126603, + 126619,126625,126627,126629,126633,126635,126651,130032,130041,131072, + 173791,173824,177977,177984,178205,178208,183969,183984,191456,194560, + 195101,196608,201546,201552,205743,917760,917999,1,0,42,42,2,0,39,39, + 92,92,2,0,10,10,13,13,1,0,47,47,1,0,29,29,1,0,28,28,1,0,13,13,21,0,36, + 36,162,165,1423,1423,1547,1547,2046,2047,2546,2547,2555,2555,2801,2801, + 3065,3065,3647,3647,6107,6107,8352,8384,43064,43064,65020,65020,65129, + 65129,65284,65284,65504,65505,65509,65510,73693,73696,123647,123647,126128, + 126128,1,0,32,32,6,0,95,95,8255,8256,8276,8276,65075,65076,65101,65103, + 65343,65343,1,0,9,9,2,0,34,34,92,92,1,0,10,10,1,0,11,11,1,0,31,31,659, + 0,65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,705,710,721, + 736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906, + 908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376, + 1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765, + 1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969, + 1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088, + 2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365, + 2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474, + 2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544, + 2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613, + 2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707, + 2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809, + 2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877, + 2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962, + 2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024, + 3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3165, + 3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253, + 3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346, + 3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482, + 3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713, + 3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773, + 3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976, + 3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206, + 4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348, + 4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752, + 4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882, + 4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761, + 5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998, + 6000,6016,6067,6103,6103,6108,6108,6176,6264,6272,6312,6314,6314,6320, + 6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688, + 6740,6823,6823,6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168, + 7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406, + 7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008, + 8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118, + 8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178, + 8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458, + 8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490,8505,8508, + 8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11502,11506,11507, + 11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670, + 11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726, + 11728,11734,11736,11742,12293,12295,12321,12329,12337,12341,12344,12348, + 12353,12438,12443,12447,12449,12538,12540,12543,12549,12591,12593,12686, + 12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508, + 42512,42527,42538,42539,42560,42606,42623,42653,42656,42735,42775,42783, + 42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43009, + 43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255, + 43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,43442, + 43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,43586, + 43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702, + 43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764, + 43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866, + 43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,63744,64109, + 64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310, + 64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829, + 64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338, + 65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500, + 65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629, + 65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66349,66378, + 66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717, + 66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954, + 66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004, + 67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514, + 67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669, + 67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897, + 67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149, + 68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437, + 68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899, + 69248,69289,69296,69297,69376,69404,69415,69415,69424,69445,69488,69505, + 69552,69572,69600,69622,69635,69687,69745,69746,69749,69749,69763,69807, + 69840,69864,69891,69926,69956,69956,69959,69959,69968,70002,70006,70006, + 70019,70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187, + 70207,70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312, + 70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451, + 70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,70730, + 70751,70753,70784,70831,70852,70853,70855,70855,71040,71086,71128,71131, + 71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71488,71494, + 71680,71723,71840,71903,71935,71942,71945,71945,71948,71955,71957,71958, + 71960,71983,71999,71999,72001,72001,72096,72103,72106,72144,72161,72161, + 72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329, + 72349,72349,72368,72440,72704,72712,72714,72750,72768,72768,72818,72847, + 72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,73064, + 73066,73097,73112,73112,73440,73458,73474,73474,73476,73488,73490,73523, + 73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895, + 78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880,92909, + 92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026, + 94032,94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101589, + 101632,101640,110576,110579,110581,110587,110589,110590,110592,110882, + 110898,110898,110928,110930,110933,110933,110948,110951,110960,111355, + 113664,113770,113776,113788,113792,113800,113808,113817,119808,119892, + 119894,119964,119966,119967,119970,119970,119973,119974,119977,119980, + 119982,119993,119995,119995,119997,120003,120005,120069,120071,120074, + 120077,120084,120086,120092,120094,120121,120123,120126,120128,120132, + 120134,120134,120138,120144,120146,120485,120488,120512,120514,120538, + 120540,120570,120572,120596,120598,120628,120630,120654,120656,120686, + 120688,120712,120714,120744,120746,120770,120772,120779,122624,122654, + 122661,122666,122928,122989,123136,123180,123191,123197,123214,123214, + 123536,123565,123584,123627,124112,124139,124896,124902,124904,124907, + 124909,124910,124912,124926,124928,125124,125184,125251,125259,125259, + 126464,126467,126469,126495,126497,126498,126500,126500,126503,126503, + 126505,126514,126516,126519,126521,126521,126523,126523,126530,126530, + 126535,126535,126537,126537,126539,126539,126541,126543,126545,126546, + 126548,126548,126551,126551,126553,126553,126555,126555,126557,126557, + 126559,126559,126561,126562,126564,126564,126567,126570,126572,126578, + 126580,126583,126585,126588,126590,126590,126592,126601,126603,126619, + 126625,126627,126629,126633,126635,126651,131072,173791,173824,177977, + 177984,178205,178208,183969,183984,191456,194560,195101,196608,201546, + 201552,205743,1223,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,345,1,0,0,0,1,347,1,0,0,0,3,349,1,0,0,0,5,351,1,0,0,0,7,353,1,0,0,0, + 9,355,1,0,0,0,11,357,1,0,0,0,13,359,1,0,0,0,15,361,1,0,0,0,17,363,1,0, + 0,0,19,365,1,0,0,0,21,367,1,0,0,0,23,369,1,0,0,0,25,372,1,0,0,0,27,375, + 1,0,0,0,29,377,1,0,0,0,31,380,1,0,0,0,33,382,1,0,0,0,35,385,1,0,0,0,37, + 387,1,0,0,0,39,390,1,0,0,0,41,393,1,0,0,0,43,395,1,0,0,0,45,397,1,0,0, + 0,47,399,1,0,0,0,49,401,1,0,0,0,51,404,1,0,0,0,53,406,1,0,0,0,55,408, + 1,0,0,0,57,410,1,0,0,0,59,412,1,0,0,0,61,414,1,0,0,0,63,416,1,0,0,0,65, + 418,1,0,0,0,67,420,1,0,0,0,69,422,1,0,0,0,71,424,1,0,0,0,73,426,1,0,0, + 0,75,428,1,0,0,0,77,430,1,0,0,0,79,432,1,0,0,0,81,434,1,0,0,0,83,436, + 1,0,0,0,85,438,1,0,0,0,87,440,1,0,0,0,89,442,1,0,0,0,91,444,1,0,0,0,93, + 451,1,0,0,0,95,458,1,0,0,0,97,462,1,0,0,0,99,467,1,0,0,0,101,475,1,0, + 0,0,103,481,1,0,0,0,105,486,1,0,0,0,107,491,1,0,0,0,109,496,1,0,0,0,111, + 503,1,0,0,0,113,510,1,0,0,0,115,517,1,0,0,0,117,526,1,0,0,0,119,531,1, + 0,0,0,121,537,1,0,0,0,123,543,1,0,0,0,125,552,1,0,0,0,127,557,1,0,0,0, + 129,563,1,0,0,0,131,571,1,0,0,0,133,578,1,0,0,0,135,582,1,0,0,0,137,590, + 1,0,0,0,139,594,1,0,0,0,141,598,1,0,0,0,143,601,1,0,0,0,145,609,1,0,0, + 0,147,617,1,0,0,0,149,623,1,0,0,0,151,635,1,0,0,0,153,640,1,0,0,0,155, + 645,1,0,0,0,157,651,1,0,0,0,159,658,1,0,0,0,161,681,1,0,0,0,163,690,1, + 0,0,0,165,715,1,0,0,0,167,723,1,0,0,0,169,733,1,0,0,0,171,739,1,0,0,0, + 173,743,1,0,0,0,175,748,1,0,0,0,177,756,1,0,0,0,179,765,1,0,0,0,181,771, + 1,0,0,0,183,778,1,0,0,0,185,785,1,0,0,0,187,791,1,0,0,0,189,794,1,0,0, + 0,191,798,1,0,0,0,193,805,1,0,0,0,195,812,1,0,0,0,197,817,1,0,0,0,199, + 824,1,0,0,0,201,833,1,0,0,0,203,835,1,0,0,0,205,838,1,0,0,0,207,844,1, + 0,0,0,209,847,1,0,0,0,211,852,1,0,0,0,213,858,1,0,0,0,215,868,1,0,0,0, + 217,872,1,0,0,0,219,883,1,0,0,0,221,888,1,0,0,0,223,894,1,0,0,0,225,903, + 1,0,0,0,227,906,1,0,0,0,229,910,1,0,0,0,231,914,1,0,0,0,233,918,1,0,0, + 0,235,921,1,0,0,0,237,923,1,0,0,0,239,925,1,0,0,0,241,927,1,0,0,0,243, + 930,1,0,0,0,245,937,1,0,0,0,247,942,1,0,0,0,249,951,1,0,0,0,251,954,1, + 0,0,0,253,959,1,0,0,0,255,964,1,0,0,0,257,970,1,0,0,0,259,976,1,0,0,0, + 261,983,1,0,0,0,263,988,1,0,0,0,265,993,1,0,0,0,267,997,1,0,0,0,269,1002, + 1,0,0,0,271,1025,1,0,0,0,273,1027,1,0,0,0,275,1055,1,0,0,0,277,1058,1, + 0,0,0,279,1062,1,0,0,0,281,1066,1,0,0,0,283,1070,1,0,0,0,285,1072,1,0, + 0,0,287,1074,1,0,0,0,289,1079,1,0,0,0,291,1088,1,0,0,0,293,1097,1,0,0, + 0,295,1101,1,0,0,0,297,1111,1,0,0,0,299,1116,1,0,0,0,301,1132,1,0,0,0, + 303,1163,1,0,0,0,305,1165,1,0,0,0,307,1167,1,0,0,0,309,1169,1,0,0,0,311, + 1171,1,0,0,0,313,1173,1,0,0,0,315,1175,1,0,0,0,317,1177,1,0,0,0,319,1179, + 1,0,0,0,321,1181,1,0,0,0,323,1183,1,0,0,0,325,1185,1,0,0,0,327,1187,1, + 0,0,0,329,1189,1,0,0,0,331,1191,1,0,0,0,333,1193,1,0,0,0,335,1195,1,0, + 0,0,337,1197,1,0,0,0,339,1199,1,0,0,0,341,1201,1,0,0,0,343,1203,1,0,0, + 0,345,1205,1,0,0,0,347,348,5,59,0,0,348,2,1,0,0,0,349,350,5,40,0,0,350, + 4,1,0,0,0,351,352,5,44,0,0,352,6,1,0,0,0,353,354,5,41,0,0,354,8,1,0,0, + 0,355,356,5,46,0,0,356,10,1,0,0,0,357,358,5,61,0,0,358,12,1,0,0,0,359, + 360,5,91,0,0,360,14,1,0,0,0,361,362,5,93,0,0,362,16,1,0,0,0,363,364,5, + 123,0,0,364,18,1,0,0,0,365,366,5,125,0,0,366,20,1,0,0,0,367,368,5,124, + 0,0,368,22,1,0,0,0,369,370,5,46,0,0,370,371,5,46,0,0,371,24,1,0,0,0,372, + 373,5,60,0,0,373,374,5,62,0,0,374,26,1,0,0,0,375,376,5,60,0,0,376,28, + 1,0,0,0,377,378,5,60,0,0,378,379,5,61,0,0,379,30,1,0,0,0,380,381,5,62, + 0,0,381,32,1,0,0,0,382,383,5,62,0,0,383,384,5,61,0,0,384,34,1,0,0,0,385, + 386,5,38,0,0,386,36,1,0,0,0,387,388,5,62,0,0,388,389,5,62,0,0,389,38, + 1,0,0,0,390,391,5,60,0,0,391,392,5,60,0,0,392,40,1,0,0,0,393,394,5,43, + 0,0,394,42,1,0,0,0,395,396,5,47,0,0,396,44,1,0,0,0,397,398,5,37,0,0,398, + 46,1,0,0,0,399,400,5,94,0,0,400,48,1,0,0,0,401,402,5,61,0,0,402,403,5, + 126,0,0,403,50,1,0,0,0,404,405,5,36,0,0,405,52,1,0,0,0,406,407,5,10216, + 0,0,407,54,1,0,0,0,408,409,5,12296,0,0,409,56,1,0,0,0,410,411,5,65124, + 0,0,411,58,1,0,0,0,412,413,5,65308,0,0,413,60,1,0,0,0,414,415,5,10217, + 0,0,415,62,1,0,0,0,416,417,5,12297,0,0,417,64,1,0,0,0,418,419,5,65125, + 0,0,419,66,1,0,0,0,420,421,5,65310,0,0,421,68,1,0,0,0,422,423,5,173,0, + 0,423,70,1,0,0,0,424,425,5,8208,0,0,425,72,1,0,0,0,426,427,5,8209,0,0, + 427,74,1,0,0,0,428,429,5,8210,0,0,429,76,1,0,0,0,430,431,5,8211,0,0,431, + 78,1,0,0,0,432,433,5,8212,0,0,433,80,1,0,0,0,434,435,5,8213,0,0,435,82, + 1,0,0,0,436,437,5,8722,0,0,437,84,1,0,0,0,438,439,5,65112,0,0,439,86, + 1,0,0,0,440,441,5,65123,0,0,441,88,1,0,0,0,442,443,5,65293,0,0,443,90, + 1,0,0,0,444,445,7,0,0,0,445,446,7,1,0,0,446,447,7,1,0,0,447,448,7,0,0, + 0,448,449,7,2,0,0,449,450,7,3,0,0,450,92,1,0,0,0,451,452,7,4,0,0,452, + 453,7,5,0,0,453,454,7,1,0,0,454,455,7,6,0,0,455,456,7,7,0,0,456,457,7, + 8,0,0,457,94,1,0,0,0,458,459,7,9,0,0,459,460,7,10,0,0,460,461,7,8,0,0, + 461,96,1,0,0,0,462,463,7,2,0,0,463,464,7,0,0,0,464,465,7,11,0,0,465,466, + 7,11,0,0,466,98,1,0,0,0,467,468,7,2,0,0,468,469,7,12,0,0,469,470,7,13, + 0,0,470,471,7,13,0,0,471,472,7,8,0,0,472,473,7,14,0,0,473,474,7,1,0,0, + 474,100,1,0,0,0,475,476,7,13,0,0,476,477,7,0,0,0,477,478,7,2,0,0,478, + 479,7,15,0,0,479,480,7,12,0,0,480,102,1,0,0,0,481,482,7,16,0,0,482,483, + 7,11,0,0,483,484,7,12,0,0,484,485,7,5,0,0,485,104,1,0,0,0,486,487,7,2, + 0,0,487,488,7,12,0,0,488,489,7,7,0,0,489,490,7,6,0,0,490,106,1,0,0,0, + 491,492,7,17,0,0,492,493,7,15,0,0,493,494,7,12,0,0,494,495,7,13,0,0,495, + 108,1,0,0,0,496,497,7,2,0,0,497,498,7,12,0,0,498,499,7,11,0,0,499,500, + 7,9,0,0,500,501,7,13,0,0,501,502,7,14,0,0,502,110,1,0,0,0,503,504,7,8, + 0,0,504,505,7,18,0,0,505,506,7,7,0,0,506,507,7,12,0,0,507,508,7,15,0, + 0,508,509,7,1,0,0,509,112,1,0,0,0,510,511,7,19,0,0,511,512,7,13,0,0,512, + 513,7,7,0,0,513,514,7,12,0,0,514,515,7,15,0,0,515,516,7,1,0,0,516,114, + 1,0,0,0,517,518,7,4,0,0,518,519,7,0,0,0,519,520,7,1,0,0,520,521,7,0,0, + 0,521,522,7,5,0,0,522,523,7,0,0,0,523,524,7,10,0,0,524,525,7,8,0,0,525, + 116,1,0,0,0,526,527,7,14,0,0,527,528,7,12,0,0,528,529,7,4,0,0,529,530, + 7,8,0,0,530,118,1,0,0,0,531,532,7,1,0,0,532,533,7,0,0,0,533,534,7,5,0, + 0,534,535,7,11,0,0,535,536,7,8,0,0,536,120,1,0,0,0,537,538,7,16,0,0,538, + 539,7,15,0,0,539,540,7,12,0,0,540,541,7,9,0,0,541,542,7,7,0,0,542,122, + 1,0,0,0,543,544,7,15,0,0,544,545,7,4,0,0,545,546,7,17,0,0,546,547,7,16, + 0,0,547,548,7,15,0,0,548,549,7,0,0,0,549,550,7,7,0,0,550,551,7,3,0,0, + 551,124,1,0,0,0,552,553,7,4,0,0,553,554,7,15,0,0,554,555,7,12,0,0,555, + 556,7,7,0,0,556,126,1,0,0,0,557,558,7,0,0,0,558,559,7,11,0,0,559,560, + 7,1,0,0,560,561,7,8,0,0,561,562,7,15,0,0,562,128,1,0,0,0,563,564,7,4, + 0,0,564,565,7,8,0,0,565,566,7,17,0,0,566,567,7,0,0,0,567,568,7,9,0,0, + 568,569,7,11,0,0,569,570,7,1,0,0,570,130,1,0,0,0,571,572,7,15,0,0,572, + 573,7,8,0,0,573,574,7,14,0,0,574,575,7,0,0,0,575,576,7,13,0,0,576,577, + 7,8,0,0,577,132,1,0,0,0,578,579,7,0,0,0,579,580,7,4,0,0,580,581,7,4,0, + 0,581,134,1,0,0,0,582,583,7,7,0,0,583,584,7,15,0,0,584,585,7,19,0,0,585, + 586,7,13,0,0,586,587,7,0,0,0,587,588,7,15,0,0,588,589,7,6,0,0,589,136, + 1,0,0,0,590,591,7,20,0,0,591,592,7,8,0,0,592,593,7,6,0,0,593,138,1,0, + 0,0,594,595,7,15,0,0,595,596,7,8,0,0,596,597,7,11,0,0,597,140,1,0,0,0, + 598,599,7,1,0,0,599,600,7,12,0,0,600,142,1,0,0,0,601,602,7,8,0,0,602, + 603,7,18,0,0,603,604,7,7,0,0,604,605,7,11,0,0,605,606,7,0,0,0,606,607, + 7,19,0,0,607,608,7,14,0,0,608,144,1,0,0,0,609,610,7,7,0,0,610,611,7,15, + 0,0,611,612,7,12,0,0,612,613,7,17,0,0,613,614,7,19,0,0,614,615,7,11,0, + 0,615,616,7,8,0,0,616,146,1,0,0,0,617,618,7,5,0,0,618,619,7,8,0,0,619, + 620,7,16,0,0,620,621,7,19,0,0,621,622,7,14,0,0,622,148,1,0,0,0,623,624, + 7,1,0,0,624,625,7,15,0,0,625,626,7,0,0,0,626,627,7,14,0,0,627,628,7,10, + 0,0,628,629,7,0,0,0,629,630,7,2,0,0,630,631,7,1,0,0,631,632,7,19,0,0, + 632,633,7,12,0,0,633,634,7,14,0,0,634,150,1,0,0,0,635,636,7,15,0,0,636, + 637,7,8,0,0,637,638,7,0,0,0,638,639,7,4,0,0,639,152,1,0,0,0,640,641,7, + 12,0,0,641,642,7,14,0,0,642,643,7,11,0,0,643,644,7,6,0,0,644,154,1,0, + 0,0,645,646,7,21,0,0,646,647,7,15,0,0,647,648,7,19,0,0,648,649,7,1,0, + 0,649,650,7,8,0,0,650,156,1,0,0,0,651,652,7,2,0,0,652,653,7,12,0,0,653, + 654,7,13,0,0,654,655,7,13,0,0,655,656,7,19,0,0,656,657,7,1,0,0,657,158, + 1,0,0,0,658,659,7,2,0,0,659,660,7,12,0,0,660,661,7,13,0,0,661,662,7,13, + 0,0,662,663,7,19,0,0,663,664,7,1,0,0,664,665,5,95,0,0,665,666,7,10,0, + 0,666,667,7,20,0,0,667,668,7,19,0,0,668,669,7,7,0,0,669,670,5,95,0,0, + 670,671,7,2,0,0,671,672,7,3,0,0,672,673,7,8,0,0,673,674,7,2,0,0,674,675, + 7,20,0,0,675,676,7,7,0,0,676,677,7,12,0,0,677,678,7,19,0,0,678,679,7, + 14,0,0,679,680,7,1,0,0,680,160,1,0,0,0,681,682,7,15,0,0,682,683,7,12, + 0,0,683,684,7,11,0,0,684,685,7,11,0,0,685,686,7,5,0,0,686,687,7,0,0,0, + 687,688,7,2,0,0,688,689,7,20,0,0,689,162,1,0,0,0,690,691,7,15,0,0,691, + 692,7,12,0,0,692,693,7,11,0,0,693,694,7,11,0,0,694,695,7,5,0,0,695,696, + 7,0,0,0,696,697,7,2,0,0,697,698,7,20,0,0,698,699,5,95,0,0,699,700,7,10, + 0,0,700,701,7,20,0,0,701,702,7,19,0,0,702,703,7,7,0,0,703,704,5,95,0, + 0,704,705,7,2,0,0,705,706,7,3,0,0,706,707,7,8,0,0,707,708,7,2,0,0,708, + 709,7,20,0,0,709,710,7,7,0,0,710,711,7,12,0,0,711,712,7,19,0,0,712,713, + 7,14,0,0,713,714,7,1,0,0,714,164,1,0,0,0,715,716,7,19,0,0,716,717,7,14, + 0,0,717,718,7,10,0,0,718,719,7,1,0,0,719,720,7,0,0,0,720,721,7,11,0,0, + 721,722,7,11,0,0,722,166,1,0,0,0,723,724,7,8,0,0,724,725,7,18,0,0,725, + 726,7,1,0,0,726,727,7,8,0,0,727,728,7,14,0,0,728,729,7,10,0,0,729,730, + 7,19,0,0,730,731,7,12,0,0,731,732,7,14,0,0,732,168,1,0,0,0,733,734,7, + 9,0,0,734,735,7,14,0,0,735,736,7,19,0,0,736,737,7,12,0,0,737,738,7,14, + 0,0,738,170,1,0,0,0,739,740,7,0,0,0,740,741,7,11,0,0,741,742,7,11,0,0, + 742,172,1,0,0,0,743,744,7,11,0,0,744,745,7,12,0,0,745,746,7,0,0,0,746, + 747,7,4,0,0,747,174,1,0,0,0,748,749,7,3,0,0,749,750,7,8,0,0,750,751,7, + 0,0,0,751,752,7,4,0,0,752,753,7,8,0,0,753,754,7,15,0,0,754,755,7,10,0, + 0,755,176,1,0,0,0,756,757,7,12,0,0,757,758,7,7,0,0,758,759,7,1,0,0,759, + 760,7,19,0,0,760,761,7,12,0,0,761,762,7,14,0,0,762,763,7,0,0,0,763,764, + 7,11,0,0,764,178,1,0,0,0,765,766,7,13,0,0,766,767,7,0,0,0,767,768,7,1, + 0,0,768,769,7,2,0,0,769,770,7,3,0,0,770,180,1,0,0,0,771,772,7,9,0,0,772, + 773,7,14,0,0,773,774,7,21,0,0,774,775,7,19,0,0,775,776,7,14,0,0,776,777, + 7,4,0,0,777,182,1,0,0,0,778,779,7,2,0,0,779,780,7,15,0,0,780,781,7,8, + 0,0,781,782,7,0,0,0,782,783,7,1,0,0,783,784,7,8,0,0,784,184,1,0,0,0,785, + 786,7,13,0,0,786,787,7,8,0,0,787,788,7,15,0,0,788,789,7,16,0,0,789,790, + 7,8,0,0,790,186,1,0,0,0,791,792,7,12,0,0,792,793,7,14,0,0,793,188,1,0, + 0,0,794,795,7,10,0,0,795,796,7,8,0,0,796,797,7,1,0,0,797,190,1,0,0,0, + 798,799,7,4,0,0,799,800,7,8,0,0,800,801,7,1,0,0,801,802,7,0,0,0,802,803, + 7,2,0,0,803,804,7,3,0,0,804,192,1,0,0,0,805,806,7,4,0,0,806,807,7,8,0, + 0,807,808,7,11,0,0,808,809,7,8,0,0,809,810,7,1,0,0,810,811,7,8,0,0,811, + 194,1,0,0,0,812,813,7,21,0,0,813,814,7,19,0,0,814,815,7,1,0,0,815,816, + 7,3,0,0,816,196,1,0,0,0,817,818,7,15,0,0,818,819,7,8,0,0,819,820,7,1, + 0,0,820,821,7,9,0,0,821,822,7,15,0,0,822,823,7,14,0,0,823,198,1,0,0,0, + 824,825,7,4,0,0,825,826,7,19,0,0,826,827,7,10,0,0,827,828,7,1,0,0,828, + 829,7,19,0,0,829,830,7,14,0,0,830,831,7,2,0,0,831,832,7,1,0,0,832,200, + 1,0,0,0,833,834,5,42,0,0,834,202,1,0,0,0,835,836,7,0,0,0,836,837,7,10, + 0,0,837,204,1,0,0,0,838,839,7,12,0,0,839,840,7,15,0,0,840,841,7,4,0,0, + 841,842,7,8,0,0,842,843,7,15,0,0,843,206,1,0,0,0,844,845,7,5,0,0,845, + 846,7,6,0,0,846,208,1,0,0,0,847,848,7,10,0,0,848,849,7,20,0,0,849,850, + 7,19,0,0,850,851,7,7,0,0,851,210,1,0,0,0,852,853,7,11,0,0,853,854,7,19, + 0,0,854,855,7,13,0,0,855,856,7,19,0,0,856,857,7,1,0,0,857,212,1,0,0,0, + 858,859,7,0,0,0,859,860,7,10,0,0,860,861,7,2,0,0,861,862,7,8,0,0,862, + 863,7,14,0,0,863,864,7,4,0,0,864,865,7,19,0,0,865,866,7,14,0,0,866,867, + 7,16,0,0,867,214,1,0,0,0,868,869,7,0,0,0,869,870,7,10,0,0,870,871,7,2, + 0,0,871,216,1,0,0,0,872,873,7,4,0,0,873,874,7,8,0,0,874,875,7,10,0,0, + 875,876,7,2,0,0,876,877,7,8,0,0,877,878,7,14,0,0,878,879,7,4,0,0,879, + 880,7,19,0,0,880,881,7,14,0,0,881,882,7,16,0,0,882,218,1,0,0,0,883,884, + 7,4,0,0,884,885,7,8,0,0,885,886,7,10,0,0,886,887,7,2,0,0,887,220,1,0, + 0,0,888,889,7,21,0,0,889,890,7,3,0,0,890,891,7,8,0,0,891,892,7,15,0,0, + 892,893,7,8,0,0,893,222,1,0,0,0,894,895,7,10,0,0,895,896,7,3,0,0,896, + 897,7,12,0,0,897,898,7,15,0,0,898,899,7,1,0,0,899,900,7,8,0,0,900,901, + 7,10,0,0,901,902,7,1,0,0,902,224,1,0,0,0,903,904,7,12,0,0,904,905,7,15, + 0,0,905,226,1,0,0,0,906,907,7,18,0,0,907,908,7,12,0,0,908,909,7,15,0, + 0,909,228,1,0,0,0,910,911,7,0,0,0,911,912,7,14,0,0,912,913,7,4,0,0,913, + 230,1,0,0,0,914,915,7,14,0,0,915,916,7,12,0,0,916,917,7,1,0,0,917,232, + 1,0,0,0,918,919,5,33,0,0,919,920,5,61,0,0,920,234,1,0,0,0,921,922,5,45, + 0,0,922,236,1,0,0,0,923,924,5,33,0,0,924,238,1,0,0,0,925,926,5,58,0,0, + 926,240,1,0,0,0,927,928,7,19,0,0,928,929,7,14,0,0,929,242,1,0,0,0,930, + 931,7,10,0,0,931,932,7,1,0,0,932,933,7,0,0,0,933,934,7,15,0,0,934,935, + 7,1,0,0,935,936,7,10,0,0,936,244,1,0,0,0,937,938,7,8,0,0,938,939,7,14, + 0,0,939,940,7,4,0,0,940,941,7,10,0,0,941,246,1,0,0,0,942,943,7,2,0,0, + 943,944,7,12,0,0,944,945,7,14,0,0,945,946,7,1,0,0,946,947,7,0,0,0,947, + 948,7,19,0,0,948,949,7,14,0,0,949,950,7,10,0,0,950,248,1,0,0,0,951,952, + 7,19,0,0,952,953,7,10,0,0,953,250,1,0,0,0,954,955,7,14,0,0,955,956,7, + 9,0,0,956,957,7,11,0,0,957,958,7,11,0,0,958,252,1,0,0,0,959,960,7,1,0, + 0,960,961,7,15,0,0,961,962,7,9,0,0,962,963,7,8,0,0,963,254,1,0,0,0,964, + 965,7,17,0,0,965,966,7,0,0,0,966,967,7,11,0,0,967,968,7,10,0,0,968,969, + 7,8,0,0,969,256,1,0,0,0,970,971,7,2,0,0,971,972,7,12,0,0,972,973,7,9, + 0,0,973,974,7,14,0,0,974,975,7,1,0,0,975,258,1,0,0,0,976,977,7,8,0,0, + 977,978,7,18,0,0,978,979,7,19,0,0,979,980,7,10,0,0,980,981,7,1,0,0,981, + 982,7,10,0,0,982,260,1,0,0,0,983,984,7,2,0,0,984,985,7,0,0,0,985,986, + 7,10,0,0,986,987,7,8,0,0,987,262,1,0,0,0,988,989,7,8,0,0,989,990,7,11, + 0,0,990,991,7,10,0,0,991,992,7,8,0,0,992,264,1,0,0,0,993,994,7,8,0,0, + 994,995,7,14,0,0,995,996,7,4,0,0,996,266,1,0,0,0,997,998,7,21,0,0,998, + 999,7,3,0,0,999,1000,7,8,0,0,1000,1001,7,14,0,0,1001,268,1,0,0,0,1002, + 1003,7,1,0,0,1003,1004,7,3,0,0,1004,1005,7,8,0,0,1005,1006,7,14,0,0,1006, + 270,1,0,0,0,1007,1012,5,34,0,0,1008,1011,3,335,167,0,1009,1011,3,273, + 136,0,1010,1008,1,0,0,0,1010,1009,1,0,0,0,1011,1014,1,0,0,0,1012,1010, + 1,0,0,0,1012,1013,1,0,0,0,1013,1015,1,0,0,0,1014,1012,1,0,0,0,1015,1026, + 5,34,0,0,1016,1021,5,39,0,0,1017,1020,3,315,157,0,1018,1020,3,273,136, + 0,1019,1017,1,0,0,0,1019,1018,1,0,0,0,1020,1023,1,0,0,0,1021,1019,1,0, + 0,0,1021,1022,1,0,0,0,1022,1024,1,0,0,0,1023,1021,1,0,0,0,1024,1026,5, + 39,0,0,1025,1007,1,0,0,0,1025,1016,1,0,0,0,1026,272,1,0,0,0,1027,1045, + 5,92,0,0,1028,1046,7,22,0,0,1029,1030,7,9,0,0,1030,1031,3,279,139,0,1031, + 1032,3,279,139,0,1032,1033,3,279,139,0,1033,1034,3,279,139,0,1034,1046, + 1,0,0,0,1035,1036,7,9,0,0,1036,1037,3,279,139,0,1037,1038,3,279,139,0, + 1038,1039,3,279,139,0,1039,1040,3,279,139,0,1040,1041,3,279,139,0,1041, + 1042,3,279,139,0,1042,1043,3,279,139,0,1043,1044,3,279,139,0,1044,1046, + 1,0,0,0,1045,1028,1,0,0,0,1045,1029,1,0,0,0,1045,1035,1,0,0,0,1046,274, + 1,0,0,0,1047,1056,3,287,143,0,1048,1052,3,283,141,0,1049,1051,3,281,140, + 0,1050,1049,1,0,0,0,1051,1054,1,0,0,0,1052,1050,1,0,0,0,1052,1053,1,0, + 0,0,1053,1056,1,0,0,0,1054,1052,1,0,0,0,1055,1047,1,0,0,0,1055,1048,1, + 0,0,0,1056,276,1,0,0,0,1057,1059,7,23,0,0,1058,1057,1,0,0,0,1059,278, + 1,0,0,0,1060,1063,3,281,140,0,1061,1063,3,277,138,0,1062,1060,1,0,0,0, + 1062,1061,1,0,0,0,1063,280,1,0,0,0,1064,1067,3,287,143,0,1065,1067,3, + 283,141,0,1066,1064,1,0,0,0,1066,1065,1,0,0,0,1067,282,1,0,0,0,1068,1071, + 3,285,142,0,1069,1071,2,56,57,0,1070,1068,1,0,0,0,1070,1069,1,0,0,0,1071, + 284,1,0,0,0,1072,1073,2,49,55,0,1073,286,1,0,0,0,1074,1075,5,48,0,0,1075, + 288,1,0,0,0,1076,1078,3,281,140,0,1077,1076,1,0,0,0,1078,1081,1,0,0,0, + 1079,1077,1,0,0,0,1079,1080,1,0,0,0,1080,1082,1,0,0,0,1081,1079,1,0,0, + 0,1082,1084,5,46,0,0,1083,1085,3,281,140,0,1084,1083,1,0,0,0,1085,1086, + 1,0,0,0,1086,1084,1,0,0,0,1086,1087,1,0,0,0,1087,290,1,0,0,0,1088,1092, + 3,293,146,0,1089,1091,3,295,147,0,1090,1089,1,0,0,0,1091,1094,1,0,0,0, + 1092,1090,1,0,0,0,1092,1093,1,0,0,0,1093,292,1,0,0,0,1094,1092,1,0,0, + 0,1095,1098,3,343,171,0,1096,1098,3,331,165,0,1097,1095,1,0,0,0,1097, + 1096,1,0,0,0,1098,294,1,0,0,0,1099,1102,3,311,155,0,1100,1102,3,327,163, + 0,1101,1099,1,0,0,0,1101,1100,1,0,0,0,1102,296,1,0,0,0,1103,1107,5,96, + 0,0,1104,1106,3,307,153,0,1105,1104,1,0,0,0,1106,1109,1,0,0,0,1107,1105, + 1,0,0,0,1107,1108,1,0,0,0,1108,1110,1,0,0,0,1109,1107,1,0,0,0,1110,1112, + 5,96,0,0,1111,1103,1,0,0,0,1112,1113,1,0,0,0,1113,1111,1,0,0,0,1113,1114, + 1,0,0,0,1114,298,1,0,0,0,1115,1117,3,301,150,0,1116,1115,1,0,0,0,1117, + 1118,1,0,0,0,1118,1116,1,0,0,0,1118,1119,1,0,0,0,1119,300,1,0,0,0,1120, + 1133,3,329,164,0,1121,1133,3,333,166,0,1122,1133,3,337,168,0,1123,1133, + 3,339,169,0,1124,1133,3,305,152,0,1125,1133,3,325,162,0,1126,1133,3,323, + 161,0,1127,1133,3,321,160,0,1128,1133,3,309,154,0,1129,1133,3,341,170, + 0,1130,1133,7,24,0,0,1131,1133,3,303,151,0,1132,1120,1,0,0,0,1132,1121, + 1,0,0,0,1132,1122,1,0,0,0,1132,1123,1,0,0,0,1132,1124,1,0,0,0,1132,1125, + 1,0,0,0,1132,1126,1,0,0,0,1132,1127,1,0,0,0,1132,1128,1,0,0,0,1132,1129, + 1,0,0,0,1132,1130,1,0,0,0,1132,1131,1,0,0,0,1133,302,1,0,0,0,1134,1135, + 5,47,0,0,1135,1136,5,42,0,0,1136,1142,1,0,0,0,1137,1141,3,313,156,0,1138, + 1139,5,42,0,0,1139,1141,3,319,159,0,1140,1137,1,0,0,0,1140,1138,1,0,0, + 0,1141,1144,1,0,0,0,1142,1140,1,0,0,0,1142,1143,1,0,0,0,1143,1145,1,0, + 0,0,1144,1142,1,0,0,0,1145,1146,5,42,0,0,1146,1164,5,47,0,0,1147,1148, + 5,47,0,0,1148,1149,5,47,0,0,1149,1153,1,0,0,0,1150,1152,3,317,158,0,1151, + 1150,1,0,0,0,1152,1155,1,0,0,0,1153,1151,1,0,0,0,1153,1154,1,0,0,0,1154, + 1157,1,0,0,0,1155,1153,1,0,0,0,1156,1158,3,325,162,0,1157,1156,1,0,0, + 0,1157,1158,1,0,0,0,1158,1161,1,0,0,0,1159,1162,3,337,168,0,1160,1162, + 5,0,0,1,1161,1159,1,0,0,0,1161,1160,1,0,0,0,1162,1164,1,0,0,0,1163,1134, + 1,0,0,0,1163,1147,1,0,0,0,1164,304,1,0,0,0,1165,1166,7,25,0,0,1166,306, + 1,0,0,0,1167,1168,8,26,0,0,1168,308,1,0,0,0,1169,1170,7,27,0,0,1170,310, + 1,0,0,0,1171,1172,7,28,0,0,1172,312,1,0,0,0,1173,1174,8,29,0,0,1174,314, + 1,0,0,0,1175,1176,8,30,0,0,1176,316,1,0,0,0,1177,1178,8,31,0,0,1178,318, + 1,0,0,0,1179,1180,8,32,0,0,1180,320,1,0,0,0,1181,1182,7,33,0,0,1182,322, + 1,0,0,0,1183,1184,7,34,0,0,1184,324,1,0,0,0,1185,1186,7,35,0,0,1186,326, + 1,0,0,0,1187,1188,7,36,0,0,1188,328,1,0,0,0,1189,1190,7,37,0,0,1190,330, + 1,0,0,0,1191,1192,7,38,0,0,1192,332,1,0,0,0,1193,1194,7,39,0,0,1194,334, + 1,0,0,0,1195,1196,8,40,0,0,1196,336,1,0,0,0,1197,1198,7,41,0,0,1198,338, + 1,0,0,0,1199,1200,7,42,0,0,1200,340,1,0,0,0,1201,1202,7,43,0,0,1202,342, + 1,0,0,0,1203,1204,7,44,0,0,1204,344,1,0,0,0,1205,1206,9,0,0,0,1206,346, + 1,0,0,0,28,0,1010,1012,1019,1021,1025,1045,1052,1055,1058,1062,1066,1070, + 1079,1086,1092,1097,1101,1107,1113,1118,1132,1140,1142,1153,1157,1161, + 1163,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); diff --git a/third_party/antlr4_cypher/cypher_parser.cpp b/third_party/antlr4_cypher/cypher_parser.cpp index 2b80eb9d1e..c9da608fb9 100644 --- a/third_party/antlr4_cypher/cypher_parser.cpp +++ b/third_party/antlr4_cypher/cypher_parser.cpp @@ -53,30 +53,31 @@ void cypherParserInitialize() { std::vector{ "ku_Statements", "oC_Cypher", "oC_Statement", "kU_CopyFrom", "kU_ColumnNames", "kU_ScanSource", "kU_CopyFromByColumn", "kU_CopyTO", "kU_ExportDatabase", - "kU_ImportDatabase", "kU_AttachDatabase", "kU_DetachDatabase", "kU_StandaloneCall", - "kU_CommentOn", "kU_CreateMacro", "kU_PositionalArgs", "kU_DefaultArg", - "kU_FilePaths", "kU_ParsingOptions", "kU_ParsingOption", "kU_CreateNodeTable", - "kU_CreateRelTable", "kU_CreateRelTableGroup", "kU_RelTableConnection", - "kU_CreateRdfGraph", "kU_DropTable", "kU_AlterTable", "kU_AlterOptions", - "kU_AddProperty", "kU_DropProperty", "kU_RenameTable", "kU_RenameProperty", - "kU_PropertyDefinitions", "kU_PropertyDefinition", "kU_CreateNodeConstraint", - "kU_DataType", "kU_ListIdentifiers", "kU_ListIdentifier", "oC_AnyCypherOption", - "oC_Explain", "oC_Profile", "kU_Transaction", "kU_Extension", "kU_LoadExtension", - "kU_InstallExtension", "oC_Query", "oC_RegularQuery", "oC_Union", - "oC_SingleQuery", "oC_SinglePartQuery", "oC_MultiPartQuery", "kU_QueryPart", - "oC_UpdatingClause", "oC_ReadingClause", "kU_LoadFrom", "kU_InQueryCall", - "oC_Match", "oC_Unwind", "oC_Create", "oC_Merge", "oC_MergeAction", - "oC_Set", "oC_SetItem", "oC_Delete", "oC_With", "oC_Return", "oC_ProjectionBody", - "oC_ProjectionItems", "oC_ProjectionItem", "oC_Order", "oC_Skip", - "oC_Limit", "oC_SortItem", "oC_Where", "oC_Pattern", "oC_PatternPart", - "oC_AnonymousPatternPart", "oC_PatternElement", "oC_NodePattern", - "oC_PatternElementChain", "oC_RelationshipPattern", "oC_RelationshipDetail", - "kU_Properties", "oC_RelationshipTypes", "oC_NodeLabels", "oC_NodeLabel", - "oC_RangeLiteral", "kU_RecursiveRelationshipComprehension", "kU_IntermediateNodeProjectionItems", - "kU_IntermediateRelProjectionItems", "oC_LowerBound", "oC_UpperBound", - "oC_LabelName", "oC_RelTypeName", "oC_Expression", "oC_OrExpression", - "oC_XorExpression", "oC_AndExpression", "oC_NotExpression", "oC_ComparisonExpression", - "kU_ComparisonOperator", "kU_BitwiseOrOperatorExpression", "kU_BitwiseAndOperatorExpression", + "kU_ImportDatabase", "kU_AttachDatabase", "kU_DetachDatabase", "kU_UseDatabase", + "kU_StandaloneCall", "kU_CommentOn", "kU_CreateMacro", "kU_PositionalArgs", + "kU_DefaultArg", "kU_FilePaths", "kU_ParsingOptions", "kU_ParsingOption", + "kU_CreateNodeTable", "kU_CreateRelTable", "kU_CreateRelTableGroup", + "kU_RelTableConnection", "kU_CreateRdfGraph", "kU_DropTable", "kU_AlterTable", + "kU_AlterOptions", "kU_AddProperty", "kU_DropProperty", "kU_RenameTable", + "kU_RenameProperty", "kU_PropertyDefinitions", "kU_PropertyDefinition", + "kU_CreateNodeConstraint", "kU_DataType", "kU_ListIdentifiers", "kU_ListIdentifier", + "oC_AnyCypherOption", "oC_Explain", "oC_Profile", "kU_Transaction", + "kU_Extension", "kU_LoadExtension", "kU_InstallExtension", "oC_Query", + "oC_RegularQuery", "oC_Union", "oC_SingleQuery", "oC_SinglePartQuery", + "oC_MultiPartQuery", "kU_QueryPart", "oC_UpdatingClause", "oC_ReadingClause", + "kU_LoadFrom", "kU_InQueryCall", "oC_Match", "oC_Unwind", "oC_Create", + "oC_Merge", "oC_MergeAction", "oC_Set", "oC_SetItem", "oC_Delete", + "oC_With", "oC_Return", "oC_ProjectionBody", "oC_ProjectionItems", + "oC_ProjectionItem", "oC_Order", "oC_Skip", "oC_Limit", "oC_SortItem", + "oC_Where", "oC_Pattern", "oC_PatternPart", "oC_AnonymousPatternPart", + "oC_PatternElement", "oC_NodePattern", "oC_PatternElementChain", "oC_RelationshipPattern", + "oC_RelationshipDetail", "kU_Properties", "oC_RelationshipTypes", + "oC_NodeLabels", "oC_NodeLabel", "oC_RangeLiteral", "kU_RecursiveRelationshipComprehension", + "kU_IntermediateNodeProjectionItems", "kU_IntermediateRelProjectionItems", + "oC_LowerBound", "oC_UpperBound", "oC_LabelName", "oC_RelTypeName", + "oC_Expression", "oC_OrExpression", "oC_XorExpression", "oC_AndExpression", + "oC_NotExpression", "oC_ComparisonExpression", "kU_ComparisonOperator", + "kU_BitwiseOrOperatorExpression", "kU_BitwiseAndOperatorExpression", "kU_BitShiftOperatorExpression", "kU_BitShiftOperator", "oC_AddOrSubtractExpression", "kU_AddOrSubtractOperator", "oC_MultiplyDivideModuloExpression", "kU_MultiplyDivideModuloOperator", "oC_PowerOfExpression", "oC_UnaryAddSubtractOrFactorialExpression", @@ -102,19 +103,20 @@ void cypherParserInitialize() { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "'*'", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "'!='", "'-'", "'!'", "':'", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'0'" + "", "", "", "", "'*'", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "'!='", "'-'", "'!'", "':'", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "'0'" }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "ATTACH", "DBTYPE", - "CALL", "COMMENT_", "MACRO", "GLOB", "COPY", "FROM", "COLUMN", "EXPORT", - "IMPORT", "DATABASE", "NODE", "TABLE", "GROUP", "RDFGRAPH", "DROP", - "ALTER", "DEFAULT", "RENAME", "ADD", "PRIMARY", "KEY", "REL", "TO", - "EXPLAIN", "PROFILE", "BEGIN", "TRANSACTION", "READ", "ONLY", "WRITE", - "COMMIT", "COMMIT_SKIP_CHECKPOINT", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", + "USE", "CALL", "COMMENT_", "MACRO", "GLOB", "COPY", "FROM", "COLUMN", + "EXPORT", "IMPORT", "DATABASE", "NODE", "TABLE", "GROUP", "RDFGRAPH", + "DROP", "ALTER", "DEFAULT", "RENAME", "ADD", "PRIMARY", "KEY", "REL", + "TO", "EXPLAIN", "PROFILE", "BEGIN", "TRANSACTION", "READ", "ONLY", + "WRITE", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "INSTALL", "EXTENSION", "UNION", "ALL", "LOAD", "HEADERS", "OPTIONAL", "MATCH", "UNWIND", "CREATE", "MERGE", "ON", "SET", "DETACH", "DELETE", "WITH", "RETURN", "DISTINCT", "STAR", "AS", "ORDER", "BY", "L_SKIP", @@ -129,7 +131,7 @@ void cypherParserInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,1,152,2333,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, + 4,1,153,2340,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, @@ -151,900 +153,904 @@ void cypherParserInitialize() { 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,1,0,1,0,3,0,297,8,0,1,0,1,0,3,0,301,8,0,1,0,5,0,304,8,0,10,0,12, - 0,307,9,0,1,0,3,0,310,8,0,1,0,1,0,1,1,3,1,315,8,1,1,1,3,1,318,8,1,1,1, - 1,1,3,1,322,8,1,1,1,3,1,325,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,3,2,346,8,2,1,3,1,3,1,3,1,3,3,3, - 352,8,3,1,3,1,3,3,3,356,8,3,1,3,3,3,359,8,3,1,3,1,3,1,3,1,3,3,3,365,8, - 3,1,3,3,3,368,8,3,1,4,1,4,3,4,372,8,4,1,4,1,4,3,4,376,8,4,1,4,1,4,3,4, - 380,8,4,1,4,5,4,383,8,4,10,4,12,4,386,9,4,1,4,3,4,389,8,4,1,4,1,4,1,5, - 1,5,1,5,3,5,396,8,5,1,5,1,5,3,5,400,8,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,408, - 8,5,1,5,1,5,3,5,412,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,422,8,6,1, - 6,1,6,3,6,426,8,6,1,6,1,6,3,6,430,8,6,1,6,5,6,433,8,6,10,6,12,6,436,9, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,448,8,7,1,7,1,7,3,7,452, - 8,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,460,8,7,1,7,3,7,463,8,7,1,8,1,8,1,8,1, - 8,1,8,1,8,3,8,471,8,8,1,8,3,8,474,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1, - 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,491,8,10,1,10,3,10,494,8,10, - 1,10,1,10,3,10,498,8,10,1,10,1,10,1,10,1,10,3,10,504,8,10,1,10,3,10,507, - 8,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,3,12,517,8,12,1,12,1,12, - 3,12,521,8,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,14,1,14,1,14,1,14,1,14,1,14,3,14,543,8,14,1,14,1,14, - 3,14,547,8,14,1,14,3,14,550,8,14,1,14,3,14,553,8,14,1,14,3,14,556,8,14, - 1,14,3,14,559,8,14,1,14,1,14,3,14,563,8,14,1,14,5,14,566,8,14,10,14,12, - 14,569,9,14,1,14,3,14,572,8,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15, - 3,15,582,8,15,1,15,1,15,3,15,586,8,15,1,15,5,15,589,8,15,10,15,12,15, - 592,9,15,1,16,1,16,3,16,596,8,16,1,16,1,16,1,16,3,16,601,8,16,1,16,1, - 16,1,17,1,17,3,17,607,8,17,1,17,1,17,3,17,611,8,17,1,17,1,17,3,17,615, - 8,17,1,17,5,17,618,8,17,10,17,12,17,621,9,17,1,17,1,17,1,17,1,17,3,17, - 627,8,17,1,17,1,17,3,17,631,8,17,1,17,1,17,3,17,635,8,17,1,17,3,17,638, - 8,17,1,18,1,18,3,18,642,8,18,1,18,1,18,3,18,646,8,18,1,18,1,18,3,18,650, - 8,18,1,18,5,18,653,8,18,10,18,12,18,656,9,18,1,18,3,18,659,8,18,1,18, - 1,18,1,19,1,19,3,19,665,8,19,1,19,1,19,3,19,669,8,19,1,19,1,19,1,20,1, - 20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,681,8,20,1,20,1,20,3,20,685,8,20, - 1,20,1,20,3,20,689,8,20,1,20,1,20,3,20,693,8,20,1,20,1,20,1,20,3,20,698, - 8,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,710,8,21, - 1,21,1,21,3,21,714,8,21,1,21,1,21,3,21,718,8,21,1,21,1,21,3,21,722,8, - 21,1,21,1,21,3,21,726,8,21,3,21,728,8,21,1,21,1,21,3,21,732,8,21,1,21, - 1,21,3,21,736,8,21,3,21,738,8,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1, - 22,1,22,1,22,1,22,1,22,3,22,752,8,22,1,22,1,22,3,22,756,8,22,1,22,1,22, - 3,22,760,8,22,1,22,1,22,3,22,764,8,22,1,22,4,22,767,8,22,11,22,12,22, - 768,1,22,3,22,772,8,22,1,22,1,22,3,22,776,8,22,1,22,1,22,3,22,780,8,22, - 3,22,782,8,22,1,22,1,22,3,22,786,8,22,1,22,1,22,3,22,790,8,22,3,22,792, - 8,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,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26, - 1,26,1,26,1,26,1,27,1,27,1,27,1,27,3,27,828,8,27,1,28,1,28,1,28,1,28, - 1,28,1,28,1,28,1,28,1,28,3,28,839,8,28,1,29,1,29,1,29,1,29,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,31,1,32,1,32, - 3,32,861,8,32,1,32,1,32,3,32,865,8,32,1,32,5,32,868,8,32,10,32,12,32, - 871,9,32,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,3,34,881,8,34,1,34,1, - 34,3,34,885,8,34,1,34,1,34,3,34,889,8,34,1,34,1,34,1,35,1,35,1,35,1,35, - 3,35,897,8,35,1,35,1,35,3,35,901,8,35,1,35,1,35,3,35,905,8,35,1,35,1, - 35,1,35,1,35,3,35,911,8,35,1,35,1,35,3,35,915,8,35,1,35,1,35,3,35,919, - 8,35,1,35,1,35,1,35,1,35,3,35,925,8,35,1,35,1,35,3,35,929,8,35,1,35,1, - 35,3,35,933,8,35,1,35,1,35,3,35,937,8,35,1,35,1,35,3,35,941,8,35,1,35, - 1,35,3,35,945,8,35,1,35,1,35,5,35,949,8,35,10,35,12,35,952,9,35,1,36, - 1,36,5,36,956,8,36,10,36,12,36,959,9,36,1,37,1,37,3,37,963,8,37,1,37, - 1,37,1,38,1,38,3,38,969,8,38,1,39,1,39,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,41,1,41,1,41,1,41,3,41,989,8,41,1,42, - 1,42,3,42,993,8,42,1,43,1,43,1,43,1,43,1,43,1,43,3,43,1001,8,43,1,44, - 1,44,1,44,1,44,1,45,1,45,1,46,1,46,3,46,1011,8,46,1,46,5,46,1014,8,46, - 10,46,12,46,1017,9,46,1,46,1,46,3,46,1021,8,46,4,46,1023,8,46,11,46,12, - 46,1024,1,46,1,46,1,46,3,46,1030,8,46,1,47,1,47,1,47,1,47,3,47,1036,8, - 47,1,47,1,47,1,47,3,47,1041,8,47,1,47,3,47,1044,8,47,1,48,1,48,3,48,1048, - 8,48,1,49,1,49,3,49,1052,8,49,5,49,1054,8,49,10,49,12,49,1057,9,49,1, - 49,1,49,1,49,3,49,1062,8,49,5,49,1064,8,49,10,49,12,49,1067,9,49,1,49, - 1,49,3,49,1071,8,49,1,49,5,49,1074,8,49,10,49,12,49,1077,9,49,1,49,3, - 49,1080,8,49,1,49,3,49,1083,8,49,1,49,1,49,3,49,1087,8,49,4,49,1089,8, - 49,11,49,12,49,1090,1,49,1,49,3,49,1095,8,49,1,50,1,50,3,50,1099,8,50, - 4,50,1101,8,50,11,50,12,50,1102,1,50,1,50,1,51,1,51,3,51,1109,8,51,5, - 51,1111,8,51,10,51,12,51,1114,9,51,1,51,1,51,3,51,1118,8,51,5,51,1120, - 8,51,10,51,12,51,1123,9,51,1,51,1,51,1,52,1,52,1,52,1,52,3,52,1131,8, - 52,1,53,1,53,1,53,1,53,3,53,1137,8,53,1,54,1,54,1,54,1,54,1,54,1,54,3, - 54,1145,8,54,1,54,1,54,3,54,1149,8,54,1,54,1,54,3,54,1153,8,54,1,54,1, - 54,3,54,1157,8,54,1,54,1,54,1,54,1,54,1,54,3,54,1164,8,54,1,54,3,54,1167, - 8,54,1,54,3,54,1170,8,54,1,54,3,54,1173,8,54,1,55,1,55,1,55,1,55,3,55, - 1179,8,55,1,55,3,55,1182,8,55,1,56,1,56,3,56,1186,8,56,1,56,1,56,3,56, - 1190,8,56,1,56,1,56,3,56,1194,8,56,1,56,3,56,1197,8,56,1,57,1,57,3,57, - 1201,8,57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,3,58,1211,8,58,1,58, - 1,58,1,59,1,59,3,59,1217,8,59,1,59,1,59,1,59,5,59,1222,8,59,10,59,12, - 59,1225,9,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,1237, - 8,60,1,61,1,61,3,61,1241,8,61,1,61,1,61,3,61,1245,8,61,1,61,1,61,3,61, - 1249,8,61,1,61,5,61,1252,8,61,10,61,12,61,1255,9,61,1,62,1,62,3,62,1259, - 8,62,1,62,1,62,3,62,1263,8,62,1,62,1,62,1,63,1,63,3,63,1269,8,63,1,63, - 1,63,3,63,1273,8,63,1,63,1,63,3,63,1277,8,63,1,63,1,63,3,63,1281,8,63, - 1,63,5,63,1284,8,63,10,63,12,63,1287,9,63,1,64,1,64,1,64,3,64,1292,8, - 64,1,64,3,64,1295,8,64,1,65,1,65,1,65,1,66,3,66,1301,8,66,1,66,3,66,1304, - 8,66,1,66,1,66,1,66,1,66,3,66,1310,8,66,1,66,1,66,3,66,1314,8,66,1,66, - 1,66,3,66,1318,8,66,1,67,1,67,3,67,1322,8,67,1,67,1,67,3,67,1326,8,67, - 1,67,5,67,1329,8,67,10,67,12,67,1332,9,67,1,67,1,67,3,67,1336,8,67,1, - 67,1,67,3,67,1340,8,67,1,67,5,67,1343,8,67,10,67,12,67,1346,9,67,3,67, - 1348,8,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,1357,8,68,1,69,1,69, - 1,69,1,69,1,69,1,69,1,69,3,69,1366,8,69,1,69,5,69,1369,8,69,10,69,12, - 69,1372,9,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,72,1,72,3,72,1384, - 8,72,1,72,3,72,1387,8,72,1,73,1,73,1,73,1,73,1,74,1,74,3,74,1395,8,74, - 1,74,1,74,3,74,1399,8,74,1,74,5,74,1402,8,74,10,74,12,74,1405,9,74,1, - 75,1,75,3,75,1409,8,75,1,75,1,75,3,75,1413,8,75,1,75,1,75,1,75,3,75,1418, - 8,75,1,76,1,76,1,77,1,77,3,77,1424,8,77,1,77,5,77,1427,8,77,10,77,12, - 77,1430,9,77,1,77,1,77,1,77,1,77,3,77,1436,8,77,1,78,1,78,3,78,1440,8, - 78,1,78,1,78,3,78,1444,8,78,3,78,1446,8,78,1,78,1,78,3,78,1450,8,78,3, - 78,1452,8,78,1,78,1,78,3,78,1456,8,78,3,78,1458,8,78,1,78,1,78,1,79,1, - 79,3,79,1464,8,79,1,79,1,79,1,80,1,80,3,80,1470,8,80,1,80,1,80,3,80,1474, - 8,80,1,80,3,80,1477,8,80,1,80,3,80,1480,8,80,1,80,1,80,1,80,1,80,3,80, - 1486,8,80,1,80,3,80,1489,8,80,1,80,3,80,1492,8,80,1,80,1,80,3,80,1496, - 8,80,1,80,1,80,1,80,1,80,3,80,1502,8,80,1,80,3,80,1505,8,80,1,80,3,80, - 1508,8,80,1,80,1,80,3,80,1512,8,80,1,81,1,81,3,81,1516,8,81,1,81,1,81, - 3,81,1520,8,81,3,81,1522,8,81,1,81,1,81,3,81,1526,8,81,3,81,1528,8,81, - 1,81,1,81,3,81,1532,8,81,3,81,1534,8,81,1,81,1,81,3,81,1538,8,81,3,81, - 1540,8,81,1,81,1,81,1,82,1,82,3,82,1546,8,82,1,82,1,82,3,82,1550,8,82, - 1,82,1,82,3,82,1554,8,82,1,82,1,82,3,82,1558,8,82,1,82,1,82,3,82,1562, - 8,82,1,82,1,82,3,82,1566,8,82,1,82,1,82,3,82,1570,8,82,1,82,1,82,3,82, - 1574,8,82,5,82,1576,8,82,10,82,12,82,1579,9,82,3,82,1581,8,82,1,82,1, - 82,1,83,1,83,3,83,1587,8,83,1,83,1,83,3,83,1591,8,83,1,83,1,83,3,83,1595, - 8,83,1,83,3,83,1598,8,83,1,83,5,83,1601,8,83,10,83,12,83,1604,9,83,1, - 84,1,84,3,84,1608,8,84,1,84,5,84,1611,8,84,10,84,12,84,1614,9,84,1,85, - 1,85,3,85,1618,8,85,1,85,1,85,1,86,1,86,3,86,1624,8,86,1,86,1,86,1,86, - 1,86,3,86,1630,8,86,1,86,3,86,1633,8,86,1,86,3,86,1636,8,86,1,86,3,86, - 1639,8,86,1,86,1,86,3,86,1643,8,86,1,86,3,86,1646,8,86,1,86,3,86,1649, - 8,86,1,86,3,86,1652,8,86,1,86,3,86,1655,8,86,1,87,1,87,3,87,1659,8,87, - 1,87,1,87,3,87,1663,8,87,1,87,1,87,3,87,1667,8,87,1,87,1,87,3,87,1671, - 8,87,1,87,1,87,3,87,1675,8,87,1,87,3,87,1678,8,87,1,87,3,87,1681,8,87, - 1,87,1,87,3,87,1685,8,87,1,87,1,87,3,87,1689,8,87,1,87,1,87,3,87,1693, - 8,87,1,87,1,87,3,87,1697,8,87,3,87,1699,8,87,1,87,1,87,1,88,1,88,3,88, - 1705,8,88,1,88,3,88,1708,8,88,1,88,3,88,1711,8,88,1,88,1,88,1,89,1,89, - 3,89,1717,8,89,1,89,3,89,1720,8,89,1,89,3,89,1723,8,89,1,89,1,89,1,90, - 1,90,1,91,1,91,1,92,1,92,1,93,1,93,1,94,1,94,1,95,1,95,1,95,1,95,1,95, - 5,95,1742,8,95,10,95,12,95,1745,9,95,1,96,1,96,1,96,1,96,1,96,5,96,1752, - 8,96,10,96,12,96,1755,9,96,1,97,1,97,1,97,1,97,1,97,5,97,1762,8,97,10, - 97,12,97,1765,9,97,1,98,1,98,3,98,1769,8,98,5,98,1771,8,98,10,98,12,98, - 1774,9,98,1,98,1,98,1,99,1,99,3,99,1780,8,99,1,99,1,99,3,99,1784,8,99, - 1,99,1,99,3,99,1788,8,99,1,99,1,99,3,99,1792,8,99,1,99,1,99,3,99,1796, - 8,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,1804,8,99,1,99,1,99,3,99,1808, - 8,99,1,99,1,99,3,99,1812,8,99,1,99,1,99,3,99,1816,8,99,1,99,1,99,4,99, - 1820,8,99,11,99,12,99,1821,1,99,1,99,3,99,1826,8,99,1,100,1,100,1,101, - 1,101,3,101,1832,8,101,1,101,1,101,3,101,1836,8,101,1,101,5,101,1839, - 8,101,10,101,12,101,1842,9,101,1,102,1,102,3,102,1846,8,102,1,102,1,102, - 3,102,1850,8,102,1,102,5,102,1853,8,102,10,102,12,102,1856,9,102,1,103, - 1,103,3,103,1860,8,103,1,103,1,103,3,103,1864,8,103,1,103,1,103,5,103, - 1868,8,103,10,103,12,103,1871,9,103,1,104,1,104,1,105,1,105,3,105,1877, - 8,105,1,105,1,105,3,105,1881,8,105,1,105,1,105,5,105,1885,8,105,10,105, - 12,105,1888,9,105,1,106,1,106,1,107,1,107,3,107,1894,8,107,1,107,1,107, - 3,107,1898,8,107,1,107,1,107,5,107,1902,8,107,10,107,12,107,1905,9,107, - 1,108,1,108,1,109,1,109,3,109,1911,8,109,1,109,1,109,3,109,1915,8,109, - 1,109,5,109,1918,8,109,10,109,12,109,1921,9,109,1,110,1,110,3,110,1925, - 8,110,5,110,1927,8,110,10,110,12,110,1930,9,110,1,110,1,110,3,110,1934, - 8,110,1,110,3,110,1937,8,110,1,111,1,111,1,111,4,111,1942,8,111,11,111, - 12,111,1943,1,111,3,111,1947,8,111,1,112,1,112,1,112,3,112,1952,8,112, - 1,112,1,112,1,112,1,112,1,112,1,112,1,112,3,112,1961,8,112,1,112,1,112, - 3,112,1965,8,112,1,112,3,112,1968,8,112,1,113,1,113,1,113,1,113,1,113, - 1,113,1,113,1,113,1,113,1,113,1,113,3,113,1981,8,113,1,113,3,113,1984, - 8,113,1,113,1,113,1,114,3,114,1989,8,114,1,114,1,114,1,115,1,115,1,115, - 1,115,1,115,1,115,1,115,1,115,1,115,1,115,3,115,2003,8,115,1,116,1,116, - 3,116,2007,8,116,1,116,5,116,2010,8,116,10,116,12,116,2013,9,116,1,117, - 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,3,117,2024,8,117,1,118, - 1,118,1,118,1,118,1,118,1,118,3,118,2032,8,118,1,119,1,119,1,120,1,120, - 3,120,2038,8,120,1,120,1,120,3,120,2042,8,120,1,120,1,120,3,120,2046, - 8,120,5,120,2048,8,120,10,120,12,120,2051,9,120,3,120,2053,8,120,1,120, - 1,120,1,121,1,121,3,121,2059,8,121,1,121,3,121,2062,8,121,1,122,1,122, - 3,122,2066,8,122,1,122,1,122,3,122,2070,8,122,1,122,1,122,3,122,2074, - 8,122,1,122,1,122,3,122,2078,8,122,5,122,2080,8,122,10,122,12,122,2083, - 9,122,1,122,1,122,1,123,1,123,3,123,2089,8,123,1,123,3,123,2092,8,123, - 1,123,1,123,3,123,2096,8,123,1,123,1,123,1,124,1,124,3,124,2102,8,124, - 1,124,1,124,3,124,2106,8,124,1,124,1,124,1,125,1,125,3,125,2112,8,125, - 1,125,1,125,3,125,2116,8,125,1,125,1,125,3,125,2120,8,125,1,125,1,125, - 1,125,3,125,2125,8,125,1,125,1,125,3,125,2129,8,125,1,125,1,125,3,125, - 2133,8,125,3,125,2135,8,125,1,125,1,125,3,125,2139,8,125,1,125,1,125, - 3,125,2143,8,125,1,125,1,125,3,125,2147,8,125,5,125,2149,8,125,10,125, - 12,125,2152,9,125,3,125,2154,8,125,1,125,1,125,3,125,2158,8,125,1,126, - 1,126,1,127,1,127,3,127,2164,8,127,1,127,1,127,1,127,3,127,2169,8,127, - 3,127,2171,8,127,1,127,1,127,1,128,1,128,3,128,2177,8,128,1,128,4,128, - 2180,8,128,11,128,12,128,2181,1,129,1,129,3,129,2186,8,129,1,129,1,129, - 3,129,2190,8,129,1,129,1,129,3,129,2194,8,129,1,129,1,129,3,129,2198, - 8,129,1,129,3,129,2201,8,129,1,129,3,129,2204,8,129,1,129,1,129,1,130, - 1,130,3,130,2210,8,130,1,130,1,130,3,130,2214,8,130,1,130,1,130,3,130, - 2218,8,130,1,130,1,130,3,130,2222,8,130,1,130,3,130,2225,8,130,1,130, - 3,130,2228,8,130,1,130,1,130,1,131,1,131,3,131,2234,8,131,1,131,1,131, - 3,131,2238,8,131,1,132,1,132,3,132,2242,8,132,1,132,4,132,2245,8,132, - 11,132,12,132,2246,1,132,1,132,3,132,2251,8,132,1,132,1,132,3,132,2255, - 8,132,1,132,4,132,2258,8,132,11,132,12,132,2259,3,132,2262,8,132,1,132, - 3,132,2265,8,132,1,132,1,132,3,132,2269,8,132,1,132,3,132,2272,8,132, - 1,132,3,132,2275,8,132,1,132,1,132,1,133,1,133,3,133,2281,8,133,1,133, - 1,133,3,133,2285,8,133,1,133,1,133,3,133,2289,8,133,1,133,1,133,1,134, - 1,134,1,135,1,135,3,135,2297,8,135,1,136,1,136,1,136,3,136,2302,8,136, - 1,137,1,137,3,137,2306,8,137,1,137,1,137,1,138,1,138,1,139,1,139,1,140, - 1,140,1,141,1,141,1,142,1,142,1,142,1,142,1,142,3,142,2323,8,142,1,143, - 1,143,1,144,1,144,1,145,1,145,1,146,1,146,1,146,0,1,70,147,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,0,11,2,0,59,59,61,61,1,0,106,109,2,0,6,6,13,17, - 1,0,19,20,2,0,21,21,117,117,2,0,22,23,100,100,1,0,126,127,7,0,49,49,55, - 58,69,69,73,73,120,120,128,128,132,132,2,0,14,14,27,30,2,0,16,16,31,34, - 2,0,35,45,117,117,2641,0,294,1,0,0,0,2,314,1,0,0,0,4,345,1,0,0,0,6,347, - 1,0,0,0,8,369,1,0,0,0,10,411,1,0,0,0,12,413,1,0,0,0,14,443,1,0,0,0,16, - 464,1,0,0,0,18,475,1,0,0,0,20,481,1,0,0,0,22,508,1,0,0,0,24,512,1,0,0, - 0,26,524,1,0,0,0,28,536,1,0,0,0,30,579,1,0,0,0,32,593,1,0,0,0,34,637, - 1,0,0,0,36,639,1,0,0,0,38,662,1,0,0,0,40,672,1,0,0,0,42,701,1,0,0,0,44, - 741,1,0,0,0,46,795,1,0,0,0,48,803,1,0,0,0,50,809,1,0,0,0,52,815,1,0,0, - 0,54,827,1,0,0,0,56,829,1,0,0,0,58,840,1,0,0,0,60,844,1,0,0,0,62,850, - 1,0,0,0,64,858,1,0,0,0,66,872,1,0,0,0,68,876,1,0,0,0,70,944,1,0,0,0,72, - 953,1,0,0,0,74,960,1,0,0,0,76,968,1,0,0,0,78,970,1,0,0,0,80,972,1,0,0, - 0,82,988,1,0,0,0,84,992,1,0,0,0,86,994,1,0,0,0,88,1002,1,0,0,0,90,1006, - 1,0,0,0,92,1029,1,0,0,0,94,1043,1,0,0,0,96,1047,1,0,0,0,98,1094,1,0,0, - 0,100,1100,1,0,0,0,102,1112,1,0,0,0,104,1130,1,0,0,0,106,1136,1,0,0,0, - 108,1138,1,0,0,0,110,1174,1,0,0,0,112,1185,1,0,0,0,114,1198,1,0,0,0,116, - 1208,1,0,0,0,118,1214,1,0,0,0,120,1236,1,0,0,0,122,1238,1,0,0,0,124,1256, - 1,0,0,0,126,1268,1,0,0,0,128,1288,1,0,0,0,130,1296,1,0,0,0,132,1303,1, - 0,0,0,134,1347,1,0,0,0,136,1356,1,0,0,0,138,1358,1,0,0,0,140,1373,1,0, - 0,0,142,1377,1,0,0,0,144,1381,1,0,0,0,146,1388,1,0,0,0,148,1392,1,0,0, - 0,150,1417,1,0,0,0,152,1419,1,0,0,0,154,1435,1,0,0,0,156,1437,1,0,0,0, - 158,1461,1,0,0,0,160,1511,1,0,0,0,162,1513,1,0,0,0,164,1543,1,0,0,0,166, - 1584,1,0,0,0,168,1605,1,0,0,0,170,1615,1,0,0,0,172,1621,1,0,0,0,174,1656, - 1,0,0,0,176,1702,1,0,0,0,178,1714,1,0,0,0,180,1726,1,0,0,0,182,1728,1, - 0,0,0,184,1730,1,0,0,0,186,1732,1,0,0,0,188,1734,1,0,0,0,190,1736,1,0, - 0,0,192,1746,1,0,0,0,194,1756,1,0,0,0,196,1772,1,0,0,0,198,1825,1,0,0, - 0,200,1827,1,0,0,0,202,1829,1,0,0,0,204,1843,1,0,0,0,206,1857,1,0,0,0, - 208,1872,1,0,0,0,210,1874,1,0,0,0,212,1889,1,0,0,0,214,1891,1,0,0,0,216, - 1906,1,0,0,0,218,1908,1,0,0,0,220,1928,1,0,0,0,222,1938,1,0,0,0,224,1967, - 1,0,0,0,226,1980,1,0,0,0,228,1988,1,0,0,0,230,2002,1,0,0,0,232,2004,1, - 0,0,0,234,2023,1,0,0,0,236,2031,1,0,0,0,238,2033,1,0,0,0,240,2035,1,0, - 0,0,242,2056,1,0,0,0,244,2063,1,0,0,0,246,2088,1,0,0,0,248,2099,1,0,0, - 0,250,2157,1,0,0,0,252,2159,1,0,0,0,254,2170,1,0,0,0,256,2174,1,0,0,0, - 258,2183,1,0,0,0,260,2207,1,0,0,0,262,2231,1,0,0,0,264,2261,1,0,0,0,266, - 2278,1,0,0,0,268,2292,1,0,0,0,270,2296,1,0,0,0,272,2298,1,0,0,0,274,2303, - 1,0,0,0,276,2309,1,0,0,0,278,2311,1,0,0,0,280,2313,1,0,0,0,282,2315,1, - 0,0,0,284,2322,1,0,0,0,286,2324,1,0,0,0,288,2326,1,0,0,0,290,2328,1,0, - 0,0,292,2330,1,0,0,0,294,305,3,2,1,0,295,297,5,149,0,0,296,295,1,0,0, - 0,296,297,1,0,0,0,297,298,1,0,0,0,298,300,5,1,0,0,299,301,5,149,0,0,300, - 299,1,0,0,0,300,301,1,0,0,0,301,302,1,0,0,0,302,304,3,2,1,0,303,296,1, - 0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,305,306,1,0,0,0,306,309,1,0,0,0, - 307,305,1,0,0,0,308,310,5,149,0,0,309,308,1,0,0,0,309,310,1,0,0,0,310, - 311,1,0,0,0,311,312,5,0,0,1,312,1,1,0,0,0,313,315,3,76,38,0,314,313,1, - 0,0,0,314,315,1,0,0,0,315,317,1,0,0,0,316,318,5,149,0,0,317,316,1,0,0, - 0,317,318,1,0,0,0,318,319,1,0,0,0,319,324,3,4,2,0,320,322,5,149,0,0,321, - 320,1,0,0,0,321,322,1,0,0,0,322,323,1,0,0,0,323,325,5,1,0,0,324,321,1, - 0,0,0,324,325,1,0,0,0,325,3,1,0,0,0,326,346,3,90,45,0,327,346,3,40,20, - 0,328,346,3,42,21,0,329,346,3,44,22,0,330,346,3,48,24,0,331,346,3,50, - 25,0,332,346,3,52,26,0,333,346,3,6,3,0,334,346,3,12,6,0,335,346,3,14, - 7,0,336,346,3,24,12,0,337,346,3,28,14,0,338,346,3,26,13,0,339,346,3,82, - 41,0,340,346,3,84,42,0,341,346,3,16,8,0,342,346,3,18,9,0,343,346,3,20, - 10,0,344,346,3,22,11,0,345,326,1,0,0,0,345,327,1,0,0,0,345,328,1,0,0, - 0,345,329,1,0,0,0,345,330,1,0,0,0,345,331,1,0,0,0,345,332,1,0,0,0,345, - 333,1,0,0,0,345,334,1,0,0,0,345,335,1,0,0,0,345,336,1,0,0,0,345,337,1, - 0,0,0,345,338,1,0,0,0,345,339,1,0,0,0,345,340,1,0,0,0,345,341,1,0,0,0, - 345,342,1,0,0,0,345,343,1,0,0,0,345,344,1,0,0,0,346,5,1,0,0,0,347,348, - 5,52,0,0,348,349,5,149,0,0,349,358,3,282,141,0,350,352,5,149,0,0,351, - 350,1,0,0,0,351,352,1,0,0,0,352,353,1,0,0,0,353,355,3,8,4,0,354,356,5, - 149,0,0,355,354,1,0,0,0,355,356,1,0,0,0,356,359,1,0,0,0,357,359,5,149, - 0,0,358,351,1,0,0,0,358,357,1,0,0,0,359,360,1,0,0,0,360,361,5,53,0,0, - 361,362,5,149,0,0,362,367,3,10,5,0,363,365,5,149,0,0,364,363,1,0,0,0, - 364,365,1,0,0,0,365,366,1,0,0,0,366,368,3,36,18,0,367,364,1,0,0,0,367, - 368,1,0,0,0,368,7,1,0,0,0,369,371,5,2,0,0,370,372,5,149,0,0,371,370,1, - 0,0,0,371,372,1,0,0,0,372,373,1,0,0,0,373,384,3,282,141,0,374,376,5,149, - 0,0,375,374,1,0,0,0,375,376,1,0,0,0,376,377,1,0,0,0,377,379,5,3,0,0,378, - 380,5,149,0,0,379,378,1,0,0,0,379,380,1,0,0,0,380,381,1,0,0,0,381,383, - 3,282,141,0,382,375,1,0,0,0,383,386,1,0,0,0,384,382,1,0,0,0,384,385,1, - 0,0,0,385,388,1,0,0,0,386,384,1,0,0,0,387,389,5,149,0,0,388,387,1,0,0, - 0,388,389,1,0,0,0,389,390,1,0,0,0,390,391,5,4,0,0,391,9,1,0,0,0,392,412, - 3,34,17,0,393,395,5,2,0,0,394,396,5,149,0,0,395,394,1,0,0,0,395,396,1, - 0,0,0,396,397,1,0,0,0,397,399,3,90,45,0,398,400,5,149,0,0,399,398,1,0, - 0,0,399,400,1,0,0,0,400,401,1,0,0,0,401,402,5,4,0,0,402,412,1,0,0,0,403, - 412,3,268,134,0,404,405,3,268,134,0,405,407,5,5,0,0,406,408,5,149,0,0, - 407,406,1,0,0,0,407,408,1,0,0,0,408,409,1,0,0,0,409,410,3,282,141,0,410, - 412,1,0,0,0,411,392,1,0,0,0,411,393,1,0,0,0,411,403,1,0,0,0,411,404,1, - 0,0,0,412,11,1,0,0,0,413,414,5,52,0,0,414,415,5,149,0,0,415,416,3,282, - 141,0,416,417,5,149,0,0,417,418,5,53,0,0,418,419,5,149,0,0,419,421,5, - 2,0,0,420,422,5,149,0,0,421,420,1,0,0,0,421,422,1,0,0,0,422,423,1,0,0, - 0,423,434,5,135,0,0,424,426,5,149,0,0,425,424,1,0,0,0,425,426,1,0,0,0, - 426,427,1,0,0,0,427,429,5,3,0,0,428,430,5,149,0,0,429,428,1,0,0,0,429, - 430,1,0,0,0,430,431,1,0,0,0,431,433,5,135,0,0,432,425,1,0,0,0,433,436, - 1,0,0,0,434,432,1,0,0,0,434,435,1,0,0,0,435,437,1,0,0,0,436,434,1,0,0, - 0,437,438,5,4,0,0,438,439,5,149,0,0,439,440,5,103,0,0,440,441,5,149,0, - 0,441,442,5,54,0,0,442,13,1,0,0,0,443,444,5,52,0,0,444,445,5,149,0,0, - 445,447,5,2,0,0,446,448,5,149,0,0,447,446,1,0,0,0,447,448,1,0,0,0,448, - 449,1,0,0,0,449,451,3,90,45,0,450,452,5,149,0,0,451,450,1,0,0,0,451,452, - 1,0,0,0,452,453,1,0,0,0,453,454,5,4,0,0,454,455,5,149,0,0,455,456,5,70, - 0,0,456,457,5,149,0,0,457,462,5,135,0,0,458,460,5,149,0,0,459,458,1,0, - 0,0,459,460,1,0,0,0,460,461,1,0,0,0,461,463,3,36,18,0,462,459,1,0,0,0, - 462,463,1,0,0,0,463,15,1,0,0,0,464,465,5,55,0,0,465,466,5,149,0,0,466, - 467,5,57,0,0,467,468,5,149,0,0,468,473,5,135,0,0,469,471,5,149,0,0,470, - 469,1,0,0,0,470,471,1,0,0,0,471,472,1,0,0,0,472,474,3,36,18,0,473,470, - 1,0,0,0,473,474,1,0,0,0,474,17,1,0,0,0,475,476,5,56,0,0,476,477,5,149, - 0,0,477,478,5,57,0,0,478,479,5,149,0,0,479,480,5,135,0,0,480,19,1,0,0, - 0,481,482,5,46,0,0,482,483,5,149,0,0,483,490,5,135,0,0,484,485,5,149, - 0,0,485,486,5,101,0,0,486,487,5,149,0,0,487,488,3,282,141,0,488,489,5, - 149,0,0,489,491,1,0,0,0,490,484,1,0,0,0,490,491,1,0,0,0,491,506,1,0,0, - 0,492,494,5,149,0,0,493,492,1,0,0,0,493,494,1,0,0,0,494,495,1,0,0,0,495, - 497,5,2,0,0,496,498,5,149,0,0,497,496,1,0,0,0,497,498,1,0,0,0,498,499, - 1,0,0,0,499,500,5,47,0,0,500,501,5,149,0,0,501,503,5,135,0,0,502,504, - 5,149,0,0,503,502,1,0,0,0,503,504,1,0,0,0,504,505,1,0,0,0,505,507,5,4, - 0,0,506,493,1,0,0,0,506,507,1,0,0,0,507,21,1,0,0,0,508,509,5,95,0,0,509, - 510,5,149,0,0,510,511,3,282,141,0,511,23,1,0,0,0,512,513,5,48,0,0,513, - 514,5,149,0,0,514,516,3,284,142,0,515,517,5,149,0,0,516,515,1,0,0,0,516, - 517,1,0,0,0,517,518,1,0,0,0,518,520,5,6,0,0,519,521,5,149,0,0,520,519, - 1,0,0,0,520,521,1,0,0,0,521,522,1,0,0,0,522,523,3,236,118,0,523,25,1, - 0,0,0,524,525,5,49,0,0,525,526,5,149,0,0,526,527,5,93,0,0,527,528,5,149, - 0,0,528,529,5,59,0,0,529,530,5,149,0,0,530,531,3,282,141,0,531,532,5, - 149,0,0,532,533,5,124,0,0,533,534,5,149,0,0,534,535,5,135,0,0,535,27, - 1,0,0,0,536,537,5,91,0,0,537,538,5,149,0,0,538,539,5,50,0,0,539,540,5, - 149,0,0,540,542,3,252,126,0,541,543,5,149,0,0,542,541,1,0,0,0,542,543, - 1,0,0,0,543,544,1,0,0,0,544,546,5,2,0,0,545,547,5,149,0,0,546,545,1,0, - 0,0,546,547,1,0,0,0,547,549,1,0,0,0,548,550,3,30,15,0,549,548,1,0,0,0, - 549,550,1,0,0,0,550,552,1,0,0,0,551,553,5,149,0,0,552,551,1,0,0,0,552, - 553,1,0,0,0,553,555,1,0,0,0,554,556,3,32,16,0,555,554,1,0,0,0,555,556, - 1,0,0,0,556,567,1,0,0,0,557,559,5,149,0,0,558,557,1,0,0,0,558,559,1,0, - 0,0,559,560,1,0,0,0,560,562,5,3,0,0,561,563,5,149,0,0,562,561,1,0,0,0, - 562,563,1,0,0,0,563,564,1,0,0,0,564,566,3,32,16,0,565,558,1,0,0,0,566, - 569,1,0,0,0,567,565,1,0,0,0,567,568,1,0,0,0,568,571,1,0,0,0,569,567,1, - 0,0,0,570,572,5,149,0,0,571,570,1,0,0,0,571,572,1,0,0,0,572,573,1,0,0, - 0,573,574,5,4,0,0,574,575,5,149,0,0,575,576,5,101,0,0,576,577,5,149,0, - 0,577,578,3,188,94,0,578,29,1,0,0,0,579,590,3,284,142,0,580,582,5,149, - 0,0,581,580,1,0,0,0,581,582,1,0,0,0,582,583,1,0,0,0,583,585,5,3,0,0,584, - 586,5,149,0,0,585,584,1,0,0,0,585,586,1,0,0,0,586,587,1,0,0,0,587,589, - 3,284,142,0,588,581,1,0,0,0,589,592,1,0,0,0,590,588,1,0,0,0,590,591,1, - 0,0,0,591,31,1,0,0,0,592,590,1,0,0,0,593,595,3,284,142,0,594,596,5,149, - 0,0,595,594,1,0,0,0,595,596,1,0,0,0,596,597,1,0,0,0,597,598,5,119,0,0, - 598,600,5,6,0,0,599,601,5,149,0,0,600,599,1,0,0,0,600,601,1,0,0,0,601, - 602,1,0,0,0,602,603,3,236,118,0,603,33,1,0,0,0,604,606,5,7,0,0,605,607, - 5,149,0,0,606,605,1,0,0,0,606,607,1,0,0,0,607,608,1,0,0,0,608,619,5,135, - 0,0,609,611,5,149,0,0,610,609,1,0,0,0,610,611,1,0,0,0,611,612,1,0,0,0, - 612,614,5,3,0,0,613,615,5,149,0,0,614,613,1,0,0,0,614,615,1,0,0,0,615, - 616,1,0,0,0,616,618,5,135,0,0,617,610,1,0,0,0,618,621,1,0,0,0,619,617, - 1,0,0,0,619,620,1,0,0,0,620,622,1,0,0,0,621,619,1,0,0,0,622,638,5,8,0, - 0,623,638,5,135,0,0,624,626,5,51,0,0,625,627,5,149,0,0,626,625,1,0,0, - 0,626,627,1,0,0,0,627,628,1,0,0,0,628,630,5,2,0,0,629,631,5,149,0,0,630, - 629,1,0,0,0,630,631,1,0,0,0,631,632,1,0,0,0,632,634,5,135,0,0,633,635, - 5,149,0,0,634,633,1,0,0,0,634,635,1,0,0,0,635,636,1,0,0,0,636,638,5,4, - 0,0,637,604,1,0,0,0,637,623,1,0,0,0,637,624,1,0,0,0,638,35,1,0,0,0,639, - 641,5,2,0,0,640,642,5,149,0,0,641,640,1,0,0,0,641,642,1,0,0,0,642,643, - 1,0,0,0,643,654,3,38,19,0,644,646,5,149,0,0,645,644,1,0,0,0,645,646,1, - 0,0,0,646,647,1,0,0,0,647,649,5,3,0,0,648,650,5,149,0,0,649,648,1,0,0, - 0,649,650,1,0,0,0,650,651,1,0,0,0,651,653,3,38,19,0,652,645,1,0,0,0,653, - 656,1,0,0,0,654,652,1,0,0,0,654,655,1,0,0,0,655,658,1,0,0,0,656,654,1, - 0,0,0,657,659,5,149,0,0,658,657,1,0,0,0,658,659,1,0,0,0,659,660,1,0,0, - 0,660,661,5,4,0,0,661,37,1,0,0,0,662,664,3,284,142,0,663,665,5,149,0, - 0,664,663,1,0,0,0,664,665,1,0,0,0,665,666,1,0,0,0,666,668,5,6,0,0,667, - 669,5,149,0,0,668,667,1,0,0,0,668,669,1,0,0,0,669,670,1,0,0,0,670,671, - 3,236,118,0,671,39,1,0,0,0,672,673,5,91,0,0,673,674,5,149,0,0,674,675, - 5,58,0,0,675,676,5,149,0,0,676,677,5,59,0,0,677,678,5,149,0,0,678,680, - 3,282,141,0,679,681,5,149,0,0,680,679,1,0,0,0,680,681,1,0,0,0,681,682, - 1,0,0,0,682,684,5,2,0,0,683,685,5,149,0,0,684,683,1,0,0,0,684,685,1,0, - 0,0,685,686,1,0,0,0,686,688,3,64,32,0,687,689,5,149,0,0,688,687,1,0,0, - 0,688,689,1,0,0,0,689,690,1,0,0,0,690,692,5,3,0,0,691,693,5,149,0,0,692, - 691,1,0,0,0,692,693,1,0,0,0,693,694,1,0,0,0,694,695,3,68,34,0,695,697, - 1,0,0,0,696,698,5,149,0,0,697,696,1,0,0,0,697,698,1,0,0,0,698,699,1,0, - 0,0,699,700,5,4,0,0,700,41,1,0,0,0,701,702,5,91,0,0,702,703,5,149,0,0, - 703,704,5,69,0,0,704,705,5,149,0,0,705,706,5,59,0,0,706,707,5,149,0,0, - 707,709,3,282,141,0,708,710,5,149,0,0,709,708,1,0,0,0,709,710,1,0,0,0, - 710,711,1,0,0,0,711,713,5,2,0,0,712,714,5,149,0,0,713,712,1,0,0,0,713, - 714,1,0,0,0,714,715,1,0,0,0,715,717,3,46,23,0,716,718,5,149,0,0,717,716, - 1,0,0,0,717,718,1,0,0,0,718,727,1,0,0,0,719,721,5,3,0,0,720,722,5,149, - 0,0,721,720,1,0,0,0,721,722,1,0,0,0,722,723,1,0,0,0,723,725,3,64,32,0, - 724,726,5,149,0,0,725,724,1,0,0,0,725,726,1,0,0,0,726,728,1,0,0,0,727, - 719,1,0,0,0,727,728,1,0,0,0,728,737,1,0,0,0,729,731,5,3,0,0,730,732,5, - 149,0,0,731,730,1,0,0,0,731,732,1,0,0,0,732,733,1,0,0,0,733,735,3,284, - 142,0,734,736,5,149,0,0,735,734,1,0,0,0,735,736,1,0,0,0,736,738,1,0,0, - 0,737,729,1,0,0,0,737,738,1,0,0,0,738,739,1,0,0,0,739,740,5,4,0,0,740, - 43,1,0,0,0,741,742,5,91,0,0,742,743,5,149,0,0,743,744,5,69,0,0,744,745, - 5,149,0,0,745,746,5,59,0,0,746,747,5,149,0,0,747,748,5,60,0,0,748,749, - 5,149,0,0,749,751,3,282,141,0,750,752,5,149,0,0,751,750,1,0,0,0,751,752, - 1,0,0,0,752,753,1,0,0,0,753,755,5,2,0,0,754,756,5,149,0,0,755,754,1,0, - 0,0,755,756,1,0,0,0,756,757,1,0,0,0,757,759,3,46,23,0,758,760,5,149,0, - 0,759,758,1,0,0,0,759,760,1,0,0,0,760,766,1,0,0,0,761,763,5,3,0,0,762, - 764,5,149,0,0,763,762,1,0,0,0,763,764,1,0,0,0,764,765,1,0,0,0,765,767, - 3,46,23,0,766,761,1,0,0,0,767,768,1,0,0,0,768,766,1,0,0,0,768,769,1,0, - 0,0,769,771,1,0,0,0,770,772,5,149,0,0,771,770,1,0,0,0,771,772,1,0,0,0, - 772,781,1,0,0,0,773,775,5,3,0,0,774,776,5,149,0,0,775,774,1,0,0,0,775, - 776,1,0,0,0,776,777,1,0,0,0,777,779,3,64,32,0,778,780,5,149,0,0,779,778, - 1,0,0,0,779,780,1,0,0,0,780,782,1,0,0,0,781,773,1,0,0,0,781,782,1,0,0, - 0,782,791,1,0,0,0,783,785,5,3,0,0,784,786,5,149,0,0,785,784,1,0,0,0,785, - 786,1,0,0,0,786,787,1,0,0,0,787,789,3,284,142,0,788,790,5,149,0,0,789, - 788,1,0,0,0,789,790,1,0,0,0,790,792,1,0,0,0,791,783,1,0,0,0,791,792,1, - 0,0,0,792,793,1,0,0,0,793,794,5,4,0,0,794,45,1,0,0,0,795,796,5,53,0,0, - 796,797,5,149,0,0,797,798,3,282,141,0,798,799,5,149,0,0,799,800,5,70, - 0,0,800,801,5,149,0,0,801,802,3,282,141,0,802,47,1,0,0,0,803,804,5,91, - 0,0,804,805,5,149,0,0,805,806,5,61,0,0,806,807,5,149,0,0,807,808,3,282, - 141,0,808,49,1,0,0,0,809,810,5,62,0,0,810,811,5,149,0,0,811,812,7,0,0, - 0,812,813,5,149,0,0,813,814,3,282,141,0,814,51,1,0,0,0,815,816,5,63,0, - 0,816,817,5,149,0,0,817,818,5,59,0,0,818,819,5,149,0,0,819,820,3,282, - 141,0,820,821,5,149,0,0,821,822,3,54,27,0,822,53,1,0,0,0,823,828,3,56, - 28,0,824,828,3,58,29,0,825,828,3,60,30,0,826,828,3,62,31,0,827,823,1, - 0,0,0,827,824,1,0,0,0,827,825,1,0,0,0,827,826,1,0,0,0,828,55,1,0,0,0, - 829,830,5,66,0,0,830,831,5,149,0,0,831,832,3,276,138,0,832,833,5,149, - 0,0,833,838,3,70,35,0,834,835,5,149,0,0,835,836,5,64,0,0,836,837,5,149, - 0,0,837,839,3,188,94,0,838,834,1,0,0,0,838,839,1,0,0,0,839,57,1,0,0,0, - 840,841,5,62,0,0,841,842,5,149,0,0,842,843,3,276,138,0,843,59,1,0,0,0, - 844,845,5,65,0,0,845,846,5,149,0,0,846,847,5,70,0,0,847,848,5,149,0,0, - 848,849,3,282,141,0,849,61,1,0,0,0,850,851,5,65,0,0,851,852,5,149,0,0, - 852,853,3,276,138,0,853,854,5,149,0,0,854,855,5,70,0,0,855,856,5,149, - 0,0,856,857,3,276,138,0,857,63,1,0,0,0,858,869,3,66,33,0,859,861,5,149, - 0,0,860,859,1,0,0,0,860,861,1,0,0,0,861,862,1,0,0,0,862,864,5,3,0,0,863, - 865,5,149,0,0,864,863,1,0,0,0,864,865,1,0,0,0,865,866,1,0,0,0,866,868, - 3,66,33,0,867,860,1,0,0,0,868,871,1,0,0,0,869,867,1,0,0,0,869,870,1,0, - 0,0,870,65,1,0,0,0,871,869,1,0,0,0,872,873,3,276,138,0,873,874,5,149, - 0,0,874,875,3,70,35,0,875,67,1,0,0,0,876,877,5,67,0,0,877,878,5,149,0, - 0,878,880,5,68,0,0,879,881,5,149,0,0,880,879,1,0,0,0,880,881,1,0,0,0, - 881,882,1,0,0,0,882,884,5,2,0,0,883,885,5,149,0,0,884,883,1,0,0,0,884, - 885,1,0,0,0,885,886,1,0,0,0,886,888,3,276,138,0,887,889,5,149,0,0,888, - 887,1,0,0,0,888,889,1,0,0,0,889,890,1,0,0,0,890,891,5,4,0,0,891,69,1, - 0,0,0,892,893,6,35,-1,0,893,945,3,284,142,0,894,896,5,84,0,0,895,897, - 5,149,0,0,896,895,1,0,0,0,896,897,1,0,0,0,897,898,1,0,0,0,898,900,5,2, - 0,0,899,901,5,149,0,0,900,899,1,0,0,0,900,901,1,0,0,0,901,902,1,0,0,0, - 902,904,3,64,32,0,903,905,5,149,0,0,904,903,1,0,0,0,904,905,1,0,0,0,905, - 906,1,0,0,0,906,907,5,4,0,0,907,945,1,0,0,0,908,910,3,284,142,0,909,911, - 5,149,0,0,910,909,1,0,0,0,910,911,1,0,0,0,911,912,1,0,0,0,912,914,5,2, - 0,0,913,915,5,149,0,0,914,913,1,0,0,0,914,915,1,0,0,0,915,916,1,0,0,0, - 916,918,3,64,32,0,917,919,5,149,0,0,918,917,1,0,0,0,918,919,1,0,0,0,919, - 920,1,0,0,0,920,921,5,4,0,0,921,945,1,0,0,0,922,924,3,284,142,0,923,925, - 5,149,0,0,924,923,1,0,0,0,924,925,1,0,0,0,925,926,1,0,0,0,926,928,5,2, - 0,0,927,929,5,149,0,0,928,927,1,0,0,0,928,929,1,0,0,0,929,930,1,0,0,0, - 930,932,3,70,35,0,931,933,5,149,0,0,932,931,1,0,0,0,932,933,1,0,0,0,933, - 934,1,0,0,0,934,936,5,3,0,0,935,937,5,149,0,0,936,935,1,0,0,0,936,937, - 1,0,0,0,937,938,1,0,0,0,938,940,3,70,35,0,939,941,5,149,0,0,940,939,1, - 0,0,0,940,941,1,0,0,0,941,942,1,0,0,0,942,943,5,4,0,0,943,945,1,0,0,0, - 944,892,1,0,0,0,944,894,1,0,0,0,944,908,1,0,0,0,944,922,1,0,0,0,945,950, - 1,0,0,0,946,947,10,4,0,0,947,949,3,72,36,0,948,946,1,0,0,0,949,952,1, - 0,0,0,950,948,1,0,0,0,950,951,1,0,0,0,951,71,1,0,0,0,952,950,1,0,0,0, - 953,957,3,74,37,0,954,956,3,74,37,0,955,954,1,0,0,0,956,959,1,0,0,0,957, - 955,1,0,0,0,957,958,1,0,0,0,958,73,1,0,0,0,959,957,1,0,0,0,960,962,5, - 7,0,0,961,963,3,278,139,0,962,961,1,0,0,0,962,963,1,0,0,0,963,964,1,0, - 0,0,964,965,5,8,0,0,965,75,1,0,0,0,966,969,3,78,39,0,967,969,3,80,40, - 0,968,966,1,0,0,0,968,967,1,0,0,0,969,77,1,0,0,0,970,971,5,71,0,0,971, - 79,1,0,0,0,972,973,5,72,0,0,973,81,1,0,0,0,974,975,5,73,0,0,975,976,5, - 149,0,0,976,989,5,74,0,0,977,978,5,73,0,0,978,979,5,149,0,0,979,980,5, - 74,0,0,980,981,5,149,0,0,981,982,5,75,0,0,982,983,5,149,0,0,983,989,5, - 76,0,0,984,989,5,78,0,0,985,989,5,79,0,0,986,989,5,80,0,0,987,989,5,81, - 0,0,988,974,1,0,0,0,988,977,1,0,0,0,988,984,1,0,0,0,988,985,1,0,0,0,988, - 986,1,0,0,0,988,987,1,0,0,0,989,83,1,0,0,0,990,993,3,86,43,0,991,993, - 3,88,44,0,992,990,1,0,0,0,992,991,1,0,0,0,993,85,1,0,0,0,994,995,5,86, - 0,0,995,996,5,149,0,0,996,997,5,83,0,0,997,1000,5,149,0,0,998,1001,5, - 135,0,0,999,1001,3,268,134,0,1000,998,1,0,0,0,1000,999,1,0,0,0,1001,87, - 1,0,0,0,1002,1003,5,82,0,0,1003,1004,5,149,0,0,1004,1005,3,268,134,0, - 1005,89,1,0,0,0,1006,1007,3,92,46,0,1007,91,1,0,0,0,1008,1015,3,96,48, - 0,1009,1011,5,149,0,0,1010,1009,1,0,0,0,1010,1011,1,0,0,0,1011,1012,1, - 0,0,0,1012,1014,3,94,47,0,1013,1010,1,0,0,0,1014,1017,1,0,0,0,1015,1013, - 1,0,0,0,1015,1016,1,0,0,0,1016,1030,1,0,0,0,1017,1015,1,0,0,0,1018,1020, - 3,130,65,0,1019,1021,5,149,0,0,1020,1019,1,0,0,0,1020,1021,1,0,0,0,1021, - 1023,1,0,0,0,1022,1018,1,0,0,0,1023,1024,1,0,0,0,1024,1022,1,0,0,0,1024, - 1025,1,0,0,0,1025,1026,1,0,0,0,1026,1027,3,96,48,0,1027,1028,6,46,-1, - 0,1028,1030,1,0,0,0,1029,1008,1,0,0,0,1029,1022,1,0,0,0,1030,93,1,0,0, - 0,1031,1032,5,84,0,0,1032,1033,5,149,0,0,1033,1035,5,85,0,0,1034,1036, - 5,149,0,0,1035,1034,1,0,0,0,1035,1036,1,0,0,0,1036,1037,1,0,0,0,1037, - 1044,3,96,48,0,1038,1040,5,84,0,0,1039,1041,5,149,0,0,1040,1039,1,0,0, - 0,1040,1041,1,0,0,0,1041,1042,1,0,0,0,1042,1044,3,96,48,0,1043,1031,1, - 0,0,0,1043,1038,1,0,0,0,1044,95,1,0,0,0,1045,1048,3,98,49,0,1046,1048, - 3,100,50,0,1047,1045,1,0,0,0,1047,1046,1,0,0,0,1048,97,1,0,0,0,1049,1051, - 3,106,53,0,1050,1052,5,149,0,0,1051,1050,1,0,0,0,1051,1052,1,0,0,0,1052, - 1054,1,0,0,0,1053,1049,1,0,0,0,1054,1057,1,0,0,0,1055,1053,1,0,0,0,1055, - 1056,1,0,0,0,1056,1058,1,0,0,0,1057,1055,1,0,0,0,1058,1095,3,130,65,0, - 1059,1061,3,106,53,0,1060,1062,5,149,0,0,1061,1060,1,0,0,0,1061,1062, - 1,0,0,0,1062,1064,1,0,0,0,1063,1059,1,0,0,0,1064,1067,1,0,0,0,1065,1063, - 1,0,0,0,1065,1066,1,0,0,0,1066,1068,1,0,0,0,1067,1065,1,0,0,0,1068,1075, - 3,104,52,0,1069,1071,5,149,0,0,1070,1069,1,0,0,0,1070,1071,1,0,0,0,1071, - 1072,1,0,0,0,1072,1074,3,104,52,0,1073,1070,1,0,0,0,1074,1077,1,0,0,0, - 1075,1073,1,0,0,0,1075,1076,1,0,0,0,1076,1082,1,0,0,0,1077,1075,1,0,0, - 0,1078,1080,5,149,0,0,1079,1078,1,0,0,0,1079,1080,1,0,0,0,1080,1081,1, - 0,0,0,1081,1083,3,130,65,0,1082,1079,1,0,0,0,1082,1083,1,0,0,0,1083,1095, - 1,0,0,0,1084,1086,3,106,53,0,1085,1087,5,149,0,0,1086,1085,1,0,0,0,1086, - 1087,1,0,0,0,1087,1089,1,0,0,0,1088,1084,1,0,0,0,1089,1090,1,0,0,0,1090, - 1088,1,0,0,0,1090,1091,1,0,0,0,1091,1092,1,0,0,0,1092,1093,6,49,-1,0, - 1093,1095,1,0,0,0,1094,1055,1,0,0,0,1094,1065,1,0,0,0,1094,1088,1,0,0, - 0,1095,99,1,0,0,0,1096,1098,3,102,51,0,1097,1099,5,149,0,0,1098,1097, - 1,0,0,0,1098,1099,1,0,0,0,1099,1101,1,0,0,0,1100,1096,1,0,0,0,1101,1102, - 1,0,0,0,1102,1100,1,0,0,0,1102,1103,1,0,0,0,1103,1104,1,0,0,0,1104,1105, - 3,98,49,0,1105,101,1,0,0,0,1106,1108,3,106,53,0,1107,1109,5,149,0,0,1108, - 1107,1,0,0,0,1108,1109,1,0,0,0,1109,1111,1,0,0,0,1110,1106,1,0,0,0,1111, - 1114,1,0,0,0,1112,1110,1,0,0,0,1112,1113,1,0,0,0,1113,1121,1,0,0,0,1114, - 1112,1,0,0,0,1115,1117,3,104,52,0,1116,1118,5,149,0,0,1117,1116,1,0,0, - 0,1117,1118,1,0,0,0,1118,1120,1,0,0,0,1119,1115,1,0,0,0,1120,1123,1,0, - 0,0,1121,1119,1,0,0,0,1121,1122,1,0,0,0,1122,1124,1,0,0,0,1123,1121,1, - 0,0,0,1124,1125,3,128,64,0,1125,103,1,0,0,0,1126,1131,3,116,58,0,1127, - 1131,3,118,59,0,1128,1131,3,122,61,0,1129,1131,3,126,63,0,1130,1126,1, - 0,0,0,1130,1127,1,0,0,0,1130,1128,1,0,0,0,1130,1129,1,0,0,0,1131,105, - 1,0,0,0,1132,1137,3,112,56,0,1133,1137,3,114,57,0,1134,1137,3,110,55, - 0,1135,1137,3,108,54,0,1136,1132,1,0,0,0,1136,1133,1,0,0,0,1136,1134, - 1,0,0,0,1136,1135,1,0,0,0,1137,107,1,0,0,0,1138,1156,5,86,0,0,1139,1140, - 5,149,0,0,1140,1141,5,97,0,0,1141,1142,5,149,0,0,1142,1144,5,87,0,0,1143, - 1145,5,149,0,0,1144,1143,1,0,0,0,1144,1145,1,0,0,0,1145,1146,1,0,0,0, - 1146,1148,5,2,0,0,1147,1149,5,149,0,0,1148,1147,1,0,0,0,1148,1149,1,0, - 0,0,1149,1150,1,0,0,0,1150,1152,3,64,32,0,1151,1153,5,149,0,0,1152,1151, - 1,0,0,0,1152,1153,1,0,0,0,1153,1154,1,0,0,0,1154,1155,5,4,0,0,1155,1157, - 1,0,0,0,1156,1139,1,0,0,0,1156,1157,1,0,0,0,1157,1158,1,0,0,0,1158,1159, - 5,149,0,0,1159,1160,5,53,0,0,1160,1161,5,149,0,0,1161,1166,3,10,5,0,1162, - 1164,5,149,0,0,1163,1162,1,0,0,0,1163,1164,1,0,0,0,1164,1165,1,0,0,0, - 1165,1167,3,36,18,0,1166,1163,1,0,0,0,1166,1167,1,0,0,0,1167,1172,1,0, - 0,0,1168,1170,5,149,0,0,1169,1168,1,0,0,0,1169,1170,1,0,0,0,1170,1171, - 1,0,0,0,1171,1173,3,146,73,0,1172,1169,1,0,0,0,1172,1173,1,0,0,0,1173, - 109,1,0,0,0,1174,1175,5,48,0,0,1175,1176,5,149,0,0,1176,1181,3,250,125, - 0,1177,1179,5,149,0,0,1178,1177,1,0,0,0,1178,1179,1,0,0,0,1179,1180,1, - 0,0,0,1180,1182,3,146,73,0,1181,1178,1,0,0,0,1181,1182,1,0,0,0,1182,111, - 1,0,0,0,1183,1184,5,88,0,0,1184,1186,5,149,0,0,1185,1183,1,0,0,0,1185, - 1186,1,0,0,0,1186,1187,1,0,0,0,1187,1189,5,89,0,0,1188,1190,5,149,0,0, - 1189,1188,1,0,0,0,1189,1190,1,0,0,0,1190,1191,1,0,0,0,1191,1196,3,148, - 74,0,1192,1194,5,149,0,0,1193,1192,1,0,0,0,1193,1194,1,0,0,0,1194,1195, - 1,0,0,0,1195,1197,3,146,73,0,1196,1193,1,0,0,0,1196,1197,1,0,0,0,1197, - 113,1,0,0,0,1198,1200,5,90,0,0,1199,1201,5,149,0,0,1200,1199,1,0,0,0, - 1200,1201,1,0,0,0,1201,1202,1,0,0,0,1202,1203,3,188,94,0,1203,1204,5, - 149,0,0,1204,1205,5,101,0,0,1205,1206,5,149,0,0,1206,1207,3,268,134,0, - 1207,115,1,0,0,0,1208,1210,5,91,0,0,1209,1211,5,149,0,0,1210,1209,1,0, - 0,0,1210,1211,1,0,0,0,1211,1212,1,0,0,0,1212,1213,3,148,74,0,1213,117, - 1,0,0,0,1214,1216,5,92,0,0,1215,1217,5,149,0,0,1216,1215,1,0,0,0,1216, - 1217,1,0,0,0,1217,1218,1,0,0,0,1218,1223,3,148,74,0,1219,1220,5,149,0, - 0,1220,1222,3,120,60,0,1221,1219,1,0,0,0,1222,1225,1,0,0,0,1223,1221, - 1,0,0,0,1223,1224,1,0,0,0,1224,119,1,0,0,0,1225,1223,1,0,0,0,1226,1227, - 5,93,0,0,1227,1228,5,149,0,0,1228,1229,5,89,0,0,1229,1230,5,149,0,0,1230, - 1237,3,122,61,0,1231,1232,5,93,0,0,1232,1233,5,149,0,0,1233,1234,5,91, - 0,0,1234,1235,5,149,0,0,1235,1237,3,122,61,0,1236,1226,1,0,0,0,1236,1231, - 1,0,0,0,1237,121,1,0,0,0,1238,1240,5,94,0,0,1239,1241,5,149,0,0,1240, - 1239,1,0,0,0,1240,1241,1,0,0,0,1241,1242,1,0,0,0,1242,1253,3,124,62,0, - 1243,1245,5,149,0,0,1244,1243,1,0,0,0,1244,1245,1,0,0,0,1245,1246,1,0, - 0,0,1246,1248,5,3,0,0,1247,1249,5,149,0,0,1248,1247,1,0,0,0,1248,1249, - 1,0,0,0,1249,1250,1,0,0,0,1250,1252,3,124,62,0,1251,1244,1,0,0,0,1252, - 1255,1,0,0,0,1253,1251,1,0,0,0,1253,1254,1,0,0,0,1254,123,1,0,0,0,1255, - 1253,1,0,0,0,1256,1258,3,274,137,0,1257,1259,5,149,0,0,1258,1257,1,0, - 0,0,1258,1259,1,0,0,0,1259,1260,1,0,0,0,1260,1262,5,6,0,0,1261,1263,5, - 149,0,0,1262,1261,1,0,0,0,1262,1263,1,0,0,0,1263,1264,1,0,0,0,1264,1265, - 3,188,94,0,1265,125,1,0,0,0,1266,1267,5,95,0,0,1267,1269,5,149,0,0,1268, - 1266,1,0,0,0,1268,1269,1,0,0,0,1269,1270,1,0,0,0,1270,1272,5,96,0,0,1271, - 1273,5,149,0,0,1272,1271,1,0,0,0,1272,1273,1,0,0,0,1273,1274,1,0,0,0, - 1274,1285,3,188,94,0,1275,1277,5,149,0,0,1276,1275,1,0,0,0,1276,1277, - 1,0,0,0,1277,1278,1,0,0,0,1278,1280,5,3,0,0,1279,1281,5,149,0,0,1280, - 1279,1,0,0,0,1280,1281,1,0,0,0,1281,1282,1,0,0,0,1282,1284,3,188,94,0, - 1283,1276,1,0,0,0,1284,1287,1,0,0,0,1285,1283,1,0,0,0,1285,1286,1,0,0, - 0,1286,127,1,0,0,0,1287,1285,1,0,0,0,1288,1289,5,97,0,0,1289,1294,3,132, - 66,0,1290,1292,5,149,0,0,1291,1290,1,0,0,0,1291,1292,1,0,0,0,1292,1293, - 1,0,0,0,1293,1295,3,146,73,0,1294,1291,1,0,0,0,1294,1295,1,0,0,0,1295, - 129,1,0,0,0,1296,1297,5,98,0,0,1297,1298,3,132,66,0,1298,131,1,0,0,0, - 1299,1301,5,149,0,0,1300,1299,1,0,0,0,1300,1301,1,0,0,0,1301,1302,1,0, - 0,0,1302,1304,5,99,0,0,1303,1300,1,0,0,0,1303,1304,1,0,0,0,1304,1305, - 1,0,0,0,1305,1306,5,149,0,0,1306,1309,3,134,67,0,1307,1308,5,149,0,0, - 1308,1310,3,138,69,0,1309,1307,1,0,0,0,1309,1310,1,0,0,0,1310,1313,1, - 0,0,0,1311,1312,5,149,0,0,1312,1314,3,140,70,0,1313,1311,1,0,0,0,1313, - 1314,1,0,0,0,1314,1317,1,0,0,0,1315,1316,5,149,0,0,1316,1318,3,142,71, - 0,1317,1315,1,0,0,0,1317,1318,1,0,0,0,1318,133,1,0,0,0,1319,1330,5,100, - 0,0,1320,1322,5,149,0,0,1321,1320,1,0,0,0,1321,1322,1,0,0,0,1322,1323, - 1,0,0,0,1323,1325,5,3,0,0,1324,1326,5,149,0,0,1325,1324,1,0,0,0,1325, - 1326,1,0,0,0,1326,1327,1,0,0,0,1327,1329,3,136,68,0,1328,1321,1,0,0,0, - 1329,1332,1,0,0,0,1330,1328,1,0,0,0,1330,1331,1,0,0,0,1331,1348,1,0,0, - 0,1332,1330,1,0,0,0,1333,1344,3,136,68,0,1334,1336,5,149,0,0,1335,1334, - 1,0,0,0,1335,1336,1,0,0,0,1336,1337,1,0,0,0,1337,1339,5,3,0,0,1338,1340, - 5,149,0,0,1339,1338,1,0,0,0,1339,1340,1,0,0,0,1340,1341,1,0,0,0,1341, - 1343,3,136,68,0,1342,1335,1,0,0,0,1343,1346,1,0,0,0,1344,1342,1,0,0,0, - 1344,1345,1,0,0,0,1345,1348,1,0,0,0,1346,1344,1,0,0,0,1347,1319,1,0,0, - 0,1347,1333,1,0,0,0,1348,135,1,0,0,0,1349,1350,3,188,94,0,1350,1351,5, - 149,0,0,1351,1352,5,101,0,0,1352,1353,5,149,0,0,1353,1354,3,268,134,0, - 1354,1357,1,0,0,0,1355,1357,3,188,94,0,1356,1349,1,0,0,0,1356,1355,1, - 0,0,0,1357,137,1,0,0,0,1358,1359,5,102,0,0,1359,1360,5,149,0,0,1360,1361, - 5,103,0,0,1361,1362,5,149,0,0,1362,1370,3,144,72,0,1363,1365,5,3,0,0, - 1364,1366,5,149,0,0,1365,1364,1,0,0,0,1365,1366,1,0,0,0,1366,1367,1,0, - 0,0,1367,1369,3,144,72,0,1368,1363,1,0,0,0,1369,1372,1,0,0,0,1370,1368, - 1,0,0,0,1370,1371,1,0,0,0,1371,139,1,0,0,0,1372,1370,1,0,0,0,1373,1374, - 5,104,0,0,1374,1375,5,149,0,0,1375,1376,3,188,94,0,1376,141,1,0,0,0,1377, - 1378,5,105,0,0,1378,1379,5,149,0,0,1379,1380,3,188,94,0,1380,143,1,0, - 0,0,1381,1386,3,188,94,0,1382,1384,5,149,0,0,1383,1382,1,0,0,0,1383,1384, - 1,0,0,0,1384,1385,1,0,0,0,1385,1387,7,1,0,0,1386,1383,1,0,0,0,1386,1387, - 1,0,0,0,1387,145,1,0,0,0,1388,1389,5,110,0,0,1389,1390,5,149,0,0,1390, - 1391,3,188,94,0,1391,147,1,0,0,0,1392,1403,3,150,75,0,1393,1395,5,149, - 0,0,1394,1393,1,0,0,0,1394,1395,1,0,0,0,1395,1396,1,0,0,0,1396,1398,5, - 3,0,0,1397,1399,5,149,0,0,1398,1397,1,0,0,0,1398,1399,1,0,0,0,1399,1400, - 1,0,0,0,1400,1402,3,150,75,0,1401,1394,1,0,0,0,1402,1405,1,0,0,0,1403, - 1401,1,0,0,0,1403,1404,1,0,0,0,1404,149,1,0,0,0,1405,1403,1,0,0,0,1406, - 1408,3,268,134,0,1407,1409,5,149,0,0,1408,1407,1,0,0,0,1408,1409,1,0, - 0,0,1409,1410,1,0,0,0,1410,1412,5,6,0,0,1411,1413,5,149,0,0,1412,1411, - 1,0,0,0,1412,1413,1,0,0,0,1413,1414,1,0,0,0,1414,1415,3,152,76,0,1415, - 1418,1,0,0,0,1416,1418,3,152,76,0,1417,1406,1,0,0,0,1417,1416,1,0,0,0, - 1418,151,1,0,0,0,1419,1420,3,154,77,0,1420,153,1,0,0,0,1421,1428,3,156, - 78,0,1422,1424,5,149,0,0,1423,1422,1,0,0,0,1423,1424,1,0,0,0,1424,1425, - 1,0,0,0,1425,1427,3,158,79,0,1426,1423,1,0,0,0,1427,1430,1,0,0,0,1428, - 1426,1,0,0,0,1428,1429,1,0,0,0,1429,1436,1,0,0,0,1430,1428,1,0,0,0,1431, - 1432,5,2,0,0,1432,1433,3,154,77,0,1433,1434,5,4,0,0,1434,1436,1,0,0,0, - 1435,1421,1,0,0,0,1435,1431,1,0,0,0,1436,155,1,0,0,0,1437,1439,5,2,0, - 0,1438,1440,5,149,0,0,1439,1438,1,0,0,0,1439,1440,1,0,0,0,1440,1445,1, - 0,0,0,1441,1443,3,268,134,0,1442,1444,5,149,0,0,1443,1442,1,0,0,0,1443, - 1444,1,0,0,0,1444,1446,1,0,0,0,1445,1441,1,0,0,0,1445,1446,1,0,0,0,1446, - 1451,1,0,0,0,1447,1449,3,168,84,0,1448,1450,5,149,0,0,1449,1448,1,0,0, - 0,1449,1450,1,0,0,0,1450,1452,1,0,0,0,1451,1447,1,0,0,0,1451,1452,1,0, - 0,0,1452,1457,1,0,0,0,1453,1455,3,164,82,0,1454,1456,5,149,0,0,1455,1454, - 1,0,0,0,1455,1456,1,0,0,0,1456,1458,1,0,0,0,1457,1453,1,0,0,0,1457,1458, - 1,0,0,0,1458,1459,1,0,0,0,1459,1460,5,4,0,0,1460,157,1,0,0,0,1461,1463, - 3,160,80,0,1462,1464,5,149,0,0,1463,1462,1,0,0,0,1463,1464,1,0,0,0,1464, - 1465,1,0,0,0,1465,1466,3,156,78,0,1466,159,1,0,0,0,1467,1469,3,288,144, - 0,1468,1470,5,149,0,0,1469,1468,1,0,0,0,1469,1470,1,0,0,0,1470,1471,1, - 0,0,0,1471,1473,3,292,146,0,1472,1474,5,149,0,0,1473,1472,1,0,0,0,1473, - 1474,1,0,0,0,1474,1476,1,0,0,0,1475,1477,3,162,81,0,1476,1475,1,0,0,0, - 1476,1477,1,0,0,0,1477,1479,1,0,0,0,1478,1480,5,149,0,0,1479,1478,1,0, - 0,0,1479,1480,1,0,0,0,1480,1481,1,0,0,0,1481,1482,3,292,146,0,1482,1512, - 1,0,0,0,1483,1485,3,292,146,0,1484,1486,5,149,0,0,1485,1484,1,0,0,0,1485, - 1486,1,0,0,0,1486,1488,1,0,0,0,1487,1489,3,162,81,0,1488,1487,1,0,0,0, - 1488,1489,1,0,0,0,1489,1491,1,0,0,0,1490,1492,5,149,0,0,1491,1490,1,0, - 0,0,1491,1492,1,0,0,0,1492,1493,1,0,0,0,1493,1495,3,292,146,0,1494,1496, - 5,149,0,0,1495,1494,1,0,0,0,1495,1496,1,0,0,0,1496,1497,1,0,0,0,1497, - 1498,3,290,145,0,1498,1512,1,0,0,0,1499,1501,3,292,146,0,1500,1502,5, - 149,0,0,1501,1500,1,0,0,0,1501,1502,1,0,0,0,1502,1504,1,0,0,0,1503,1505, - 3,162,81,0,1504,1503,1,0,0,0,1504,1505,1,0,0,0,1505,1507,1,0,0,0,1506, - 1508,5,149,0,0,1507,1506,1,0,0,0,1507,1508,1,0,0,0,1508,1509,1,0,0,0, - 1509,1510,3,292,146,0,1510,1512,1,0,0,0,1511,1467,1,0,0,0,1511,1483,1, - 0,0,0,1511,1499,1,0,0,0,1512,161,1,0,0,0,1513,1515,5,7,0,0,1514,1516, - 5,149,0,0,1515,1514,1,0,0,0,1515,1516,1,0,0,0,1516,1521,1,0,0,0,1517, - 1519,3,268,134,0,1518,1520,5,149,0,0,1519,1518,1,0,0,0,1519,1520,1,0, - 0,0,1520,1522,1,0,0,0,1521,1517,1,0,0,0,1521,1522,1,0,0,0,1522,1527,1, - 0,0,0,1523,1525,3,166,83,0,1524,1526,5,149,0,0,1525,1524,1,0,0,0,1525, - 1526,1,0,0,0,1526,1528,1,0,0,0,1527,1523,1,0,0,0,1527,1528,1,0,0,0,1528, - 1533,1,0,0,0,1529,1531,3,172,86,0,1530,1532,5,149,0,0,1531,1530,1,0,0, - 0,1531,1532,1,0,0,0,1532,1534,1,0,0,0,1533,1529,1,0,0,0,1533,1534,1,0, - 0,0,1534,1539,1,0,0,0,1535,1537,3,164,82,0,1536,1538,5,149,0,0,1537,1536, - 1,0,0,0,1537,1538,1,0,0,0,1538,1540,1,0,0,0,1539,1535,1,0,0,0,1539,1540, - 1,0,0,0,1540,1541,1,0,0,0,1541,1542,5,8,0,0,1542,163,1,0,0,0,1543,1545, - 5,9,0,0,1544,1546,5,149,0,0,1545,1544,1,0,0,0,1545,1546,1,0,0,0,1546, - 1580,1,0,0,0,1547,1549,3,276,138,0,1548,1550,5,149,0,0,1549,1548,1,0, - 0,0,1549,1550,1,0,0,0,1550,1551,1,0,0,0,1551,1553,5,119,0,0,1552,1554, - 5,149,0,0,1553,1552,1,0,0,0,1553,1554,1,0,0,0,1554,1555,1,0,0,0,1555, - 1557,3,188,94,0,1556,1558,5,149,0,0,1557,1556,1,0,0,0,1557,1558,1,0,0, - 0,1558,1577,1,0,0,0,1559,1561,5,3,0,0,1560,1562,5,149,0,0,1561,1560,1, - 0,0,0,1561,1562,1,0,0,0,1562,1563,1,0,0,0,1563,1565,3,276,138,0,1564, - 1566,5,149,0,0,1565,1564,1,0,0,0,1565,1566,1,0,0,0,1566,1567,1,0,0,0, - 1567,1569,5,119,0,0,1568,1570,5,149,0,0,1569,1568,1,0,0,0,1569,1570,1, - 0,0,0,1570,1571,1,0,0,0,1571,1573,3,188,94,0,1572,1574,5,149,0,0,1573, - 1572,1,0,0,0,1573,1574,1,0,0,0,1574,1576,1,0,0,0,1575,1559,1,0,0,0,1576, - 1579,1,0,0,0,1577,1575,1,0,0,0,1577,1578,1,0,0,0,1578,1581,1,0,0,0,1579, - 1577,1,0,0,0,1580,1547,1,0,0,0,1580,1581,1,0,0,0,1581,1582,1,0,0,0,1582, - 1583,5,10,0,0,1583,165,1,0,0,0,1584,1586,5,119,0,0,1585,1587,5,149,0, - 0,1586,1585,1,0,0,0,1586,1587,1,0,0,0,1587,1588,1,0,0,0,1588,1602,3,186, - 93,0,1589,1591,5,149,0,0,1590,1589,1,0,0,0,1590,1591,1,0,0,0,1591,1592, - 1,0,0,0,1592,1594,5,11,0,0,1593,1595,5,119,0,0,1594,1593,1,0,0,0,1594, - 1595,1,0,0,0,1595,1597,1,0,0,0,1596,1598,5,149,0,0,1597,1596,1,0,0,0, - 1597,1598,1,0,0,0,1598,1599,1,0,0,0,1599,1601,3,186,93,0,1600,1590,1, - 0,0,0,1601,1604,1,0,0,0,1602,1600,1,0,0,0,1602,1603,1,0,0,0,1603,167, - 1,0,0,0,1604,1602,1,0,0,0,1605,1612,3,170,85,0,1606,1608,5,149,0,0,1607, - 1606,1,0,0,0,1607,1608,1,0,0,0,1608,1609,1,0,0,0,1609,1611,3,170,85,0, - 1610,1607,1,0,0,0,1611,1614,1,0,0,0,1612,1610,1,0,0,0,1612,1613,1,0,0, - 0,1613,169,1,0,0,0,1614,1612,1,0,0,0,1615,1617,5,119,0,0,1616,1618,5, - 149,0,0,1617,1616,1,0,0,0,1617,1618,1,0,0,0,1618,1619,1,0,0,0,1619,1620, - 3,184,92,0,1620,171,1,0,0,0,1621,1623,5,100,0,0,1622,1624,5,149,0,0,1623, - 1622,1,0,0,0,1623,1624,1,0,0,0,1624,1629,1,0,0,0,1625,1630,5,111,0,0, - 1626,1627,5,85,0,0,1627,1628,5,149,0,0,1628,1630,5,111,0,0,1629,1625, - 1,0,0,0,1629,1626,1,0,0,0,1629,1630,1,0,0,0,1630,1632,1,0,0,0,1631,1633, - 5,149,0,0,1632,1631,1,0,0,0,1632,1633,1,0,0,0,1633,1648,1,0,0,0,1634, - 1636,3,180,90,0,1635,1634,1,0,0,0,1635,1636,1,0,0,0,1636,1638,1,0,0,0, - 1637,1639,5,149,0,0,1638,1637,1,0,0,0,1638,1639,1,0,0,0,1639,1640,1,0, - 0,0,1640,1642,5,12,0,0,1641,1643,5,149,0,0,1642,1641,1,0,0,0,1642,1643, - 1,0,0,0,1643,1645,1,0,0,0,1644,1646,3,182,91,0,1645,1644,1,0,0,0,1645, - 1646,1,0,0,0,1646,1649,1,0,0,0,1647,1649,3,278,139,0,1648,1635,1,0,0, - 0,1648,1647,1,0,0,0,1648,1649,1,0,0,0,1649,1654,1,0,0,0,1650,1652,5,149, - 0,0,1651,1650,1,0,0,0,1651,1652,1,0,0,0,1652,1653,1,0,0,0,1653,1655,3, - 174,87,0,1654,1651,1,0,0,0,1654,1655,1,0,0,0,1655,173,1,0,0,0,1656,1658, - 5,2,0,0,1657,1659,5,149,0,0,1658,1657,1,0,0,0,1658,1659,1,0,0,0,1659, - 1660,1,0,0,0,1660,1662,3,268,134,0,1661,1663,5,149,0,0,1662,1661,1,0, - 0,0,1662,1663,1,0,0,0,1663,1664,1,0,0,0,1664,1666,5,3,0,0,1665,1667,5, - 149,0,0,1666,1665,1,0,0,0,1666,1667,1,0,0,0,1667,1668,1,0,0,0,1668,1677, - 3,268,134,0,1669,1671,5,149,0,0,1670,1669,1,0,0,0,1670,1671,1,0,0,0,1671, - 1672,1,0,0,0,1672,1674,5,11,0,0,1673,1675,5,149,0,0,1674,1673,1,0,0,0, - 1674,1675,1,0,0,0,1675,1676,1,0,0,0,1676,1678,3,146,73,0,1677,1670,1, - 0,0,0,1677,1678,1,0,0,0,1678,1698,1,0,0,0,1679,1681,5,149,0,0,1680,1679, - 1,0,0,0,1680,1681,1,0,0,0,1681,1682,1,0,0,0,1682,1684,5,11,0,0,1683,1685, - 5,149,0,0,1684,1683,1,0,0,0,1684,1685,1,0,0,0,1685,1686,1,0,0,0,1686, - 1688,3,178,89,0,1687,1689,5,149,0,0,1688,1687,1,0,0,0,1688,1689,1,0,0, - 0,1689,1690,1,0,0,0,1690,1692,5,3,0,0,1691,1693,5,149,0,0,1692,1691,1, - 0,0,0,1692,1693,1,0,0,0,1693,1694,1,0,0,0,1694,1696,3,176,88,0,1695,1697, - 5,149,0,0,1696,1695,1,0,0,0,1696,1697,1,0,0,0,1697,1699,1,0,0,0,1698, - 1680,1,0,0,0,1698,1699,1,0,0,0,1699,1700,1,0,0,0,1700,1701,5,4,0,0,1701, - 175,1,0,0,0,1702,1704,5,9,0,0,1703,1705,5,149,0,0,1704,1703,1,0,0,0,1704, - 1705,1,0,0,0,1705,1707,1,0,0,0,1706,1708,3,134,67,0,1707,1706,1,0,0,0, - 1707,1708,1,0,0,0,1708,1710,1,0,0,0,1709,1711,5,149,0,0,1710,1709,1,0, - 0,0,1710,1711,1,0,0,0,1711,1712,1,0,0,0,1712,1713,5,10,0,0,1713,177,1, - 0,0,0,1714,1716,5,9,0,0,1715,1717,5,149,0,0,1716,1715,1,0,0,0,1716,1717, - 1,0,0,0,1717,1719,1,0,0,0,1718,1720,3,134,67,0,1719,1718,1,0,0,0,1719, - 1720,1,0,0,0,1720,1722,1,0,0,0,1721,1723,5,149,0,0,1722,1721,1,0,0,0, - 1722,1723,1,0,0,0,1723,1724,1,0,0,0,1724,1725,5,10,0,0,1725,179,1,0,0, - 0,1726,1727,5,137,0,0,1727,181,1,0,0,0,1728,1729,5,137,0,0,1729,183,1, - 0,0,0,1730,1731,3,282,141,0,1731,185,1,0,0,0,1732,1733,3,282,141,0,1733, - 187,1,0,0,0,1734,1735,3,190,95,0,1735,189,1,0,0,0,1736,1743,3,192,96, - 0,1737,1738,5,149,0,0,1738,1739,5,112,0,0,1739,1740,5,149,0,0,1740,1742, - 3,192,96,0,1741,1737,1,0,0,0,1742,1745,1,0,0,0,1743,1741,1,0,0,0,1743, - 1744,1,0,0,0,1744,191,1,0,0,0,1745,1743,1,0,0,0,1746,1753,3,194,97,0, - 1747,1748,5,149,0,0,1748,1749,5,113,0,0,1749,1750,5,149,0,0,1750,1752, - 3,194,97,0,1751,1747,1,0,0,0,1752,1755,1,0,0,0,1753,1751,1,0,0,0,1753, - 1754,1,0,0,0,1754,193,1,0,0,0,1755,1753,1,0,0,0,1756,1763,3,196,98,0, - 1757,1758,5,149,0,0,1758,1759,5,114,0,0,1759,1760,5,149,0,0,1760,1762, - 3,196,98,0,1761,1757,1,0,0,0,1762,1765,1,0,0,0,1763,1761,1,0,0,0,1763, - 1764,1,0,0,0,1764,195,1,0,0,0,1765,1763,1,0,0,0,1766,1768,5,115,0,0,1767, - 1769,5,149,0,0,1768,1767,1,0,0,0,1768,1769,1,0,0,0,1769,1771,1,0,0,0, - 1770,1766,1,0,0,0,1771,1774,1,0,0,0,1772,1770,1,0,0,0,1772,1773,1,0,0, - 0,1773,1775,1,0,0,0,1774,1772,1,0,0,0,1775,1776,3,198,99,0,1776,197,1, - 0,0,0,1777,1787,3,202,101,0,1778,1780,5,149,0,0,1779,1778,1,0,0,0,1779, - 1780,1,0,0,0,1780,1781,1,0,0,0,1781,1783,3,200,100,0,1782,1784,5,149, - 0,0,1783,1782,1,0,0,0,1783,1784,1,0,0,0,1784,1785,1,0,0,0,1785,1786,3, - 202,101,0,1786,1788,1,0,0,0,1787,1779,1,0,0,0,1787,1788,1,0,0,0,1788, - 1826,1,0,0,0,1789,1791,3,202,101,0,1790,1792,5,149,0,0,1791,1790,1,0, - 0,0,1791,1792,1,0,0,0,1792,1793,1,0,0,0,1793,1795,5,116,0,0,1794,1796, - 5,149,0,0,1795,1794,1,0,0,0,1795,1796,1,0,0,0,1796,1797,1,0,0,0,1797, - 1798,3,202,101,0,1798,1799,1,0,0,0,1799,1800,6,99,-1,0,1800,1826,1,0, - 0,0,1801,1803,3,202,101,0,1802,1804,5,149,0,0,1803,1802,1,0,0,0,1803, - 1804,1,0,0,0,1804,1805,1,0,0,0,1805,1807,3,200,100,0,1806,1808,5,149, - 0,0,1807,1806,1,0,0,0,1807,1808,1,0,0,0,1808,1809,1,0,0,0,1809,1819,3, - 202,101,0,1810,1812,5,149,0,0,1811,1810,1,0,0,0,1811,1812,1,0,0,0,1812, - 1813,1,0,0,0,1813,1815,3,200,100,0,1814,1816,5,149,0,0,1815,1814,1,0, - 0,0,1815,1816,1,0,0,0,1816,1817,1,0,0,0,1817,1818,3,202,101,0,1818,1820, - 1,0,0,0,1819,1811,1,0,0,0,1820,1821,1,0,0,0,1821,1819,1,0,0,0,1821,1822, - 1,0,0,0,1822,1823,1,0,0,0,1823,1824,6,99,-1,0,1824,1826,1,0,0,0,1825, - 1777,1,0,0,0,1825,1789,1,0,0,0,1825,1801,1,0,0,0,1826,199,1,0,0,0,1827, - 1828,7,2,0,0,1828,201,1,0,0,0,1829,1840,3,204,102,0,1830,1832,5,149,0, - 0,1831,1830,1,0,0,0,1831,1832,1,0,0,0,1832,1833,1,0,0,0,1833,1835,5,11, - 0,0,1834,1836,5,149,0,0,1835,1834,1,0,0,0,1835,1836,1,0,0,0,1836,1837, - 1,0,0,0,1837,1839,3,204,102,0,1838,1831,1,0,0,0,1839,1842,1,0,0,0,1840, - 1838,1,0,0,0,1840,1841,1,0,0,0,1841,203,1,0,0,0,1842,1840,1,0,0,0,1843, - 1854,3,206,103,0,1844,1846,5,149,0,0,1845,1844,1,0,0,0,1845,1846,1,0, - 0,0,1846,1847,1,0,0,0,1847,1849,5,18,0,0,1848,1850,5,149,0,0,1849,1848, - 1,0,0,0,1849,1850,1,0,0,0,1850,1851,1,0,0,0,1851,1853,3,206,103,0,1852, - 1845,1,0,0,0,1853,1856,1,0,0,0,1854,1852,1,0,0,0,1854,1855,1,0,0,0,1855, - 205,1,0,0,0,1856,1854,1,0,0,0,1857,1869,3,210,105,0,1858,1860,5,149,0, - 0,1859,1858,1,0,0,0,1859,1860,1,0,0,0,1860,1861,1,0,0,0,1861,1863,3,208, - 104,0,1862,1864,5,149,0,0,1863,1862,1,0,0,0,1863,1864,1,0,0,0,1864,1865, - 1,0,0,0,1865,1866,3,210,105,0,1866,1868,1,0,0,0,1867,1859,1,0,0,0,1868, - 1871,1,0,0,0,1869,1867,1,0,0,0,1869,1870,1,0,0,0,1870,207,1,0,0,0,1871, - 1869,1,0,0,0,1872,1873,7,3,0,0,1873,209,1,0,0,0,1874,1886,3,214,107,0, - 1875,1877,5,149,0,0,1876,1875,1,0,0,0,1876,1877,1,0,0,0,1877,1878,1,0, - 0,0,1878,1880,3,212,106,0,1879,1881,5,149,0,0,1880,1879,1,0,0,0,1880, - 1881,1,0,0,0,1881,1882,1,0,0,0,1882,1883,3,214,107,0,1883,1885,1,0,0, - 0,1884,1876,1,0,0,0,1885,1888,1,0,0,0,1886,1884,1,0,0,0,1886,1887,1,0, - 0,0,1887,211,1,0,0,0,1888,1886,1,0,0,0,1889,1890,7,4,0,0,1890,213,1,0, - 0,0,1891,1903,3,218,109,0,1892,1894,5,149,0,0,1893,1892,1,0,0,0,1893, - 1894,1,0,0,0,1894,1895,1,0,0,0,1895,1897,3,216,108,0,1896,1898,5,149, - 0,0,1897,1896,1,0,0,0,1897,1898,1,0,0,0,1898,1899,1,0,0,0,1899,1900,3, - 218,109,0,1900,1902,1,0,0,0,1901,1893,1,0,0,0,1902,1905,1,0,0,0,1903, - 1901,1,0,0,0,1903,1904,1,0,0,0,1904,215,1,0,0,0,1905,1903,1,0,0,0,1906, - 1907,7,5,0,0,1907,217,1,0,0,0,1908,1919,3,220,110,0,1909,1911,5,149,0, - 0,1910,1909,1,0,0,0,1910,1911,1,0,0,0,1911,1912,1,0,0,0,1912,1914,5,24, - 0,0,1913,1915,5,149,0,0,1914,1913,1,0,0,0,1914,1915,1,0,0,0,1915,1916, - 1,0,0,0,1916,1918,3,220,110,0,1917,1910,1,0,0,0,1918,1921,1,0,0,0,1919, - 1917,1,0,0,0,1919,1920,1,0,0,0,1920,219,1,0,0,0,1921,1919,1,0,0,0,1922, - 1924,5,117,0,0,1923,1925,5,149,0,0,1924,1923,1,0,0,0,1924,1925,1,0,0, - 0,1925,1927,1,0,0,0,1926,1922,1,0,0,0,1927,1930,1,0,0,0,1928,1926,1,0, - 0,0,1928,1929,1,0,0,0,1929,1931,1,0,0,0,1930,1928,1,0,0,0,1931,1936,3, - 222,111,0,1932,1934,5,149,0,0,1933,1932,1,0,0,0,1933,1934,1,0,0,0,1934, - 1935,1,0,0,0,1935,1937,5,118,0,0,1936,1933,1,0,0,0,1936,1937,1,0,0,0, - 1937,221,1,0,0,0,1938,1946,3,232,116,0,1939,1947,3,226,113,0,1940,1942, - 3,224,112,0,1941,1940,1,0,0,0,1942,1943,1,0,0,0,1943,1941,1,0,0,0,1943, - 1944,1,0,0,0,1944,1947,1,0,0,0,1945,1947,3,230,115,0,1946,1939,1,0,0, - 0,1946,1941,1,0,0,0,1946,1945,1,0,0,0,1946,1947,1,0,0,0,1947,223,1,0, - 0,0,1948,1949,5,149,0,0,1949,1951,5,120,0,0,1950,1952,5,149,0,0,1951, - 1950,1,0,0,0,1951,1952,1,0,0,0,1952,1953,1,0,0,0,1953,1968,3,232,116, - 0,1954,1955,5,7,0,0,1955,1956,3,188,94,0,1956,1957,5,8,0,0,1957,1968, - 1,0,0,0,1958,1960,5,7,0,0,1959,1961,3,188,94,0,1960,1959,1,0,0,0,1960, - 1961,1,0,0,0,1961,1962,1,0,0,0,1962,1964,5,119,0,0,1963,1965,3,188,94, - 0,1964,1963,1,0,0,0,1964,1965,1,0,0,0,1965,1966,1,0,0,0,1966,1968,5,8, - 0,0,1967,1948,1,0,0,0,1967,1954,1,0,0,0,1967,1958,1,0,0,0,1968,225,1, - 0,0,0,1969,1981,3,228,114,0,1970,1971,5,149,0,0,1971,1972,5,121,0,0,1972, - 1973,5,149,0,0,1973,1981,5,97,0,0,1974,1975,5,149,0,0,1975,1976,5,122, - 0,0,1976,1977,5,149,0,0,1977,1981,5,97,0,0,1978,1979,5,149,0,0,1979,1981, - 5,123,0,0,1980,1969,1,0,0,0,1980,1970,1,0,0,0,1980,1974,1,0,0,0,1980, - 1978,1,0,0,0,1981,1983,1,0,0,0,1982,1984,5,149,0,0,1983,1982,1,0,0,0, - 1983,1984,1,0,0,0,1984,1985,1,0,0,0,1985,1986,3,232,116,0,1986,227,1, - 0,0,0,1987,1989,5,149,0,0,1988,1987,1,0,0,0,1988,1989,1,0,0,0,1989,1990, - 1,0,0,0,1990,1991,5,25,0,0,1991,229,1,0,0,0,1992,1993,5,149,0,0,1993, - 1994,5,124,0,0,1994,1995,5,149,0,0,1995,2003,5,125,0,0,1996,1997,5,149, - 0,0,1997,1998,5,124,0,0,1998,1999,5,149,0,0,1999,2000,5,115,0,0,2000, - 2001,5,149,0,0,2001,2003,5,125,0,0,2002,1992,1,0,0,0,2002,1996,1,0,0, - 0,2003,231,1,0,0,0,2004,2011,3,234,117,0,2005,2007,5,149,0,0,2006,2005, - 1,0,0,0,2006,2007,1,0,0,0,2007,2008,1,0,0,0,2008,2010,3,262,131,0,2009, - 2006,1,0,0,0,2010,2013,1,0,0,0,2011,2009,1,0,0,0,2011,2012,1,0,0,0,2012, - 233,1,0,0,0,2013,2011,1,0,0,0,2014,2024,3,236,118,0,2015,2024,3,272,136, - 0,2016,2024,3,264,132,0,2017,2024,3,248,124,0,2018,2024,3,250,125,0,2019, - 2024,3,256,128,0,2020,2024,3,258,129,0,2021,2024,3,260,130,0,2022,2024, - 3,268,134,0,2023,2014,1,0,0,0,2023,2015,1,0,0,0,2023,2016,1,0,0,0,2023, - 2017,1,0,0,0,2023,2018,1,0,0,0,2023,2019,1,0,0,0,2023,2020,1,0,0,0,2023, - 2021,1,0,0,0,2023,2022,1,0,0,0,2024,235,1,0,0,0,2025,2032,3,270,135,0, - 2026,2032,5,135,0,0,2027,2032,3,238,119,0,2028,2032,5,125,0,0,2029,2032, - 3,240,120,0,2030,2032,3,244,122,0,2031,2025,1,0,0,0,2031,2026,1,0,0,0, - 2031,2027,1,0,0,0,2031,2028,1,0,0,0,2031,2029,1,0,0,0,2031,2030,1,0,0, - 0,2032,237,1,0,0,0,2033,2034,7,6,0,0,2034,239,1,0,0,0,2035,2037,5,7,0, - 0,2036,2038,5,149,0,0,2037,2036,1,0,0,0,2037,2038,1,0,0,0,2038,2052,1, - 0,0,0,2039,2041,3,188,94,0,2040,2042,5,149,0,0,2041,2040,1,0,0,0,2041, - 2042,1,0,0,0,2042,2049,1,0,0,0,2043,2045,3,242,121,0,2044,2046,5,149, - 0,0,2045,2044,1,0,0,0,2045,2046,1,0,0,0,2046,2048,1,0,0,0,2047,2043,1, - 0,0,0,2048,2051,1,0,0,0,2049,2047,1,0,0,0,2049,2050,1,0,0,0,2050,2053, - 1,0,0,0,2051,2049,1,0,0,0,2052,2039,1,0,0,0,2052,2053,1,0,0,0,2053,2054, - 1,0,0,0,2054,2055,5,8,0,0,2055,241,1,0,0,0,2056,2058,5,3,0,0,2057,2059, - 5,149,0,0,2058,2057,1,0,0,0,2058,2059,1,0,0,0,2059,2061,1,0,0,0,2060, - 2062,3,188,94,0,2061,2060,1,0,0,0,2061,2062,1,0,0,0,2062,243,1,0,0,0, - 2063,2065,5,9,0,0,2064,2066,5,149,0,0,2065,2064,1,0,0,0,2065,2066,1,0, - 0,0,2066,2067,1,0,0,0,2067,2069,3,246,123,0,2068,2070,5,149,0,0,2069, - 2068,1,0,0,0,2069,2070,1,0,0,0,2070,2081,1,0,0,0,2071,2073,5,3,0,0,2072, - 2074,5,149,0,0,2073,2072,1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0,0,0, - 2075,2077,3,246,123,0,2076,2078,5,149,0,0,2077,2076,1,0,0,0,2077,2078, - 1,0,0,0,2078,2080,1,0,0,0,2079,2071,1,0,0,0,2080,2083,1,0,0,0,2081,2079, - 1,0,0,0,2081,2082,1,0,0,0,2082,2084,1,0,0,0,2083,2081,1,0,0,0,2084,2085, - 5,10,0,0,2085,245,1,0,0,0,2086,2089,3,284,142,0,2087,2089,5,135,0,0,2088, - 2086,1,0,0,0,2088,2087,1,0,0,0,2089,2091,1,0,0,0,2090,2092,5,149,0,0, - 2091,2090,1,0,0,0,2091,2092,1,0,0,0,2092,2093,1,0,0,0,2093,2095,5,119, - 0,0,2094,2096,5,149,0,0,2095,2094,1,0,0,0,2095,2096,1,0,0,0,2096,2097, - 1,0,0,0,2097,2098,3,188,94,0,2098,247,1,0,0,0,2099,2101,5,2,0,0,2100, - 2102,5,149,0,0,2101,2100,1,0,0,0,2101,2102,1,0,0,0,2102,2103,1,0,0,0, - 2103,2105,3,188,94,0,2104,2106,5,149,0,0,2105,2104,1,0,0,0,2105,2106, - 1,0,0,0,2106,2107,1,0,0,0,2107,2108,5,4,0,0,2108,249,1,0,0,0,2109,2111, - 5,128,0,0,2110,2112,5,149,0,0,2111,2110,1,0,0,0,2111,2112,1,0,0,0,2112, - 2113,1,0,0,0,2113,2115,5,2,0,0,2114,2116,5,149,0,0,2115,2114,1,0,0,0, - 2115,2116,1,0,0,0,2116,2117,1,0,0,0,2117,2119,5,100,0,0,2118,2120,5,149, - 0,0,2119,2118,1,0,0,0,2119,2120,1,0,0,0,2120,2121,1,0,0,0,2121,2158,5, - 4,0,0,2122,2124,3,252,126,0,2123,2125,5,149,0,0,2124,2123,1,0,0,0,2124, - 2125,1,0,0,0,2125,2126,1,0,0,0,2126,2128,5,2,0,0,2127,2129,5,149,0,0, - 2128,2127,1,0,0,0,2128,2129,1,0,0,0,2129,2134,1,0,0,0,2130,2132,5,99, - 0,0,2131,2133,5,149,0,0,2132,2131,1,0,0,0,2132,2133,1,0,0,0,2133,2135, - 1,0,0,0,2134,2130,1,0,0,0,2134,2135,1,0,0,0,2135,2153,1,0,0,0,2136,2138, - 3,254,127,0,2137,2139,5,149,0,0,2138,2137,1,0,0,0,2138,2139,1,0,0,0,2139, - 2150,1,0,0,0,2140,2142,5,3,0,0,2141,2143,5,149,0,0,2142,2141,1,0,0,0, - 2142,2143,1,0,0,0,2143,2144,1,0,0,0,2144,2146,3,254,127,0,2145,2147,5, - 149,0,0,2146,2145,1,0,0,0,2146,2147,1,0,0,0,2147,2149,1,0,0,0,2148,2140, - 1,0,0,0,2149,2152,1,0,0,0,2150,2148,1,0,0,0,2150,2151,1,0,0,0,2151,2154, - 1,0,0,0,2152,2150,1,0,0,0,2153,2136,1,0,0,0,2153,2154,1,0,0,0,2154,2155, - 1,0,0,0,2155,2156,5,4,0,0,2156,2158,1,0,0,0,2157,2109,1,0,0,0,2157,2122, - 1,0,0,0,2158,251,1,0,0,0,2159,2160,3,284,142,0,2160,253,1,0,0,0,2161, - 2163,3,284,142,0,2162,2164,5,149,0,0,2163,2162,1,0,0,0,2163,2164,1,0, - 0,0,2164,2165,1,0,0,0,2165,2166,5,119,0,0,2166,2168,5,6,0,0,2167,2169, - 5,149,0,0,2168,2167,1,0,0,0,2168,2169,1,0,0,0,2169,2171,1,0,0,0,2170, - 2161,1,0,0,0,2170,2171,1,0,0,0,2171,2172,1,0,0,0,2172,2173,3,188,94,0, - 2173,255,1,0,0,0,2174,2179,3,156,78,0,2175,2177,5,149,0,0,2176,2175,1, - 0,0,0,2176,2177,1,0,0,0,2177,2178,1,0,0,0,2178,2180,3,158,79,0,2179,2176, - 1,0,0,0,2180,2181,1,0,0,0,2181,2179,1,0,0,0,2181,2182,1,0,0,0,2182,257, - 1,0,0,0,2183,2185,5,129,0,0,2184,2186,5,149,0,0,2185,2184,1,0,0,0,2185, - 2186,1,0,0,0,2186,2187,1,0,0,0,2187,2189,5,9,0,0,2188,2190,5,149,0,0, - 2189,2188,1,0,0,0,2189,2190,1,0,0,0,2190,2191,1,0,0,0,2191,2193,5,89, - 0,0,2192,2194,5,149,0,0,2193,2192,1,0,0,0,2193,2194,1,0,0,0,2194,2195, - 1,0,0,0,2195,2200,3,148,74,0,2196,2198,5,149,0,0,2197,2196,1,0,0,0,2197, - 2198,1,0,0,0,2198,2199,1,0,0,0,2199,2201,3,146,73,0,2200,2197,1,0,0,0, - 2200,2201,1,0,0,0,2201,2203,1,0,0,0,2202,2204,5,149,0,0,2203,2202,1,0, - 0,0,2203,2204,1,0,0,0,2204,2205,1,0,0,0,2205,2206,5,10,0,0,2206,259,1, - 0,0,0,2207,2209,5,128,0,0,2208,2210,5,149,0,0,2209,2208,1,0,0,0,2209, - 2210,1,0,0,0,2210,2211,1,0,0,0,2211,2213,5,9,0,0,2212,2214,5,149,0,0, - 2213,2212,1,0,0,0,2213,2214,1,0,0,0,2214,2215,1,0,0,0,2215,2217,5,89, - 0,0,2216,2218,5,149,0,0,2217,2216,1,0,0,0,2217,2218,1,0,0,0,2218,2219, - 1,0,0,0,2219,2224,3,148,74,0,2220,2222,5,149,0,0,2221,2220,1,0,0,0,2221, - 2222,1,0,0,0,2222,2223,1,0,0,0,2223,2225,3,146,73,0,2224,2221,1,0,0,0, - 2224,2225,1,0,0,0,2225,2227,1,0,0,0,2226,2228,5,149,0,0,2227,2226,1,0, - 0,0,2227,2228,1,0,0,0,2228,2229,1,0,0,0,2229,2230,5,10,0,0,2230,261,1, - 0,0,0,2231,2233,5,5,0,0,2232,2234,5,149,0,0,2233,2232,1,0,0,0,2233,2234, - 1,0,0,0,2234,2237,1,0,0,0,2235,2238,3,276,138,0,2236,2238,5,100,0,0,2237, - 2235,1,0,0,0,2237,2236,1,0,0,0,2238,263,1,0,0,0,2239,2244,5,130,0,0,2240, - 2242,5,149,0,0,2241,2240,1,0,0,0,2241,2242,1,0,0,0,2242,2243,1,0,0,0, - 2243,2245,3,266,133,0,2244,2241,1,0,0,0,2245,2246,1,0,0,0,2246,2244,1, - 0,0,0,2246,2247,1,0,0,0,2247,2262,1,0,0,0,2248,2250,5,130,0,0,2249,2251, - 5,149,0,0,2250,2249,1,0,0,0,2250,2251,1,0,0,0,2251,2252,1,0,0,0,2252, - 2257,3,188,94,0,2253,2255,5,149,0,0,2254,2253,1,0,0,0,2254,2255,1,0,0, - 0,2255,2256,1,0,0,0,2256,2258,3,266,133,0,2257,2254,1,0,0,0,2258,2259, - 1,0,0,0,2259,2257,1,0,0,0,2259,2260,1,0,0,0,2260,2262,1,0,0,0,2261,2239, - 1,0,0,0,2261,2248,1,0,0,0,2262,2271,1,0,0,0,2263,2265,5,149,0,0,2264, - 2263,1,0,0,0,2264,2265,1,0,0,0,2265,2266,1,0,0,0,2266,2268,5,131,0,0, - 2267,2269,5,149,0,0,2268,2267,1,0,0,0,2268,2269,1,0,0,0,2269,2270,1,0, - 0,0,2270,2272,3,188,94,0,2271,2264,1,0,0,0,2271,2272,1,0,0,0,2272,2274, - 1,0,0,0,2273,2275,5,149,0,0,2274,2273,1,0,0,0,2274,2275,1,0,0,0,2275, - 2276,1,0,0,0,2276,2277,5,132,0,0,2277,265,1,0,0,0,2278,2280,5,133,0,0, - 2279,2281,5,149,0,0,2280,2279,1,0,0,0,2280,2281,1,0,0,0,2281,2282,1,0, - 0,0,2282,2284,3,188,94,0,2283,2285,5,149,0,0,2284,2283,1,0,0,0,2284,2285, - 1,0,0,0,2285,2286,1,0,0,0,2286,2288,5,134,0,0,2287,2289,5,149,0,0,2288, - 2287,1,0,0,0,2288,2289,1,0,0,0,2289,2290,1,0,0,0,2290,2291,3,188,94,0, - 2291,267,1,0,0,0,2292,2293,3,284,142,0,2293,269,1,0,0,0,2294,2297,3,280, - 140,0,2295,2297,3,278,139,0,2296,2294,1,0,0,0,2296,2295,1,0,0,0,2297, - 271,1,0,0,0,2298,2301,5,26,0,0,2299,2302,3,284,142,0,2300,2302,5,137, - 0,0,2301,2299,1,0,0,0,2301,2300,1,0,0,0,2302,273,1,0,0,0,2303,2305,3, - 234,117,0,2304,2306,5,149,0,0,2305,2304,1,0,0,0,2305,2306,1,0,0,0,2306, - 2307,1,0,0,0,2307,2308,3,262,131,0,2308,275,1,0,0,0,2309,2310,3,282,141, - 0,2310,277,1,0,0,0,2311,2312,5,137,0,0,2312,279,1,0,0,0,2313,2314,5,144, - 0,0,2314,281,1,0,0,0,2315,2316,3,284,142,0,2316,283,1,0,0,0,2317,2323, - 5,145,0,0,2318,2319,5,148,0,0,2319,2323,6,142,-1,0,2320,2323,5,138,0, - 0,2321,2323,3,286,143,0,2322,2317,1,0,0,0,2322,2318,1,0,0,0,2322,2320, - 1,0,0,0,2322,2321,1,0,0,0,2323,285,1,0,0,0,2324,2325,7,7,0,0,2325,287, - 1,0,0,0,2326,2327,7,8,0,0,2327,289,1,0,0,0,2328,2329,7,9,0,0,2329,291, - 1,0,0,0,2330,2331,7,10,0,0,2331,293,1,0,0,0,401,296,300,305,309,314,317, - 321,324,345,351,355,358,364,367,371,375,379,384,388,395,399,407,411,421, - 425,429,434,447,451,459,462,470,473,490,493,497,503,506,516,520,542,546, - 549,552,555,558,562,567,571,581,585,590,595,600,606,610,614,619,626,630, - 634,637,641,645,649,654,658,664,668,680,684,688,692,697,709,713,717,721, - 725,727,731,735,737,751,755,759,763,768,771,775,779,781,785,789,791,827, - 838,860,864,869,880,884,888,896,900,904,910,914,918,924,928,932,936,940, - 944,950,957,962,968,988,992,1000,1010,1015,1020,1024,1029,1035,1040,1043, - 1047,1051,1055,1061,1065,1070,1075,1079,1082,1086,1090,1094,1098,1102, - 1108,1112,1117,1121,1130,1136,1144,1148,1152,1156,1163,1166,1169,1172, - 1178,1181,1185,1189,1193,1196,1200,1210,1216,1223,1236,1240,1244,1248, - 1253,1258,1262,1268,1272,1276,1280,1285,1291,1294,1300,1303,1309,1313, - 1317,1321,1325,1330,1335,1339,1344,1347,1356,1365,1370,1383,1386,1394, - 1398,1403,1408,1412,1417,1423,1428,1435,1439,1443,1445,1449,1451,1455, - 1457,1463,1469,1473,1476,1479,1485,1488,1491,1495,1501,1504,1507,1511, - 1515,1519,1521,1525,1527,1531,1533,1537,1539,1545,1549,1553,1557,1561, - 1565,1569,1573,1577,1580,1586,1590,1594,1597,1602,1607,1612,1617,1623, - 1629,1632,1635,1638,1642,1645,1648,1651,1654,1658,1662,1666,1670,1674, - 1677,1680,1684,1688,1692,1696,1698,1704,1707,1710,1716,1719,1722,1743, - 1753,1763,1768,1772,1779,1783,1787,1791,1795,1803,1807,1811,1815,1821, - 1825,1831,1835,1840,1845,1849,1854,1859,1863,1869,1876,1880,1886,1893, - 1897,1903,1910,1914,1919,1924,1928,1933,1936,1943,1946,1951,1960,1964, - 1967,1980,1983,1988,2002,2006,2011,2023,2031,2037,2041,2045,2049,2052, - 2058,2061,2065,2069,2073,2077,2081,2088,2091,2095,2101,2105,2111,2115, - 2119,2124,2128,2132,2134,2138,2142,2146,2150,2153,2157,2163,2168,2170, - 2176,2181,2185,2189,2193,2197,2200,2203,2209,2213,2217,2221,2224,2227, - 2233,2237,2241,2246,2250,2254,2259,2261,2264,2268,2271,2274,2280,2284, - 2288,2296,2301,2305,2322 + 7,146,2,147,7,147,1,0,1,0,3,0,299,8,0,1,0,1,0,3,0,303,8,0,1,0,5,0,306, + 8,0,10,0,12,0,309,9,0,1,0,3,0,312,8,0,1,0,1,0,1,1,3,1,317,8,1,1,1,3,1, + 320,8,1,1,1,1,1,3,1,324,8,1,1,1,3,1,327,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,3,2,349,8,2,1,3, + 1,3,1,3,1,3,3,3,355,8,3,1,3,1,3,3,3,359,8,3,1,3,3,3,362,8,3,1,3,1,3,1, + 3,1,3,3,3,368,8,3,1,3,3,3,371,8,3,1,4,1,4,3,4,375,8,4,1,4,1,4,3,4,379, + 8,4,1,4,1,4,3,4,383,8,4,1,4,5,4,386,8,4,10,4,12,4,389,9,4,1,4,3,4,392, + 8,4,1,4,1,4,1,5,1,5,1,5,3,5,399,8,5,1,5,1,5,3,5,403,8,5,1,5,1,5,1,5,1, + 5,1,5,1,5,3,5,411,8,5,1,5,1,5,3,5,415,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,3,6,425,8,6,1,6,1,6,3,6,429,8,6,1,6,1,6,3,6,433,8,6,1,6,5,6,436,8, + 6,10,6,12,6,439,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,451,8, + 7,1,7,1,7,3,7,455,8,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,463,8,7,1,7,3,7,466, + 8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,474,8,8,1,8,3,8,477,8,8,1,9,1,9,1,9,1, + 9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,494,8,10, + 1,10,3,10,497,8,10,1,10,1,10,3,10,501,8,10,1,10,1,10,1,10,1,10,3,10,507, + 8,10,1,10,3,10,510,8,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13, + 1,13,1,13,1,13,3,13,524,8,13,1,13,1,13,3,13,528,8,13,1,13,1,13,1,14,1, + 14,1,14,1,14,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,3,15,550,8,15,1,15,1,15,3,15,554,8,15,1,15,3,15,557,8,15, + 1,15,3,15,560,8,15,1,15,3,15,563,8,15,1,15,3,15,566,8,15,1,15,1,15,3, + 15,570,8,15,1,15,5,15,573,8,15,10,15,12,15,576,9,15,1,15,3,15,579,8,15, + 1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,3,16,589,8,16,1,16,1,16,3,16, + 593,8,16,1,16,5,16,596,8,16,10,16,12,16,599,9,16,1,17,1,17,3,17,603,8, + 17,1,17,1,17,1,17,3,17,608,8,17,1,17,1,17,1,18,1,18,3,18,614,8,18,1,18, + 1,18,3,18,618,8,18,1,18,1,18,3,18,622,8,18,1,18,5,18,625,8,18,10,18,12, + 18,628,9,18,1,18,1,18,1,18,1,18,3,18,634,8,18,1,18,1,18,3,18,638,8,18, + 1,18,1,18,3,18,642,8,18,1,18,3,18,645,8,18,1,19,1,19,3,19,649,8,19,1, + 19,1,19,3,19,653,8,19,1,19,1,19,3,19,657,8,19,1,19,5,19,660,8,19,10,19, + 12,19,663,9,19,1,19,3,19,666,8,19,1,19,1,19,1,20,1,20,3,20,672,8,20,1, + 20,1,20,3,20,676,8,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1, + 21,3,21,688,8,21,1,21,1,21,3,21,692,8,21,1,21,1,21,3,21,696,8,21,1,21, + 1,21,3,21,700,8,21,1,21,1,21,1,21,3,21,705,8,21,1,21,1,21,1,22,1,22,1, + 22,1,22,1,22,1,22,1,22,1,22,3,22,717,8,22,1,22,1,22,3,22,721,8,22,1,22, + 1,22,3,22,725,8,22,1,22,1,22,3,22,729,8,22,1,22,1,22,3,22,733,8,22,3, + 22,735,8,22,1,22,1,22,3,22,739,8,22,1,22,1,22,3,22,743,8,22,3,22,745, + 8,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23, + 759,8,23,1,23,1,23,3,23,763,8,23,1,23,1,23,3,23,767,8,23,1,23,1,23,3, + 23,771,8,23,1,23,4,23,774,8,23,11,23,12,23,775,1,23,3,23,779,8,23,1,23, + 1,23,3,23,783,8,23,1,23,1,23,3,23,787,8,23,3,23,789,8,23,1,23,1,23,3, + 23,793,8,23,1,23,1,23,3,23,797,8,23,3,23,799,8,23,1,23,1,23,1,24,1,24, + 1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,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,27,1,27,1,27,1,27,1,27,1,28,1,28, + 1,28,1,28,3,28,835,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29, + 3,29,846,8,29,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,33,1,33,3,33,868,8,33,1,33,1,33, + 3,33,872,8,33,1,33,5,33,875,8,33,10,33,12,33,878,9,33,1,34,1,34,1,34, + 1,34,1,35,1,35,1,35,1,35,3,35,888,8,35,1,35,1,35,3,35,892,8,35,1,35,1, + 35,3,35,896,8,35,1,35,1,35,1,36,1,36,1,36,1,36,3,36,904,8,36,1,36,1,36, + 3,36,908,8,36,1,36,1,36,3,36,912,8,36,1,36,1,36,1,36,1,36,3,36,918,8, + 36,1,36,1,36,3,36,922,8,36,1,36,1,36,3,36,926,8,36,1,36,1,36,1,36,1,36, + 3,36,932,8,36,1,36,1,36,3,36,936,8,36,1,36,1,36,3,36,940,8,36,1,36,1, + 36,3,36,944,8,36,1,36,1,36,3,36,948,8,36,1,36,1,36,3,36,952,8,36,1,36, + 1,36,5,36,956,8,36,10,36,12,36,959,9,36,1,37,1,37,5,37,963,8,37,10,37, + 12,37,966,9,37,1,38,1,38,3,38,970,8,38,1,38,1,38,1,39,1,39,3,39,976,8, + 39,1,40,1,40,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,42,1,42,1,42,3,42,996,8,42,1,43,1,43,3,43,1000,8,43,1,44,1, + 44,1,44,1,44,1,44,1,44,3,44,1008,8,44,1,45,1,45,1,45,1,45,1,46,1,46,1, + 47,1,47,3,47,1018,8,47,1,47,5,47,1021,8,47,10,47,12,47,1024,9,47,1,47, + 1,47,3,47,1028,8,47,4,47,1030,8,47,11,47,12,47,1031,1,47,1,47,1,47,3, + 47,1037,8,47,1,48,1,48,1,48,1,48,3,48,1043,8,48,1,48,1,48,1,48,3,48,1048, + 8,48,1,48,3,48,1051,8,48,1,49,1,49,3,49,1055,8,49,1,50,1,50,3,50,1059, + 8,50,5,50,1061,8,50,10,50,12,50,1064,9,50,1,50,1,50,1,50,3,50,1069,8, + 50,5,50,1071,8,50,10,50,12,50,1074,9,50,1,50,1,50,3,50,1078,8,50,1,50, + 5,50,1081,8,50,10,50,12,50,1084,9,50,1,50,3,50,1087,8,50,1,50,3,50,1090, + 8,50,1,50,1,50,3,50,1094,8,50,4,50,1096,8,50,11,50,12,50,1097,1,50,1, + 50,3,50,1102,8,50,1,51,1,51,3,51,1106,8,51,4,51,1108,8,51,11,51,12,51, + 1109,1,51,1,51,1,52,1,52,3,52,1116,8,52,5,52,1118,8,52,10,52,12,52,1121, + 9,52,1,52,1,52,3,52,1125,8,52,5,52,1127,8,52,10,52,12,52,1130,9,52,1, + 52,1,52,1,53,1,53,1,53,1,53,3,53,1138,8,53,1,54,1,54,1,54,1,54,3,54,1144, + 8,54,1,55,1,55,1,55,1,55,1,55,1,55,3,55,1152,8,55,1,55,1,55,3,55,1156, + 8,55,1,55,1,55,3,55,1160,8,55,1,55,1,55,3,55,1164,8,55,1,55,1,55,1,55, + 1,55,1,55,3,55,1171,8,55,1,55,3,55,1174,8,55,1,55,3,55,1177,8,55,1,55, + 3,55,1180,8,55,1,56,1,56,1,56,1,56,3,56,1186,8,56,1,56,3,56,1189,8,56, + 1,57,1,57,3,57,1193,8,57,1,57,1,57,3,57,1197,8,57,1,57,1,57,3,57,1201, + 8,57,1,57,3,57,1204,8,57,1,58,1,58,3,58,1208,8,58,1,58,1,58,1,58,1,58, + 1,58,1,58,1,59,1,59,3,59,1218,8,59,1,59,1,59,1,60,1,60,3,60,1224,8,60, + 1,60,1,60,1,60,5,60,1229,8,60,10,60,12,60,1232,9,60,1,61,1,61,1,61,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,3,61,1244,8,61,1,62,1,62,3,62,1248,8, + 62,1,62,1,62,3,62,1252,8,62,1,62,1,62,3,62,1256,8,62,1,62,5,62,1259,8, + 62,10,62,12,62,1262,9,62,1,63,1,63,3,63,1266,8,63,1,63,1,63,3,63,1270, + 8,63,1,63,1,63,1,64,1,64,3,64,1276,8,64,1,64,1,64,3,64,1280,8,64,1,64, + 1,64,3,64,1284,8,64,1,64,1,64,3,64,1288,8,64,1,64,5,64,1291,8,64,10,64, + 12,64,1294,9,64,1,65,1,65,1,65,3,65,1299,8,65,1,65,3,65,1302,8,65,1,66, + 1,66,1,66,1,67,3,67,1308,8,67,1,67,3,67,1311,8,67,1,67,1,67,1,67,1,67, + 3,67,1317,8,67,1,67,1,67,3,67,1321,8,67,1,67,1,67,3,67,1325,8,67,1,68, + 1,68,3,68,1329,8,68,1,68,1,68,3,68,1333,8,68,1,68,5,68,1336,8,68,10,68, + 12,68,1339,9,68,1,68,1,68,3,68,1343,8,68,1,68,1,68,3,68,1347,8,68,1,68, + 5,68,1350,8,68,10,68,12,68,1353,9,68,3,68,1355,8,68,1,69,1,69,1,69,1, + 69,1,69,1,69,1,69,3,69,1364,8,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3, + 70,1373,8,70,1,70,5,70,1376,8,70,10,70,12,70,1379,9,70,1,71,1,71,1,71, + 1,71,1,72,1,72,1,72,1,72,1,73,1,73,3,73,1391,8,73,1,73,3,73,1394,8,73, + 1,74,1,74,1,74,1,74,1,75,1,75,3,75,1402,8,75,1,75,1,75,3,75,1406,8,75, + 1,75,5,75,1409,8,75,10,75,12,75,1412,9,75,1,76,1,76,3,76,1416,8,76,1, + 76,1,76,3,76,1420,8,76,1,76,1,76,1,76,3,76,1425,8,76,1,77,1,77,1,78,1, + 78,3,78,1431,8,78,1,78,5,78,1434,8,78,10,78,12,78,1437,9,78,1,78,1,78, + 1,78,1,78,3,78,1443,8,78,1,79,1,79,3,79,1447,8,79,1,79,1,79,3,79,1451, + 8,79,3,79,1453,8,79,1,79,1,79,3,79,1457,8,79,3,79,1459,8,79,1,79,1,79, + 3,79,1463,8,79,3,79,1465,8,79,1,79,1,79,1,80,1,80,3,80,1471,8,80,1,80, + 1,80,1,81,1,81,3,81,1477,8,81,1,81,1,81,3,81,1481,8,81,1,81,3,81,1484, + 8,81,1,81,3,81,1487,8,81,1,81,1,81,1,81,1,81,3,81,1493,8,81,1,81,3,81, + 1496,8,81,1,81,3,81,1499,8,81,1,81,1,81,3,81,1503,8,81,1,81,1,81,1,81, + 1,81,3,81,1509,8,81,1,81,3,81,1512,8,81,1,81,3,81,1515,8,81,1,81,1,81, + 3,81,1519,8,81,1,82,1,82,3,82,1523,8,82,1,82,1,82,3,82,1527,8,82,3,82, + 1529,8,82,1,82,1,82,3,82,1533,8,82,3,82,1535,8,82,1,82,1,82,3,82,1539, + 8,82,3,82,1541,8,82,1,82,1,82,3,82,1545,8,82,3,82,1547,8,82,1,82,1,82, + 1,83,1,83,3,83,1553,8,83,1,83,1,83,3,83,1557,8,83,1,83,1,83,3,83,1561, + 8,83,1,83,1,83,3,83,1565,8,83,1,83,1,83,3,83,1569,8,83,1,83,1,83,3,83, + 1573,8,83,1,83,1,83,3,83,1577,8,83,1,83,1,83,3,83,1581,8,83,5,83,1583, + 8,83,10,83,12,83,1586,9,83,3,83,1588,8,83,1,83,1,83,1,84,1,84,3,84,1594, + 8,84,1,84,1,84,3,84,1598,8,84,1,84,1,84,3,84,1602,8,84,1,84,3,84,1605, + 8,84,1,84,5,84,1608,8,84,10,84,12,84,1611,9,84,1,85,1,85,3,85,1615,8, + 85,1,85,5,85,1618,8,85,10,85,12,85,1621,9,85,1,86,1,86,3,86,1625,8,86, + 1,86,1,86,1,87,1,87,3,87,1631,8,87,1,87,1,87,1,87,1,87,3,87,1637,8,87, + 1,87,3,87,1640,8,87,1,87,3,87,1643,8,87,1,87,3,87,1646,8,87,1,87,1,87, + 3,87,1650,8,87,1,87,3,87,1653,8,87,1,87,3,87,1656,8,87,1,87,3,87,1659, + 8,87,1,87,3,87,1662,8,87,1,88,1,88,3,88,1666,8,88,1,88,1,88,3,88,1670, + 8,88,1,88,1,88,3,88,1674,8,88,1,88,1,88,3,88,1678,8,88,1,88,1,88,3,88, + 1682,8,88,1,88,3,88,1685,8,88,1,88,3,88,1688,8,88,1,88,1,88,3,88,1692, + 8,88,1,88,1,88,3,88,1696,8,88,1,88,1,88,3,88,1700,8,88,1,88,1,88,3,88, + 1704,8,88,3,88,1706,8,88,1,88,1,88,1,89,1,89,3,89,1712,8,89,1,89,3,89, + 1715,8,89,1,89,3,89,1718,8,89,1,89,1,89,1,90,1,90,3,90,1724,8,90,1,90, + 3,90,1727,8,90,1,90,3,90,1730,8,90,1,90,1,90,1,91,1,91,1,92,1,92,1,93, + 1,93,1,94,1,94,1,95,1,95,1,96,1,96,1,96,1,96,1,96,5,96,1749,8,96,10,96, + 12,96,1752,9,96,1,97,1,97,1,97,1,97,1,97,5,97,1759,8,97,10,97,12,97,1762, + 9,97,1,98,1,98,1,98,1,98,1,98,5,98,1769,8,98,10,98,12,98,1772,9,98,1, + 99,1,99,3,99,1776,8,99,5,99,1778,8,99,10,99,12,99,1781,9,99,1,99,1,99, + 1,100,1,100,3,100,1787,8,100,1,100,1,100,3,100,1791,8,100,1,100,1,100, + 3,100,1795,8,100,1,100,1,100,3,100,1799,8,100,1,100,1,100,3,100,1803, + 8,100,1,100,1,100,1,100,1,100,1,100,1,100,3,100,1811,8,100,1,100,1,100, + 3,100,1815,8,100,1,100,1,100,3,100,1819,8,100,1,100,1,100,3,100,1823, + 8,100,1,100,1,100,4,100,1827,8,100,11,100,12,100,1828,1,100,1,100,3,100, + 1833,8,100,1,101,1,101,1,102,1,102,3,102,1839,8,102,1,102,1,102,3,102, + 1843,8,102,1,102,5,102,1846,8,102,10,102,12,102,1849,9,102,1,103,1,103, + 3,103,1853,8,103,1,103,1,103,3,103,1857,8,103,1,103,5,103,1860,8,103, + 10,103,12,103,1863,9,103,1,104,1,104,3,104,1867,8,104,1,104,1,104,3,104, + 1871,8,104,1,104,1,104,5,104,1875,8,104,10,104,12,104,1878,9,104,1,105, + 1,105,1,106,1,106,3,106,1884,8,106,1,106,1,106,3,106,1888,8,106,1,106, + 1,106,5,106,1892,8,106,10,106,12,106,1895,9,106,1,107,1,107,1,108,1,108, + 3,108,1901,8,108,1,108,1,108,3,108,1905,8,108,1,108,1,108,5,108,1909, + 8,108,10,108,12,108,1912,9,108,1,109,1,109,1,110,1,110,3,110,1918,8,110, + 1,110,1,110,3,110,1922,8,110,1,110,5,110,1925,8,110,10,110,12,110,1928, + 9,110,1,111,1,111,3,111,1932,8,111,5,111,1934,8,111,10,111,12,111,1937, + 9,111,1,111,1,111,3,111,1941,8,111,1,111,3,111,1944,8,111,1,112,1,112, + 1,112,4,112,1949,8,112,11,112,12,112,1950,1,112,3,112,1954,8,112,1,113, + 1,113,1,113,3,113,1959,8,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113, + 3,113,1968,8,113,1,113,1,113,3,113,1972,8,113,1,113,3,113,1975,8,113, + 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,3,114, + 1988,8,114,1,114,3,114,1991,8,114,1,114,1,114,1,115,3,115,1996,8,115, + 1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116, + 3,116,2010,8,116,1,117,1,117,3,117,2014,8,117,1,117,5,117,2017,8,117, + 10,117,12,117,2020,9,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1, + 118,1,118,3,118,2031,8,118,1,119,1,119,1,119,1,119,1,119,1,119,3,119, + 2039,8,119,1,120,1,120,1,121,1,121,3,121,2045,8,121,1,121,1,121,3,121, + 2049,8,121,1,121,1,121,3,121,2053,8,121,5,121,2055,8,121,10,121,12,121, + 2058,9,121,3,121,2060,8,121,1,121,1,121,1,122,1,122,3,122,2066,8,122, + 1,122,3,122,2069,8,122,1,123,1,123,3,123,2073,8,123,1,123,1,123,3,123, + 2077,8,123,1,123,1,123,3,123,2081,8,123,1,123,1,123,3,123,2085,8,123, + 5,123,2087,8,123,10,123,12,123,2090,9,123,1,123,1,123,1,124,1,124,3,124, + 2096,8,124,1,124,3,124,2099,8,124,1,124,1,124,3,124,2103,8,124,1,124, + 1,124,1,125,1,125,3,125,2109,8,125,1,125,1,125,3,125,2113,8,125,1,125, + 1,125,1,126,1,126,3,126,2119,8,126,1,126,1,126,3,126,2123,8,126,1,126, + 1,126,3,126,2127,8,126,1,126,1,126,1,126,3,126,2132,8,126,1,126,1,126, + 3,126,2136,8,126,1,126,1,126,3,126,2140,8,126,3,126,2142,8,126,1,126, + 1,126,3,126,2146,8,126,1,126,1,126,3,126,2150,8,126,1,126,1,126,3,126, + 2154,8,126,5,126,2156,8,126,10,126,12,126,2159,9,126,3,126,2161,8,126, + 1,126,1,126,3,126,2165,8,126,1,127,1,127,1,128,1,128,3,128,2171,8,128, + 1,128,1,128,1,128,3,128,2176,8,128,3,128,2178,8,128,1,128,1,128,1,129, + 1,129,3,129,2184,8,129,1,129,4,129,2187,8,129,11,129,12,129,2188,1,130, + 1,130,3,130,2193,8,130,1,130,1,130,3,130,2197,8,130,1,130,1,130,3,130, + 2201,8,130,1,130,1,130,3,130,2205,8,130,1,130,3,130,2208,8,130,1,130, + 3,130,2211,8,130,1,130,1,130,1,131,1,131,3,131,2217,8,131,1,131,1,131, + 3,131,2221,8,131,1,131,1,131,3,131,2225,8,131,1,131,1,131,3,131,2229, + 8,131,1,131,3,131,2232,8,131,1,131,3,131,2235,8,131,1,131,1,131,1,132, + 1,132,3,132,2241,8,132,1,132,1,132,3,132,2245,8,132,1,133,1,133,3,133, + 2249,8,133,1,133,4,133,2252,8,133,11,133,12,133,2253,1,133,1,133,3,133, + 2258,8,133,1,133,1,133,3,133,2262,8,133,1,133,4,133,2265,8,133,11,133, + 12,133,2266,3,133,2269,8,133,1,133,3,133,2272,8,133,1,133,1,133,3,133, + 2276,8,133,1,133,3,133,2279,8,133,1,133,3,133,2282,8,133,1,133,1,133, + 1,134,1,134,3,134,2288,8,134,1,134,1,134,3,134,2292,8,134,1,134,1,134, + 3,134,2296,8,134,1,134,1,134,1,135,1,135,1,136,1,136,3,136,2304,8,136, + 1,137,1,137,1,137,3,137,2309,8,137,1,138,1,138,3,138,2313,8,138,1,138, + 1,138,1,139,1,139,1,140,1,140,1,141,1,141,1,142,1,142,1,143,1,143,1,143, + 1,143,1,143,3,143,2330,8,143,1,144,1,144,1,145,1,145,1,146,1,146,1,147, + 1,147,1,147,0,1,72,148,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,0,11, + 2,0,60,60,62,62,1,0,107,110,2,0,6,6,13,17,1,0,19,20,2,0,21,21,118,118, + 2,0,22,23,101,101,1,0,127,128,8,0,48,48,50,50,56,59,70,70,74,74,121,121, + 129,129,133,133,2,0,14,14,27,30,2,0,16,16,31,34,2,0,35,45,118,118,2648, + 0,296,1,0,0,0,2,316,1,0,0,0,4,348,1,0,0,0,6,350,1,0,0,0,8,372,1,0,0,0, + 10,414,1,0,0,0,12,416,1,0,0,0,14,446,1,0,0,0,16,467,1,0,0,0,18,478,1, + 0,0,0,20,484,1,0,0,0,22,511,1,0,0,0,24,515,1,0,0,0,26,519,1,0,0,0,28, + 531,1,0,0,0,30,543,1,0,0,0,32,586,1,0,0,0,34,600,1,0,0,0,36,644,1,0,0, + 0,38,646,1,0,0,0,40,669,1,0,0,0,42,679,1,0,0,0,44,708,1,0,0,0,46,748, + 1,0,0,0,48,802,1,0,0,0,50,810,1,0,0,0,52,816,1,0,0,0,54,822,1,0,0,0,56, + 834,1,0,0,0,58,836,1,0,0,0,60,847,1,0,0,0,62,851,1,0,0,0,64,857,1,0,0, + 0,66,865,1,0,0,0,68,879,1,0,0,0,70,883,1,0,0,0,72,951,1,0,0,0,74,960, + 1,0,0,0,76,967,1,0,0,0,78,975,1,0,0,0,80,977,1,0,0,0,82,979,1,0,0,0,84, + 995,1,0,0,0,86,999,1,0,0,0,88,1001,1,0,0,0,90,1009,1,0,0,0,92,1013,1, + 0,0,0,94,1036,1,0,0,0,96,1050,1,0,0,0,98,1054,1,0,0,0,100,1101,1,0,0, + 0,102,1107,1,0,0,0,104,1119,1,0,0,0,106,1137,1,0,0,0,108,1143,1,0,0,0, + 110,1145,1,0,0,0,112,1181,1,0,0,0,114,1192,1,0,0,0,116,1205,1,0,0,0,118, + 1215,1,0,0,0,120,1221,1,0,0,0,122,1243,1,0,0,0,124,1245,1,0,0,0,126,1263, + 1,0,0,0,128,1275,1,0,0,0,130,1295,1,0,0,0,132,1303,1,0,0,0,134,1310,1, + 0,0,0,136,1354,1,0,0,0,138,1363,1,0,0,0,140,1365,1,0,0,0,142,1380,1,0, + 0,0,144,1384,1,0,0,0,146,1388,1,0,0,0,148,1395,1,0,0,0,150,1399,1,0,0, + 0,152,1424,1,0,0,0,154,1426,1,0,0,0,156,1442,1,0,0,0,158,1444,1,0,0,0, + 160,1468,1,0,0,0,162,1518,1,0,0,0,164,1520,1,0,0,0,166,1550,1,0,0,0,168, + 1591,1,0,0,0,170,1612,1,0,0,0,172,1622,1,0,0,0,174,1628,1,0,0,0,176,1663, + 1,0,0,0,178,1709,1,0,0,0,180,1721,1,0,0,0,182,1733,1,0,0,0,184,1735,1, + 0,0,0,186,1737,1,0,0,0,188,1739,1,0,0,0,190,1741,1,0,0,0,192,1743,1,0, + 0,0,194,1753,1,0,0,0,196,1763,1,0,0,0,198,1779,1,0,0,0,200,1832,1,0,0, + 0,202,1834,1,0,0,0,204,1836,1,0,0,0,206,1850,1,0,0,0,208,1864,1,0,0,0, + 210,1879,1,0,0,0,212,1881,1,0,0,0,214,1896,1,0,0,0,216,1898,1,0,0,0,218, + 1913,1,0,0,0,220,1915,1,0,0,0,222,1935,1,0,0,0,224,1945,1,0,0,0,226,1974, + 1,0,0,0,228,1987,1,0,0,0,230,1995,1,0,0,0,232,2009,1,0,0,0,234,2011,1, + 0,0,0,236,2030,1,0,0,0,238,2038,1,0,0,0,240,2040,1,0,0,0,242,2042,1,0, + 0,0,244,2063,1,0,0,0,246,2070,1,0,0,0,248,2095,1,0,0,0,250,2106,1,0,0, + 0,252,2164,1,0,0,0,254,2166,1,0,0,0,256,2177,1,0,0,0,258,2181,1,0,0,0, + 260,2190,1,0,0,0,262,2214,1,0,0,0,264,2238,1,0,0,0,266,2268,1,0,0,0,268, + 2285,1,0,0,0,270,2299,1,0,0,0,272,2303,1,0,0,0,274,2305,1,0,0,0,276,2310, + 1,0,0,0,278,2316,1,0,0,0,280,2318,1,0,0,0,282,2320,1,0,0,0,284,2322,1, + 0,0,0,286,2329,1,0,0,0,288,2331,1,0,0,0,290,2333,1,0,0,0,292,2335,1,0, + 0,0,294,2337,1,0,0,0,296,307,3,2,1,0,297,299,5,150,0,0,298,297,1,0,0, + 0,298,299,1,0,0,0,299,300,1,0,0,0,300,302,5,1,0,0,301,303,5,150,0,0,302, + 301,1,0,0,0,302,303,1,0,0,0,303,304,1,0,0,0,304,306,3,2,1,0,305,298,1, + 0,0,0,306,309,1,0,0,0,307,305,1,0,0,0,307,308,1,0,0,0,308,311,1,0,0,0, + 309,307,1,0,0,0,310,312,5,150,0,0,311,310,1,0,0,0,311,312,1,0,0,0,312, + 313,1,0,0,0,313,314,5,0,0,1,314,1,1,0,0,0,315,317,3,78,39,0,316,315,1, + 0,0,0,316,317,1,0,0,0,317,319,1,0,0,0,318,320,5,150,0,0,319,318,1,0,0, + 0,319,320,1,0,0,0,320,321,1,0,0,0,321,326,3,4,2,0,322,324,5,150,0,0,323, + 322,1,0,0,0,323,324,1,0,0,0,324,325,1,0,0,0,325,327,5,1,0,0,326,323,1, + 0,0,0,326,327,1,0,0,0,327,3,1,0,0,0,328,349,3,92,46,0,329,349,3,42,21, + 0,330,349,3,44,22,0,331,349,3,46,23,0,332,349,3,50,25,0,333,349,3,52, + 26,0,334,349,3,54,27,0,335,349,3,6,3,0,336,349,3,12,6,0,337,349,3,14, + 7,0,338,349,3,26,13,0,339,349,3,30,15,0,340,349,3,28,14,0,341,349,3,84, + 42,0,342,349,3,86,43,0,343,349,3,16,8,0,344,349,3,18,9,0,345,349,3,20, + 10,0,346,349,3,22,11,0,347,349,3,24,12,0,348,328,1,0,0,0,348,329,1,0, + 0,0,348,330,1,0,0,0,348,331,1,0,0,0,348,332,1,0,0,0,348,333,1,0,0,0,348, + 334,1,0,0,0,348,335,1,0,0,0,348,336,1,0,0,0,348,337,1,0,0,0,348,338,1, + 0,0,0,348,339,1,0,0,0,348,340,1,0,0,0,348,341,1,0,0,0,348,342,1,0,0,0, + 348,343,1,0,0,0,348,344,1,0,0,0,348,345,1,0,0,0,348,346,1,0,0,0,348,347, + 1,0,0,0,349,5,1,0,0,0,350,351,5,53,0,0,351,352,5,150,0,0,352,361,3,284, + 142,0,353,355,5,150,0,0,354,353,1,0,0,0,354,355,1,0,0,0,355,356,1,0,0, + 0,356,358,3,8,4,0,357,359,5,150,0,0,358,357,1,0,0,0,358,359,1,0,0,0,359, + 362,1,0,0,0,360,362,5,150,0,0,361,354,1,0,0,0,361,360,1,0,0,0,362,363, + 1,0,0,0,363,364,5,54,0,0,364,365,5,150,0,0,365,370,3,10,5,0,366,368,5, + 150,0,0,367,366,1,0,0,0,367,368,1,0,0,0,368,369,1,0,0,0,369,371,3,38, + 19,0,370,367,1,0,0,0,370,371,1,0,0,0,371,7,1,0,0,0,372,374,5,2,0,0,373, + 375,5,150,0,0,374,373,1,0,0,0,374,375,1,0,0,0,375,376,1,0,0,0,376,387, + 3,284,142,0,377,379,5,150,0,0,378,377,1,0,0,0,378,379,1,0,0,0,379,380, + 1,0,0,0,380,382,5,3,0,0,381,383,5,150,0,0,382,381,1,0,0,0,382,383,1,0, + 0,0,383,384,1,0,0,0,384,386,3,284,142,0,385,378,1,0,0,0,386,389,1,0,0, + 0,387,385,1,0,0,0,387,388,1,0,0,0,388,391,1,0,0,0,389,387,1,0,0,0,390, + 392,5,150,0,0,391,390,1,0,0,0,391,392,1,0,0,0,392,393,1,0,0,0,393,394, + 5,4,0,0,394,9,1,0,0,0,395,415,3,36,18,0,396,398,5,2,0,0,397,399,5,150, + 0,0,398,397,1,0,0,0,398,399,1,0,0,0,399,400,1,0,0,0,400,402,3,92,46,0, + 401,403,5,150,0,0,402,401,1,0,0,0,402,403,1,0,0,0,403,404,1,0,0,0,404, + 405,5,4,0,0,405,415,1,0,0,0,406,415,3,270,135,0,407,408,3,270,135,0,408, + 410,5,5,0,0,409,411,5,150,0,0,410,409,1,0,0,0,410,411,1,0,0,0,411,412, + 1,0,0,0,412,413,3,284,142,0,413,415,1,0,0,0,414,395,1,0,0,0,414,396,1, + 0,0,0,414,406,1,0,0,0,414,407,1,0,0,0,415,11,1,0,0,0,416,417,5,53,0,0, + 417,418,5,150,0,0,418,419,3,284,142,0,419,420,5,150,0,0,420,421,5,54, + 0,0,421,422,5,150,0,0,422,424,5,2,0,0,423,425,5,150,0,0,424,423,1,0,0, + 0,424,425,1,0,0,0,425,426,1,0,0,0,426,437,5,136,0,0,427,429,5,150,0,0, + 428,427,1,0,0,0,428,429,1,0,0,0,429,430,1,0,0,0,430,432,5,3,0,0,431,433, + 5,150,0,0,432,431,1,0,0,0,432,433,1,0,0,0,433,434,1,0,0,0,434,436,5,136, + 0,0,435,428,1,0,0,0,436,439,1,0,0,0,437,435,1,0,0,0,437,438,1,0,0,0,438, + 440,1,0,0,0,439,437,1,0,0,0,440,441,5,4,0,0,441,442,5,150,0,0,442,443, + 5,104,0,0,443,444,5,150,0,0,444,445,5,55,0,0,445,13,1,0,0,0,446,447,5, + 53,0,0,447,448,5,150,0,0,448,450,5,2,0,0,449,451,5,150,0,0,450,449,1, + 0,0,0,450,451,1,0,0,0,451,452,1,0,0,0,452,454,3,92,46,0,453,455,5,150, + 0,0,454,453,1,0,0,0,454,455,1,0,0,0,455,456,1,0,0,0,456,457,5,4,0,0,457, + 458,5,150,0,0,458,459,5,71,0,0,459,460,5,150,0,0,460,465,5,136,0,0,461, + 463,5,150,0,0,462,461,1,0,0,0,462,463,1,0,0,0,463,464,1,0,0,0,464,466, + 3,38,19,0,465,462,1,0,0,0,465,466,1,0,0,0,466,15,1,0,0,0,467,468,5,56, + 0,0,468,469,5,150,0,0,469,470,5,58,0,0,470,471,5,150,0,0,471,476,5,136, + 0,0,472,474,5,150,0,0,473,472,1,0,0,0,473,474,1,0,0,0,474,475,1,0,0,0, + 475,477,3,38,19,0,476,473,1,0,0,0,476,477,1,0,0,0,477,17,1,0,0,0,478, + 479,5,57,0,0,479,480,5,150,0,0,480,481,5,58,0,0,481,482,5,150,0,0,482, + 483,5,136,0,0,483,19,1,0,0,0,484,485,5,46,0,0,485,486,5,150,0,0,486,493, + 5,136,0,0,487,488,5,150,0,0,488,489,5,102,0,0,489,490,5,150,0,0,490,491, + 3,284,142,0,491,492,5,150,0,0,492,494,1,0,0,0,493,487,1,0,0,0,493,494, + 1,0,0,0,494,509,1,0,0,0,495,497,5,150,0,0,496,495,1,0,0,0,496,497,1,0, + 0,0,497,498,1,0,0,0,498,500,5,2,0,0,499,501,5,150,0,0,500,499,1,0,0,0, + 500,501,1,0,0,0,501,502,1,0,0,0,502,503,5,47,0,0,503,504,5,150,0,0,504, + 506,5,136,0,0,505,507,5,150,0,0,506,505,1,0,0,0,506,507,1,0,0,0,507,508, + 1,0,0,0,508,510,5,4,0,0,509,496,1,0,0,0,509,510,1,0,0,0,510,21,1,0,0, + 0,511,512,5,96,0,0,512,513,5,150,0,0,513,514,3,284,142,0,514,23,1,0,0, + 0,515,516,5,48,0,0,516,517,5,150,0,0,517,518,3,284,142,0,518,25,1,0,0, + 0,519,520,5,49,0,0,520,521,5,150,0,0,521,523,3,286,143,0,522,524,5,150, + 0,0,523,522,1,0,0,0,523,524,1,0,0,0,524,525,1,0,0,0,525,527,5,6,0,0,526, + 528,5,150,0,0,527,526,1,0,0,0,527,528,1,0,0,0,528,529,1,0,0,0,529,530, + 3,238,119,0,530,27,1,0,0,0,531,532,5,50,0,0,532,533,5,150,0,0,533,534, + 5,94,0,0,534,535,5,150,0,0,535,536,5,60,0,0,536,537,5,150,0,0,537,538, + 3,284,142,0,538,539,5,150,0,0,539,540,5,125,0,0,540,541,5,150,0,0,541, + 542,5,136,0,0,542,29,1,0,0,0,543,544,5,92,0,0,544,545,5,150,0,0,545,546, + 5,51,0,0,546,547,5,150,0,0,547,549,3,254,127,0,548,550,5,150,0,0,549, + 548,1,0,0,0,549,550,1,0,0,0,550,551,1,0,0,0,551,553,5,2,0,0,552,554,5, + 150,0,0,553,552,1,0,0,0,553,554,1,0,0,0,554,556,1,0,0,0,555,557,3,32, + 16,0,556,555,1,0,0,0,556,557,1,0,0,0,557,559,1,0,0,0,558,560,5,150,0, + 0,559,558,1,0,0,0,559,560,1,0,0,0,560,562,1,0,0,0,561,563,3,34,17,0,562, + 561,1,0,0,0,562,563,1,0,0,0,563,574,1,0,0,0,564,566,5,150,0,0,565,564, + 1,0,0,0,565,566,1,0,0,0,566,567,1,0,0,0,567,569,5,3,0,0,568,570,5,150, + 0,0,569,568,1,0,0,0,569,570,1,0,0,0,570,571,1,0,0,0,571,573,3,34,17,0, + 572,565,1,0,0,0,573,576,1,0,0,0,574,572,1,0,0,0,574,575,1,0,0,0,575,578, + 1,0,0,0,576,574,1,0,0,0,577,579,5,150,0,0,578,577,1,0,0,0,578,579,1,0, + 0,0,579,580,1,0,0,0,580,581,5,4,0,0,581,582,5,150,0,0,582,583,5,102,0, + 0,583,584,5,150,0,0,584,585,3,190,95,0,585,31,1,0,0,0,586,597,3,286,143, + 0,587,589,5,150,0,0,588,587,1,0,0,0,588,589,1,0,0,0,589,590,1,0,0,0,590, + 592,5,3,0,0,591,593,5,150,0,0,592,591,1,0,0,0,592,593,1,0,0,0,593,594, + 1,0,0,0,594,596,3,286,143,0,595,588,1,0,0,0,596,599,1,0,0,0,597,595,1, + 0,0,0,597,598,1,0,0,0,598,33,1,0,0,0,599,597,1,0,0,0,600,602,3,286,143, + 0,601,603,5,150,0,0,602,601,1,0,0,0,602,603,1,0,0,0,603,604,1,0,0,0,604, + 605,5,120,0,0,605,607,5,6,0,0,606,608,5,150,0,0,607,606,1,0,0,0,607,608, + 1,0,0,0,608,609,1,0,0,0,609,610,3,238,119,0,610,35,1,0,0,0,611,613,5, + 7,0,0,612,614,5,150,0,0,613,612,1,0,0,0,613,614,1,0,0,0,614,615,1,0,0, + 0,615,626,5,136,0,0,616,618,5,150,0,0,617,616,1,0,0,0,617,618,1,0,0,0, + 618,619,1,0,0,0,619,621,5,3,0,0,620,622,5,150,0,0,621,620,1,0,0,0,621, + 622,1,0,0,0,622,623,1,0,0,0,623,625,5,136,0,0,624,617,1,0,0,0,625,628, + 1,0,0,0,626,624,1,0,0,0,626,627,1,0,0,0,627,629,1,0,0,0,628,626,1,0,0, + 0,629,645,5,8,0,0,630,645,5,136,0,0,631,633,5,52,0,0,632,634,5,150,0, + 0,633,632,1,0,0,0,633,634,1,0,0,0,634,635,1,0,0,0,635,637,5,2,0,0,636, + 638,5,150,0,0,637,636,1,0,0,0,637,638,1,0,0,0,638,639,1,0,0,0,639,641, + 5,136,0,0,640,642,5,150,0,0,641,640,1,0,0,0,641,642,1,0,0,0,642,643,1, + 0,0,0,643,645,5,4,0,0,644,611,1,0,0,0,644,630,1,0,0,0,644,631,1,0,0,0, + 645,37,1,0,0,0,646,648,5,2,0,0,647,649,5,150,0,0,648,647,1,0,0,0,648, + 649,1,0,0,0,649,650,1,0,0,0,650,661,3,40,20,0,651,653,5,150,0,0,652,651, + 1,0,0,0,652,653,1,0,0,0,653,654,1,0,0,0,654,656,5,3,0,0,655,657,5,150, + 0,0,656,655,1,0,0,0,656,657,1,0,0,0,657,658,1,0,0,0,658,660,3,40,20,0, + 659,652,1,0,0,0,660,663,1,0,0,0,661,659,1,0,0,0,661,662,1,0,0,0,662,665, + 1,0,0,0,663,661,1,0,0,0,664,666,5,150,0,0,665,664,1,0,0,0,665,666,1,0, + 0,0,666,667,1,0,0,0,667,668,5,4,0,0,668,39,1,0,0,0,669,671,3,286,143, + 0,670,672,5,150,0,0,671,670,1,0,0,0,671,672,1,0,0,0,672,673,1,0,0,0,673, + 675,5,6,0,0,674,676,5,150,0,0,675,674,1,0,0,0,675,676,1,0,0,0,676,677, + 1,0,0,0,677,678,3,238,119,0,678,41,1,0,0,0,679,680,5,92,0,0,680,681,5, + 150,0,0,681,682,5,59,0,0,682,683,5,150,0,0,683,684,5,60,0,0,684,685,5, + 150,0,0,685,687,3,284,142,0,686,688,5,150,0,0,687,686,1,0,0,0,687,688, + 1,0,0,0,688,689,1,0,0,0,689,691,5,2,0,0,690,692,5,150,0,0,691,690,1,0, + 0,0,691,692,1,0,0,0,692,693,1,0,0,0,693,695,3,66,33,0,694,696,5,150,0, + 0,695,694,1,0,0,0,695,696,1,0,0,0,696,697,1,0,0,0,697,699,5,3,0,0,698, + 700,5,150,0,0,699,698,1,0,0,0,699,700,1,0,0,0,700,701,1,0,0,0,701,702, + 3,70,35,0,702,704,1,0,0,0,703,705,5,150,0,0,704,703,1,0,0,0,704,705,1, + 0,0,0,705,706,1,0,0,0,706,707,5,4,0,0,707,43,1,0,0,0,708,709,5,92,0,0, + 709,710,5,150,0,0,710,711,5,70,0,0,711,712,5,150,0,0,712,713,5,60,0,0, + 713,714,5,150,0,0,714,716,3,284,142,0,715,717,5,150,0,0,716,715,1,0,0, + 0,716,717,1,0,0,0,717,718,1,0,0,0,718,720,5,2,0,0,719,721,5,150,0,0,720, + 719,1,0,0,0,720,721,1,0,0,0,721,722,1,0,0,0,722,724,3,48,24,0,723,725, + 5,150,0,0,724,723,1,0,0,0,724,725,1,0,0,0,725,734,1,0,0,0,726,728,5,3, + 0,0,727,729,5,150,0,0,728,727,1,0,0,0,728,729,1,0,0,0,729,730,1,0,0,0, + 730,732,3,66,33,0,731,733,5,150,0,0,732,731,1,0,0,0,732,733,1,0,0,0,733, + 735,1,0,0,0,734,726,1,0,0,0,734,735,1,0,0,0,735,744,1,0,0,0,736,738,5, + 3,0,0,737,739,5,150,0,0,738,737,1,0,0,0,738,739,1,0,0,0,739,740,1,0,0, + 0,740,742,3,286,143,0,741,743,5,150,0,0,742,741,1,0,0,0,742,743,1,0,0, + 0,743,745,1,0,0,0,744,736,1,0,0,0,744,745,1,0,0,0,745,746,1,0,0,0,746, + 747,5,4,0,0,747,45,1,0,0,0,748,749,5,92,0,0,749,750,5,150,0,0,750,751, + 5,70,0,0,751,752,5,150,0,0,752,753,5,60,0,0,753,754,5,150,0,0,754,755, + 5,61,0,0,755,756,5,150,0,0,756,758,3,284,142,0,757,759,5,150,0,0,758, + 757,1,0,0,0,758,759,1,0,0,0,759,760,1,0,0,0,760,762,5,2,0,0,761,763,5, + 150,0,0,762,761,1,0,0,0,762,763,1,0,0,0,763,764,1,0,0,0,764,766,3,48, + 24,0,765,767,5,150,0,0,766,765,1,0,0,0,766,767,1,0,0,0,767,773,1,0,0, + 0,768,770,5,3,0,0,769,771,5,150,0,0,770,769,1,0,0,0,770,771,1,0,0,0,771, + 772,1,0,0,0,772,774,3,48,24,0,773,768,1,0,0,0,774,775,1,0,0,0,775,773, + 1,0,0,0,775,776,1,0,0,0,776,778,1,0,0,0,777,779,5,150,0,0,778,777,1,0, + 0,0,778,779,1,0,0,0,779,788,1,0,0,0,780,782,5,3,0,0,781,783,5,150,0,0, + 782,781,1,0,0,0,782,783,1,0,0,0,783,784,1,0,0,0,784,786,3,66,33,0,785, + 787,5,150,0,0,786,785,1,0,0,0,786,787,1,0,0,0,787,789,1,0,0,0,788,780, + 1,0,0,0,788,789,1,0,0,0,789,798,1,0,0,0,790,792,5,3,0,0,791,793,5,150, + 0,0,792,791,1,0,0,0,792,793,1,0,0,0,793,794,1,0,0,0,794,796,3,286,143, + 0,795,797,5,150,0,0,796,795,1,0,0,0,796,797,1,0,0,0,797,799,1,0,0,0,798, + 790,1,0,0,0,798,799,1,0,0,0,799,800,1,0,0,0,800,801,5,4,0,0,801,47,1, + 0,0,0,802,803,5,54,0,0,803,804,5,150,0,0,804,805,3,284,142,0,805,806, + 5,150,0,0,806,807,5,71,0,0,807,808,5,150,0,0,808,809,3,284,142,0,809, + 49,1,0,0,0,810,811,5,92,0,0,811,812,5,150,0,0,812,813,5,62,0,0,813,814, + 5,150,0,0,814,815,3,284,142,0,815,51,1,0,0,0,816,817,5,63,0,0,817,818, + 5,150,0,0,818,819,7,0,0,0,819,820,5,150,0,0,820,821,3,284,142,0,821,53, + 1,0,0,0,822,823,5,64,0,0,823,824,5,150,0,0,824,825,5,60,0,0,825,826,5, + 150,0,0,826,827,3,284,142,0,827,828,5,150,0,0,828,829,3,56,28,0,829,55, + 1,0,0,0,830,835,3,58,29,0,831,835,3,60,30,0,832,835,3,62,31,0,833,835, + 3,64,32,0,834,830,1,0,0,0,834,831,1,0,0,0,834,832,1,0,0,0,834,833,1,0, + 0,0,835,57,1,0,0,0,836,837,5,67,0,0,837,838,5,150,0,0,838,839,3,278,139, + 0,839,840,5,150,0,0,840,845,3,72,36,0,841,842,5,150,0,0,842,843,5,65, + 0,0,843,844,5,150,0,0,844,846,3,190,95,0,845,841,1,0,0,0,845,846,1,0, + 0,0,846,59,1,0,0,0,847,848,5,63,0,0,848,849,5,150,0,0,849,850,3,278,139, + 0,850,61,1,0,0,0,851,852,5,66,0,0,852,853,5,150,0,0,853,854,5,71,0,0, + 854,855,5,150,0,0,855,856,3,284,142,0,856,63,1,0,0,0,857,858,5,66,0,0, + 858,859,5,150,0,0,859,860,3,278,139,0,860,861,5,150,0,0,861,862,5,71, + 0,0,862,863,5,150,0,0,863,864,3,278,139,0,864,65,1,0,0,0,865,876,3,68, + 34,0,866,868,5,150,0,0,867,866,1,0,0,0,867,868,1,0,0,0,868,869,1,0,0, + 0,869,871,5,3,0,0,870,872,5,150,0,0,871,870,1,0,0,0,871,872,1,0,0,0,872, + 873,1,0,0,0,873,875,3,68,34,0,874,867,1,0,0,0,875,878,1,0,0,0,876,874, + 1,0,0,0,876,877,1,0,0,0,877,67,1,0,0,0,878,876,1,0,0,0,879,880,3,278, + 139,0,880,881,5,150,0,0,881,882,3,72,36,0,882,69,1,0,0,0,883,884,5,68, + 0,0,884,885,5,150,0,0,885,887,5,69,0,0,886,888,5,150,0,0,887,886,1,0, + 0,0,887,888,1,0,0,0,888,889,1,0,0,0,889,891,5,2,0,0,890,892,5,150,0,0, + 891,890,1,0,0,0,891,892,1,0,0,0,892,893,1,0,0,0,893,895,3,278,139,0,894, + 896,5,150,0,0,895,894,1,0,0,0,895,896,1,0,0,0,896,897,1,0,0,0,897,898, + 5,4,0,0,898,71,1,0,0,0,899,900,6,36,-1,0,900,952,3,286,143,0,901,903, + 5,85,0,0,902,904,5,150,0,0,903,902,1,0,0,0,903,904,1,0,0,0,904,905,1, + 0,0,0,905,907,5,2,0,0,906,908,5,150,0,0,907,906,1,0,0,0,907,908,1,0,0, + 0,908,909,1,0,0,0,909,911,3,66,33,0,910,912,5,150,0,0,911,910,1,0,0,0, + 911,912,1,0,0,0,912,913,1,0,0,0,913,914,5,4,0,0,914,952,1,0,0,0,915,917, + 3,286,143,0,916,918,5,150,0,0,917,916,1,0,0,0,917,918,1,0,0,0,918,919, + 1,0,0,0,919,921,5,2,0,0,920,922,5,150,0,0,921,920,1,0,0,0,921,922,1,0, + 0,0,922,923,1,0,0,0,923,925,3,66,33,0,924,926,5,150,0,0,925,924,1,0,0, + 0,925,926,1,0,0,0,926,927,1,0,0,0,927,928,5,4,0,0,928,952,1,0,0,0,929, + 931,3,286,143,0,930,932,5,150,0,0,931,930,1,0,0,0,931,932,1,0,0,0,932, + 933,1,0,0,0,933,935,5,2,0,0,934,936,5,150,0,0,935,934,1,0,0,0,935,936, + 1,0,0,0,936,937,1,0,0,0,937,939,3,72,36,0,938,940,5,150,0,0,939,938,1, + 0,0,0,939,940,1,0,0,0,940,941,1,0,0,0,941,943,5,3,0,0,942,944,5,150,0, + 0,943,942,1,0,0,0,943,944,1,0,0,0,944,945,1,0,0,0,945,947,3,72,36,0,946, + 948,5,150,0,0,947,946,1,0,0,0,947,948,1,0,0,0,948,949,1,0,0,0,949,950, + 5,4,0,0,950,952,1,0,0,0,951,899,1,0,0,0,951,901,1,0,0,0,951,915,1,0,0, + 0,951,929,1,0,0,0,952,957,1,0,0,0,953,954,10,4,0,0,954,956,3,74,37,0, + 955,953,1,0,0,0,956,959,1,0,0,0,957,955,1,0,0,0,957,958,1,0,0,0,958,73, + 1,0,0,0,959,957,1,0,0,0,960,964,3,76,38,0,961,963,3,76,38,0,962,961,1, + 0,0,0,963,966,1,0,0,0,964,962,1,0,0,0,964,965,1,0,0,0,965,75,1,0,0,0, + 966,964,1,0,0,0,967,969,5,7,0,0,968,970,3,280,140,0,969,968,1,0,0,0,969, + 970,1,0,0,0,970,971,1,0,0,0,971,972,5,8,0,0,972,77,1,0,0,0,973,976,3, + 80,40,0,974,976,3,82,41,0,975,973,1,0,0,0,975,974,1,0,0,0,976,79,1,0, + 0,0,977,978,5,72,0,0,978,81,1,0,0,0,979,980,5,73,0,0,980,83,1,0,0,0,981, + 982,5,74,0,0,982,983,5,150,0,0,983,996,5,75,0,0,984,985,5,74,0,0,985, + 986,5,150,0,0,986,987,5,75,0,0,987,988,5,150,0,0,988,989,5,76,0,0,989, + 990,5,150,0,0,990,996,5,77,0,0,991,996,5,79,0,0,992,996,5,80,0,0,993, + 996,5,81,0,0,994,996,5,82,0,0,995,981,1,0,0,0,995,984,1,0,0,0,995,991, + 1,0,0,0,995,992,1,0,0,0,995,993,1,0,0,0,995,994,1,0,0,0,996,85,1,0,0, + 0,997,1000,3,88,44,0,998,1000,3,90,45,0,999,997,1,0,0,0,999,998,1,0,0, + 0,1000,87,1,0,0,0,1001,1002,5,87,0,0,1002,1003,5,150,0,0,1003,1004,5, + 84,0,0,1004,1007,5,150,0,0,1005,1008,5,136,0,0,1006,1008,3,270,135,0, + 1007,1005,1,0,0,0,1007,1006,1,0,0,0,1008,89,1,0,0,0,1009,1010,5,83,0, + 0,1010,1011,5,150,0,0,1011,1012,3,270,135,0,1012,91,1,0,0,0,1013,1014, + 3,94,47,0,1014,93,1,0,0,0,1015,1022,3,98,49,0,1016,1018,5,150,0,0,1017, + 1016,1,0,0,0,1017,1018,1,0,0,0,1018,1019,1,0,0,0,1019,1021,3,96,48,0, + 1020,1017,1,0,0,0,1021,1024,1,0,0,0,1022,1020,1,0,0,0,1022,1023,1,0,0, + 0,1023,1037,1,0,0,0,1024,1022,1,0,0,0,1025,1027,3,132,66,0,1026,1028, + 5,150,0,0,1027,1026,1,0,0,0,1027,1028,1,0,0,0,1028,1030,1,0,0,0,1029, + 1025,1,0,0,0,1030,1031,1,0,0,0,1031,1029,1,0,0,0,1031,1032,1,0,0,0,1032, + 1033,1,0,0,0,1033,1034,3,98,49,0,1034,1035,6,47,-1,0,1035,1037,1,0,0, + 0,1036,1015,1,0,0,0,1036,1029,1,0,0,0,1037,95,1,0,0,0,1038,1039,5,85, + 0,0,1039,1040,5,150,0,0,1040,1042,5,86,0,0,1041,1043,5,150,0,0,1042,1041, + 1,0,0,0,1042,1043,1,0,0,0,1043,1044,1,0,0,0,1044,1051,3,98,49,0,1045, + 1047,5,85,0,0,1046,1048,5,150,0,0,1047,1046,1,0,0,0,1047,1048,1,0,0,0, + 1048,1049,1,0,0,0,1049,1051,3,98,49,0,1050,1038,1,0,0,0,1050,1045,1,0, + 0,0,1051,97,1,0,0,0,1052,1055,3,100,50,0,1053,1055,3,102,51,0,1054,1052, + 1,0,0,0,1054,1053,1,0,0,0,1055,99,1,0,0,0,1056,1058,3,108,54,0,1057,1059, + 5,150,0,0,1058,1057,1,0,0,0,1058,1059,1,0,0,0,1059,1061,1,0,0,0,1060, + 1056,1,0,0,0,1061,1064,1,0,0,0,1062,1060,1,0,0,0,1062,1063,1,0,0,0,1063, + 1065,1,0,0,0,1064,1062,1,0,0,0,1065,1102,3,132,66,0,1066,1068,3,108,54, + 0,1067,1069,5,150,0,0,1068,1067,1,0,0,0,1068,1069,1,0,0,0,1069,1071,1, + 0,0,0,1070,1066,1,0,0,0,1071,1074,1,0,0,0,1072,1070,1,0,0,0,1072,1073, + 1,0,0,0,1073,1075,1,0,0,0,1074,1072,1,0,0,0,1075,1082,3,106,53,0,1076, + 1078,5,150,0,0,1077,1076,1,0,0,0,1077,1078,1,0,0,0,1078,1079,1,0,0,0, + 1079,1081,3,106,53,0,1080,1077,1,0,0,0,1081,1084,1,0,0,0,1082,1080,1, + 0,0,0,1082,1083,1,0,0,0,1083,1089,1,0,0,0,1084,1082,1,0,0,0,1085,1087, + 5,150,0,0,1086,1085,1,0,0,0,1086,1087,1,0,0,0,1087,1088,1,0,0,0,1088, + 1090,3,132,66,0,1089,1086,1,0,0,0,1089,1090,1,0,0,0,1090,1102,1,0,0,0, + 1091,1093,3,108,54,0,1092,1094,5,150,0,0,1093,1092,1,0,0,0,1093,1094, + 1,0,0,0,1094,1096,1,0,0,0,1095,1091,1,0,0,0,1096,1097,1,0,0,0,1097,1095, + 1,0,0,0,1097,1098,1,0,0,0,1098,1099,1,0,0,0,1099,1100,6,50,-1,0,1100, + 1102,1,0,0,0,1101,1062,1,0,0,0,1101,1072,1,0,0,0,1101,1095,1,0,0,0,1102, + 101,1,0,0,0,1103,1105,3,104,52,0,1104,1106,5,150,0,0,1105,1104,1,0,0, + 0,1105,1106,1,0,0,0,1106,1108,1,0,0,0,1107,1103,1,0,0,0,1108,1109,1,0, + 0,0,1109,1107,1,0,0,0,1109,1110,1,0,0,0,1110,1111,1,0,0,0,1111,1112,3, + 100,50,0,1112,103,1,0,0,0,1113,1115,3,108,54,0,1114,1116,5,150,0,0,1115, + 1114,1,0,0,0,1115,1116,1,0,0,0,1116,1118,1,0,0,0,1117,1113,1,0,0,0,1118, + 1121,1,0,0,0,1119,1117,1,0,0,0,1119,1120,1,0,0,0,1120,1128,1,0,0,0,1121, + 1119,1,0,0,0,1122,1124,3,106,53,0,1123,1125,5,150,0,0,1124,1123,1,0,0, + 0,1124,1125,1,0,0,0,1125,1127,1,0,0,0,1126,1122,1,0,0,0,1127,1130,1,0, + 0,0,1128,1126,1,0,0,0,1128,1129,1,0,0,0,1129,1131,1,0,0,0,1130,1128,1, + 0,0,0,1131,1132,3,130,65,0,1132,105,1,0,0,0,1133,1138,3,118,59,0,1134, + 1138,3,120,60,0,1135,1138,3,124,62,0,1136,1138,3,128,64,0,1137,1133,1, + 0,0,0,1137,1134,1,0,0,0,1137,1135,1,0,0,0,1137,1136,1,0,0,0,1138,107, + 1,0,0,0,1139,1144,3,114,57,0,1140,1144,3,116,58,0,1141,1144,3,112,56, + 0,1142,1144,3,110,55,0,1143,1139,1,0,0,0,1143,1140,1,0,0,0,1143,1141, + 1,0,0,0,1143,1142,1,0,0,0,1144,109,1,0,0,0,1145,1163,5,87,0,0,1146,1147, + 5,150,0,0,1147,1148,5,98,0,0,1148,1149,5,150,0,0,1149,1151,5,88,0,0,1150, + 1152,5,150,0,0,1151,1150,1,0,0,0,1151,1152,1,0,0,0,1152,1153,1,0,0,0, + 1153,1155,5,2,0,0,1154,1156,5,150,0,0,1155,1154,1,0,0,0,1155,1156,1,0, + 0,0,1156,1157,1,0,0,0,1157,1159,3,66,33,0,1158,1160,5,150,0,0,1159,1158, + 1,0,0,0,1159,1160,1,0,0,0,1160,1161,1,0,0,0,1161,1162,5,4,0,0,1162,1164, + 1,0,0,0,1163,1146,1,0,0,0,1163,1164,1,0,0,0,1164,1165,1,0,0,0,1165,1166, + 5,150,0,0,1166,1167,5,54,0,0,1167,1168,5,150,0,0,1168,1173,3,10,5,0,1169, + 1171,5,150,0,0,1170,1169,1,0,0,0,1170,1171,1,0,0,0,1171,1172,1,0,0,0, + 1172,1174,3,38,19,0,1173,1170,1,0,0,0,1173,1174,1,0,0,0,1174,1179,1,0, + 0,0,1175,1177,5,150,0,0,1176,1175,1,0,0,0,1176,1177,1,0,0,0,1177,1178, + 1,0,0,0,1178,1180,3,148,74,0,1179,1176,1,0,0,0,1179,1180,1,0,0,0,1180, + 111,1,0,0,0,1181,1182,5,49,0,0,1182,1183,5,150,0,0,1183,1188,3,252,126, + 0,1184,1186,5,150,0,0,1185,1184,1,0,0,0,1185,1186,1,0,0,0,1186,1187,1, + 0,0,0,1187,1189,3,148,74,0,1188,1185,1,0,0,0,1188,1189,1,0,0,0,1189,113, + 1,0,0,0,1190,1191,5,89,0,0,1191,1193,5,150,0,0,1192,1190,1,0,0,0,1192, + 1193,1,0,0,0,1193,1194,1,0,0,0,1194,1196,5,90,0,0,1195,1197,5,150,0,0, + 1196,1195,1,0,0,0,1196,1197,1,0,0,0,1197,1198,1,0,0,0,1198,1203,3,150, + 75,0,1199,1201,5,150,0,0,1200,1199,1,0,0,0,1200,1201,1,0,0,0,1201,1202, + 1,0,0,0,1202,1204,3,148,74,0,1203,1200,1,0,0,0,1203,1204,1,0,0,0,1204, + 115,1,0,0,0,1205,1207,5,91,0,0,1206,1208,5,150,0,0,1207,1206,1,0,0,0, + 1207,1208,1,0,0,0,1208,1209,1,0,0,0,1209,1210,3,190,95,0,1210,1211,5, + 150,0,0,1211,1212,5,102,0,0,1212,1213,5,150,0,0,1213,1214,3,270,135,0, + 1214,117,1,0,0,0,1215,1217,5,92,0,0,1216,1218,5,150,0,0,1217,1216,1,0, + 0,0,1217,1218,1,0,0,0,1218,1219,1,0,0,0,1219,1220,3,150,75,0,1220,119, + 1,0,0,0,1221,1223,5,93,0,0,1222,1224,5,150,0,0,1223,1222,1,0,0,0,1223, + 1224,1,0,0,0,1224,1225,1,0,0,0,1225,1230,3,150,75,0,1226,1227,5,150,0, + 0,1227,1229,3,122,61,0,1228,1226,1,0,0,0,1229,1232,1,0,0,0,1230,1228, + 1,0,0,0,1230,1231,1,0,0,0,1231,121,1,0,0,0,1232,1230,1,0,0,0,1233,1234, + 5,94,0,0,1234,1235,5,150,0,0,1235,1236,5,90,0,0,1236,1237,5,150,0,0,1237, + 1244,3,124,62,0,1238,1239,5,94,0,0,1239,1240,5,150,0,0,1240,1241,5,92, + 0,0,1241,1242,5,150,0,0,1242,1244,3,124,62,0,1243,1233,1,0,0,0,1243,1238, + 1,0,0,0,1244,123,1,0,0,0,1245,1247,5,95,0,0,1246,1248,5,150,0,0,1247, + 1246,1,0,0,0,1247,1248,1,0,0,0,1248,1249,1,0,0,0,1249,1260,3,126,63,0, + 1250,1252,5,150,0,0,1251,1250,1,0,0,0,1251,1252,1,0,0,0,1252,1253,1,0, + 0,0,1253,1255,5,3,0,0,1254,1256,5,150,0,0,1255,1254,1,0,0,0,1255,1256, + 1,0,0,0,1256,1257,1,0,0,0,1257,1259,3,126,63,0,1258,1251,1,0,0,0,1259, + 1262,1,0,0,0,1260,1258,1,0,0,0,1260,1261,1,0,0,0,1261,125,1,0,0,0,1262, + 1260,1,0,0,0,1263,1265,3,276,138,0,1264,1266,5,150,0,0,1265,1264,1,0, + 0,0,1265,1266,1,0,0,0,1266,1267,1,0,0,0,1267,1269,5,6,0,0,1268,1270,5, + 150,0,0,1269,1268,1,0,0,0,1269,1270,1,0,0,0,1270,1271,1,0,0,0,1271,1272, + 3,190,95,0,1272,127,1,0,0,0,1273,1274,5,96,0,0,1274,1276,5,150,0,0,1275, + 1273,1,0,0,0,1275,1276,1,0,0,0,1276,1277,1,0,0,0,1277,1279,5,97,0,0,1278, + 1280,5,150,0,0,1279,1278,1,0,0,0,1279,1280,1,0,0,0,1280,1281,1,0,0,0, + 1281,1292,3,190,95,0,1282,1284,5,150,0,0,1283,1282,1,0,0,0,1283,1284, + 1,0,0,0,1284,1285,1,0,0,0,1285,1287,5,3,0,0,1286,1288,5,150,0,0,1287, + 1286,1,0,0,0,1287,1288,1,0,0,0,1288,1289,1,0,0,0,1289,1291,3,190,95,0, + 1290,1283,1,0,0,0,1291,1294,1,0,0,0,1292,1290,1,0,0,0,1292,1293,1,0,0, + 0,1293,129,1,0,0,0,1294,1292,1,0,0,0,1295,1296,5,98,0,0,1296,1301,3,134, + 67,0,1297,1299,5,150,0,0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300, + 1,0,0,0,1300,1302,3,148,74,0,1301,1298,1,0,0,0,1301,1302,1,0,0,0,1302, + 131,1,0,0,0,1303,1304,5,99,0,0,1304,1305,3,134,67,0,1305,133,1,0,0,0, + 1306,1308,5,150,0,0,1307,1306,1,0,0,0,1307,1308,1,0,0,0,1308,1309,1,0, + 0,0,1309,1311,5,100,0,0,1310,1307,1,0,0,0,1310,1311,1,0,0,0,1311,1312, + 1,0,0,0,1312,1313,5,150,0,0,1313,1316,3,136,68,0,1314,1315,5,150,0,0, + 1315,1317,3,140,70,0,1316,1314,1,0,0,0,1316,1317,1,0,0,0,1317,1320,1, + 0,0,0,1318,1319,5,150,0,0,1319,1321,3,142,71,0,1320,1318,1,0,0,0,1320, + 1321,1,0,0,0,1321,1324,1,0,0,0,1322,1323,5,150,0,0,1323,1325,3,144,72, + 0,1324,1322,1,0,0,0,1324,1325,1,0,0,0,1325,135,1,0,0,0,1326,1337,5,101, + 0,0,1327,1329,5,150,0,0,1328,1327,1,0,0,0,1328,1329,1,0,0,0,1329,1330, + 1,0,0,0,1330,1332,5,3,0,0,1331,1333,5,150,0,0,1332,1331,1,0,0,0,1332, + 1333,1,0,0,0,1333,1334,1,0,0,0,1334,1336,3,138,69,0,1335,1328,1,0,0,0, + 1336,1339,1,0,0,0,1337,1335,1,0,0,0,1337,1338,1,0,0,0,1338,1355,1,0,0, + 0,1339,1337,1,0,0,0,1340,1351,3,138,69,0,1341,1343,5,150,0,0,1342,1341, + 1,0,0,0,1342,1343,1,0,0,0,1343,1344,1,0,0,0,1344,1346,5,3,0,0,1345,1347, + 5,150,0,0,1346,1345,1,0,0,0,1346,1347,1,0,0,0,1347,1348,1,0,0,0,1348, + 1350,3,138,69,0,1349,1342,1,0,0,0,1350,1353,1,0,0,0,1351,1349,1,0,0,0, + 1351,1352,1,0,0,0,1352,1355,1,0,0,0,1353,1351,1,0,0,0,1354,1326,1,0,0, + 0,1354,1340,1,0,0,0,1355,137,1,0,0,0,1356,1357,3,190,95,0,1357,1358,5, + 150,0,0,1358,1359,5,102,0,0,1359,1360,5,150,0,0,1360,1361,3,270,135,0, + 1361,1364,1,0,0,0,1362,1364,3,190,95,0,1363,1356,1,0,0,0,1363,1362,1, + 0,0,0,1364,139,1,0,0,0,1365,1366,5,103,0,0,1366,1367,5,150,0,0,1367,1368, + 5,104,0,0,1368,1369,5,150,0,0,1369,1377,3,146,73,0,1370,1372,5,3,0,0, + 1371,1373,5,150,0,0,1372,1371,1,0,0,0,1372,1373,1,0,0,0,1373,1374,1,0, + 0,0,1374,1376,3,146,73,0,1375,1370,1,0,0,0,1376,1379,1,0,0,0,1377,1375, + 1,0,0,0,1377,1378,1,0,0,0,1378,141,1,0,0,0,1379,1377,1,0,0,0,1380,1381, + 5,105,0,0,1381,1382,5,150,0,0,1382,1383,3,190,95,0,1383,143,1,0,0,0,1384, + 1385,5,106,0,0,1385,1386,5,150,0,0,1386,1387,3,190,95,0,1387,145,1,0, + 0,0,1388,1393,3,190,95,0,1389,1391,5,150,0,0,1390,1389,1,0,0,0,1390,1391, + 1,0,0,0,1391,1392,1,0,0,0,1392,1394,7,1,0,0,1393,1390,1,0,0,0,1393,1394, + 1,0,0,0,1394,147,1,0,0,0,1395,1396,5,111,0,0,1396,1397,5,150,0,0,1397, + 1398,3,190,95,0,1398,149,1,0,0,0,1399,1410,3,152,76,0,1400,1402,5,150, + 0,0,1401,1400,1,0,0,0,1401,1402,1,0,0,0,1402,1403,1,0,0,0,1403,1405,5, + 3,0,0,1404,1406,5,150,0,0,1405,1404,1,0,0,0,1405,1406,1,0,0,0,1406,1407, + 1,0,0,0,1407,1409,3,152,76,0,1408,1401,1,0,0,0,1409,1412,1,0,0,0,1410, + 1408,1,0,0,0,1410,1411,1,0,0,0,1411,151,1,0,0,0,1412,1410,1,0,0,0,1413, + 1415,3,270,135,0,1414,1416,5,150,0,0,1415,1414,1,0,0,0,1415,1416,1,0, + 0,0,1416,1417,1,0,0,0,1417,1419,5,6,0,0,1418,1420,5,150,0,0,1419,1418, + 1,0,0,0,1419,1420,1,0,0,0,1420,1421,1,0,0,0,1421,1422,3,154,77,0,1422, + 1425,1,0,0,0,1423,1425,3,154,77,0,1424,1413,1,0,0,0,1424,1423,1,0,0,0, + 1425,153,1,0,0,0,1426,1427,3,156,78,0,1427,155,1,0,0,0,1428,1435,3,158, + 79,0,1429,1431,5,150,0,0,1430,1429,1,0,0,0,1430,1431,1,0,0,0,1431,1432, + 1,0,0,0,1432,1434,3,160,80,0,1433,1430,1,0,0,0,1434,1437,1,0,0,0,1435, + 1433,1,0,0,0,1435,1436,1,0,0,0,1436,1443,1,0,0,0,1437,1435,1,0,0,0,1438, + 1439,5,2,0,0,1439,1440,3,156,78,0,1440,1441,5,4,0,0,1441,1443,1,0,0,0, + 1442,1428,1,0,0,0,1442,1438,1,0,0,0,1443,157,1,0,0,0,1444,1446,5,2,0, + 0,1445,1447,5,150,0,0,1446,1445,1,0,0,0,1446,1447,1,0,0,0,1447,1452,1, + 0,0,0,1448,1450,3,270,135,0,1449,1451,5,150,0,0,1450,1449,1,0,0,0,1450, + 1451,1,0,0,0,1451,1453,1,0,0,0,1452,1448,1,0,0,0,1452,1453,1,0,0,0,1453, + 1458,1,0,0,0,1454,1456,3,170,85,0,1455,1457,5,150,0,0,1456,1455,1,0,0, + 0,1456,1457,1,0,0,0,1457,1459,1,0,0,0,1458,1454,1,0,0,0,1458,1459,1,0, + 0,0,1459,1464,1,0,0,0,1460,1462,3,166,83,0,1461,1463,5,150,0,0,1462,1461, + 1,0,0,0,1462,1463,1,0,0,0,1463,1465,1,0,0,0,1464,1460,1,0,0,0,1464,1465, + 1,0,0,0,1465,1466,1,0,0,0,1466,1467,5,4,0,0,1467,159,1,0,0,0,1468,1470, + 3,162,81,0,1469,1471,5,150,0,0,1470,1469,1,0,0,0,1470,1471,1,0,0,0,1471, + 1472,1,0,0,0,1472,1473,3,158,79,0,1473,161,1,0,0,0,1474,1476,3,290,145, + 0,1475,1477,5,150,0,0,1476,1475,1,0,0,0,1476,1477,1,0,0,0,1477,1478,1, + 0,0,0,1478,1480,3,294,147,0,1479,1481,5,150,0,0,1480,1479,1,0,0,0,1480, + 1481,1,0,0,0,1481,1483,1,0,0,0,1482,1484,3,164,82,0,1483,1482,1,0,0,0, + 1483,1484,1,0,0,0,1484,1486,1,0,0,0,1485,1487,5,150,0,0,1486,1485,1,0, + 0,0,1486,1487,1,0,0,0,1487,1488,1,0,0,0,1488,1489,3,294,147,0,1489,1519, + 1,0,0,0,1490,1492,3,294,147,0,1491,1493,5,150,0,0,1492,1491,1,0,0,0,1492, + 1493,1,0,0,0,1493,1495,1,0,0,0,1494,1496,3,164,82,0,1495,1494,1,0,0,0, + 1495,1496,1,0,0,0,1496,1498,1,0,0,0,1497,1499,5,150,0,0,1498,1497,1,0, + 0,0,1498,1499,1,0,0,0,1499,1500,1,0,0,0,1500,1502,3,294,147,0,1501,1503, + 5,150,0,0,1502,1501,1,0,0,0,1502,1503,1,0,0,0,1503,1504,1,0,0,0,1504, + 1505,3,292,146,0,1505,1519,1,0,0,0,1506,1508,3,294,147,0,1507,1509,5, + 150,0,0,1508,1507,1,0,0,0,1508,1509,1,0,0,0,1509,1511,1,0,0,0,1510,1512, + 3,164,82,0,1511,1510,1,0,0,0,1511,1512,1,0,0,0,1512,1514,1,0,0,0,1513, + 1515,5,150,0,0,1514,1513,1,0,0,0,1514,1515,1,0,0,0,1515,1516,1,0,0,0, + 1516,1517,3,294,147,0,1517,1519,1,0,0,0,1518,1474,1,0,0,0,1518,1490,1, + 0,0,0,1518,1506,1,0,0,0,1519,163,1,0,0,0,1520,1522,5,7,0,0,1521,1523, + 5,150,0,0,1522,1521,1,0,0,0,1522,1523,1,0,0,0,1523,1528,1,0,0,0,1524, + 1526,3,270,135,0,1525,1527,5,150,0,0,1526,1525,1,0,0,0,1526,1527,1,0, + 0,0,1527,1529,1,0,0,0,1528,1524,1,0,0,0,1528,1529,1,0,0,0,1529,1534,1, + 0,0,0,1530,1532,3,168,84,0,1531,1533,5,150,0,0,1532,1531,1,0,0,0,1532, + 1533,1,0,0,0,1533,1535,1,0,0,0,1534,1530,1,0,0,0,1534,1535,1,0,0,0,1535, + 1540,1,0,0,0,1536,1538,3,174,87,0,1537,1539,5,150,0,0,1538,1537,1,0,0, + 0,1538,1539,1,0,0,0,1539,1541,1,0,0,0,1540,1536,1,0,0,0,1540,1541,1,0, + 0,0,1541,1546,1,0,0,0,1542,1544,3,166,83,0,1543,1545,5,150,0,0,1544,1543, + 1,0,0,0,1544,1545,1,0,0,0,1545,1547,1,0,0,0,1546,1542,1,0,0,0,1546,1547, + 1,0,0,0,1547,1548,1,0,0,0,1548,1549,5,8,0,0,1549,165,1,0,0,0,1550,1552, + 5,9,0,0,1551,1553,5,150,0,0,1552,1551,1,0,0,0,1552,1553,1,0,0,0,1553, + 1587,1,0,0,0,1554,1556,3,278,139,0,1555,1557,5,150,0,0,1556,1555,1,0, + 0,0,1556,1557,1,0,0,0,1557,1558,1,0,0,0,1558,1560,5,120,0,0,1559,1561, + 5,150,0,0,1560,1559,1,0,0,0,1560,1561,1,0,0,0,1561,1562,1,0,0,0,1562, + 1564,3,190,95,0,1563,1565,5,150,0,0,1564,1563,1,0,0,0,1564,1565,1,0,0, + 0,1565,1584,1,0,0,0,1566,1568,5,3,0,0,1567,1569,5,150,0,0,1568,1567,1, + 0,0,0,1568,1569,1,0,0,0,1569,1570,1,0,0,0,1570,1572,3,278,139,0,1571, + 1573,5,150,0,0,1572,1571,1,0,0,0,1572,1573,1,0,0,0,1573,1574,1,0,0,0, + 1574,1576,5,120,0,0,1575,1577,5,150,0,0,1576,1575,1,0,0,0,1576,1577,1, + 0,0,0,1577,1578,1,0,0,0,1578,1580,3,190,95,0,1579,1581,5,150,0,0,1580, + 1579,1,0,0,0,1580,1581,1,0,0,0,1581,1583,1,0,0,0,1582,1566,1,0,0,0,1583, + 1586,1,0,0,0,1584,1582,1,0,0,0,1584,1585,1,0,0,0,1585,1588,1,0,0,0,1586, + 1584,1,0,0,0,1587,1554,1,0,0,0,1587,1588,1,0,0,0,1588,1589,1,0,0,0,1589, + 1590,5,10,0,0,1590,167,1,0,0,0,1591,1593,5,120,0,0,1592,1594,5,150,0, + 0,1593,1592,1,0,0,0,1593,1594,1,0,0,0,1594,1595,1,0,0,0,1595,1609,3,188, + 94,0,1596,1598,5,150,0,0,1597,1596,1,0,0,0,1597,1598,1,0,0,0,1598,1599, + 1,0,0,0,1599,1601,5,11,0,0,1600,1602,5,120,0,0,1601,1600,1,0,0,0,1601, + 1602,1,0,0,0,1602,1604,1,0,0,0,1603,1605,5,150,0,0,1604,1603,1,0,0,0, + 1604,1605,1,0,0,0,1605,1606,1,0,0,0,1606,1608,3,188,94,0,1607,1597,1, + 0,0,0,1608,1611,1,0,0,0,1609,1607,1,0,0,0,1609,1610,1,0,0,0,1610,169, + 1,0,0,0,1611,1609,1,0,0,0,1612,1619,3,172,86,0,1613,1615,5,150,0,0,1614, + 1613,1,0,0,0,1614,1615,1,0,0,0,1615,1616,1,0,0,0,1616,1618,3,172,86,0, + 1617,1614,1,0,0,0,1618,1621,1,0,0,0,1619,1617,1,0,0,0,1619,1620,1,0,0, + 0,1620,171,1,0,0,0,1621,1619,1,0,0,0,1622,1624,5,120,0,0,1623,1625,5, + 150,0,0,1624,1623,1,0,0,0,1624,1625,1,0,0,0,1625,1626,1,0,0,0,1626,1627, + 3,186,93,0,1627,173,1,0,0,0,1628,1630,5,101,0,0,1629,1631,5,150,0,0,1630, + 1629,1,0,0,0,1630,1631,1,0,0,0,1631,1636,1,0,0,0,1632,1637,5,112,0,0, + 1633,1634,5,86,0,0,1634,1635,5,150,0,0,1635,1637,5,112,0,0,1636,1632, + 1,0,0,0,1636,1633,1,0,0,0,1636,1637,1,0,0,0,1637,1639,1,0,0,0,1638,1640, + 5,150,0,0,1639,1638,1,0,0,0,1639,1640,1,0,0,0,1640,1655,1,0,0,0,1641, + 1643,3,182,91,0,1642,1641,1,0,0,0,1642,1643,1,0,0,0,1643,1645,1,0,0,0, + 1644,1646,5,150,0,0,1645,1644,1,0,0,0,1645,1646,1,0,0,0,1646,1647,1,0, + 0,0,1647,1649,5,12,0,0,1648,1650,5,150,0,0,1649,1648,1,0,0,0,1649,1650, + 1,0,0,0,1650,1652,1,0,0,0,1651,1653,3,184,92,0,1652,1651,1,0,0,0,1652, + 1653,1,0,0,0,1653,1656,1,0,0,0,1654,1656,3,280,140,0,1655,1642,1,0,0, + 0,1655,1654,1,0,0,0,1655,1656,1,0,0,0,1656,1661,1,0,0,0,1657,1659,5,150, + 0,0,1658,1657,1,0,0,0,1658,1659,1,0,0,0,1659,1660,1,0,0,0,1660,1662,3, + 176,88,0,1661,1658,1,0,0,0,1661,1662,1,0,0,0,1662,175,1,0,0,0,1663,1665, + 5,2,0,0,1664,1666,5,150,0,0,1665,1664,1,0,0,0,1665,1666,1,0,0,0,1666, + 1667,1,0,0,0,1667,1669,3,270,135,0,1668,1670,5,150,0,0,1669,1668,1,0, + 0,0,1669,1670,1,0,0,0,1670,1671,1,0,0,0,1671,1673,5,3,0,0,1672,1674,5, + 150,0,0,1673,1672,1,0,0,0,1673,1674,1,0,0,0,1674,1675,1,0,0,0,1675,1684, + 3,270,135,0,1676,1678,5,150,0,0,1677,1676,1,0,0,0,1677,1678,1,0,0,0,1678, + 1679,1,0,0,0,1679,1681,5,11,0,0,1680,1682,5,150,0,0,1681,1680,1,0,0,0, + 1681,1682,1,0,0,0,1682,1683,1,0,0,0,1683,1685,3,148,74,0,1684,1677,1, + 0,0,0,1684,1685,1,0,0,0,1685,1705,1,0,0,0,1686,1688,5,150,0,0,1687,1686, + 1,0,0,0,1687,1688,1,0,0,0,1688,1689,1,0,0,0,1689,1691,5,11,0,0,1690,1692, + 5,150,0,0,1691,1690,1,0,0,0,1691,1692,1,0,0,0,1692,1693,1,0,0,0,1693, + 1695,3,180,90,0,1694,1696,5,150,0,0,1695,1694,1,0,0,0,1695,1696,1,0,0, + 0,1696,1697,1,0,0,0,1697,1699,5,3,0,0,1698,1700,5,150,0,0,1699,1698,1, + 0,0,0,1699,1700,1,0,0,0,1700,1701,1,0,0,0,1701,1703,3,178,89,0,1702,1704, + 5,150,0,0,1703,1702,1,0,0,0,1703,1704,1,0,0,0,1704,1706,1,0,0,0,1705, + 1687,1,0,0,0,1705,1706,1,0,0,0,1706,1707,1,0,0,0,1707,1708,5,4,0,0,1708, + 177,1,0,0,0,1709,1711,5,9,0,0,1710,1712,5,150,0,0,1711,1710,1,0,0,0,1711, + 1712,1,0,0,0,1712,1714,1,0,0,0,1713,1715,3,136,68,0,1714,1713,1,0,0,0, + 1714,1715,1,0,0,0,1715,1717,1,0,0,0,1716,1718,5,150,0,0,1717,1716,1,0, + 0,0,1717,1718,1,0,0,0,1718,1719,1,0,0,0,1719,1720,5,10,0,0,1720,179,1, + 0,0,0,1721,1723,5,9,0,0,1722,1724,5,150,0,0,1723,1722,1,0,0,0,1723,1724, + 1,0,0,0,1724,1726,1,0,0,0,1725,1727,3,136,68,0,1726,1725,1,0,0,0,1726, + 1727,1,0,0,0,1727,1729,1,0,0,0,1728,1730,5,150,0,0,1729,1728,1,0,0,0, + 1729,1730,1,0,0,0,1730,1731,1,0,0,0,1731,1732,5,10,0,0,1732,181,1,0,0, + 0,1733,1734,5,138,0,0,1734,183,1,0,0,0,1735,1736,5,138,0,0,1736,185,1, + 0,0,0,1737,1738,3,284,142,0,1738,187,1,0,0,0,1739,1740,3,284,142,0,1740, + 189,1,0,0,0,1741,1742,3,192,96,0,1742,191,1,0,0,0,1743,1750,3,194,97, + 0,1744,1745,5,150,0,0,1745,1746,5,113,0,0,1746,1747,5,150,0,0,1747,1749, + 3,194,97,0,1748,1744,1,0,0,0,1749,1752,1,0,0,0,1750,1748,1,0,0,0,1750, + 1751,1,0,0,0,1751,193,1,0,0,0,1752,1750,1,0,0,0,1753,1760,3,196,98,0, + 1754,1755,5,150,0,0,1755,1756,5,114,0,0,1756,1757,5,150,0,0,1757,1759, + 3,196,98,0,1758,1754,1,0,0,0,1759,1762,1,0,0,0,1760,1758,1,0,0,0,1760, + 1761,1,0,0,0,1761,195,1,0,0,0,1762,1760,1,0,0,0,1763,1770,3,198,99,0, + 1764,1765,5,150,0,0,1765,1766,5,115,0,0,1766,1767,5,150,0,0,1767,1769, + 3,198,99,0,1768,1764,1,0,0,0,1769,1772,1,0,0,0,1770,1768,1,0,0,0,1770, + 1771,1,0,0,0,1771,197,1,0,0,0,1772,1770,1,0,0,0,1773,1775,5,116,0,0,1774, + 1776,5,150,0,0,1775,1774,1,0,0,0,1775,1776,1,0,0,0,1776,1778,1,0,0,0, + 1777,1773,1,0,0,0,1778,1781,1,0,0,0,1779,1777,1,0,0,0,1779,1780,1,0,0, + 0,1780,1782,1,0,0,0,1781,1779,1,0,0,0,1782,1783,3,200,100,0,1783,199, + 1,0,0,0,1784,1794,3,204,102,0,1785,1787,5,150,0,0,1786,1785,1,0,0,0,1786, + 1787,1,0,0,0,1787,1788,1,0,0,0,1788,1790,3,202,101,0,1789,1791,5,150, + 0,0,1790,1789,1,0,0,0,1790,1791,1,0,0,0,1791,1792,1,0,0,0,1792,1793,3, + 204,102,0,1793,1795,1,0,0,0,1794,1786,1,0,0,0,1794,1795,1,0,0,0,1795, + 1833,1,0,0,0,1796,1798,3,204,102,0,1797,1799,5,150,0,0,1798,1797,1,0, + 0,0,1798,1799,1,0,0,0,1799,1800,1,0,0,0,1800,1802,5,117,0,0,1801,1803, + 5,150,0,0,1802,1801,1,0,0,0,1802,1803,1,0,0,0,1803,1804,1,0,0,0,1804, + 1805,3,204,102,0,1805,1806,1,0,0,0,1806,1807,6,100,-1,0,1807,1833,1,0, + 0,0,1808,1810,3,204,102,0,1809,1811,5,150,0,0,1810,1809,1,0,0,0,1810, + 1811,1,0,0,0,1811,1812,1,0,0,0,1812,1814,3,202,101,0,1813,1815,5,150, + 0,0,1814,1813,1,0,0,0,1814,1815,1,0,0,0,1815,1816,1,0,0,0,1816,1826,3, + 204,102,0,1817,1819,5,150,0,0,1818,1817,1,0,0,0,1818,1819,1,0,0,0,1819, + 1820,1,0,0,0,1820,1822,3,202,101,0,1821,1823,5,150,0,0,1822,1821,1,0, + 0,0,1822,1823,1,0,0,0,1823,1824,1,0,0,0,1824,1825,3,204,102,0,1825,1827, + 1,0,0,0,1826,1818,1,0,0,0,1827,1828,1,0,0,0,1828,1826,1,0,0,0,1828,1829, + 1,0,0,0,1829,1830,1,0,0,0,1830,1831,6,100,-1,0,1831,1833,1,0,0,0,1832, + 1784,1,0,0,0,1832,1796,1,0,0,0,1832,1808,1,0,0,0,1833,201,1,0,0,0,1834, + 1835,7,2,0,0,1835,203,1,0,0,0,1836,1847,3,206,103,0,1837,1839,5,150,0, + 0,1838,1837,1,0,0,0,1838,1839,1,0,0,0,1839,1840,1,0,0,0,1840,1842,5,11, + 0,0,1841,1843,5,150,0,0,1842,1841,1,0,0,0,1842,1843,1,0,0,0,1843,1844, + 1,0,0,0,1844,1846,3,206,103,0,1845,1838,1,0,0,0,1846,1849,1,0,0,0,1847, + 1845,1,0,0,0,1847,1848,1,0,0,0,1848,205,1,0,0,0,1849,1847,1,0,0,0,1850, + 1861,3,208,104,0,1851,1853,5,150,0,0,1852,1851,1,0,0,0,1852,1853,1,0, + 0,0,1853,1854,1,0,0,0,1854,1856,5,18,0,0,1855,1857,5,150,0,0,1856,1855, + 1,0,0,0,1856,1857,1,0,0,0,1857,1858,1,0,0,0,1858,1860,3,208,104,0,1859, + 1852,1,0,0,0,1860,1863,1,0,0,0,1861,1859,1,0,0,0,1861,1862,1,0,0,0,1862, + 207,1,0,0,0,1863,1861,1,0,0,0,1864,1876,3,212,106,0,1865,1867,5,150,0, + 0,1866,1865,1,0,0,0,1866,1867,1,0,0,0,1867,1868,1,0,0,0,1868,1870,3,210, + 105,0,1869,1871,5,150,0,0,1870,1869,1,0,0,0,1870,1871,1,0,0,0,1871,1872, + 1,0,0,0,1872,1873,3,212,106,0,1873,1875,1,0,0,0,1874,1866,1,0,0,0,1875, + 1878,1,0,0,0,1876,1874,1,0,0,0,1876,1877,1,0,0,0,1877,209,1,0,0,0,1878, + 1876,1,0,0,0,1879,1880,7,3,0,0,1880,211,1,0,0,0,1881,1893,3,216,108,0, + 1882,1884,5,150,0,0,1883,1882,1,0,0,0,1883,1884,1,0,0,0,1884,1885,1,0, + 0,0,1885,1887,3,214,107,0,1886,1888,5,150,0,0,1887,1886,1,0,0,0,1887, + 1888,1,0,0,0,1888,1889,1,0,0,0,1889,1890,3,216,108,0,1890,1892,1,0,0, + 0,1891,1883,1,0,0,0,1892,1895,1,0,0,0,1893,1891,1,0,0,0,1893,1894,1,0, + 0,0,1894,213,1,0,0,0,1895,1893,1,0,0,0,1896,1897,7,4,0,0,1897,215,1,0, + 0,0,1898,1910,3,220,110,0,1899,1901,5,150,0,0,1900,1899,1,0,0,0,1900, + 1901,1,0,0,0,1901,1902,1,0,0,0,1902,1904,3,218,109,0,1903,1905,5,150, + 0,0,1904,1903,1,0,0,0,1904,1905,1,0,0,0,1905,1906,1,0,0,0,1906,1907,3, + 220,110,0,1907,1909,1,0,0,0,1908,1900,1,0,0,0,1909,1912,1,0,0,0,1910, + 1908,1,0,0,0,1910,1911,1,0,0,0,1911,217,1,0,0,0,1912,1910,1,0,0,0,1913, + 1914,7,5,0,0,1914,219,1,0,0,0,1915,1926,3,222,111,0,1916,1918,5,150,0, + 0,1917,1916,1,0,0,0,1917,1918,1,0,0,0,1918,1919,1,0,0,0,1919,1921,5,24, + 0,0,1920,1922,5,150,0,0,1921,1920,1,0,0,0,1921,1922,1,0,0,0,1922,1923, + 1,0,0,0,1923,1925,3,222,111,0,1924,1917,1,0,0,0,1925,1928,1,0,0,0,1926, + 1924,1,0,0,0,1926,1927,1,0,0,0,1927,221,1,0,0,0,1928,1926,1,0,0,0,1929, + 1931,5,118,0,0,1930,1932,5,150,0,0,1931,1930,1,0,0,0,1931,1932,1,0,0, + 0,1932,1934,1,0,0,0,1933,1929,1,0,0,0,1934,1937,1,0,0,0,1935,1933,1,0, + 0,0,1935,1936,1,0,0,0,1936,1938,1,0,0,0,1937,1935,1,0,0,0,1938,1943,3, + 224,112,0,1939,1941,5,150,0,0,1940,1939,1,0,0,0,1940,1941,1,0,0,0,1941, + 1942,1,0,0,0,1942,1944,5,119,0,0,1943,1940,1,0,0,0,1943,1944,1,0,0,0, + 1944,223,1,0,0,0,1945,1953,3,234,117,0,1946,1954,3,228,114,0,1947,1949, + 3,226,113,0,1948,1947,1,0,0,0,1949,1950,1,0,0,0,1950,1948,1,0,0,0,1950, + 1951,1,0,0,0,1951,1954,1,0,0,0,1952,1954,3,232,116,0,1953,1946,1,0,0, + 0,1953,1948,1,0,0,0,1953,1952,1,0,0,0,1953,1954,1,0,0,0,1954,225,1,0, + 0,0,1955,1956,5,150,0,0,1956,1958,5,121,0,0,1957,1959,5,150,0,0,1958, + 1957,1,0,0,0,1958,1959,1,0,0,0,1959,1960,1,0,0,0,1960,1975,3,234,117, + 0,1961,1962,5,7,0,0,1962,1963,3,190,95,0,1963,1964,5,8,0,0,1964,1975, + 1,0,0,0,1965,1967,5,7,0,0,1966,1968,3,190,95,0,1967,1966,1,0,0,0,1967, + 1968,1,0,0,0,1968,1969,1,0,0,0,1969,1971,5,120,0,0,1970,1972,3,190,95, + 0,1971,1970,1,0,0,0,1971,1972,1,0,0,0,1972,1973,1,0,0,0,1973,1975,5,8, + 0,0,1974,1955,1,0,0,0,1974,1961,1,0,0,0,1974,1965,1,0,0,0,1975,227,1, + 0,0,0,1976,1988,3,230,115,0,1977,1978,5,150,0,0,1978,1979,5,122,0,0,1979, + 1980,5,150,0,0,1980,1988,5,98,0,0,1981,1982,5,150,0,0,1982,1983,5,123, + 0,0,1983,1984,5,150,0,0,1984,1988,5,98,0,0,1985,1986,5,150,0,0,1986,1988, + 5,124,0,0,1987,1976,1,0,0,0,1987,1977,1,0,0,0,1987,1981,1,0,0,0,1987, + 1985,1,0,0,0,1988,1990,1,0,0,0,1989,1991,5,150,0,0,1990,1989,1,0,0,0, + 1990,1991,1,0,0,0,1991,1992,1,0,0,0,1992,1993,3,234,117,0,1993,229,1, + 0,0,0,1994,1996,5,150,0,0,1995,1994,1,0,0,0,1995,1996,1,0,0,0,1996,1997, + 1,0,0,0,1997,1998,5,25,0,0,1998,231,1,0,0,0,1999,2000,5,150,0,0,2000, + 2001,5,125,0,0,2001,2002,5,150,0,0,2002,2010,5,126,0,0,2003,2004,5,150, + 0,0,2004,2005,5,125,0,0,2005,2006,5,150,0,0,2006,2007,5,116,0,0,2007, + 2008,5,150,0,0,2008,2010,5,126,0,0,2009,1999,1,0,0,0,2009,2003,1,0,0, + 0,2010,233,1,0,0,0,2011,2018,3,236,118,0,2012,2014,5,150,0,0,2013,2012, + 1,0,0,0,2013,2014,1,0,0,0,2014,2015,1,0,0,0,2015,2017,3,264,132,0,2016, + 2013,1,0,0,0,2017,2020,1,0,0,0,2018,2016,1,0,0,0,2018,2019,1,0,0,0,2019, + 235,1,0,0,0,2020,2018,1,0,0,0,2021,2031,3,238,119,0,2022,2031,3,274,137, + 0,2023,2031,3,266,133,0,2024,2031,3,250,125,0,2025,2031,3,252,126,0,2026, + 2031,3,258,129,0,2027,2031,3,260,130,0,2028,2031,3,262,131,0,2029,2031, + 3,270,135,0,2030,2021,1,0,0,0,2030,2022,1,0,0,0,2030,2023,1,0,0,0,2030, + 2024,1,0,0,0,2030,2025,1,0,0,0,2030,2026,1,0,0,0,2030,2027,1,0,0,0,2030, + 2028,1,0,0,0,2030,2029,1,0,0,0,2031,237,1,0,0,0,2032,2039,3,272,136,0, + 2033,2039,5,136,0,0,2034,2039,3,240,120,0,2035,2039,5,126,0,0,2036,2039, + 3,242,121,0,2037,2039,3,246,123,0,2038,2032,1,0,0,0,2038,2033,1,0,0,0, + 2038,2034,1,0,0,0,2038,2035,1,0,0,0,2038,2036,1,0,0,0,2038,2037,1,0,0, + 0,2039,239,1,0,0,0,2040,2041,7,6,0,0,2041,241,1,0,0,0,2042,2044,5,7,0, + 0,2043,2045,5,150,0,0,2044,2043,1,0,0,0,2044,2045,1,0,0,0,2045,2059,1, + 0,0,0,2046,2048,3,190,95,0,2047,2049,5,150,0,0,2048,2047,1,0,0,0,2048, + 2049,1,0,0,0,2049,2056,1,0,0,0,2050,2052,3,244,122,0,2051,2053,5,150, + 0,0,2052,2051,1,0,0,0,2052,2053,1,0,0,0,2053,2055,1,0,0,0,2054,2050,1, + 0,0,0,2055,2058,1,0,0,0,2056,2054,1,0,0,0,2056,2057,1,0,0,0,2057,2060, + 1,0,0,0,2058,2056,1,0,0,0,2059,2046,1,0,0,0,2059,2060,1,0,0,0,2060,2061, + 1,0,0,0,2061,2062,5,8,0,0,2062,243,1,0,0,0,2063,2065,5,3,0,0,2064,2066, + 5,150,0,0,2065,2064,1,0,0,0,2065,2066,1,0,0,0,2066,2068,1,0,0,0,2067, + 2069,3,190,95,0,2068,2067,1,0,0,0,2068,2069,1,0,0,0,2069,245,1,0,0,0, + 2070,2072,5,9,0,0,2071,2073,5,150,0,0,2072,2071,1,0,0,0,2072,2073,1,0, + 0,0,2073,2074,1,0,0,0,2074,2076,3,248,124,0,2075,2077,5,150,0,0,2076, + 2075,1,0,0,0,2076,2077,1,0,0,0,2077,2088,1,0,0,0,2078,2080,5,3,0,0,2079, + 2081,5,150,0,0,2080,2079,1,0,0,0,2080,2081,1,0,0,0,2081,2082,1,0,0,0, + 2082,2084,3,248,124,0,2083,2085,5,150,0,0,2084,2083,1,0,0,0,2084,2085, + 1,0,0,0,2085,2087,1,0,0,0,2086,2078,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,10,0,0,2092,247,1,0,0,0,2093,2096,3,286,143,0,2094,2096,5,136,0,0,2095, + 2093,1,0,0,0,2095,2094,1,0,0,0,2096,2098,1,0,0,0,2097,2099,5,150,0,0, + 2098,2097,1,0,0,0,2098,2099,1,0,0,0,2099,2100,1,0,0,0,2100,2102,5,120, + 0,0,2101,2103,5,150,0,0,2102,2101,1,0,0,0,2102,2103,1,0,0,0,2103,2104, + 1,0,0,0,2104,2105,3,190,95,0,2105,249,1,0,0,0,2106,2108,5,2,0,0,2107, + 2109,5,150,0,0,2108,2107,1,0,0,0,2108,2109,1,0,0,0,2109,2110,1,0,0,0, + 2110,2112,3,190,95,0,2111,2113,5,150,0,0,2112,2111,1,0,0,0,2112,2113, + 1,0,0,0,2113,2114,1,0,0,0,2114,2115,5,4,0,0,2115,251,1,0,0,0,2116,2118, + 5,129,0,0,2117,2119,5,150,0,0,2118,2117,1,0,0,0,2118,2119,1,0,0,0,2119, + 2120,1,0,0,0,2120,2122,5,2,0,0,2121,2123,5,150,0,0,2122,2121,1,0,0,0, + 2122,2123,1,0,0,0,2123,2124,1,0,0,0,2124,2126,5,101,0,0,2125,2127,5,150, + 0,0,2126,2125,1,0,0,0,2126,2127,1,0,0,0,2127,2128,1,0,0,0,2128,2165,5, + 4,0,0,2129,2131,3,254,127,0,2130,2132,5,150,0,0,2131,2130,1,0,0,0,2131, + 2132,1,0,0,0,2132,2133,1,0,0,0,2133,2135,5,2,0,0,2134,2136,5,150,0,0, + 2135,2134,1,0,0,0,2135,2136,1,0,0,0,2136,2141,1,0,0,0,2137,2139,5,100, + 0,0,2138,2140,5,150,0,0,2139,2138,1,0,0,0,2139,2140,1,0,0,0,2140,2142, + 1,0,0,0,2141,2137,1,0,0,0,2141,2142,1,0,0,0,2142,2160,1,0,0,0,2143,2145, + 3,256,128,0,2144,2146,5,150,0,0,2145,2144,1,0,0,0,2145,2146,1,0,0,0,2146, + 2157,1,0,0,0,2147,2149,5,3,0,0,2148,2150,5,150,0,0,2149,2148,1,0,0,0, + 2149,2150,1,0,0,0,2150,2151,1,0,0,0,2151,2153,3,256,128,0,2152,2154,5, + 150,0,0,2153,2152,1,0,0,0,2153,2154,1,0,0,0,2154,2156,1,0,0,0,2155,2147, + 1,0,0,0,2156,2159,1,0,0,0,2157,2155,1,0,0,0,2157,2158,1,0,0,0,2158,2161, + 1,0,0,0,2159,2157,1,0,0,0,2160,2143,1,0,0,0,2160,2161,1,0,0,0,2161,2162, + 1,0,0,0,2162,2163,5,4,0,0,2163,2165,1,0,0,0,2164,2116,1,0,0,0,2164,2129, + 1,0,0,0,2165,253,1,0,0,0,2166,2167,3,286,143,0,2167,255,1,0,0,0,2168, + 2170,3,286,143,0,2169,2171,5,150,0,0,2170,2169,1,0,0,0,2170,2171,1,0, + 0,0,2171,2172,1,0,0,0,2172,2173,5,120,0,0,2173,2175,5,6,0,0,2174,2176, + 5,150,0,0,2175,2174,1,0,0,0,2175,2176,1,0,0,0,2176,2178,1,0,0,0,2177, + 2168,1,0,0,0,2177,2178,1,0,0,0,2178,2179,1,0,0,0,2179,2180,3,190,95,0, + 2180,257,1,0,0,0,2181,2186,3,158,79,0,2182,2184,5,150,0,0,2183,2182,1, + 0,0,0,2183,2184,1,0,0,0,2184,2185,1,0,0,0,2185,2187,3,160,80,0,2186,2183, + 1,0,0,0,2187,2188,1,0,0,0,2188,2186,1,0,0,0,2188,2189,1,0,0,0,2189,259, + 1,0,0,0,2190,2192,5,130,0,0,2191,2193,5,150,0,0,2192,2191,1,0,0,0,2192, + 2193,1,0,0,0,2193,2194,1,0,0,0,2194,2196,5,9,0,0,2195,2197,5,150,0,0, + 2196,2195,1,0,0,0,2196,2197,1,0,0,0,2197,2198,1,0,0,0,2198,2200,5,90, + 0,0,2199,2201,5,150,0,0,2200,2199,1,0,0,0,2200,2201,1,0,0,0,2201,2202, + 1,0,0,0,2202,2207,3,150,75,0,2203,2205,5,150,0,0,2204,2203,1,0,0,0,2204, + 2205,1,0,0,0,2205,2206,1,0,0,0,2206,2208,3,148,74,0,2207,2204,1,0,0,0, + 2207,2208,1,0,0,0,2208,2210,1,0,0,0,2209,2211,5,150,0,0,2210,2209,1,0, + 0,0,2210,2211,1,0,0,0,2211,2212,1,0,0,0,2212,2213,5,10,0,0,2213,261,1, + 0,0,0,2214,2216,5,129,0,0,2215,2217,5,150,0,0,2216,2215,1,0,0,0,2216, + 2217,1,0,0,0,2217,2218,1,0,0,0,2218,2220,5,9,0,0,2219,2221,5,150,0,0, + 2220,2219,1,0,0,0,2220,2221,1,0,0,0,2221,2222,1,0,0,0,2222,2224,5,90, + 0,0,2223,2225,5,150,0,0,2224,2223,1,0,0,0,2224,2225,1,0,0,0,2225,2226, + 1,0,0,0,2226,2231,3,150,75,0,2227,2229,5,150,0,0,2228,2227,1,0,0,0,2228, + 2229,1,0,0,0,2229,2230,1,0,0,0,2230,2232,3,148,74,0,2231,2228,1,0,0,0, + 2231,2232,1,0,0,0,2232,2234,1,0,0,0,2233,2235,5,150,0,0,2234,2233,1,0, + 0,0,2234,2235,1,0,0,0,2235,2236,1,0,0,0,2236,2237,5,10,0,0,2237,263,1, + 0,0,0,2238,2240,5,5,0,0,2239,2241,5,150,0,0,2240,2239,1,0,0,0,2240,2241, + 1,0,0,0,2241,2244,1,0,0,0,2242,2245,3,278,139,0,2243,2245,5,101,0,0,2244, + 2242,1,0,0,0,2244,2243,1,0,0,0,2245,265,1,0,0,0,2246,2251,5,131,0,0,2247, + 2249,5,150,0,0,2248,2247,1,0,0,0,2248,2249,1,0,0,0,2249,2250,1,0,0,0, + 2250,2252,3,268,134,0,2251,2248,1,0,0,0,2252,2253,1,0,0,0,2253,2251,1, + 0,0,0,2253,2254,1,0,0,0,2254,2269,1,0,0,0,2255,2257,5,131,0,0,2256,2258, + 5,150,0,0,2257,2256,1,0,0,0,2257,2258,1,0,0,0,2258,2259,1,0,0,0,2259, + 2264,3,190,95,0,2260,2262,5,150,0,0,2261,2260,1,0,0,0,2261,2262,1,0,0, + 0,2262,2263,1,0,0,0,2263,2265,3,268,134,0,2264,2261,1,0,0,0,2265,2266, + 1,0,0,0,2266,2264,1,0,0,0,2266,2267,1,0,0,0,2267,2269,1,0,0,0,2268,2246, + 1,0,0,0,2268,2255,1,0,0,0,2269,2278,1,0,0,0,2270,2272,5,150,0,0,2271, + 2270,1,0,0,0,2271,2272,1,0,0,0,2272,2273,1,0,0,0,2273,2275,5,132,0,0, + 2274,2276,5,150,0,0,2275,2274,1,0,0,0,2275,2276,1,0,0,0,2276,2277,1,0, + 0,0,2277,2279,3,190,95,0,2278,2271,1,0,0,0,2278,2279,1,0,0,0,2279,2281, + 1,0,0,0,2280,2282,5,150,0,0,2281,2280,1,0,0,0,2281,2282,1,0,0,0,2282, + 2283,1,0,0,0,2283,2284,5,133,0,0,2284,267,1,0,0,0,2285,2287,5,134,0,0, + 2286,2288,5,150,0,0,2287,2286,1,0,0,0,2287,2288,1,0,0,0,2288,2289,1,0, + 0,0,2289,2291,3,190,95,0,2290,2292,5,150,0,0,2291,2290,1,0,0,0,2291,2292, + 1,0,0,0,2292,2293,1,0,0,0,2293,2295,5,135,0,0,2294,2296,5,150,0,0,2295, + 2294,1,0,0,0,2295,2296,1,0,0,0,2296,2297,1,0,0,0,2297,2298,3,190,95,0, + 2298,269,1,0,0,0,2299,2300,3,286,143,0,2300,271,1,0,0,0,2301,2304,3,282, + 141,0,2302,2304,3,280,140,0,2303,2301,1,0,0,0,2303,2302,1,0,0,0,2304, + 273,1,0,0,0,2305,2308,5,26,0,0,2306,2309,3,286,143,0,2307,2309,5,138, + 0,0,2308,2306,1,0,0,0,2308,2307,1,0,0,0,2309,275,1,0,0,0,2310,2312,3, + 236,118,0,2311,2313,5,150,0,0,2312,2311,1,0,0,0,2312,2313,1,0,0,0,2313, + 2314,1,0,0,0,2314,2315,3,264,132,0,2315,277,1,0,0,0,2316,2317,3,284,142, + 0,2317,279,1,0,0,0,2318,2319,5,138,0,0,2319,281,1,0,0,0,2320,2321,5,145, + 0,0,2321,283,1,0,0,0,2322,2323,3,286,143,0,2323,285,1,0,0,0,2324,2330, + 5,146,0,0,2325,2326,5,149,0,0,2326,2330,6,143,-1,0,2327,2330,5,139,0, + 0,2328,2330,3,288,144,0,2329,2324,1,0,0,0,2329,2325,1,0,0,0,2329,2327, + 1,0,0,0,2329,2328,1,0,0,0,2330,287,1,0,0,0,2331,2332,7,7,0,0,2332,289, + 1,0,0,0,2333,2334,7,8,0,0,2334,291,1,0,0,0,2335,2336,7,9,0,0,2336,293, + 1,0,0,0,2337,2338,7,10,0,0,2338,295,1,0,0,0,401,298,302,307,311,316,319, + 323,326,348,354,358,361,367,370,374,378,382,387,391,398,402,410,414,424, + 428,432,437,450,454,462,465,473,476,493,496,500,506,509,523,527,549,553, + 556,559,562,565,569,574,578,588,592,597,602,607,613,617,621,626,633,637, + 641,644,648,652,656,661,665,671,675,687,691,695,699,704,716,720,724,728, + 732,734,738,742,744,758,762,766,770,775,778,782,786,788,792,796,798,834, + 845,867,871,876,887,891,895,903,907,911,917,921,925,931,935,939,943,947, + 951,957,964,969,975,995,999,1007,1017,1022,1027,1031,1036,1042,1047,1050, + 1054,1058,1062,1068,1072,1077,1082,1086,1089,1093,1097,1101,1105,1109, + 1115,1119,1124,1128,1137,1143,1151,1155,1159,1163,1170,1173,1176,1179, + 1185,1188,1192,1196,1200,1203,1207,1217,1223,1230,1243,1247,1251,1255, + 1260,1265,1269,1275,1279,1283,1287,1292,1298,1301,1307,1310,1316,1320, + 1324,1328,1332,1337,1342,1346,1351,1354,1363,1372,1377,1390,1393,1401, + 1405,1410,1415,1419,1424,1430,1435,1442,1446,1450,1452,1456,1458,1462, + 1464,1470,1476,1480,1483,1486,1492,1495,1498,1502,1508,1511,1514,1518, + 1522,1526,1528,1532,1534,1538,1540,1544,1546,1552,1556,1560,1564,1568, + 1572,1576,1580,1584,1587,1593,1597,1601,1604,1609,1614,1619,1624,1630, + 1636,1639,1642,1645,1649,1652,1655,1658,1661,1665,1669,1673,1677,1681, + 1684,1687,1691,1695,1699,1703,1705,1711,1714,1717,1723,1726,1729,1750, + 1760,1770,1775,1779,1786,1790,1794,1798,1802,1810,1814,1818,1822,1828, + 1832,1838,1842,1847,1852,1856,1861,1866,1870,1876,1883,1887,1893,1900, + 1904,1910,1917,1921,1926,1931,1935,1940,1943,1950,1953,1958,1967,1971, + 1974,1987,1990,1995,2009,2013,2018,2030,2038,2044,2048,2052,2056,2059, + 2065,2068,2072,2076,2080,2084,2088,2095,2098,2102,2108,2112,2118,2122, + 2126,2131,2135,2139,2141,2145,2149,2153,2157,2160,2164,2170,2175,2177, + 2183,2188,2192,2196,2200,2204,2207,2210,2216,2220,2224,2228,2231,2234, + 2240,2244,2248,2253,2257,2261,2266,2268,2271,2275,2278,2281,2287,2291, + 2295,2303,2308,2312,2329 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -1140,29 +1146,29 @@ CypherParser::Ku_StatementsContext* CypherParser::ku_Statements() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(294); + setState(296); oC_Cypher(); - setState(305); + setState(307); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(296); + setState(298); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(295); + setState(297); match(CypherParser::SP); } - setState(298); - match(CypherParser::T__0); setState(300); + match(CypherParser::T__0); + setState(302); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 1, _ctx)) { case 1: { - setState(299); + setState(301); match(CypherParser::SP); break; } @@ -1170,22 +1176,22 @@ CypherParser::Ku_StatementsContext* CypherParser::ku_Statements() { default: break; } - setState(302); + setState(304); oC_Cypher(); } - setState(307); + setState(309); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); } - setState(309); + setState(311); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(308); + setState(310); match(CypherParser::SP); } - setState(311); + setState(313); match(CypherParser::EOF); } @@ -1240,41 +1246,41 @@ CypherParser::OC_CypherContext* CypherParser::oC_Cypher() { }); try { enterOuterAlt(_localctx, 1); - setState(314); + setState(316); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::EXPLAIN || _la == CypherParser::PROFILE) { - setState(313); + setState(315); oC_AnyCypherOption(); } - setState(317); + setState(319); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(316); + setState(318); match(CypherParser::SP); } - setState(319); + setState(321); oC_Statement(); - setState(324); + setState(326); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 7, _ctx)) { case 1: { - setState(321); + setState(323); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(320); + setState(322); match(CypherParser::SP); } - setState(323); + setState(325); match(CypherParser::T__0); break; } @@ -1375,6 +1381,10 @@ CypherParser::KU_DetachDatabaseContext* CypherParser::OC_StatementContext::kU_De return getRuleContext(0); } +CypherParser::KU_UseDatabaseContext* CypherParser::OC_StatementContext::kU_UseDatabase() { + return getRuleContext(0); +} + size_t CypherParser::OC_StatementContext::getRuleIndex() const { return CypherParser::RuleOC_Statement; @@ -1393,142 +1403,149 @@ CypherParser::OC_StatementContext* CypherParser::oC_Statement() { exitRule(); }); try { - setState(345); + setState(348); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(326); + setState(328); oC_Query(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(327); + setState(329); kU_CreateNodeTable(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(328); + setState(330); kU_CreateRelTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(329); + setState(331); kU_CreateRelTableGroup(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(330); + setState(332); kU_CreateRdfGraph(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(331); + setState(333); kU_DropTable(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(332); + setState(334); kU_AlterTable(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(333); + setState(335); kU_CopyFrom(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(334); + setState(336); kU_CopyFromByColumn(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(335); + setState(337); kU_CopyTO(); break; } case 11: { enterOuterAlt(_localctx, 11); - setState(336); + setState(338); kU_StandaloneCall(); break; } case 12: { enterOuterAlt(_localctx, 12); - setState(337); + setState(339); kU_CreateMacro(); break; } case 13: { enterOuterAlt(_localctx, 13); - setState(338); + setState(340); kU_CommentOn(); break; } case 14: { enterOuterAlt(_localctx, 14); - setState(339); + setState(341); kU_Transaction(); break; } case 15: { enterOuterAlt(_localctx, 15); - setState(340); + setState(342); kU_Extension(); break; } case 16: { enterOuterAlt(_localctx, 16); - setState(341); + setState(343); kU_ExportDatabase(); break; } case 17: { enterOuterAlt(_localctx, 17); - setState(342); + setState(344); kU_ImportDatabase(); break; } case 18: { enterOuterAlt(_localctx, 18); - setState(343); + setState(345); kU_AttachDatabase(); break; } case 19: { enterOuterAlt(_localctx, 19); - setState(344); + setState(346); kU_DetachDatabase(); break; } + case 20: { + enterOuterAlt(_localctx, 20); + setState(347); + kU_UseDatabase(); + break; + } + default: break; } @@ -1601,39 +1618,39 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(347); + setState(350); match(CypherParser::COPY); - setState(348); + setState(351); match(CypherParser::SP); - setState(349); + setState(352); oC_SchemaName(); - setState(358); + setState(361); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 11, _ctx)) { case 1: { - setState(351); + setState(354); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(350); + setState(353); match(CypherParser::SP); } - setState(353); + setState(356); kU_ColumnNames(); - setState(355); + setState(358); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(354); + setState(357); match(CypherParser::SP); } break; } case 2: { - setState(357); + setState(360); match(CypherParser::SP); break; } @@ -1641,26 +1658,26 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { default: break; } - setState(360); + setState(363); match(CypherParser::FROM); - setState(361); + setState(364); match(CypherParser::SP); - setState(362); + setState(365); kU_ScanSource(); - setState(367); + setState(370); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { case 1: { - setState(364); + setState(367); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(363); + setState(366); match(CypherParser::SP); } - setState(366); + setState(369); kU_ParsingOptions(); break; } @@ -1722,57 +1739,57 @@ CypherParser::KU_ColumnNamesContext* CypherParser::kU_ColumnNames() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(369); + setState(372); match(CypherParser::T__1); - setState(371); + setState(374); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(370); + setState(373); match(CypherParser::SP); } - setState(373); + setState(376); oC_SchemaName(); - setState(384); + setState(387); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(375); + setState(378); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(374); + setState(377); match(CypherParser::SP); } - setState(377); + setState(380); match(CypherParser::T__2); - setState(379); + setState(382); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(378); + setState(381); match(CypherParser::SP); } - setState(381); + setState(384); oC_SchemaName(); } - setState(386); + setState(389); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); } - setState(388); + setState(391); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(387); + setState(390); match(CypherParser::SP); } - setState(390); + setState(393); match(CypherParser::T__3); } @@ -1834,65 +1851,65 @@ CypherParser::KU_ScanSourceContext* CypherParser::kU_ScanSource() { exitRule(); }); try { - setState(411); + setState(414); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 22, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(392); + setState(395); kU_FilePaths(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(393); + setState(396); match(CypherParser::T__1); - setState(395); + setState(398); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(394); + setState(397); match(CypherParser::SP); } - setState(397); + setState(400); oC_Query(); - setState(399); + setState(402); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(398); + setState(401); match(CypherParser::SP); } - setState(401); + setState(404); match(CypherParser::T__3); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(403); + setState(406); oC_Variable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(404); + setState(407); oC_Variable(); - setState(405); + setState(408); match(CypherParser::T__4); - setState(407); + setState(410); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(406); + setState(409); match(CypherParser::SP); } - setState(409); + setState(412); oC_SchemaName(); break; } @@ -1973,67 +1990,67 @@ CypherParser::KU_CopyFromByColumnContext* CypherParser::kU_CopyFromByColumn() { }); try { enterOuterAlt(_localctx, 1); - setState(413); + setState(416); match(CypherParser::COPY); - setState(414); + setState(417); match(CypherParser::SP); - setState(415); + setState(418); oC_SchemaName(); - setState(416); + setState(419); match(CypherParser::SP); - setState(417); + setState(420); match(CypherParser::FROM); - setState(418); + setState(421); match(CypherParser::SP); - setState(419); + setState(422); match(CypherParser::T__1); - setState(421); + setState(424); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(420); + setState(423); match(CypherParser::SP); } - setState(423); + setState(426); match(CypherParser::StringLiteral); - setState(434); + setState(437); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2 || _la == CypherParser::SP) { - setState(425); + setState(428); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(424); + setState(427); match(CypherParser::SP); } - setState(427); + setState(430); match(CypherParser::T__2); - setState(429); + setState(432); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(428); + setState(431); match(CypherParser::SP); } - setState(431); + setState(434); match(CypherParser::StringLiteral); - setState(436); + setState(439); _errHandler->sync(this); _la = _input->LA(1); } - setState(437); + setState(440); match(CypherParser::T__3); - setState(438); + setState(441); match(CypherParser::SP); - setState(439); + setState(442); match(CypherParser::BY); - setState(440); + setState(443); match(CypherParser::SP); - setState(441); + setState(444); match(CypherParser::COLUMN); } @@ -2100,54 +2117,54 @@ CypherParser::KU_CopyTOContext* CypherParser::kU_CopyTO() { }); try { enterOuterAlt(_localctx, 1); - setState(443); + setState(446); match(CypherParser::COPY); - setState(444); + setState(447); match(CypherParser::SP); - setState(445); + setState(448); match(CypherParser::T__1); - setState(447); + setState(450); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(446); + setState(449); match(CypherParser::SP); } - setState(449); + setState(452); oC_Query(); - setState(451); + setState(454); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(450); + setState(453); match(CypherParser::SP); } - setState(453); + setState(456); match(CypherParser::T__3); - setState(454); + setState(457); match(CypherParser::SP); - setState(455); + setState(458); match(CypherParser::TO); - setState(456); + setState(459); match(CypherParser::SP); - setState(457); + setState(460); match(CypherParser::StringLiteral); - setState(462); + setState(465); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 30, _ctx)) { case 1: { - setState(459); + setState(462); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(458); + setState(461); match(CypherParser::SP); } - setState(461); + setState(464); kU_ParsingOptions(); break; } @@ -2216,30 +2233,30 @@ CypherParser::KU_ExportDatabaseContext* CypherParser::kU_ExportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(464); + setState(467); match(CypherParser::EXPORT); - setState(465); + setState(468); match(CypherParser::SP); - setState(466); + setState(469); match(CypherParser::DATABASE); - setState(467); + setState(470); match(CypherParser::SP); - setState(468); + setState(471); match(CypherParser::StringLiteral); - setState(473); + setState(476); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 32, _ctx)) { case 1: { - setState(470); + setState(473); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(469); + setState(472); match(CypherParser::SP); } - setState(472); + setState(475); kU_ParsingOptions(); break; } @@ -2303,15 +2320,15 @@ CypherParser::KU_ImportDatabaseContext* CypherParser::kU_ImportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(475); + setState(478); match(CypherParser::IMPORT); - setState(476); + setState(479); match(CypherParser::SP); - setState(477); + setState(480); match(CypherParser::DATABASE); - setState(478); + setState(481); match(CypherParser::SP); - setState(479); + setState(482); match(CypherParser::StringLiteral); } @@ -2382,26 +2399,26 @@ CypherParser::KU_AttachDatabaseContext* CypherParser::kU_AttachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(481); + setState(484); match(CypherParser::ATTACH); - setState(482); + setState(485); match(CypherParser::SP); - setState(483); + setState(486); match(CypherParser::StringLiteral); - setState(490); + setState(493); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 33, _ctx)) { case 1: { - setState(484); + setState(487); match(CypherParser::SP); - setState(485); + setState(488); match(CypherParser::AS); - setState(486); + setState(489); match(CypherParser::SP); - setState(487); + setState(490); oC_SchemaName(); - setState(488); + setState(491); match(CypherParser::SP); break; } @@ -2409,44 +2426,44 @@ CypherParser::KU_AttachDatabaseContext* CypherParser::kU_AttachDatabase() { default: break; } - setState(506); + setState(509); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 37, _ctx)) { case 1: { - setState(493); + setState(496); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(492); + setState(495); match(CypherParser::SP); } - setState(495); + setState(498); match(CypherParser::T__1); - setState(497); + setState(500); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(496); + setState(499); match(CypherParser::SP); } - setState(499); + setState(502); match(CypherParser::DBTYPE); - setState(500); + setState(503); match(CypherParser::SP); - setState(501); + setState(504); match(CypherParser::StringLiteral); - setState(503); + setState(506); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(502); + setState(505); match(CypherParser::SP); } - setState(505); + setState(508); match(CypherParser::T__3); break; } @@ -2502,11 +2519,65 @@ CypherParser::KU_DetachDatabaseContext* CypherParser::kU_DetachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(508); + setState(511); match(CypherParser::DETACH); - setState(509); + setState(512); match(CypherParser::SP); - setState(510); + setState(513); + oC_SchemaName(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- KU_UseDatabaseContext ------------------------------------------------------------------ + +CypherParser::KU_UseDatabaseContext::KU_UseDatabaseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* CypherParser::KU_UseDatabaseContext::USE() { + return getToken(CypherParser::USE, 0); +} + +tree::TerminalNode* CypherParser::KU_UseDatabaseContext::SP() { + return getToken(CypherParser::SP, 0); +} + +CypherParser::OC_SchemaNameContext* CypherParser::KU_UseDatabaseContext::oC_SchemaName() { + return getRuleContext(0); +} + + +size_t CypherParser::KU_UseDatabaseContext::getRuleIndex() const { + return CypherParser::RuleKU_UseDatabase; +} + + +CypherParser::KU_UseDatabaseContext* CypherParser::kU_UseDatabase() { + KU_UseDatabaseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 24, CypherParser::RuleKU_UseDatabase); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(515); + match(CypherParser::USE); + setState(516); + match(CypherParser::SP); + setState(517); oC_SchemaName(); } @@ -2553,7 +2624,7 @@ size_t CypherParser::KU_StandaloneCallContext::getRuleIndex() const { CypherParser::KU_StandaloneCallContext* CypherParser::kU_StandaloneCall() { KU_StandaloneCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 24, CypherParser::RuleKU_StandaloneCall); + enterRule(_localctx, 26, CypherParser::RuleKU_StandaloneCall); size_t _la = 0; #if __cplusplus > 201703L @@ -2565,31 +2636,31 @@ CypherParser::KU_StandaloneCallContext* CypherParser::kU_StandaloneCall() { }); try { enterOuterAlt(_localctx, 1); - setState(512); + setState(519); match(CypherParser::CALL); - setState(513); + setState(520); match(CypherParser::SP); - setState(514); + setState(521); oC_SymbolicName(); - setState(516); + setState(523); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(515); + setState(522); match(CypherParser::SP); } - setState(518); + setState(525); match(CypherParser::T__5); - setState(520); + setState(527); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(519); + setState(526); match(CypherParser::SP); } - setState(522); + setState(529); oC_Literal(); } @@ -2648,7 +2719,7 @@ size_t CypherParser::KU_CommentOnContext::getRuleIndex() const { CypherParser::KU_CommentOnContext* CypherParser::kU_CommentOn() { KU_CommentOnContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 26, CypherParser::RuleKU_CommentOn); + enterRule(_localctx, 28, CypherParser::RuleKU_CommentOn); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2659,27 +2730,27 @@ CypherParser::KU_CommentOnContext* CypherParser::kU_CommentOn() { }); try { enterOuterAlt(_localctx, 1); - setState(524); + setState(531); match(CypherParser::COMMENT_); - setState(525); + setState(532); match(CypherParser::SP); - setState(526); + setState(533); match(CypherParser::ON); - setState(527); + setState(534); match(CypherParser::SP); - setState(528); + setState(535); match(CypherParser::TABLE); - setState(529); + setState(536); match(CypherParser::SP); - setState(530); + setState(537); oC_SchemaName(); - setState(531); + setState(538); match(CypherParser::SP); - setState(532); + setState(539); match(CypherParser::IS); - setState(533); + setState(540); match(CypherParser::SP); - setState(534); + setState(541); match(CypherParser::StringLiteral); } @@ -2746,7 +2817,7 @@ size_t CypherParser::KU_CreateMacroContext::getRuleIndex() const { CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { KU_CreateMacroContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 28, CypherParser::RuleKU_CreateMacro); + enterRule(_localctx, 30, CypherParser::RuleKU_CreateMacro); size_t _la = 0; #if __cplusplus > 201703L @@ -2759,32 +2830,32 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(536); + setState(543); match(CypherParser::CREATE); - setState(537); + setState(544); match(CypherParser::SP); - setState(538); + setState(545); match(CypherParser::MACRO); - setState(539); + setState(546); match(CypherParser::SP); - setState(540); + setState(547); oC_FunctionName(); - setState(542); + setState(549); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(541); + setState(548); match(CypherParser::SP); } - setState(544); + setState(551); match(CypherParser::T__1); - setState(546); + setState(553); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 41, _ctx)) { case 1: { - setState(545); + setState(552); match(CypherParser::SP); break; } @@ -2792,12 +2863,12 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(549); + setState(556); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 42, _ctx)) { case 1: { - setState(548); + setState(555); kU_PositionalArgs(); break; } @@ -2805,12 +2876,12 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(552); + setState(559); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 43, _ctx)) { case 1: { - setState(551); + setState(558); match(CypherParser::SP); break; } @@ -2818,63 +2889,63 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(555); + setState(562); _errHandler->sync(this); _la = _input->LA(1); - if (((((_la - 49) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 49)) & 17826753) != 0) || ((((_la - 120) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 120)) & 302256385) != 0)) { - setState(554); + if (((((_la - 48) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 48)) & 71307013) != 0) || ((((_la - 121) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 121)) & 302256385) != 0)) { + setState(561); kU_DefaultArg(); } - setState(567); + setState(574); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(558); + setState(565); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(557); + setState(564); match(CypherParser::SP); } - setState(560); + setState(567); match(CypherParser::T__2); - setState(562); + setState(569); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(561); + setState(568); match(CypherParser::SP); } - setState(564); + setState(571); kU_DefaultArg(); } - setState(569); + setState(576); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); } - setState(571); + setState(578); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(570); + setState(577); match(CypherParser::SP); } - setState(573); + setState(580); match(CypherParser::T__3); - setState(574); + setState(581); match(CypherParser::SP); - setState(575); + setState(582); match(CypherParser::AS); - setState(576); + setState(583); match(CypherParser::SP); - setState(577); + setState(584); oC_Expression(); } @@ -2917,7 +2988,7 @@ size_t CypherParser::KU_PositionalArgsContext::getRuleIndex() const { CypherParser::KU_PositionalArgsContext* CypherParser::kU_PositionalArgs() { KU_PositionalArgsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 30, CypherParser::RuleKU_PositionalArgs); + enterRule(_localctx, 32, CypherParser::RuleKU_PositionalArgs); size_t _la = 0; #if __cplusplus > 201703L @@ -2930,35 +3001,35 @@ CypherParser::KU_PositionalArgsContext* CypherParser::kU_PositionalArgs() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(579); + setState(586); oC_SymbolicName(); - setState(590); + setState(597); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 51, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(581); + setState(588); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(580); + setState(587); match(CypherParser::SP); } - setState(583); + setState(590); match(CypherParser::T__2); - setState(585); + setState(592); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(584); + setState(591); match(CypherParser::SP); } - setState(587); + setState(594); oC_SymbolicName(); } - setState(592); + setState(599); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 51, _ctx); } @@ -3007,7 +3078,7 @@ size_t CypherParser::KU_DefaultArgContext::getRuleIndex() const { CypherParser::KU_DefaultArgContext* CypherParser::kU_DefaultArg() { KU_DefaultArgContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 32, CypherParser::RuleKU_DefaultArg); + enterRule(_localctx, 34, CypherParser::RuleKU_DefaultArg); size_t _la = 0; #if __cplusplus > 201703L @@ -3019,29 +3090,29 @@ CypherParser::KU_DefaultArgContext* CypherParser::kU_DefaultArg() { }); try { enterOuterAlt(_localctx, 1); - setState(593); + setState(600); oC_SymbolicName(); - setState(595); + setState(602); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(594); + setState(601); match(CypherParser::SP); } - setState(597); + setState(604); match(CypherParser::COLON); - setState(598); + setState(605); match(CypherParser::T__5); - setState(600); + setState(607); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(599); + setState(606); match(CypherParser::SP); } - setState(602); + setState(609); oC_Literal(); } @@ -3088,7 +3159,7 @@ size_t CypherParser::KU_FilePathsContext::getRuleIndex() const { CypherParser::KU_FilePathsContext* CypherParser::kU_FilePaths() { KU_FilePathsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 34, CypherParser::RuleKU_FilePaths); + enterRule(_localctx, 36, CypherParser::RuleKU_FilePaths); size_t _la = 0; #if __cplusplus > 201703L @@ -3099,96 +3170,96 @@ CypherParser::KU_FilePathsContext* CypherParser::kU_FilePaths() { exitRule(); }); try { - setState(637); + setState(644); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__6: { enterOuterAlt(_localctx, 1); - setState(604); + setState(611); match(CypherParser::T__6); - setState(606); + setState(613); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(605); + setState(612); match(CypherParser::SP); } - setState(608); + setState(615); match(CypherParser::StringLiteral); - setState(619); + setState(626); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2 || _la == CypherParser::SP) { - setState(610); + setState(617); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(609); + setState(616); match(CypherParser::SP); } - setState(612); + setState(619); match(CypherParser::T__2); - setState(614); + setState(621); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(613); + setState(620); match(CypherParser::SP); } - setState(616); + setState(623); match(CypherParser::StringLiteral); - setState(621); + setState(628); _errHandler->sync(this); _la = _input->LA(1); } - setState(622); + setState(629); match(CypherParser::T__7); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(623); + setState(630); match(CypherParser::StringLiteral); break; } case CypherParser::GLOB: { enterOuterAlt(_localctx, 3); - setState(624); + setState(631); match(CypherParser::GLOB); - setState(626); + setState(633); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(625); + setState(632); match(CypherParser::SP); } - setState(628); + setState(635); match(CypherParser::T__1); - setState(630); + setState(637); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(629); + setState(636); match(CypherParser::SP); } - setState(632); + setState(639); match(CypherParser::StringLiteral); - setState(634); + setState(641); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(633); + setState(640); match(CypherParser::SP); } - setState(636); + setState(643); match(CypherParser::T__3); break; } @@ -3237,7 +3308,7 @@ size_t CypherParser::KU_ParsingOptionsContext::getRuleIndex() const { CypherParser::KU_ParsingOptionsContext* CypherParser::kU_ParsingOptions() { KU_ParsingOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 36, CypherParser::RuleKU_ParsingOptions); + enterRule(_localctx, 38, CypherParser::RuleKU_ParsingOptions); size_t _la = 0; #if __cplusplus > 201703L @@ -3250,57 +3321,57 @@ CypherParser::KU_ParsingOptionsContext* CypherParser::kU_ParsingOptions() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(639); + setState(646); match(CypherParser::T__1); - setState(641); + setState(648); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(640); + setState(647); match(CypherParser::SP); } - setState(643); + setState(650); kU_ParsingOption(); - setState(654); + setState(661); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(645); + setState(652); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(644); + setState(651); match(CypherParser::SP); } - setState(647); + setState(654); match(CypherParser::T__2); - setState(649); + setState(656); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(648); + setState(655); match(CypherParser::SP); } - setState(651); + setState(658); kU_ParsingOption(); } - setState(656); + setState(663); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); } - setState(658); + setState(665); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(657); + setState(664); match(CypherParser::SP); } - setState(660); + setState(667); match(CypherParser::T__3); } @@ -3343,7 +3414,7 @@ size_t CypherParser::KU_ParsingOptionContext::getRuleIndex() const { CypherParser::KU_ParsingOptionContext* CypherParser::kU_ParsingOption() { KU_ParsingOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 38, CypherParser::RuleKU_ParsingOption); + enterRule(_localctx, 40, CypherParser::RuleKU_ParsingOption); size_t _la = 0; #if __cplusplus > 201703L @@ -3355,27 +3426,27 @@ CypherParser::KU_ParsingOptionContext* CypherParser::kU_ParsingOption() { }); try { enterOuterAlt(_localctx, 1); - setState(662); + setState(669); oC_SymbolicName(); - setState(664); + setState(671); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(663); + setState(670); match(CypherParser::SP); } - setState(666); + setState(673); match(CypherParser::T__5); - setState(668); + setState(675); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(667); + setState(674); match(CypherParser::SP); } - setState(670); + setState(677); oC_Literal(); } @@ -3434,7 +3505,7 @@ size_t CypherParser::KU_CreateNodeTableContext::getRuleIndex() const { CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { KU_CreateNodeTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 40, CypherParser::RuleKU_CreateNodeTable); + enterRule(_localctx, 42, CypherParser::RuleKU_CreateNodeTable); size_t _la = 0; #if __cplusplus > 201703L @@ -3446,70 +3517,70 @@ CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { }); try { enterOuterAlt(_localctx, 1); - setState(672); + setState(679); match(CypherParser::CREATE); - setState(673); + setState(680); match(CypherParser::SP); - setState(674); + setState(681); match(CypherParser::NODE); - setState(675); + setState(682); match(CypherParser::SP); - setState(676); + setState(683); match(CypherParser::TABLE); - setState(677); + setState(684); match(CypherParser::SP); - setState(678); + setState(685); oC_SchemaName(); - setState(680); + setState(687); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(679); + setState(686); match(CypherParser::SP); } - setState(682); + setState(689); match(CypherParser::T__1); - setState(684); + setState(691); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(683); + setState(690); match(CypherParser::SP); } - setState(686); + setState(693); kU_PropertyDefinitions(); - setState(688); + setState(695); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(687); + setState(694); match(CypherParser::SP); } - setState(690); + setState(697); match(CypherParser::T__2); - setState(692); + setState(699); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(691); + setState(698); match(CypherParser::SP); } - setState(694); + setState(701); kU_CreateNodeConstraint(); - setState(697); + setState(704); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(696); + setState(703); match(CypherParser::SP); } - setState(699); + setState(706); match(CypherParser::T__3); } @@ -3572,7 +3643,7 @@ size_t CypherParser::KU_CreateRelTableContext::getRuleIndex() const { CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { KU_CreateRelTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 42, CypherParser::RuleKU_CreateRelTable); + enterRule(_localctx, 44, CypherParser::RuleKU_CreateRelTable); size_t _la = 0; #if __cplusplus > 201703L @@ -3584,71 +3655,71 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { }); try { enterOuterAlt(_localctx, 1); - setState(701); + setState(708); match(CypherParser::CREATE); - setState(702); + setState(709); match(CypherParser::SP); - setState(703); + setState(710); match(CypherParser::REL); - setState(704); + setState(711); match(CypherParser::SP); - setState(705); + setState(712); match(CypherParser::TABLE); - setState(706); + setState(713); match(CypherParser::SP); - setState(707); + setState(714); oC_SchemaName(); - setState(709); + setState(716); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(708); + setState(715); match(CypherParser::SP); } - setState(711); + setState(718); match(CypherParser::T__1); - setState(713); + setState(720); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(712); + setState(719); match(CypherParser::SP); } - setState(715); + setState(722); kU_RelTableConnection(); - setState(717); + setState(724); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(716); + setState(723); match(CypherParser::SP); } - setState(727); + setState(734); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 79, _ctx)) { case 1: { - setState(719); + setState(726); match(CypherParser::T__2); - setState(721); + setState(728); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(720); + setState(727); match(CypherParser::SP); } - setState(723); + setState(730); kU_PropertyDefinitions(); - setState(725); + setState(732); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(724); + setState(731); match(CypherParser::SP); } break; @@ -3657,33 +3728,33 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { default: break; } - setState(737); + setState(744); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__2) { - setState(729); + setState(736); match(CypherParser::T__2); - setState(731); + setState(738); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(730); + setState(737); match(CypherParser::SP); } - setState(733); + setState(740); oC_SymbolicName(); - setState(735); + setState(742); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(734); + setState(741); match(CypherParser::SP); } } - setState(739); + setState(746); match(CypherParser::T__3); } @@ -3754,7 +3825,7 @@ size_t CypherParser::KU_CreateRelTableGroupContext::getRuleIndex() const { CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGroup() { KU_CreateRelTableGroupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 44, CypherParser::RuleKU_CreateRelTableGroup); + enterRule(_localctx, 46, CypherParser::RuleKU_CreateRelTableGroup); size_t _la = 0; #if __cplusplus > 201703L @@ -3767,69 +3838,69 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou try { size_t alt; enterOuterAlt(_localctx, 1); - setState(741); + setState(748); match(CypherParser::CREATE); - setState(742); + setState(749); match(CypherParser::SP); - setState(743); + setState(750); match(CypherParser::REL); - setState(744); + setState(751); match(CypherParser::SP); - setState(745); + setState(752); match(CypherParser::TABLE); - setState(746); + setState(753); match(CypherParser::SP); - setState(747); + setState(754); match(CypherParser::GROUP); - setState(748); + setState(755); match(CypherParser::SP); - setState(749); + setState(756); oC_SchemaName(); - setState(751); + setState(758); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(750); + setState(757); match(CypherParser::SP); } - setState(753); + setState(760); match(CypherParser::T__1); - setState(755); + setState(762); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(754); + setState(761); match(CypherParser::SP); } - setState(757); + setState(764); kU_RelTableConnection(); - setState(759); + setState(766); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(758); + setState(765); match(CypherParser::SP); } - setState(766); + setState(773); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(761); + setState(768); match(CypherParser::T__2); - setState(763); + setState(770); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(762); + setState(769); match(CypherParser::SP); } - setState(765); + setState(772); kU_RelTableConnection(); break; } @@ -3837,41 +3908,41 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: throw NoViableAltException(this); } - setState(768); + setState(775); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 87, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(771); + setState(778); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(770); + setState(777); match(CypherParser::SP); } - setState(781); + setState(788); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 91, _ctx)) { case 1: { - setState(773); + setState(780); match(CypherParser::T__2); - setState(775); + setState(782); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(774); + setState(781); match(CypherParser::SP); } - setState(777); + setState(784); kU_PropertyDefinitions(); - setState(779); + setState(786); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(778); + setState(785); match(CypherParser::SP); } break; @@ -3880,33 +3951,33 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: break; } - setState(791); + setState(798); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__2) { - setState(783); + setState(790); match(CypherParser::T__2); - setState(785); + setState(792); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(784); + setState(791); match(CypherParser::SP); } - setState(787); + setState(794); oC_SymbolicName(); - setState(789); + setState(796); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(788); + setState(795); match(CypherParser::SP); } } - setState(793); + setState(800); match(CypherParser::T__3); } @@ -3957,7 +4028,7 @@ size_t CypherParser::KU_RelTableConnectionContext::getRuleIndex() const { CypherParser::KU_RelTableConnectionContext* CypherParser::kU_RelTableConnection() { KU_RelTableConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 46, CypherParser::RuleKU_RelTableConnection); + enterRule(_localctx, 48, CypherParser::RuleKU_RelTableConnection); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3968,19 +4039,19 @@ CypherParser::KU_RelTableConnectionContext* CypherParser::kU_RelTableConnection( }); try { enterOuterAlt(_localctx, 1); - setState(795); + setState(802); match(CypherParser::FROM); - setState(796); + setState(803); match(CypherParser::SP); - setState(797); + setState(804); oC_SchemaName(); - setState(798); + setState(805); match(CypherParser::SP); - setState(799); + setState(806); match(CypherParser::TO); - setState(800); + setState(807); match(CypherParser::SP); - setState(801); + setState(808); oC_SchemaName(); } @@ -4027,7 +4098,7 @@ size_t CypherParser::KU_CreateRdfGraphContext::getRuleIndex() const { CypherParser::KU_CreateRdfGraphContext* CypherParser::kU_CreateRdfGraph() { KU_CreateRdfGraphContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 48, CypherParser::RuleKU_CreateRdfGraph); + enterRule(_localctx, 50, CypherParser::RuleKU_CreateRdfGraph); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4038,15 +4109,15 @@ CypherParser::KU_CreateRdfGraphContext* CypherParser::kU_CreateRdfGraph() { }); try { enterOuterAlt(_localctx, 1); - setState(803); + setState(810); match(CypherParser::CREATE); - setState(804); + setState(811); match(CypherParser::SP); - setState(805); + setState(812); match(CypherParser::RDFGRAPH); - setState(806); + setState(813); match(CypherParser::SP); - setState(807); + setState(814); oC_SchemaName(); } @@ -4097,7 +4168,7 @@ size_t CypherParser::KU_DropTableContext::getRuleIndex() const { CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { KU_DropTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 50, CypherParser::RuleKU_DropTable); + enterRule(_localctx, 52, CypherParser::RuleKU_DropTable); size_t _la = 0; #if __cplusplus > 201703L @@ -4109,11 +4180,11 @@ CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { }); try { enterOuterAlt(_localctx, 1); - setState(809); + setState(816); match(CypherParser::DROP); - setState(810); + setState(817); match(CypherParser::SP); - setState(811); + setState(818); _la = _input->LA(1); if (!(_la == CypherParser::TABLE @@ -4124,9 +4195,9 @@ CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { _errHandler->reportMatch(this); consume(); } - setState(812); + setState(819); match(CypherParser::SP); - setState(813); + setState(820); oC_SchemaName(); } @@ -4177,7 +4248,7 @@ size_t CypherParser::KU_AlterTableContext::getRuleIndex() const { CypherParser::KU_AlterTableContext* CypherParser::kU_AlterTable() { KU_AlterTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 52, CypherParser::RuleKU_AlterTable); + enterRule(_localctx, 54, CypherParser::RuleKU_AlterTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4188,19 +4259,19 @@ CypherParser::KU_AlterTableContext* CypherParser::kU_AlterTable() { }); try { enterOuterAlt(_localctx, 1); - setState(815); + setState(822); match(CypherParser::ALTER); - setState(816); + setState(823); match(CypherParser::SP); - setState(817); + setState(824); match(CypherParser::TABLE); - setState(818); + setState(825); match(CypherParser::SP); - setState(819); + setState(826); oC_SchemaName(); - setState(820); + setState(827); match(CypherParser::SP); - setState(821); + setState(828); kU_AlterOptions(); } @@ -4243,7 +4314,7 @@ size_t CypherParser::KU_AlterOptionsContext::getRuleIndex() const { CypherParser::KU_AlterOptionsContext* CypherParser::kU_AlterOptions() { KU_AlterOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 54, CypherParser::RuleKU_AlterOptions); + enterRule(_localctx, 56, CypherParser::RuleKU_AlterOptions); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4253,33 +4324,33 @@ CypherParser::KU_AlterOptionsContext* CypherParser::kU_AlterOptions() { exitRule(); }); try { - setState(827); + setState(834); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 95, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(823); + setState(830); kU_AddProperty(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(824); + setState(831); kU_DropProperty(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(825); + setState(832); kU_RenameTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(826); + setState(833); kU_RenameProperty(); break; } @@ -4340,7 +4411,7 @@ size_t CypherParser::KU_AddPropertyContext::getRuleIndex() const { CypherParser::KU_AddPropertyContext* CypherParser::kU_AddProperty() { KU_AddPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 56, CypherParser::RuleKU_AddProperty); + enterRule(_localctx, 58, CypherParser::RuleKU_AddProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4351,28 +4422,28 @@ CypherParser::KU_AddPropertyContext* CypherParser::kU_AddProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(829); + setState(836); match(CypherParser::ADD); - setState(830); + setState(837); match(CypherParser::SP); - setState(831); + setState(838); oC_PropertyKeyName(); - setState(832); + setState(839); match(CypherParser::SP); - setState(833); + setState(840); kU_DataType(0); - setState(838); + setState(845); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 96, _ctx)) { case 1: { - setState(834); + setState(841); match(CypherParser::SP); - setState(835); + setState(842); match(CypherParser::DEFAULT); - setState(836); + setState(843); match(CypherParser::SP); - setState(837); + setState(844); oC_Expression(); break; } @@ -4417,7 +4488,7 @@ size_t CypherParser::KU_DropPropertyContext::getRuleIndex() const { CypherParser::KU_DropPropertyContext* CypherParser::kU_DropProperty() { KU_DropPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 58, CypherParser::RuleKU_DropProperty); + enterRule(_localctx, 60, CypherParser::RuleKU_DropProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4428,11 +4499,11 @@ CypherParser::KU_DropPropertyContext* CypherParser::kU_DropProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(840); + setState(847); match(CypherParser::DROP); - setState(841); + setState(848); match(CypherParser::SP); - setState(842); + setState(849); oC_PropertyKeyName(); } @@ -4479,7 +4550,7 @@ size_t CypherParser::KU_RenameTableContext::getRuleIndex() const { CypherParser::KU_RenameTableContext* CypherParser::kU_RenameTable() { KU_RenameTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 60, CypherParser::RuleKU_RenameTable); + enterRule(_localctx, 62, CypherParser::RuleKU_RenameTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4490,15 +4561,15 @@ CypherParser::KU_RenameTableContext* CypherParser::kU_RenameTable() { }); try { enterOuterAlt(_localctx, 1); - setState(844); + setState(851); match(CypherParser::RENAME); - setState(845); + setState(852); match(CypherParser::SP); - setState(846); + setState(853); match(CypherParser::TO); - setState(847); + setState(854); match(CypherParser::SP); - setState(848); + setState(855); oC_SchemaName(); } @@ -4549,7 +4620,7 @@ size_t CypherParser::KU_RenamePropertyContext::getRuleIndex() const { CypherParser::KU_RenamePropertyContext* CypherParser::kU_RenameProperty() { KU_RenamePropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 62, CypherParser::RuleKU_RenameProperty); + enterRule(_localctx, 64, CypherParser::RuleKU_RenameProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4560,19 +4631,19 @@ CypherParser::KU_RenamePropertyContext* CypherParser::kU_RenameProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(850); + setState(857); match(CypherParser::RENAME); - setState(851); + setState(858); match(CypherParser::SP); - setState(852); + setState(859); oC_PropertyKeyName(); - setState(853); + setState(860); match(CypherParser::SP); - setState(854); + setState(861); match(CypherParser::TO); - setState(855); + setState(862); match(CypherParser::SP); - setState(856); + setState(863); oC_PropertyKeyName(); } @@ -4615,7 +4686,7 @@ size_t CypherParser::KU_PropertyDefinitionsContext::getRuleIndex() const { CypherParser::KU_PropertyDefinitionsContext* CypherParser::kU_PropertyDefinitions() { KU_PropertyDefinitionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 64, CypherParser::RuleKU_PropertyDefinitions); + enterRule(_localctx, 66, CypherParser::RuleKU_PropertyDefinitions); size_t _la = 0; #if __cplusplus > 201703L @@ -4628,35 +4699,35 @@ CypherParser::KU_PropertyDefinitionsContext* CypherParser::kU_PropertyDefinition try { size_t alt; enterOuterAlt(_localctx, 1); - setState(858); + setState(865); kU_PropertyDefinition(); - setState(869); + setState(876); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 99, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(860); + setState(867); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(859); + setState(866); match(CypherParser::SP); } - setState(862); + setState(869); match(CypherParser::T__2); - setState(864); + setState(871); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(863); + setState(870); match(CypherParser::SP); } - setState(866); + setState(873); kU_PropertyDefinition(); } - setState(871); + setState(878); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 99, _ctx); } @@ -4697,7 +4768,7 @@ size_t CypherParser::KU_PropertyDefinitionContext::getRuleIndex() const { CypherParser::KU_PropertyDefinitionContext* CypherParser::kU_PropertyDefinition() { KU_PropertyDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 66, CypherParser::RuleKU_PropertyDefinition); + enterRule(_localctx, 68, CypherParser::RuleKU_PropertyDefinition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4708,11 +4779,11 @@ CypherParser::KU_PropertyDefinitionContext* CypherParser::kU_PropertyDefinition( }); try { enterOuterAlt(_localctx, 1); - setState(872); + setState(879); oC_PropertyKeyName(); - setState(873); + setState(880); match(CypherParser::SP); - setState(874); + setState(881); kU_DataType(0); } @@ -4759,7 +4830,7 @@ size_t CypherParser::KU_CreateNodeConstraintContext::getRuleIndex() const { CypherParser::KU_CreateNodeConstraintContext* CypherParser::kU_CreateNodeConstraint() { KU_CreateNodeConstraintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 68, CypherParser::RuleKU_CreateNodeConstraint); + enterRule(_localctx, 70, CypherParser::RuleKU_CreateNodeConstraint); size_t _la = 0; #if __cplusplus > 201703L @@ -4771,41 +4842,41 @@ CypherParser::KU_CreateNodeConstraintContext* CypherParser::kU_CreateNodeConstra }); try { enterOuterAlt(_localctx, 1); - setState(876); + setState(883); match(CypherParser::PRIMARY); - setState(877); + setState(884); match(CypherParser::SP); - setState(878); + setState(885); match(CypherParser::KEY); - setState(880); + setState(887); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(879); + setState(886); match(CypherParser::SP); } - setState(882); + setState(889); match(CypherParser::T__1); - setState(884); + setState(891); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(883); + setState(890); match(CypherParser::SP); } - setState(886); + setState(893); oC_PropertyKeyName(); - setState(888); + setState(895); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(887); + setState(894); match(CypherParser::SP); } - setState(890); + setState(897); match(CypherParser::T__3); } @@ -4873,8 +4944,8 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { CypherParser::KU_DataTypeContext *_localctx = _tracker.createInstance(_ctx, parentState); CypherParser::KU_DataTypeContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 70; - enterRecursionRule(_localctx, 70, CypherParser::RuleKU_DataType, precedence); + size_t startState = 72; + enterRecursionRule(_localctx, 72, CypherParser::RuleKU_DataType, precedence); size_t _la = 0; @@ -4888,139 +4959,139 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(944); + setState(951); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 114, _ctx)) { case 1: { - setState(893); + setState(900); oC_SymbolicName(); break; } case 2: { - setState(894); + setState(901); match(CypherParser::UNION); - setState(896); + setState(903); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(895); + setState(902); match(CypherParser::SP); } - setState(898); + setState(905); match(CypherParser::T__1); - setState(900); + setState(907); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(899); + setState(906); match(CypherParser::SP); } - setState(902); + setState(909); kU_PropertyDefinitions(); - setState(904); + setState(911); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(903); + setState(910); match(CypherParser::SP); } - setState(906); + setState(913); match(CypherParser::T__3); break; } case 3: { - setState(908); + setState(915); oC_SymbolicName(); - setState(910); + setState(917); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(909); + setState(916); match(CypherParser::SP); } - setState(912); + setState(919); match(CypherParser::T__1); - setState(914); + setState(921); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(913); + setState(920); match(CypherParser::SP); } - setState(916); + setState(923); kU_PropertyDefinitions(); - setState(918); + setState(925); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(917); + setState(924); match(CypherParser::SP); } - setState(920); + setState(927); match(CypherParser::T__3); break; } case 4: { - setState(922); + setState(929); oC_SymbolicName(); - setState(924); + setState(931); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(923); + setState(930); match(CypherParser::SP); } - setState(926); + setState(933); match(CypherParser::T__1); - setState(928); + setState(935); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(927); + setState(934); match(CypherParser::SP); } - setState(930); + setState(937); kU_DataType(0); - setState(932); + setState(939); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(931); + setState(938); match(CypherParser::SP); } - setState(934); + setState(941); match(CypherParser::T__2); - setState(936); + setState(943); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(935); + setState(942); match(CypherParser::SP); } - setState(938); + setState(945); kU_DataType(0); - setState(940); + setState(947); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(939); + setState(946); match(CypherParser::SP); } - setState(942); + setState(949); match(CypherParser::T__3); break; } @@ -5029,7 +5100,7 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { break; } _ctx->stop = _input->LT(-1); - setState(950); + setState(957); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 115, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { @@ -5039,13 +5110,13 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { previousContext = _localctx; _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleKU_DataType); - setState(946); + setState(953); if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(947); + setState(954); kU_ListIdentifiers(); } - setState(952); + setState(959); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 115, _ctx); } @@ -5080,7 +5151,7 @@ size_t CypherParser::KU_ListIdentifiersContext::getRuleIndex() const { CypherParser::KU_ListIdentifiersContext* CypherParser::kU_ListIdentifiers() { KU_ListIdentifiersContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 72, CypherParser::RuleKU_ListIdentifiers); + enterRule(_localctx, 74, CypherParser::RuleKU_ListIdentifiers); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5092,17 +5163,17 @@ CypherParser::KU_ListIdentifiersContext* CypherParser::kU_ListIdentifiers() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(953); + setState(960); kU_ListIdentifier(); - setState(957); + setState(964); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 116, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(954); + setState(961); kU_ListIdentifier(); } - setState(959); + setState(966); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 116, _ctx); } @@ -5135,7 +5206,7 @@ size_t CypherParser::KU_ListIdentifierContext::getRuleIndex() const { CypherParser::KU_ListIdentifierContext* CypherParser::kU_ListIdentifier() { KU_ListIdentifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 74, CypherParser::RuleKU_ListIdentifier); + enterRule(_localctx, 76, CypherParser::RuleKU_ListIdentifier); size_t _la = 0; #if __cplusplus > 201703L @@ -5147,17 +5218,17 @@ CypherParser::KU_ListIdentifierContext* CypherParser::kU_ListIdentifier() { }); try { enterOuterAlt(_localctx, 1); - setState(960); + setState(967); match(CypherParser::T__6); - setState(962); + setState(969); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(961); + setState(968); oC_IntegerLiteral(); } - setState(964); + setState(971); match(CypherParser::T__7); } @@ -5192,7 +5263,7 @@ size_t CypherParser::OC_AnyCypherOptionContext::getRuleIndex() const { CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { OC_AnyCypherOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 76, CypherParser::RuleOC_AnyCypherOption); + enterRule(_localctx, 78, CypherParser::RuleOC_AnyCypherOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5202,19 +5273,19 @@ CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { exitRule(); }); try { - setState(968); + setState(975); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::EXPLAIN: { enterOuterAlt(_localctx, 1); - setState(966); + setState(973); oC_Explain(); break; } case CypherParser::PROFILE: { enterOuterAlt(_localctx, 2); - setState(967); + setState(974); oC_Profile(); break; } @@ -5251,7 +5322,7 @@ size_t CypherParser::OC_ExplainContext::getRuleIndex() const { CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { OC_ExplainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, CypherParser::RuleOC_Explain); + enterRule(_localctx, 80, CypherParser::RuleOC_Explain); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5262,7 +5333,7 @@ CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { }); try { enterOuterAlt(_localctx, 1); - setState(970); + setState(977); match(CypherParser::EXPLAIN); } @@ -5293,7 +5364,7 @@ size_t CypherParser::OC_ProfileContext::getRuleIndex() const { CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { OC_ProfileContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, CypherParser::RuleOC_Profile); + enterRule(_localctx, 82, CypherParser::RuleOC_Profile); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5304,7 +5375,7 @@ CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { }); try { enterOuterAlt(_localctx, 1); - setState(972); + setState(979); match(CypherParser::PROFILE); } @@ -5371,7 +5442,7 @@ size_t CypherParser::KU_TransactionContext::getRuleIndex() const { CypherParser::KU_TransactionContext* CypherParser::kU_Transaction() { KU_TransactionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, CypherParser::RuleKU_Transaction); + enterRule(_localctx, 84, CypherParser::RuleKU_Transaction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5381,63 +5452,63 @@ CypherParser::KU_TransactionContext* CypherParser::kU_Transaction() { exitRule(); }); try { - setState(988); + setState(995); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 119, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(974); + setState(981); match(CypherParser::BEGIN); - setState(975); + setState(982); match(CypherParser::SP); - setState(976); + setState(983); match(CypherParser::TRANSACTION); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(977); + setState(984); match(CypherParser::BEGIN); - setState(978); + setState(985); match(CypherParser::SP); - setState(979); + setState(986); match(CypherParser::TRANSACTION); - setState(980); + setState(987); match(CypherParser::SP); - setState(981); + setState(988); match(CypherParser::READ); - setState(982); + setState(989); match(CypherParser::SP); - setState(983); + setState(990); match(CypherParser::ONLY); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(984); + setState(991); match(CypherParser::COMMIT); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(985); + setState(992); match(CypherParser::COMMIT_SKIP_CHECKPOINT); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(986); + setState(993); match(CypherParser::ROLLBACK); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(987); + setState(994); match(CypherParser::ROLLBACK_SKIP_CHECKPOINT); break; } @@ -5478,7 +5549,7 @@ size_t CypherParser::KU_ExtensionContext::getRuleIndex() const { CypherParser::KU_ExtensionContext* CypherParser::kU_Extension() { KU_ExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, CypherParser::RuleKU_Extension); + enterRule(_localctx, 86, CypherParser::RuleKU_Extension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5488,19 +5559,19 @@ CypherParser::KU_ExtensionContext* CypherParser::kU_Extension() { exitRule(); }); try { - setState(992); + setState(999); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::LOAD: { enterOuterAlt(_localctx, 1); - setState(990); + setState(997); kU_LoadExtension(); break; } case CypherParser::INSTALL: { enterOuterAlt(_localctx, 2); - setState(991); + setState(998); kU_InstallExtension(); break; } @@ -5557,7 +5628,7 @@ size_t CypherParser::KU_LoadExtensionContext::getRuleIndex() const { CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { KU_LoadExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, CypherParser::RuleKU_LoadExtension); + enterRule(_localctx, 88, CypherParser::RuleKU_LoadExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5568,23 +5639,24 @@ CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(994); + setState(1001); match(CypherParser::LOAD); - setState(995); + setState(1002); match(CypherParser::SP); - setState(996); + setState(1003); match(CypherParser::EXTENSION); - setState(997); + setState(1004); match(CypherParser::SP); - setState(1000); + setState(1007); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::StringLiteral: { - setState(998); + setState(1005); match(CypherParser::StringLiteral); break; } + case CypherParser::USE: case CypherParser::COMMENT_: case CypherParser::EXPORT: case CypherParser::IMPORT: @@ -5598,7 +5670,7 @@ CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(999); + setState(1006); oC_Variable(); break; } @@ -5643,7 +5715,7 @@ size_t CypherParser::KU_InstallExtensionContext::getRuleIndex() const { CypherParser::KU_InstallExtensionContext* CypherParser::kU_InstallExtension() { KU_InstallExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, CypherParser::RuleKU_InstallExtension); + enterRule(_localctx, 90, CypherParser::RuleKU_InstallExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5654,11 +5726,11 @@ CypherParser::KU_InstallExtensionContext* CypherParser::kU_InstallExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1002); + setState(1009); match(CypherParser::INSTALL); - setState(1003); + setState(1010); match(CypherParser::SP); - setState(1004); + setState(1011); oC_Variable(); } @@ -5689,7 +5761,7 @@ size_t CypherParser::OC_QueryContext::getRuleIndex() const { CypherParser::OC_QueryContext* CypherParser::oC_Query() { OC_QueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, CypherParser::RuleOC_Query); + enterRule(_localctx, 92, CypherParser::RuleOC_Query); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5700,7 +5772,7 @@ CypherParser::OC_QueryContext* CypherParser::oC_Query() { }); try { enterOuterAlt(_localctx, 1); - setState(1006); + setState(1013); oC_RegularQuery(); } @@ -5755,7 +5827,7 @@ size_t CypherParser::OC_RegularQueryContext::getRuleIndex() const { CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { OC_RegularQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, CypherParser::RuleOC_RegularQuery); + enterRule(_localctx, 94, CypherParser::RuleOC_RegularQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -5767,30 +5839,30 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { }); try { size_t alt; - setState(1029); + setState(1036); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 126, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1008); - oC_SingleQuery(); setState(1015); + oC_SingleQuery(); + setState(1022); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 123, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1010); + setState(1017); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1009); + setState(1016); match(CypherParser::SP); } - setState(1012); + setState(1019); oC_Union(); } - setState(1017); + setState(1024); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 123, _ctx); } @@ -5799,20 +5871,20 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { case 2: { enterOuterAlt(_localctx, 2); - setState(1022); + setState(1029); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1018); + setState(1025); oC_Return(); - setState(1020); + setState(1027); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1019); + setState(1026); match(CypherParser::SP); } break; @@ -5821,11 +5893,11 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { default: throw NoViableAltException(this); } - setState(1024); + setState(1031); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 125, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1026); + setState(1033); oC_SingleQuery(); notifyReturnNotAtEnd(_localctx->start); break; @@ -5879,7 +5951,7 @@ size_t CypherParser::OC_UnionContext::getRuleIndex() const { CypherParser::OC_UnionContext* CypherParser::oC_Union() { OC_UnionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, CypherParser::RuleOC_Union); + enterRule(_localctx, 96, CypherParser::RuleOC_Union); size_t _la = 0; #if __cplusplus > 201703L @@ -5890,43 +5962,43 @@ CypherParser::OC_UnionContext* CypherParser::oC_Union() { exitRule(); }); try { - setState(1043); + setState(1050); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 129, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1031); + setState(1038); match(CypherParser::UNION); - setState(1032); + setState(1039); match(CypherParser::SP); - setState(1033); + setState(1040); match(CypherParser::ALL); - setState(1035); + setState(1042); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1034); + setState(1041); match(CypherParser::SP); } - setState(1037); + setState(1044); oC_SingleQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1038); + setState(1045); match(CypherParser::UNION); - setState(1040); + setState(1047); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1039); + setState(1046); match(CypherParser::SP); } - setState(1042); + setState(1049); oC_SingleQuery(); break; } @@ -5967,7 +6039,7 @@ size_t CypherParser::OC_SingleQueryContext::getRuleIndex() const { CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { OC_SingleQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, CypherParser::RuleOC_SingleQuery); + enterRule(_localctx, 98, CypherParser::RuleOC_SingleQuery); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5977,19 +6049,19 @@ CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { exitRule(); }); try { - setState(1047); + setState(1054); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 130, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1045); + setState(1052); oC_SinglePartQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1046); + setState(1053); oC_MultiPartQuery(); break; } @@ -6050,7 +6122,7 @@ size_t CypherParser::OC_SinglePartQueryContext::getRuleIndex() const { CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { OC_SinglePartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, CypherParser::RuleOC_SinglePartQuery); + enterRule(_localctx, 100, CypherParser::RuleOC_SinglePartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -6062,92 +6134,92 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { }); try { size_t alt; - setState(1094); + setState(1101); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 141, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1055); + setState(1062); _errHandler->sync(this); _la = _input->LA(1); - while (((((_la - 48) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 48)) & 7971459301377) != 0)) { - setState(1049); + while (((((_la - 49) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 49)) & 7971459301377) != 0)) { + setState(1056); oC_ReadingClause(); - setState(1051); + setState(1058); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1050); + setState(1057); match(CypherParser::SP); } - setState(1057); + setState(1064); _errHandler->sync(this); _la = _input->LA(1); } - setState(1058); + setState(1065); oC_Return(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1065); + setState(1072); _errHandler->sync(this); _la = _input->LA(1); - while (((((_la - 48) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 48)) & 7971459301377) != 0)) { - setState(1059); + while (((((_la - 49) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 49)) & 7971459301377) != 0)) { + setState(1066); oC_ReadingClause(); - setState(1061); + setState(1068); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1060); + setState(1067); match(CypherParser::SP); } - setState(1067); + setState(1074); _errHandler->sync(this); _la = _input->LA(1); } - setState(1068); - oC_UpdatingClause(); setState(1075); + oC_UpdatingClause(); + setState(1082); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 136, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1070); + setState(1077); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1069); + setState(1076); match(CypherParser::SP); } - setState(1072); + setState(1079); oC_UpdatingClause(); } - setState(1077); + setState(1084); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 136, _ctx); } - setState(1082); + setState(1089); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 138, _ctx)) { case 1: { - setState(1079); + setState(1086); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1078); + setState(1085); match(CypherParser::SP); } - setState(1081); + setState(1088); oC_Return(); break; } @@ -6160,18 +6232,18 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { case 3: { enterOuterAlt(_localctx, 3); - setState(1088); + setState(1095); _errHandler->sync(this); _la = _input->LA(1); do { - setState(1084); + setState(1091); oC_ReadingClause(); - setState(1086); + setState(1093); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 139, _ctx)) { case 1: { - setState(1085); + setState(1092); match(CypherParser::SP); break; } @@ -6179,11 +6251,11 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { default: break; } - setState(1090); + setState(1097); _errHandler->sync(this); _la = _input->LA(1); - } while (((((_la - 48) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 48)) & 7971459301377) != 0)); + } while (((((_la - 49) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 49)) & 7971459301377) != 0)); notifyQueryNotConcludeWithReturn(_localctx->start); break; } @@ -6236,7 +6308,7 @@ size_t CypherParser::OC_MultiPartQueryContext::getRuleIndex() const { CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { OC_MultiPartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, CypherParser::RuleOC_MultiPartQuery); + enterRule(_localctx, 102, CypherParser::RuleOC_MultiPartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -6249,20 +6321,20 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1100); + setState(1107); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1096); + setState(1103); kU_QueryPart(); - setState(1098); + setState(1105); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1097); + setState(1104); match(CypherParser::SP); } break; @@ -6271,11 +6343,11 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { default: throw NoViableAltException(this); } - setState(1102); + setState(1109); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 143, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1104); + setState(1111); oC_SinglePartQuery(); } @@ -6330,7 +6402,7 @@ size_t CypherParser::KU_QueryPartContext::getRuleIndex() const { CypherParser::KU_QueryPartContext* CypherParser::kU_QueryPart() { KU_QueryPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, CypherParser::RuleKU_QueryPart); + enterRule(_localctx, 104, CypherParser::RuleKU_QueryPart); size_t _la = 0; #if __cplusplus > 201703L @@ -6342,45 +6414,45 @@ CypherParser::KU_QueryPartContext* CypherParser::kU_QueryPart() { }); try { enterOuterAlt(_localctx, 1); - setState(1112); + setState(1119); _errHandler->sync(this); _la = _input->LA(1); - while (((((_la - 48) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 48)) & 7971459301377) != 0)) { - setState(1106); + while (((((_la - 49) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 49)) & 7971459301377) != 0)) { + setState(1113); oC_ReadingClause(); - setState(1108); + setState(1115); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1107); + setState(1114); match(CypherParser::SP); } - setState(1114); + setState(1121); _errHandler->sync(this); _la = _input->LA(1); } - setState(1121); + setState(1128); _errHandler->sync(this); _la = _input->LA(1); - while (((((_la - 91) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 91)) & 59) != 0)) { - setState(1115); + while (((((_la - 92) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 92)) & 59) != 0)) { + setState(1122); oC_UpdatingClause(); - setState(1117); + setState(1124); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1116); + setState(1123); match(CypherParser::SP); } - setState(1123); + setState(1130); _errHandler->sync(this); _la = _input->LA(1); } - setState(1124); + setState(1131); oC_With(); } @@ -6423,7 +6495,7 @@ size_t CypherParser::OC_UpdatingClauseContext::getRuleIndex() const { CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { OC_UpdatingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, CypherParser::RuleOC_UpdatingClause); + enterRule(_localctx, 106, CypherParser::RuleOC_UpdatingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6433,26 +6505,26 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { exitRule(); }); try { - setState(1130); + setState(1137); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::CREATE: { enterOuterAlt(_localctx, 1); - setState(1126); + setState(1133); oC_Create(); break; } case CypherParser::MERGE: { enterOuterAlt(_localctx, 2); - setState(1127); + setState(1134); oC_Merge(); break; } case CypherParser::SET: { enterOuterAlt(_localctx, 3); - setState(1128); + setState(1135); oC_Set(); break; } @@ -6460,7 +6532,7 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { case CypherParser::DETACH: case CypherParser::DELETE: { enterOuterAlt(_localctx, 4); - setState(1129); + setState(1136); oC_Delete(); break; } @@ -6509,7 +6581,7 @@ size_t CypherParser::OC_ReadingClauseContext::getRuleIndex() const { CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { OC_ReadingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, CypherParser::RuleOC_ReadingClause); + enterRule(_localctx, 108, CypherParser::RuleOC_ReadingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6519,34 +6591,34 @@ CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { exitRule(); }); try { - setState(1136); + setState(1143); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::OPTIONAL: case CypherParser::MATCH: { enterOuterAlt(_localctx, 1); - setState(1132); + setState(1139); oC_Match(); break; } case CypherParser::UNWIND: { enterOuterAlt(_localctx, 2); - setState(1133); + setState(1140); oC_Unwind(); break; } case CypherParser::CALL: { enterOuterAlt(_localctx, 3); - setState(1134); + setState(1141); kU_InQueryCall(); break; } case CypherParser::LOAD: { enterOuterAlt(_localctx, 4); - setState(1135); + setState(1142); kU_LoadFrom(); break; } @@ -6619,7 +6691,7 @@ size_t CypherParser::KU_LoadFromContext::getRuleIndex() const { CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { KU_LoadFromContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, CypherParser::RuleKU_LoadFrom); + enterRule(_localctx, 110, CypherParser::RuleKU_LoadFrom); size_t _la = 0; #if __cplusplus > 201703L @@ -6631,50 +6703,50 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(1138); + setState(1145); match(CypherParser::LOAD); - setState(1156); + setState(1163); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 153, _ctx)) { case 1: { - setState(1139); + setState(1146); match(CypherParser::SP); - setState(1140); + setState(1147); match(CypherParser::WITH); - setState(1141); + setState(1148); match(CypherParser::SP); - setState(1142); + setState(1149); match(CypherParser::HEADERS); - setState(1144); + setState(1151); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1143); + setState(1150); match(CypherParser::SP); } - setState(1146); + setState(1153); match(CypherParser::T__1); - setState(1148); + setState(1155); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1147); + setState(1154); match(CypherParser::SP); } - setState(1150); + setState(1157); kU_PropertyDefinitions(); - setState(1152); + setState(1159); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1151); + setState(1158); match(CypherParser::SP); } - setState(1154); + setState(1161); match(CypherParser::T__3); break; } @@ -6682,28 +6754,28 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { default: break; } - setState(1158); + setState(1165); match(CypherParser::SP); - setState(1159); + setState(1166); match(CypherParser::FROM); - setState(1160); + setState(1167); match(CypherParser::SP); - setState(1161); + setState(1168); kU_ScanSource(); - setState(1166); + setState(1173); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 155, _ctx)) { case 1: { - setState(1163); + setState(1170); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1162); + setState(1169); match(CypherParser::SP); } - setState(1165); + setState(1172); kU_ParsingOptions(); break; } @@ -6711,20 +6783,20 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { default: break; } - setState(1172); + setState(1179); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 157, _ctx)) { case 1: { - setState(1169); + setState(1176); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1168); + setState(1175); match(CypherParser::SP); } - setState(1171); + setState(1178); oC_Where(); break; } @@ -6777,7 +6849,7 @@ size_t CypherParser::KU_InQueryCallContext::getRuleIndex() const { CypherParser::KU_InQueryCallContext* CypherParser::kU_InQueryCall() { KU_InQueryCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, CypherParser::RuleKU_InQueryCall); + enterRule(_localctx, 112, CypherParser::RuleKU_InQueryCall); size_t _la = 0; #if __cplusplus > 201703L @@ -6789,26 +6861,26 @@ CypherParser::KU_InQueryCallContext* CypherParser::kU_InQueryCall() { }); try { enterOuterAlt(_localctx, 1); - setState(1174); + setState(1181); match(CypherParser::CALL); - setState(1175); + setState(1182); match(CypherParser::SP); - setState(1176); + setState(1183); oC_FunctionInvocation(); - setState(1181); + setState(1188); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 159, _ctx)) { case 1: { - setState(1178); + setState(1185); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1177); + setState(1184); match(CypherParser::SP); } - setState(1180); + setState(1187); oC_Where(); break; } @@ -6865,7 +6937,7 @@ size_t CypherParser::OC_MatchContext::getRuleIndex() const { CypherParser::OC_MatchContext* CypherParser::oC_Match() { OC_MatchContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, CypherParser::RuleOC_Match); + enterRule(_localctx, 114, CypherParser::RuleOC_Match); size_t _la = 0; #if __cplusplus > 201703L @@ -6877,42 +6949,42 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { }); try { enterOuterAlt(_localctx, 1); - setState(1185); + setState(1192); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::OPTIONAL) { - setState(1183); + setState(1190); match(CypherParser::OPTIONAL); - setState(1184); + setState(1191); match(CypherParser::SP); } - setState(1187); + setState(1194); match(CypherParser::MATCH); - setState(1189); + setState(1196); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1188); + setState(1195); match(CypherParser::SP); } - setState(1191); + setState(1198); oC_Pattern(); - setState(1196); + setState(1203); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 163, _ctx)) { case 1: { - setState(1193); + setState(1200); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1192); + setState(1199); match(CypherParser::SP); } - setState(1195); + setState(1202); oC_Where(); break; } @@ -6969,7 +7041,7 @@ size_t CypherParser::OC_UnwindContext::getRuleIndex() const { CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { OC_UnwindContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, CypherParser::RuleOC_Unwind); + enterRule(_localctx, 116, CypherParser::RuleOC_Unwind); size_t _la = 0; #if __cplusplus > 201703L @@ -6981,25 +7053,25 @@ CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { }); try { enterOuterAlt(_localctx, 1); - setState(1198); + setState(1205); match(CypherParser::UNWIND); - setState(1200); + setState(1207); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1199); + setState(1206); match(CypherParser::SP); } - setState(1202); + setState(1209); oC_Expression(); - setState(1203); + setState(1210); match(CypherParser::SP); - setState(1204); + setState(1211); match(CypherParser::AS); - setState(1205); + setState(1212); match(CypherParser::SP); - setState(1206); + setState(1213); oC_Variable(); } @@ -7038,7 +7110,7 @@ size_t CypherParser::OC_CreateContext::getRuleIndex() const { CypherParser::OC_CreateContext* CypherParser::oC_Create() { OC_CreateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 116, CypherParser::RuleOC_Create); + enterRule(_localctx, 118, CypherParser::RuleOC_Create); size_t _la = 0; #if __cplusplus > 201703L @@ -7050,17 +7122,17 @@ CypherParser::OC_CreateContext* CypherParser::oC_Create() { }); try { enterOuterAlt(_localctx, 1); - setState(1208); + setState(1215); match(CypherParser::CREATE); - setState(1210); + setState(1217); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1209); + setState(1216); match(CypherParser::SP); } - setState(1212); + setState(1219); oC_Pattern(); } @@ -7111,7 +7183,7 @@ size_t CypherParser::OC_MergeContext::getRuleIndex() const { CypherParser::OC_MergeContext* CypherParser::oC_Merge() { OC_MergeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 118, CypherParser::RuleOC_Merge); + enterRule(_localctx, 120, CypherParser::RuleOC_Merge); size_t _la = 0; #if __cplusplus > 201703L @@ -7124,29 +7196,29 @@ CypherParser::OC_MergeContext* CypherParser::oC_Merge() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1214); + setState(1221); match(CypherParser::MERGE); - setState(1216); + setState(1223); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1215); + setState(1222); match(CypherParser::SP); } - setState(1218); + setState(1225); oC_Pattern(); - setState(1223); + setState(1230); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 167, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1219); + setState(1226); match(CypherParser::SP); - setState(1220); + setState(1227); oC_MergeAction(); } - setState(1225); + setState(1232); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 167, _ctx); } @@ -7199,7 +7271,7 @@ size_t CypherParser::OC_MergeActionContext::getRuleIndex() const { CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { OC_MergeActionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, CypherParser::RuleOC_MergeAction); + enterRule(_localctx, 122, CypherParser::RuleOC_MergeAction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7209,35 +7281,35 @@ CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { exitRule(); }); try { - setState(1236); + setState(1243); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 168, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1226); + setState(1233); match(CypherParser::ON); - setState(1227); + setState(1234); match(CypherParser::SP); - setState(1228); + setState(1235); match(CypherParser::MATCH); - setState(1229); + setState(1236); match(CypherParser::SP); - setState(1230); + setState(1237); oC_Set(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1231); + setState(1238); match(CypherParser::ON); - setState(1232); + setState(1239); match(CypherParser::SP); - setState(1233); + setState(1240); match(CypherParser::CREATE); - setState(1234); + setState(1241); match(CypherParser::SP); - setState(1235); + setState(1242); oC_Set(); break; } @@ -7290,7 +7362,7 @@ size_t CypherParser::OC_SetContext::getRuleIndex() const { CypherParser::OC_SetContext* CypherParser::oC_Set() { OC_SetContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, CypherParser::RuleOC_Set); + enterRule(_localctx, 124, CypherParser::RuleOC_Set); size_t _la = 0; #if __cplusplus > 201703L @@ -7303,45 +7375,45 @@ CypherParser::OC_SetContext* CypherParser::oC_Set() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1238); + setState(1245); match(CypherParser::SET); - setState(1240); + setState(1247); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1239); + setState(1246); match(CypherParser::SP); } - setState(1242); + setState(1249); oC_SetItem(); - setState(1253); + setState(1260); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 172, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1244); + setState(1251); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1243); + setState(1250); match(CypherParser::SP); } - setState(1246); + setState(1253); match(CypherParser::T__2); - setState(1248); + setState(1255); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1247); + setState(1254); match(CypherParser::SP); } - setState(1250); + setState(1257); oC_SetItem(); } - setState(1255); + setState(1262); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 172, _ctx); } @@ -7386,7 +7458,7 @@ size_t CypherParser::OC_SetItemContext::getRuleIndex() const { CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { OC_SetItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, CypherParser::RuleOC_SetItem); + enterRule(_localctx, 126, CypherParser::RuleOC_SetItem); size_t _la = 0; #if __cplusplus > 201703L @@ -7398,27 +7470,27 @@ CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1256); + setState(1263); oC_PropertyExpression(); - setState(1258); + setState(1265); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1257); + setState(1264); match(CypherParser::SP); } - setState(1260); + setState(1267); match(CypherParser::T__5); - setState(1262); + setState(1269); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1261); + setState(1268); match(CypherParser::SP); } - setState(1264); + setState(1271); oC_Expression(); } @@ -7469,7 +7541,7 @@ size_t CypherParser::OC_DeleteContext::getRuleIndex() const { CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { OC_DeleteContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, CypherParser::RuleOC_Delete); + enterRule(_localctx, 128, CypherParser::RuleOC_Delete); size_t _la = 0; #if __cplusplus > 201703L @@ -7482,55 +7554,55 @@ CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1268); + setState(1275); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DETACH) { - setState(1266); + setState(1273); match(CypherParser::DETACH); - setState(1267); + setState(1274); match(CypherParser::SP); } - setState(1270); + setState(1277); match(CypherParser::DELETE); - setState(1272); + setState(1279); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1271); + setState(1278); match(CypherParser::SP); } - setState(1274); + setState(1281); oC_Expression(); - setState(1285); + setState(1292); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 179, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1276); + setState(1283); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1275); + setState(1282); match(CypherParser::SP); } - setState(1278); + setState(1285); match(CypherParser::T__2); - setState(1280); + setState(1287); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1279); + setState(1286); match(CypherParser::SP); } - setState(1282); + setState(1289); oC_Expression(); } - setState(1287); + setState(1294); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 179, _ctx); } @@ -7575,7 +7647,7 @@ size_t CypherParser::OC_WithContext::getRuleIndex() const { CypherParser::OC_WithContext* CypherParser::oC_With() { OC_WithContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, CypherParser::RuleOC_With); + enterRule(_localctx, 130, CypherParser::RuleOC_With); size_t _la = 0; #if __cplusplus > 201703L @@ -7587,24 +7659,24 @@ CypherParser::OC_WithContext* CypherParser::oC_With() { }); try { enterOuterAlt(_localctx, 1); - setState(1288); + setState(1295); match(CypherParser::WITH); - setState(1289); + setState(1296); oC_ProjectionBody(); - setState(1294); + setState(1301); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 181, _ctx)) { case 1: { - setState(1291); + setState(1298); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1290); + setState(1297); match(CypherParser::SP); } - setState(1293); + setState(1300); oC_Where(); break; } @@ -7645,7 +7717,7 @@ size_t CypherParser::OC_ReturnContext::getRuleIndex() const { CypherParser::OC_ReturnContext* CypherParser::oC_Return() { OC_ReturnContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, CypherParser::RuleOC_Return); + enterRule(_localctx, 132, CypherParser::RuleOC_Return); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7656,9 +7728,9 @@ CypherParser::OC_ReturnContext* CypherParser::oC_Return() { }); try { enterOuterAlt(_localctx, 1); - setState(1296); + setState(1303); match(CypherParser::RETURN); - setState(1297); + setState(1304); oC_ProjectionBody(); } @@ -7713,7 +7785,7 @@ size_t CypherParser::OC_ProjectionBodyContext::getRuleIndex() const { CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { OC_ProjectionBodyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, CypherParser::RuleOC_ProjectionBody); + enterRule(_localctx, 134, CypherParser::RuleOC_ProjectionBody); size_t _la = 0; #if __cplusplus > 201703L @@ -7725,20 +7797,20 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { }); try { enterOuterAlt(_localctx, 1); - setState(1303); + setState(1310); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 183, _ctx)) { case 1: { - setState(1300); + setState(1307); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1299); + setState(1306); match(CypherParser::SP); } - setState(1302); + setState(1309); match(CypherParser::DISTINCT); break; } @@ -7746,18 +7818,18 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1305); + setState(1312); match(CypherParser::SP); - setState(1306); + setState(1313); oC_ProjectionItems(); - setState(1309); + setState(1316); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 184, _ctx)) { case 1: { - setState(1307); + setState(1314); match(CypherParser::SP); - setState(1308); + setState(1315); oC_Order(); break; } @@ -7765,14 +7837,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1313); + setState(1320); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 185, _ctx)) { case 1: { - setState(1311); + setState(1318); match(CypherParser::SP); - setState(1312); + setState(1319); oC_Skip(); break; } @@ -7780,14 +7852,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1317); + setState(1324); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 186, _ctx)) { case 1: { - setState(1315); + setState(1322); match(CypherParser::SP); - setState(1316); + setState(1323); oC_Limit(); break; } @@ -7840,7 +7912,7 @@ size_t CypherParser::OC_ProjectionItemsContext::getRuleIndex() const { CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { OC_ProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, CypherParser::RuleOC_ProjectionItems); + enterRule(_localctx, 136, CypherParser::RuleOC_ProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -7852,40 +7924,40 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { }); try { size_t alt; - setState(1347); + setState(1354); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::STAR: { enterOuterAlt(_localctx, 1); - setState(1319); + setState(1326); match(CypherParser::STAR); - setState(1330); + setState(1337); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 189, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1321); + setState(1328); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1320); + setState(1327); match(CypherParser::SP); } - setState(1323); + setState(1330); match(CypherParser::T__2); - setState(1325); + setState(1332); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1324); + setState(1331); match(CypherParser::SP); } - setState(1327); + setState(1334); oC_ProjectionItem(); } - setState(1332); + setState(1339); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 189, _ctx); } @@ -7896,6 +7968,7 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { case CypherParser::T__6: case CypherParser::T__8: case CypherParser::T__25: + case CypherParser::USE: case CypherParser::COMMENT_: case CypherParser::EXPORT: case CypherParser::IMPORT: @@ -7920,35 +7993,35 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(1333); + setState(1340); oC_ProjectionItem(); - setState(1344); + setState(1351); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 192, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1335); + setState(1342); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1334); + setState(1341); match(CypherParser::SP); } - setState(1337); + setState(1344); match(CypherParser::T__2); - setState(1339); + setState(1346); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1338); + setState(1345); match(CypherParser::SP); } - setState(1341); + setState(1348); oC_ProjectionItem(); } - setState(1346); + setState(1353); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 192, _ctx); } @@ -8003,7 +8076,7 @@ size_t CypherParser::OC_ProjectionItemContext::getRuleIndex() const { CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { OC_ProjectionItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, CypherParser::RuleOC_ProjectionItem); + enterRule(_localctx, 138, CypherParser::RuleOC_ProjectionItem); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8013,27 +8086,27 @@ CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { exitRule(); }); try { - setState(1356); + setState(1363); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 194, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1349); + setState(1356); oC_Expression(); - setState(1350); + setState(1357); match(CypherParser::SP); - setState(1351); + setState(1358); match(CypherParser::AS); - setState(1352); + setState(1359); match(CypherParser::SP); - setState(1353); + setState(1360); oC_Variable(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1355); + setState(1362); oC_Expression(); break; } @@ -8090,7 +8163,7 @@ size_t CypherParser::OC_OrderContext::getRuleIndex() const { CypherParser::OC_OrderContext* CypherParser::oC_Order() { OC_OrderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, CypherParser::RuleOC_Order); + enterRule(_localctx, 140, CypherParser::RuleOC_Order); size_t _la = 0; #if __cplusplus > 201703L @@ -8102,33 +8175,33 @@ CypherParser::OC_OrderContext* CypherParser::oC_Order() { }); try { enterOuterAlt(_localctx, 1); - setState(1358); + setState(1365); match(CypherParser::ORDER); - setState(1359); + setState(1366); match(CypherParser::SP); - setState(1360); + setState(1367); match(CypherParser::BY); - setState(1361); + setState(1368); match(CypherParser::SP); - setState(1362); + setState(1369); oC_SortItem(); - setState(1370); + setState(1377); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(1363); + setState(1370); match(CypherParser::T__2); - setState(1365); + setState(1372); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1364); + setState(1371); match(CypherParser::SP); } - setState(1367); + setState(1374); oC_SortItem(); - setState(1372); + setState(1379); _errHandler->sync(this); _la = _input->LA(1); } @@ -8169,7 +8242,7 @@ size_t CypherParser::OC_SkipContext::getRuleIndex() const { CypherParser::OC_SkipContext* CypherParser::oC_Skip() { OC_SkipContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, CypherParser::RuleOC_Skip); + enterRule(_localctx, 142, CypherParser::RuleOC_Skip); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8180,11 +8253,11 @@ CypherParser::OC_SkipContext* CypherParser::oC_Skip() { }); try { enterOuterAlt(_localctx, 1); - setState(1373); + setState(1380); match(CypherParser::L_SKIP); - setState(1374); + setState(1381); match(CypherParser::SP); - setState(1375); + setState(1382); oC_Expression(); } @@ -8223,7 +8296,7 @@ size_t CypherParser::OC_LimitContext::getRuleIndex() const { CypherParser::OC_LimitContext* CypherParser::oC_Limit() { OC_LimitContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, CypherParser::RuleOC_Limit); + enterRule(_localctx, 144, CypherParser::RuleOC_Limit); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8234,11 +8307,11 @@ CypherParser::OC_LimitContext* CypherParser::oC_Limit() { }); try { enterOuterAlt(_localctx, 1); - setState(1377); + setState(1384); match(CypherParser::LIMIT); - setState(1378); + setState(1385); match(CypherParser::SP); - setState(1379); + setState(1386); oC_Expression(); } @@ -8289,7 +8362,7 @@ size_t CypherParser::OC_SortItemContext::getRuleIndex() const { CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { OC_SortItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, CypherParser::RuleOC_SortItem); + enterRule(_localctx, 146, CypherParser::RuleOC_SortItem); size_t _la = 0; #if __cplusplus > 201703L @@ -8301,25 +8374,25 @@ CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1381); + setState(1388); oC_Expression(); - setState(1386); + setState(1393); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 198, _ctx)) { case 1: { - setState(1383); + setState(1390); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1382); + setState(1389); match(CypherParser::SP); } - setState(1385); + setState(1392); _la = _input->LA(1); - if (!(((((_la - 106) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 106)) & 15) != 0))) { + if (!(((((_la - 107) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 107)) & 15) != 0))) { _errHandler->recoverInline(this); } else { @@ -8369,7 +8442,7 @@ size_t CypherParser::OC_WhereContext::getRuleIndex() const { CypherParser::OC_WhereContext* CypherParser::oC_Where() { OC_WhereContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, CypherParser::RuleOC_Where); + enterRule(_localctx, 148, CypherParser::RuleOC_Where); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8380,11 +8453,11 @@ CypherParser::OC_WhereContext* CypherParser::oC_Where() { }); try { enterOuterAlt(_localctx, 1); - setState(1388); + setState(1395); match(CypherParser::WHERE); - setState(1389); + setState(1396); match(CypherParser::SP); - setState(1390); + setState(1397); oC_Expression(); } @@ -8427,7 +8500,7 @@ size_t CypherParser::OC_PatternContext::getRuleIndex() const { CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { OC_PatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, CypherParser::RuleOC_Pattern); + enterRule(_localctx, 150, CypherParser::RuleOC_Pattern); size_t _la = 0; #if __cplusplus > 201703L @@ -8440,35 +8513,35 @@ CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1392); + setState(1399); oC_PatternPart(); - setState(1403); + setState(1410); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 201, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1394); + setState(1401); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1393); + setState(1400); match(CypherParser::SP); } - setState(1396); + setState(1403); match(CypherParser::T__2); - setState(1398); + setState(1405); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1397); + setState(1404); match(CypherParser::SP); } - setState(1400); + setState(1407); oC_PatternPart(); } - setState(1405); + setState(1412); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 201, _ctx); } @@ -8513,7 +8586,7 @@ size_t CypherParser::OC_PatternPartContext::getRuleIndex() const { CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { OC_PatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, CypherParser::RuleOC_PatternPart); + enterRule(_localctx, 152, CypherParser::RuleOC_PatternPart); size_t _la = 0; #if __cplusplus > 201703L @@ -8524,9 +8597,10 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { exitRule(); }); try { - setState(1417); + setState(1424); _errHandler->sync(this); switch (_input->LA(1)) { + case CypherParser::USE: case CypherParser::COMMENT_: case CypherParser::EXPORT: case CypherParser::IMPORT: @@ -8541,34 +8615,34 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(1406); + setState(1413); oC_Variable(); - setState(1408); + setState(1415); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1407); + setState(1414); match(CypherParser::SP); } - setState(1410); + setState(1417); match(CypherParser::T__5); - setState(1412); + setState(1419); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1411); + setState(1418); match(CypherParser::SP); } - setState(1414); + setState(1421); oC_AnonymousPatternPart(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(1416); + setState(1423); oC_AnonymousPatternPart(); break; } @@ -8605,7 +8679,7 @@ size_t CypherParser::OC_AnonymousPatternPartContext::getRuleIndex() const { CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternPart() { OC_AnonymousPatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, CypherParser::RuleOC_AnonymousPatternPart); + enterRule(_localctx, 154, CypherParser::RuleOC_AnonymousPatternPart); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8616,7 +8690,7 @@ CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternP }); try { enterOuterAlt(_localctx, 1); - setState(1419); + setState(1426); oC_PatternElement(); } @@ -8667,7 +8741,7 @@ size_t CypherParser::OC_PatternElementContext::getRuleIndex() const { CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { OC_PatternElementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, CypherParser::RuleOC_PatternElement); + enterRule(_localctx, 156, CypherParser::RuleOC_PatternElement); size_t _la = 0; #if __cplusplus > 201703L @@ -8679,30 +8753,30 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { }); try { size_t alt; - setState(1435); + setState(1442); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 207, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1421); - oC_NodePattern(); setState(1428); + oC_NodePattern(); + setState(1435); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 206, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1423); + setState(1430); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1422); + setState(1429); match(CypherParser::SP); } - setState(1425); + setState(1432); oC_PatternElementChain(); } - setState(1430); + setState(1437); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 206, _ctx); } @@ -8711,11 +8785,11 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { case 2: { enterOuterAlt(_localctx, 2); - setState(1431); + setState(1438); match(CypherParser::T__1); - setState(1432); + setState(1439); oC_PatternElement(); - setState(1433); + setState(1440); match(CypherParser::T__3); break; } @@ -8768,7 +8842,7 @@ size_t CypherParser::OC_NodePatternContext::getRuleIndex() const { CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { OC_NodePatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, CypherParser::RuleOC_NodePattern); + enterRule(_localctx, 158, CypherParser::RuleOC_NodePattern); size_t _la = 0; #if __cplusplus > 201703L @@ -8780,67 +8854,67 @@ CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { }); try { enterOuterAlt(_localctx, 1); - setState(1437); + setState(1444); match(CypherParser::T__1); - setState(1439); + setState(1446); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1438); + setState(1445); match(CypherParser::SP); } - setState(1445); + setState(1452); _errHandler->sync(this); _la = _input->LA(1); - if (((((_la - 49) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 49)) & 17826753) != 0) || ((((_la - 120) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 120)) & 302256385) != 0)) { - setState(1441); + if (((((_la - 48) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 48)) & 71307013) != 0) || ((((_la - 121) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 121)) & 302256385) != 0)) { + setState(1448); oC_Variable(); - setState(1443); + setState(1450); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1442); + setState(1449); match(CypherParser::SP); } } - setState(1451); + setState(1458); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1447); + setState(1454); oC_NodeLabels(); - setState(1449); + setState(1456); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1448); + setState(1455); match(CypherParser::SP); } } - setState(1457); + setState(1464); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__8) { - setState(1453); + setState(1460); kU_Properties(); - setState(1455); + setState(1462); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1454); + setState(1461); match(CypherParser::SP); } } - setState(1459); + setState(1466); match(CypherParser::T__3); } @@ -8879,7 +8953,7 @@ size_t CypherParser::OC_PatternElementChainContext::getRuleIndex() const { CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChain() { OC_PatternElementChainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, CypherParser::RuleOC_PatternElementChain); + enterRule(_localctx, 160, CypherParser::RuleOC_PatternElementChain); size_t _la = 0; #if __cplusplus > 201703L @@ -8891,17 +8965,17 @@ CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChai }); try { enterOuterAlt(_localctx, 1); - setState(1461); + setState(1468); oC_RelationshipPattern(); - setState(1463); + setState(1470); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1462); + setState(1469); match(CypherParser::SP); } - setState(1465); + setState(1472); oC_NodePattern(); } @@ -8956,7 +9030,7 @@ size_t CypherParser::OC_RelationshipPatternContext::getRuleIndex() const { CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPattern() { OC_RelationshipPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, CypherParser::RuleOC_RelationshipPattern); + enterRule(_localctx, 162, CypherParser::RuleOC_RelationshipPattern); size_t _la = 0; #if __cplusplus > 201703L @@ -8967,29 +9041,29 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter exitRule(); }); try { - setState(1511); + setState(1518); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 227, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1467); + setState(1474); oC_LeftArrowHead(); - setState(1469); + setState(1476); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1468); + setState(1475); match(CypherParser::SP); } - setState(1471); + setState(1478); oC_Dash(); - setState(1473); + setState(1480); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 217, _ctx)) { case 1: { - setState(1472); + setState(1479); match(CypherParser::SP); break; } @@ -8997,37 +9071,37 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1476); + setState(1483); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1475); + setState(1482); oC_RelationshipDetail(); } - setState(1479); + setState(1486); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1478); + setState(1485); match(CypherParser::SP); } - setState(1481); + setState(1488); oC_Dash(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1483); + setState(1490); oC_Dash(); - setState(1485); + setState(1492); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 220, _ctx)) { case 1: { - setState(1484); + setState(1491); match(CypherParser::SP); break; } @@ -9035,47 +9109,47 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1488); + setState(1495); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1487); + setState(1494); oC_RelationshipDetail(); } - setState(1491); + setState(1498); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1490); + setState(1497); match(CypherParser::SP); } - setState(1493); + setState(1500); oC_Dash(); - setState(1495); + setState(1502); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1494); + setState(1501); match(CypherParser::SP); } - setState(1497); + setState(1504); oC_RightArrowHead(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1499); + setState(1506); oC_Dash(); - setState(1501); + setState(1508); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 224, _ctx)) { case 1: { - setState(1500); + setState(1507); match(CypherParser::SP); break; } @@ -9083,23 +9157,23 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1504); + setState(1511); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1503); + setState(1510); oC_RelationshipDetail(); } - setState(1507); + setState(1514); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1506); + setState(1513); match(CypherParser::SP); } - setState(1509); + setState(1516); oC_Dash(); break; } @@ -9156,7 +9230,7 @@ size_t CypherParser::OC_RelationshipDetailContext::getRuleIndex() const { CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail() { OC_RelationshipDetailContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, CypherParser::RuleOC_RelationshipDetail); + enterRule(_localctx, 164, CypherParser::RuleOC_RelationshipDetail); size_t _la = 0; #if __cplusplus > 201703L @@ -9168,83 +9242,83 @@ CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail( }); try { enterOuterAlt(_localctx, 1); - setState(1513); + setState(1520); match(CypherParser::T__6); - setState(1515); + setState(1522); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1514); + setState(1521); match(CypherParser::SP); } - setState(1521); + setState(1528); _errHandler->sync(this); _la = _input->LA(1); - if (((((_la - 49) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 49)) & 17826753) != 0) || ((((_la - 120) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 120)) & 302256385) != 0)) { - setState(1517); + if (((((_la - 48) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 48)) & 71307013) != 0) || ((((_la - 121) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 121)) & 302256385) != 0)) { + setState(1524); oC_Variable(); - setState(1519); + setState(1526); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1518); + setState(1525); match(CypherParser::SP); } } - setState(1527); + setState(1534); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1523); + setState(1530); oC_RelationshipTypes(); - setState(1525); + setState(1532); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1524); + setState(1531); match(CypherParser::SP); } } - setState(1533); + setState(1540); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::STAR) { - setState(1529); + setState(1536); oC_RangeLiteral(); - setState(1531); + setState(1538); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1530); + setState(1537); match(CypherParser::SP); } } - setState(1539); + setState(1546); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__8) { - setState(1535); + setState(1542); kU_Properties(); - setState(1537); + setState(1544); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1536); + setState(1543); match(CypherParser::SP); } } - setState(1541); + setState(1548); match(CypherParser::T__7); } @@ -9303,7 +9377,7 @@ size_t CypherParser::KU_PropertiesContext::getRuleIndex() const { CypherParser::KU_PropertiesContext* CypherParser::kU_Properties() { KU_PropertiesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, CypherParser::RuleKU_Properties); + enterRule(_localctx, 166, CypherParser::RuleKU_Properties); size_t _la = 0; #if __cplusplus > 201703L @@ -9315,103 +9389,103 @@ CypherParser::KU_PropertiesContext* CypherParser::kU_Properties() { }); try { enterOuterAlt(_localctx, 1); - setState(1543); + setState(1550); match(CypherParser::T__8); - setState(1545); + setState(1552); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1544); + setState(1551); match(CypherParser::SP); } - setState(1580); + setState(1587); _errHandler->sync(this); _la = _input->LA(1); - if (((((_la - 49) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 49)) & 17826753) != 0) || ((((_la - 120) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 120)) & 302256385) != 0)) { - setState(1547); + if (((((_la - 48) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 48)) & 71307013) != 0) || ((((_la - 121) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 121)) & 302256385) != 0)) { + setState(1554); oC_PropertyKeyName(); - setState(1549); + setState(1556); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1548); + setState(1555); match(CypherParser::SP); } - setState(1551); + setState(1558); match(CypherParser::COLON); - setState(1553); + setState(1560); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1552); + setState(1559); match(CypherParser::SP); } - setState(1555); + setState(1562); oC_Expression(); - setState(1557); + setState(1564); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1556); + setState(1563); match(CypherParser::SP); } - setState(1577); + setState(1584); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(1559); + setState(1566); match(CypherParser::T__2); - setState(1561); + setState(1568); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1560); + setState(1567); match(CypherParser::SP); } - setState(1563); + setState(1570); oC_PropertyKeyName(); - setState(1565); + setState(1572); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1564); + setState(1571); match(CypherParser::SP); } - setState(1567); + setState(1574); match(CypherParser::COLON); - setState(1569); + setState(1576); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1568); + setState(1575); match(CypherParser::SP); } - setState(1571); + setState(1578); oC_Expression(); - setState(1573); + setState(1580); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1572); + setState(1579); match(CypherParser::SP); } - setState(1579); + setState(1586); _errHandler->sync(this); _la = _input->LA(1); } } - setState(1582); + setState(1589); match(CypherParser::T__9); } @@ -9462,7 +9536,7 @@ size_t CypherParser::OC_RelationshipTypesContext::getRuleIndex() const { CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() { OC_RelationshipTypesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, CypherParser::RuleOC_RelationshipTypes); + enterRule(_localctx, 168, CypherParser::RuleOC_RelationshipTypes); size_t _la = 0; #if __cplusplus > 201703L @@ -9475,53 +9549,53 @@ CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1584); + setState(1591); match(CypherParser::COLON); - setState(1586); + setState(1593); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1585); + setState(1592); match(CypherParser::SP); } - setState(1588); + setState(1595); oC_RelTypeName(); - setState(1602); + setState(1609); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1590); + setState(1597); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1589); + setState(1596); match(CypherParser::SP); } - setState(1592); + setState(1599); match(CypherParser::T__10); - setState(1594); + setState(1601); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1593); + setState(1600); match(CypherParser::COLON); } - setState(1597); + setState(1604); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1596); + setState(1603); match(CypherParser::SP); } - setState(1599); + setState(1606); oC_RelTypeName(); } - setState(1604); + setState(1611); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); } @@ -9566,7 +9640,7 @@ size_t CypherParser::OC_NodeLabelsContext::getRuleIndex() const { CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { OC_NodeLabelsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, CypherParser::RuleOC_NodeLabels); + enterRule(_localctx, 170, CypherParser::RuleOC_NodeLabels); size_t _la = 0; #if __cplusplus > 201703L @@ -9579,25 +9653,25 @@ CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1605); - oC_NodeLabel(); setState(1612); + oC_NodeLabel(); + setState(1619); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 253, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1607); + setState(1614); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1606); + setState(1613); match(CypherParser::SP); } - setState(1609); + setState(1616); oC_NodeLabel(); } - setState(1614); + setState(1621); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 253, _ctx); } @@ -9638,7 +9712,7 @@ size_t CypherParser::OC_NodeLabelContext::getRuleIndex() const { CypherParser::OC_NodeLabelContext* CypherParser::oC_NodeLabel() { OC_NodeLabelContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, CypherParser::RuleOC_NodeLabel); + enterRule(_localctx, 172, CypherParser::RuleOC_NodeLabel); size_t _la = 0; #if __cplusplus > 201703L @@ -9650,17 +9724,17 @@ CypherParser::OC_NodeLabelContext* CypherParser::oC_NodeLabel() { }); try { enterOuterAlt(_localctx, 1); - setState(1615); + setState(1622); match(CypherParser::COLON); - setState(1617); + setState(1624); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1616); + setState(1623); match(CypherParser::SP); } - setState(1619); + setState(1626); oC_LabelName(); } @@ -9723,7 +9797,7 @@ size_t CypherParser::OC_RangeLiteralContext::getRuleIndex() const { CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { OC_RangeLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, CypherParser::RuleOC_RangeLiteral); + enterRule(_localctx, 174, CypherParser::RuleOC_RangeLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -9735,14 +9809,14 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(1621); + setState(1628); match(CypherParser::STAR); - setState(1623); + setState(1630); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 255, _ctx)) { case 1: { - setState(1622); + setState(1629); match(CypherParser::SP); break; } @@ -9750,21 +9824,21 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1629); + setState(1636); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::SHORTEST: { - setState(1625); + setState(1632); match(CypherParser::SHORTEST); break; } case CypherParser::ALL: { - setState(1626); + setState(1633); match(CypherParser::ALL); - setState(1627); + setState(1634); match(CypherParser::SP); - setState(1628); + setState(1635); match(CypherParser::SHORTEST); break; } @@ -9781,12 +9855,12 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1632); + setState(1639); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 257, _ctx)) { case 1: { - setState(1631); + setState(1638); match(CypherParser::SP); break; } @@ -9794,35 +9868,35 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1648); + setState(1655); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 262, _ctx)) { case 1: { - setState(1635); + setState(1642); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1634); + setState(1641); oC_LowerBound(); } - setState(1638); + setState(1645); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1637); + setState(1644); match(CypherParser::SP); } - setState(1640); + setState(1647); match(CypherParser::T__11); - setState(1642); + setState(1649); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 260, _ctx)) { case 1: { - setState(1641); + setState(1648); match(CypherParser::SP); break; } @@ -9830,19 +9904,19 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1645); + setState(1652); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1644); + setState(1651); oC_UpperBound(); } break; } case 2: { - setState(1647); + setState(1654); oC_IntegerLiteral(); break; } @@ -9850,20 +9924,20 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1654); + setState(1661); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 264, _ctx)) { case 1: { - setState(1651); + setState(1658); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1650); + setState(1657); match(CypherParser::SP); } - setState(1653); + setState(1660); kU_RecursiveRelationshipComprehension(); break; } @@ -9924,7 +9998,7 @@ size_t CypherParser::KU_RecursiveRelationshipComprehensionContext::getRuleIndex( CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_RecursiveRelationshipComprehension() { KU_RecursiveRelationshipComprehensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, CypherParser::RuleKU_RecursiveRelationshipComprehension); + enterRule(_localctx, 176, CypherParser::RuleKU_RecursiveRelationshipComprehension); size_t _la = 0; #if __cplusplus > 201703L @@ -9936,62 +10010,62 @@ CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_Rec }); try { enterOuterAlt(_localctx, 1); - setState(1656); + setState(1663); match(CypherParser::T__1); - setState(1658); + setState(1665); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1657); + setState(1664); match(CypherParser::SP); } - setState(1660); + setState(1667); oC_Variable(); - setState(1662); + setState(1669); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1661); + setState(1668); match(CypherParser::SP); } - setState(1664); + setState(1671); match(CypherParser::T__2); - setState(1666); + setState(1673); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1665); + setState(1672); match(CypherParser::SP); } - setState(1668); + setState(1675); oC_Variable(); - setState(1677); + setState(1684); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 270, _ctx)) { case 1: { - setState(1670); + setState(1677); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1669); + setState(1676); match(CypherParser::SP); } - setState(1672); + setState(1679); match(CypherParser::T__10); - setState(1674); + setState(1681); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1673); + setState(1680); match(CypherParser::SP); } - setState(1676); + setState(1683); oC_Where(); break; } @@ -9999,61 +10073,61 @@ CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_Rec default: break; } - setState(1698); + setState(1705); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__10 || _la == CypherParser::SP) { - setState(1680); + setState(1687); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1679); + setState(1686); match(CypherParser::SP); } - setState(1682); + setState(1689); match(CypherParser::T__10); - setState(1684); + setState(1691); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1683); + setState(1690); match(CypherParser::SP); } - setState(1686); + setState(1693); kU_IntermediateRelProjectionItems(); - setState(1688); + setState(1695); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1687); + setState(1694); match(CypherParser::SP); } - setState(1690); + setState(1697); match(CypherParser::T__2); - setState(1692); + setState(1699); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1691); + setState(1698); match(CypherParser::SP); } - setState(1694); + setState(1701); kU_IntermediateNodeProjectionItems(); - setState(1696); + setState(1703); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1695); + setState(1702); match(CypherParser::SP); } } - setState(1700); + setState(1707); match(CypherParser::T__3); } @@ -10092,7 +10166,7 @@ size_t CypherParser::KU_IntermediateNodeProjectionItemsContext::getRuleIndex() c CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_IntermediateNodeProjectionItems() { KU_IntermediateNodeProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, CypherParser::RuleKU_IntermediateNodeProjectionItems); + enterRule(_localctx, 178, CypherParser::RuleKU_IntermediateNodeProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -10104,14 +10178,14 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm }); try { enterOuterAlt(_localctx, 1); - setState(1702); + setState(1709); match(CypherParser::T__8); - setState(1704); + setState(1711); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 277, _ctx)) { case 1: { - setState(1703); + setState(1710); match(CypherParser::SP); break; } @@ -10119,26 +10193,26 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm default: break; } - setState(1707); + setState(1714); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990340) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 69)) & -4681139966783258607) != 0) || ((((_la - 135) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 135)) & 9741) != 0)) { - setState(1706); + ((1ULL << _la) & 1082271285519581828) != 0) || ((((_la - 70) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 70)) & -4681139966783258607) != 0) || ((((_la - 136) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 136)) & 9741) != 0)) { + setState(1713); oC_ProjectionItems(); } - setState(1710); + setState(1717); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1709); + setState(1716); match(CypherParser::SP); } - setState(1712); + setState(1719); match(CypherParser::T__9); } @@ -10177,7 +10251,7 @@ size_t CypherParser::KU_IntermediateRelProjectionItemsContext::getRuleIndex() co CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_IntermediateRelProjectionItems() { KU_IntermediateRelProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, CypherParser::RuleKU_IntermediateRelProjectionItems); + enterRule(_localctx, 180, CypherParser::RuleKU_IntermediateRelProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -10189,14 +10263,14 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme }); try { enterOuterAlt(_localctx, 1); - setState(1714); + setState(1721); match(CypherParser::T__8); - setState(1716); + setState(1723); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 280, _ctx)) { case 1: { - setState(1715); + setState(1722); match(CypherParser::SP); break; } @@ -10204,26 +10278,26 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme default: break; } - setState(1719); + setState(1726); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990340) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 69)) & -4681139966783258607) != 0) || ((((_la - 135) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 135)) & 9741) != 0)) { - setState(1718); + ((1ULL << _la) & 1082271285519581828) != 0) || ((((_la - 70) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 70)) & -4681139966783258607) != 0) || ((((_la - 136) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 136)) & 9741) != 0)) { + setState(1725); oC_ProjectionItems(); } - setState(1722); + setState(1729); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1721); + setState(1728); match(CypherParser::SP); } - setState(1724); + setState(1731); match(CypherParser::T__9); } @@ -10254,7 +10328,7 @@ size_t CypherParser::OC_LowerBoundContext::getRuleIndex() const { CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { OC_LowerBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, CypherParser::RuleOC_LowerBound); + enterRule(_localctx, 182, CypherParser::RuleOC_LowerBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10265,7 +10339,7 @@ CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { }); try { enterOuterAlt(_localctx, 1); - setState(1726); + setState(1733); match(CypherParser::DecimalInteger); } @@ -10296,7 +10370,7 @@ size_t CypherParser::OC_UpperBoundContext::getRuleIndex() const { CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { OC_UpperBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 182, CypherParser::RuleOC_UpperBound); + enterRule(_localctx, 184, CypherParser::RuleOC_UpperBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10307,7 +10381,7 @@ CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { }); try { enterOuterAlt(_localctx, 1); - setState(1728); + setState(1735); match(CypherParser::DecimalInteger); } @@ -10338,7 +10412,7 @@ size_t CypherParser::OC_LabelNameContext::getRuleIndex() const { CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { OC_LabelNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, CypherParser::RuleOC_LabelName); + enterRule(_localctx, 186, CypherParser::RuleOC_LabelName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10349,7 +10423,7 @@ CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { }); try { enterOuterAlt(_localctx, 1); - setState(1730); + setState(1737); oC_SchemaName(); } @@ -10380,7 +10454,7 @@ size_t CypherParser::OC_RelTypeNameContext::getRuleIndex() const { CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { OC_RelTypeNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, CypherParser::RuleOC_RelTypeName); + enterRule(_localctx, 188, CypherParser::RuleOC_RelTypeName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10391,7 +10465,7 @@ CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { }); try { enterOuterAlt(_localctx, 1); - setState(1732); + setState(1739); oC_SchemaName(); } @@ -10422,7 +10496,7 @@ size_t CypherParser::OC_ExpressionContext::getRuleIndex() const { CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { OC_ExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 188, CypherParser::RuleOC_Expression); + enterRule(_localctx, 190, CypherParser::RuleOC_Expression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10433,7 +10507,7 @@ CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { }); try { enterOuterAlt(_localctx, 1); - setState(1734); + setState(1741); oC_OrExpression(); } @@ -10484,7 +10558,7 @@ size_t CypherParser::OC_OrExpressionContext::getRuleIndex() const { CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { OC_OrExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 190, CypherParser::RuleOC_OrExpression); + enterRule(_localctx, 192, CypherParser::RuleOC_OrExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10496,23 +10570,23 @@ CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1736); - oC_XorExpression(); setState(1743); + oC_XorExpression(); + setState(1750); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 283, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1737); + setState(1744); match(CypherParser::SP); - setState(1738); + setState(1745); match(CypherParser::OR); - setState(1739); + setState(1746); match(CypherParser::SP); - setState(1740); + setState(1747); oC_XorExpression(); } - setState(1745); + setState(1752); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 283, _ctx); } @@ -10565,7 +10639,7 @@ size_t CypherParser::OC_XorExpressionContext::getRuleIndex() const { CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { OC_XorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 192, CypherParser::RuleOC_XorExpression); + enterRule(_localctx, 194, CypherParser::RuleOC_XorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10577,23 +10651,23 @@ CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1746); - oC_AndExpression(); setState(1753); + oC_AndExpression(); + setState(1760); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 284, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1747); + setState(1754); match(CypherParser::SP); - setState(1748); + setState(1755); match(CypherParser::XOR); - setState(1749); + setState(1756); match(CypherParser::SP); - setState(1750); + setState(1757); oC_AndExpression(); } - setState(1755); + setState(1762); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 284, _ctx); } @@ -10646,7 +10720,7 @@ size_t CypherParser::OC_AndExpressionContext::getRuleIndex() const { CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { OC_AndExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 194, CypherParser::RuleOC_AndExpression); + enterRule(_localctx, 196, CypherParser::RuleOC_AndExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10658,23 +10732,23 @@ CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1756); - oC_NotExpression(); setState(1763); + oC_NotExpression(); + setState(1770); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 285, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1757); + setState(1764); match(CypherParser::SP); - setState(1758); + setState(1765); match(CypherParser::AND); - setState(1759); + setState(1766); match(CypherParser::SP); - setState(1760); + setState(1767); oC_NotExpression(); } - setState(1765); + setState(1772); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 285, _ctx); } @@ -10723,7 +10797,7 @@ size_t CypherParser::OC_NotExpressionContext::getRuleIndex() const { CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { OC_NotExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 196, CypherParser::RuleOC_NotExpression); + enterRule(_localctx, 198, CypherParser::RuleOC_NotExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10735,25 +10809,25 @@ CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(1772); + setState(1779); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::NOT) { - setState(1766); + setState(1773); match(CypherParser::NOT); - setState(1768); + setState(1775); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1767); + setState(1774); match(CypherParser::SP); } - setState(1774); + setState(1781); _errHandler->sync(this); _la = _input->LA(1); } - setState(1775); + setState(1782); oC_ComparisonExpression(); } @@ -10808,7 +10882,7 @@ size_t CypherParser::OC_ComparisonExpressionContext::getRuleIndex() const { CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpression() { OC_ComparisonExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 198, CypherParser::RuleOC_ComparisonExpression); + enterRule(_localctx, 200, CypherParser::RuleOC_ComparisonExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10820,37 +10894,37 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress }); try { size_t alt; - setState(1825); + setState(1832); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 298, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1777); + setState(1784); kU_BitwiseOrOperatorExpression(); - setState(1787); + setState(1794); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 290, _ctx)) { case 1: { - setState(1779); + setState(1786); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1778); + setState(1785); match(CypherParser::SP); } - setState(1781); + setState(1788); kU_ComparisonOperator(); - setState(1783); + setState(1790); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1782); + setState(1789); match(CypherParser::SP); } - setState(1785); + setState(1792); kU_BitwiseOrOperatorExpression(); break; } @@ -10863,28 +10937,28 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 2: { enterOuterAlt(_localctx, 2); - setState(1789); + setState(1796); kU_BitwiseOrOperatorExpression(); - setState(1791); + setState(1798); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1790); + setState(1797); match(CypherParser::SP); } - setState(1793); + setState(1800); antlrcpp::downCast(_localctx)->invalid_not_equalToken = match(CypherParser::INVALID_NOT_EQUAL); - setState(1795); + setState(1802); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1794); + setState(1801); match(CypherParser::SP); } - setState(1797); + setState(1804); kU_BitwiseOrOperatorExpression(); notifyInvalidNotEqualOperator(antlrcpp::downCast(_localctx)->invalid_not_equalToken); break; @@ -10892,53 +10966,53 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 3: { enterOuterAlt(_localctx, 3); - setState(1801); + setState(1808); kU_BitwiseOrOperatorExpression(); - setState(1803); + setState(1810); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1802); + setState(1809); match(CypherParser::SP); } - setState(1805); + setState(1812); kU_ComparisonOperator(); - setState(1807); + setState(1814); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1806); + setState(1813); match(CypherParser::SP); } - setState(1809); + setState(1816); kU_BitwiseOrOperatorExpression(); - setState(1819); + setState(1826); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1811); + setState(1818); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1810); + setState(1817); match(CypherParser::SP); } - setState(1813); + setState(1820); kU_ComparisonOperator(); - setState(1815); + setState(1822); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1814); + setState(1821); match(CypherParser::SP); } - setState(1817); + setState(1824); kU_BitwiseOrOperatorExpression(); break; } @@ -10946,7 +11020,7 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress default: throw NoViableAltException(this); } - setState(1821); + setState(1828); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 297, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -10982,7 +11056,7 @@ size_t CypherParser::KU_ComparisonOperatorContext::getRuleIndex() const { CypherParser::KU_ComparisonOperatorContext* CypherParser::kU_ComparisonOperator() { KU_ComparisonOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 200, CypherParser::RuleKU_ComparisonOperator); + enterRule(_localctx, 202, CypherParser::RuleKU_ComparisonOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -10994,7 +11068,7 @@ CypherParser::KU_ComparisonOperatorContext* CypherParser::kU_ComparisonOperator( }); try { enterOuterAlt(_localctx, 1); - setState(1827); + setState(1834); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 254016) != 0))) { @@ -11045,7 +11119,7 @@ size_t CypherParser::KU_BitwiseOrOperatorExpressionContext::getRuleIndex() const CypherParser::KU_BitwiseOrOperatorExpressionContext* CypherParser::kU_BitwiseOrOperatorExpression() { KU_BitwiseOrOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 202, CypherParser::RuleKU_BitwiseOrOperatorExpression); + enterRule(_localctx, 204, CypherParser::RuleKU_BitwiseOrOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11058,35 +11132,35 @@ CypherParser::KU_BitwiseOrOperatorExpressionContext* CypherParser::kU_BitwiseOrO try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1829); + setState(1836); kU_BitwiseAndOperatorExpression(); - setState(1840); + setState(1847); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 301, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1831); + setState(1838); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1830); + setState(1837); match(CypherParser::SP); } - setState(1833); + setState(1840); match(CypherParser::T__10); - setState(1835); + setState(1842); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1834); + setState(1841); match(CypherParser::SP); } - setState(1837); + setState(1844); kU_BitwiseAndOperatorExpression(); } - setState(1842); + setState(1849); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 301, _ctx); } @@ -11131,7 +11205,7 @@ size_t CypherParser::KU_BitwiseAndOperatorExpressionContext::getRuleIndex() cons CypherParser::KU_BitwiseAndOperatorExpressionContext* CypherParser::kU_BitwiseAndOperatorExpression() { KU_BitwiseAndOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 204, CypherParser::RuleKU_BitwiseAndOperatorExpression); + enterRule(_localctx, 206, CypherParser::RuleKU_BitwiseAndOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11144,35 +11218,35 @@ CypherParser::KU_BitwiseAndOperatorExpressionContext* CypherParser::kU_BitwiseAn try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1843); + setState(1850); kU_BitShiftOperatorExpression(); - setState(1854); + setState(1861); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 304, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1845); + setState(1852); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1844); + setState(1851); match(CypherParser::SP); } - setState(1847); + setState(1854); match(CypherParser::T__17); - setState(1849); + setState(1856); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1848); + setState(1855); match(CypherParser::SP); } - setState(1851); + setState(1858); kU_BitShiftOperatorExpression(); } - setState(1856); + setState(1863); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 304, _ctx); } @@ -11225,7 +11299,7 @@ size_t CypherParser::KU_BitShiftOperatorExpressionContext::getRuleIndex() const CypherParser::KU_BitShiftOperatorExpressionContext* CypherParser::kU_BitShiftOperatorExpression() { KU_BitShiftOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 206, CypherParser::RuleKU_BitShiftOperatorExpression); + enterRule(_localctx, 208, CypherParser::RuleKU_BitShiftOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11238,35 +11312,35 @@ CypherParser::KU_BitShiftOperatorExpressionContext* CypherParser::kU_BitShiftOpe try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1857); + setState(1864); oC_AddOrSubtractExpression(); - setState(1869); + setState(1876); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 307, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1859); + setState(1866); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1858); + setState(1865); match(CypherParser::SP); } - setState(1861); + setState(1868); kU_BitShiftOperator(); - setState(1863); + setState(1870); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1862); + setState(1869); match(CypherParser::SP); } - setState(1865); + setState(1872); oC_AddOrSubtractExpression(); } - setState(1871); + setState(1878); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 307, _ctx); } @@ -11295,7 +11369,7 @@ size_t CypherParser::KU_BitShiftOperatorContext::getRuleIndex() const { CypherParser::KU_BitShiftOperatorContext* CypherParser::kU_BitShiftOperator() { KU_BitShiftOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 208, CypherParser::RuleKU_BitShiftOperator); + enterRule(_localctx, 210, CypherParser::RuleKU_BitShiftOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11307,7 +11381,7 @@ CypherParser::KU_BitShiftOperatorContext* CypherParser::kU_BitShiftOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(1872); + setState(1879); _la = _input->LA(1); if (!(_la == CypherParser::T__18 @@ -11367,7 +11441,7 @@ size_t CypherParser::OC_AddOrSubtractExpressionContext::getRuleIndex() const { CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractExpression() { OC_AddOrSubtractExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 210, CypherParser::RuleOC_AddOrSubtractExpression); + enterRule(_localctx, 212, CypherParser::RuleOC_AddOrSubtractExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11380,35 +11454,35 @@ CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractE try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1874); + setState(1881); oC_MultiplyDivideModuloExpression(); - setState(1886); + setState(1893); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 310, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1876); + setState(1883); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1875); + setState(1882); match(CypherParser::SP); } - setState(1878); + setState(1885); kU_AddOrSubtractOperator(); - setState(1880); + setState(1887); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1879); + setState(1886); match(CypherParser::SP); } - setState(1882); + setState(1889); oC_MultiplyDivideModuloExpression(); } - setState(1888); + setState(1895); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 310, _ctx); } @@ -11441,7 +11515,7 @@ size_t CypherParser::KU_AddOrSubtractOperatorContext::getRuleIndex() const { CypherParser::KU_AddOrSubtractOperatorContext* CypherParser::kU_AddOrSubtractOperator() { KU_AddOrSubtractOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 212, CypherParser::RuleKU_AddOrSubtractOperator); + enterRule(_localctx, 214, CypherParser::RuleKU_AddOrSubtractOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11453,7 +11527,7 @@ CypherParser::KU_AddOrSubtractOperatorContext* CypherParser::kU_AddOrSubtractOpe }); try { enterOuterAlt(_localctx, 1); - setState(1889); + setState(1896); _la = _input->LA(1); if (!(_la == CypherParser::T__20 || _la == CypherParser::MINUS)) { _errHandler->recoverInline(this); @@ -11511,7 +11585,7 @@ size_t CypherParser::OC_MultiplyDivideModuloExpressionContext::getRuleIndex() co CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_MultiplyDivideModuloExpression() { OC_MultiplyDivideModuloExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 214, CypherParser::RuleOC_MultiplyDivideModuloExpression); + enterRule(_localctx, 216, CypherParser::RuleOC_MultiplyDivideModuloExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11524,35 +11598,35 @@ CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_Multipl try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1891); + setState(1898); oC_PowerOfExpression(); - setState(1903); + setState(1910); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 313, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1893); + setState(1900); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1892); + setState(1899); match(CypherParser::SP); } - setState(1895); + setState(1902); kU_MultiplyDivideModuloOperator(); - setState(1897); + setState(1904); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1896); + setState(1903); match(CypherParser::SP); } - setState(1899); + setState(1906); oC_PowerOfExpression(); } - setState(1905); + setState(1912); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 313, _ctx); } @@ -11585,7 +11659,7 @@ size_t CypherParser::KU_MultiplyDivideModuloOperatorContext::getRuleIndex() cons CypherParser::KU_MultiplyDivideModuloOperatorContext* CypherParser::kU_MultiplyDivideModuloOperator() { KU_MultiplyDivideModuloOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 216, CypherParser::RuleKU_MultiplyDivideModuloOperator); + enterRule(_localctx, 218, CypherParser::RuleKU_MultiplyDivideModuloOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11597,7 +11671,7 @@ CypherParser::KU_MultiplyDivideModuloOperatorContext* CypherParser::kU_MultiplyD }); try { enterOuterAlt(_localctx, 1); - setState(1906); + setState(1913); _la = _input->LA(1); if (!(_la == CypherParser::T__21 @@ -11649,7 +11723,7 @@ size_t CypherParser::OC_PowerOfExpressionContext::getRuleIndex() const { CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() { OC_PowerOfExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 218, CypherParser::RuleOC_PowerOfExpression); + enterRule(_localctx, 220, CypherParser::RuleOC_PowerOfExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11662,35 +11736,35 @@ CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1908); + setState(1915); oC_UnaryAddSubtractOrFactorialExpression(); - setState(1919); + setState(1926); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 316, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1910); + setState(1917); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1909); + setState(1916); match(CypherParser::SP); } - setState(1912); + setState(1919); match(CypherParser::T__23); - setState(1914); + setState(1921); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1913); + setState(1920); match(CypherParser::SP); } - setState(1916); + setState(1923); oC_UnaryAddSubtractOrFactorialExpression(); } - setState(1921); + setState(1928); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 316, _ctx); } @@ -11743,7 +11817,7 @@ size_t CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext::getRuleInd CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_UnaryAddSubtractOrFactorialExpression() { OC_UnaryAddSubtractOrFactorialExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 220, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); + enterRule(_localctx, 222, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11755,40 +11829,40 @@ CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_ }); try { enterOuterAlt(_localctx, 1); - setState(1928); + setState(1935); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::MINUS) { - setState(1922); + setState(1929); match(CypherParser::MINUS); - setState(1924); + setState(1931); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1923); + setState(1930); match(CypherParser::SP); } - setState(1930); + setState(1937); _errHandler->sync(this); _la = _input->LA(1); } - setState(1931); + setState(1938); oC_StringListNullOperatorExpression(); - setState(1936); + setState(1943); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 320, _ctx)) { case 1: { - setState(1933); + setState(1940); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1932); + setState(1939); match(CypherParser::SP); } - setState(1935); + setState(1942); match(CypherParser::FACTORIAL); break; } @@ -11841,7 +11915,7 @@ size_t CypherParser::OC_StringListNullOperatorExpressionContext::getRuleIndex() CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_StringListNullOperatorExpression() { OC_StringListNullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 222, CypherParser::RuleOC_StringListNullOperatorExpression); + enterRule(_localctx, 224, CypherParser::RuleOC_StringListNullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11853,26 +11927,26 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1938); + setState(1945); oC_PropertyOrLabelsExpression(); - setState(1946); + setState(1953); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 322, _ctx)) { case 1: { - setState(1939); + setState(1946); oC_StringOperatorExpression(); break; } case 2: { - setState(1941); + setState(1948); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1940); + setState(1947); oC_ListOperatorExpression(); break; } @@ -11880,7 +11954,7 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin default: throw NoViableAltException(this); } - setState(1943); + setState(1950); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 321, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -11888,7 +11962,7 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin } case 3: { - setState(1945); + setState(1952); oC_NullOperatorExpression(); break; } @@ -11949,7 +12023,7 @@ size_t CypherParser::OC_ListOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExpression() { OC_ListOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 224, CypherParser::RuleOC_ListOperatorExpression); + enterRule(_localctx, 226, CypherParser::RuleOC_ListOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11960,68 +12034,68 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp exitRule(); }); try { - setState(1967); + setState(1974); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 326, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1948); + setState(1955); match(CypherParser::SP); - setState(1949); + setState(1956); match(CypherParser::IN); - setState(1951); + setState(1958); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1950); + setState(1957); match(CypherParser::SP); } - setState(1953); + setState(1960); oC_PropertyOrLabelsExpression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1954); + setState(1961); match(CypherParser::T__6); - setState(1955); + setState(1962); oC_Expression(); - setState(1956); + setState(1963); match(CypherParser::T__7); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1958); + setState(1965); match(CypherParser::T__6); - setState(1960); + setState(1967); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990340) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 69)) & -4681139968930742255) != 0) || ((((_la - 135) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 135)) & 9741) != 0)) { - setState(1959); + ((1ULL << _la) & 1082271285519581828) != 0) || ((((_la - 70) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 70)) & -4681139968930742255) != 0) || ((((_la - 136) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 136)) & 9741) != 0)) { + setState(1966); oC_Expression(); } - setState(1962); + setState(1969); match(CypherParser::COLON); - setState(1964); + setState(1971); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990340) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 69)) & -4681139968930742255) != 0) || ((((_la - 135) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 135)) & 9741) != 0)) { - setState(1963); + ((1ULL << _la) & 1082271285519581828) != 0) || ((((_la - 70) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 70)) & -4681139968930742255) != 0) || ((((_la - 136) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 136)) & 9741) != 0)) { + setState(1970); oC_Expression(); } - setState(1966); + setState(1973); match(CypherParser::T__7); break; } @@ -12086,7 +12160,7 @@ size_t CypherParser::OC_StringOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperatorExpression() { OC_StringOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 226, CypherParser::RuleOC_StringOperatorExpression); + enterRule(_localctx, 228, CypherParser::RuleOC_StringOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12098,43 +12172,43 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato }); try { enterOuterAlt(_localctx, 1); - setState(1980); + setState(1987); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 327, _ctx)) { case 1: { - setState(1969); + setState(1976); oC_RegularExpression(); break; } case 2: { - setState(1970); + setState(1977); match(CypherParser::SP); - setState(1971); + setState(1978); match(CypherParser::STARTS); - setState(1972); + setState(1979); match(CypherParser::SP); - setState(1973); + setState(1980); match(CypherParser::WITH); break; } case 3: { - setState(1974); + setState(1981); match(CypherParser::SP); - setState(1975); + setState(1982); match(CypherParser::ENDS); - setState(1976); + setState(1983); match(CypherParser::SP); - setState(1977); + setState(1984); match(CypherParser::WITH); break; } case 4: { - setState(1978); + setState(1985); match(CypherParser::SP); - setState(1979); + setState(1986); match(CypherParser::CONTAINS); break; } @@ -12142,15 +12216,15 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato default: break; } - setState(1983); + setState(1990); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1982); + setState(1989); match(CypherParser::SP); } - setState(1985); + setState(1992); oC_PropertyOrLabelsExpression(); } @@ -12181,7 +12255,7 @@ size_t CypherParser::OC_RegularExpressionContext::getRuleIndex() const { CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() { OC_RegularExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 228, CypherParser::RuleOC_RegularExpression); + enterRule(_localctx, 230, CypherParser::RuleOC_RegularExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12193,15 +12267,15 @@ CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() }); try { enterOuterAlt(_localctx, 1); - setState(1988); + setState(1995); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1987); + setState(1994); match(CypherParser::SP); } - setState(1990); + setState(1997); match(CypherParser::T__24); } @@ -12248,7 +12322,7 @@ size_t CypherParser::OC_NullOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExpression() { OC_NullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 230, CypherParser::RuleOC_NullOperatorExpression); + enterRule(_localctx, 232, CypherParser::RuleOC_NullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12258,35 +12332,35 @@ CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExp exitRule(); }); try { - setState(2002); + setState(2009); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 330, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1992); + setState(1999); match(CypherParser::SP); - setState(1993); + setState(2000); match(CypherParser::IS); - setState(1994); + setState(2001); match(CypherParser::SP); - setState(1995); + setState(2002); match(CypherParser::NULL_); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1996); + setState(2003); match(CypherParser::SP); - setState(1997); + setState(2004); match(CypherParser::IS); - setState(1998); + setState(2005); match(CypherParser::SP); - setState(1999); + setState(2006); match(CypherParser::NOT); - setState(2000); + setState(2007); match(CypherParser::SP); - setState(2001); + setState(2008); match(CypherParser::NULL_); break; } @@ -12339,7 +12413,7 @@ size_t CypherParser::OC_PropertyOrLabelsExpressionContext::getRuleIndex() const CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrLabelsExpression() { OC_PropertyOrLabelsExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 232, CypherParser::RuleOC_PropertyOrLabelsExpression); + enterRule(_localctx, 234, CypherParser::RuleOC_PropertyOrLabelsExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12352,25 +12426,25 @@ CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrL try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2004); - oC_Atom(); setState(2011); + oC_Atom(); + setState(2018); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 332, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2006); + setState(2013); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2005); + setState(2012); match(CypherParser::SP); } - setState(2008); + setState(2015); oC_PropertyLookup(); } - setState(2013); + setState(2020); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 332, _ctx); } @@ -12435,7 +12509,7 @@ size_t CypherParser::OC_AtomContext::getRuleIndex() const { CypherParser::OC_AtomContext* CypherParser::oC_Atom() { OC_AtomContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 234, CypherParser::RuleOC_Atom); + enterRule(_localctx, 236, CypherParser::RuleOC_Atom); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12445,68 +12519,68 @@ CypherParser::OC_AtomContext* CypherParser::oC_Atom() { exitRule(); }); try { - setState(2023); + setState(2030); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 333, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2014); + setState(2021); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2015); + setState(2022); oC_Parameter(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2016); + setState(2023); oC_CaseExpression(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(2017); + setState(2024); oC_ParenthesizedExpression(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(2018); + setState(2025); oC_FunctionInvocation(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(2019); + setState(2026); oC_PathPatterns(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(2020); + setState(2027); oC_ExistSubquery(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(2021); + setState(2028); kU_CountSubquery(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(2022); + setState(2029); oC_Variable(); break; } @@ -12563,7 +12637,7 @@ size_t CypherParser::OC_LiteralContext::getRuleIndex() const { CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { OC_LiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 236, CypherParser::RuleOC_Literal); + enterRule(_localctx, 238, CypherParser::RuleOC_Literal); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12573,20 +12647,20 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { exitRule(); }); try { - setState(2031); + setState(2038); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::DecimalInteger: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2025); + setState(2032); oC_NumberLiteral(); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(2026); + setState(2033); match(CypherParser::StringLiteral); break; } @@ -12594,28 +12668,28 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { case CypherParser::TRUE: case CypherParser::FALSE: { enterOuterAlt(_localctx, 3); - setState(2027); + setState(2034); oC_BooleanLiteral(); break; } case CypherParser::NULL_: { enterOuterAlt(_localctx, 4); - setState(2028); + setState(2035); match(CypherParser::NULL_); break; } case CypherParser::T__6: { enterOuterAlt(_localctx, 5); - setState(2029); + setState(2036); oC_ListLiteral(); break; } case CypherParser::T__8: { enterOuterAlt(_localctx, 6); - setState(2030); + setState(2037); kU_StructLiteral(); break; } @@ -12656,7 +12730,7 @@ size_t CypherParser::OC_BooleanLiteralContext::getRuleIndex() const { CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { OC_BooleanLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 238, CypherParser::RuleOC_BooleanLiteral); + enterRule(_localctx, 240, CypherParser::RuleOC_BooleanLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12668,7 +12742,7 @@ CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2033); + setState(2040); _la = _input->LA(1); if (!(_la == CypherParser::TRUE @@ -12724,7 +12798,7 @@ size_t CypherParser::OC_ListLiteralContext::getRuleIndex() const { CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { OC_ListLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 240, CypherParser::RuleOC_ListLiteral); + enterRule(_localctx, 242, CypherParser::RuleOC_ListLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12736,54 +12810,54 @@ CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2035); + setState(2042); match(CypherParser::T__6); - setState(2037); + setState(2044); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2036); + setState(2043); match(CypherParser::SP); } - setState(2052); + setState(2059); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990340) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 69)) & -4681139968930742255) != 0) || ((((_la - 135) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 135)) & 9741) != 0)) { - setState(2039); + ((1ULL << _la) & 1082271285519581828) != 0) || ((((_la - 70) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 70)) & -4681139968930742255) != 0) || ((((_la - 136) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 136)) & 9741) != 0)) { + setState(2046); oC_Expression(); - setState(2041); + setState(2048); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2040); + setState(2047); match(CypherParser::SP); } - setState(2049); + setState(2056); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2043); + setState(2050); kU_ListEntry(); - setState(2045); + setState(2052); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2044); + setState(2051); match(CypherParser::SP); } - setState(2051); + setState(2058); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2054); + setState(2061); match(CypherParser::T__7); } @@ -12818,7 +12892,7 @@ size_t CypherParser::KU_ListEntryContext::getRuleIndex() const { CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { KU_ListEntryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 242, CypherParser::RuleKU_ListEntry); + enterRule(_localctx, 244, CypherParser::RuleKU_ListEntry); size_t _la = 0; #if __cplusplus > 201703L @@ -12830,14 +12904,14 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { }); try { enterOuterAlt(_localctx, 1); - setState(2056); + setState(2063); match(CypherParser::T__2); - setState(2058); + setState(2065); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 340, _ctx)) { case 1: { - setState(2057); + setState(2064); match(CypherParser::SP); break; } @@ -12845,15 +12919,15 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { default: break; } - setState(2061); + setState(2068); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990340) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 69)) & -4681139968930742255) != 0) || ((((_la - 135) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 135)) & 9741) != 0)) { - setState(2060); + ((1ULL << _la) & 1082271285519581828) != 0) || ((((_la - 70) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 70)) & -4681139968930742255) != 0) || ((((_la - 136) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 136)) & 9741) != 0)) { + setState(2067); oC_Expression(); } @@ -12897,7 +12971,7 @@ size_t CypherParser::KU_StructLiteralContext::getRuleIndex() const { CypherParser::KU_StructLiteralContext* CypherParser::kU_StructLiteral() { KU_StructLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 244, CypherParser::RuleKU_StructLiteral); + enterRule(_localctx, 246, CypherParser::RuleKU_StructLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12909,55 +12983,55 @@ CypherParser::KU_StructLiteralContext* CypherParser::kU_StructLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2063); + setState(2070); match(CypherParser::T__8); - setState(2065); + setState(2072); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2064); + setState(2071); match(CypherParser::SP); } - setState(2067); + setState(2074); kU_StructField(); - setState(2069); + setState(2076); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2068); + setState(2075); match(CypherParser::SP); } - setState(2081); + setState(2088); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2071); + setState(2078); match(CypherParser::T__2); - setState(2073); + setState(2080); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2072); + setState(2079); match(CypherParser::SP); } - setState(2075); + setState(2082); kU_StructField(); - setState(2077); + setState(2084); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2076); + setState(2083); match(CypherParser::SP); } - setState(2083); + setState(2090); _errHandler->sync(this); _la = _input->LA(1); } - setState(2084); + setState(2091); match(CypherParser::T__9); } @@ -13008,7 +13082,7 @@ size_t CypherParser::KU_StructFieldContext::getRuleIndex() const { CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { KU_StructFieldContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 246, CypherParser::RuleKU_StructField); + enterRule(_localctx, 248, CypherParser::RuleKU_StructField); size_t _la = 0; #if __cplusplus > 201703L @@ -13020,9 +13094,10 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { }); try { enterOuterAlt(_localctx, 1); - setState(2088); + setState(2095); _errHandler->sync(this); switch (_input->LA(1)) { + case CypherParser::USE: case CypherParser::COMMENT_: case CypherParser::EXPORT: case CypherParser::IMPORT: @@ -13036,13 +13111,13 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2086); + setState(2093); oC_SymbolicName(); break; } case CypherParser::StringLiteral: { - setState(2087); + setState(2094); match(CypherParser::StringLiteral); break; } @@ -13050,25 +13125,25 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { default: throw NoViableAltException(this); } - setState(2091); + setState(2098); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2090); + setState(2097); match(CypherParser::SP); } - setState(2093); + setState(2100); match(CypherParser::COLON); - setState(2095); + setState(2102); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2094); + setState(2101); match(CypherParser::SP); } - setState(2097); + setState(2104); oC_Expression(); } @@ -13107,7 +13182,7 @@ size_t CypherParser::OC_ParenthesizedExpressionContext::getRuleIndex() const { CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedExpression() { OC_ParenthesizedExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 248, CypherParser::RuleOC_ParenthesizedExpression); + enterRule(_localctx, 250, CypherParser::RuleOC_ParenthesizedExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13119,27 +13194,27 @@ CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedE }); try { enterOuterAlt(_localctx, 1); - setState(2099); + setState(2106); match(CypherParser::T__1); - setState(2101); + setState(2108); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2100); + setState(2107); match(CypherParser::SP); } - setState(2103); + setState(2110); oC_Expression(); - setState(2105); + setState(2112); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2104); + setState(2111); match(CypherParser::SP); } - setState(2107); + setState(2114); match(CypherParser::T__3); } @@ -13198,7 +13273,7 @@ size_t CypherParser::OC_FunctionInvocationContext::getRuleIndex() const { CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation() { OC_FunctionInvocationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 250, CypherParser::RuleOC_FunctionInvocation); + enterRule(_localctx, 252, CypherParser::RuleOC_FunctionInvocation); size_t _la = 0; #if __cplusplus > 201703L @@ -13209,132 +13284,132 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( exitRule(); }); try { - setState(2157); + setState(2164); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 364, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2109); + setState(2116); match(CypherParser::COUNT); - setState(2111); + setState(2118); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2110); + setState(2117); match(CypherParser::SP); } - setState(2113); + setState(2120); match(CypherParser::T__1); - setState(2115); + setState(2122); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2114); + setState(2121); match(CypherParser::SP); } - setState(2117); + setState(2124); match(CypherParser::STAR); - setState(2119); + setState(2126); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2118); + setState(2125); match(CypherParser::SP); } - setState(2121); + setState(2128); match(CypherParser::T__3); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2122); + setState(2129); oC_FunctionName(); - setState(2124); + setState(2131); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2123); + setState(2130); match(CypherParser::SP); } - setState(2126); + setState(2133); match(CypherParser::T__1); - setState(2128); + setState(2135); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2127); + setState(2134); match(CypherParser::SP); } - setState(2134); + setState(2141); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DISTINCT) { - setState(2130); + setState(2137); match(CypherParser::DISTINCT); - setState(2132); + setState(2139); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2131); + setState(2138); match(CypherParser::SP); } } - setState(2153); + setState(2160); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990340) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 69)) & -4681139968930742255) != 0) || ((((_la - 135) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 135)) & 9741) != 0)) { - setState(2136); + ((1ULL << _la) & 1082271285519581828) != 0) || ((((_la - 70) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 70)) & -4681139968930742255) != 0) || ((((_la - 136) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 136)) & 9741) != 0)) { + setState(2143); kU_FunctionParameter(); - setState(2138); + setState(2145); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2137); + setState(2144); match(CypherParser::SP); } - setState(2150); + setState(2157); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2140); + setState(2147); match(CypherParser::T__2); - setState(2142); + setState(2149); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2141); + setState(2148); match(CypherParser::SP); } - setState(2144); + setState(2151); kU_FunctionParameter(); - setState(2146); + setState(2153); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2145); + setState(2152); match(CypherParser::SP); } - setState(2152); + setState(2159); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2155); + setState(2162); match(CypherParser::T__3); break; } @@ -13371,7 +13446,7 @@ size_t CypherParser::OC_FunctionNameContext::getRuleIndex() const { CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { OC_FunctionNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 252, CypherParser::RuleOC_FunctionName); + enterRule(_localctx, 254, CypherParser::RuleOC_FunctionName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13382,7 +13457,7 @@ CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { }); try { enterOuterAlt(_localctx, 1); - setState(2159); + setState(2166); oC_SymbolicName(); } @@ -13429,7 +13504,7 @@ size_t CypherParser::KU_FunctionParameterContext::getRuleIndex() const { CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() { KU_FunctionParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 254, CypherParser::RuleKU_FunctionParameter); + enterRule(_localctx, 256, CypherParser::RuleKU_FunctionParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -13441,31 +13516,31 @@ CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() }); try { enterOuterAlt(_localctx, 1); - setState(2170); + setState(2177); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 367, _ctx)) { case 1: { - setState(2161); + setState(2168); oC_SymbolicName(); - setState(2163); + setState(2170); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2162); + setState(2169); match(CypherParser::SP); } - setState(2165); + setState(2172); match(CypherParser::COLON); - setState(2166); + setState(2173); match(CypherParser::T__5); - setState(2168); + setState(2175); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2167); + setState(2174); match(CypherParser::SP); } break; @@ -13474,7 +13549,7 @@ CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() default: break; } - setState(2172); + setState(2179); oC_Expression(); } @@ -13521,7 +13596,7 @@ size_t CypherParser::OC_PathPatternsContext::getRuleIndex() const { CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { OC_PathPatternsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 256, CypherParser::RuleOC_PathPatterns); + enterRule(_localctx, 258, CypherParser::RuleOC_PathPatterns); size_t _la = 0; #if __cplusplus > 201703L @@ -13534,23 +13609,23 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2174); + setState(2181); oC_NodePattern(); - setState(2179); + setState(2186); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2176); + setState(2183); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2175); + setState(2182); match(CypherParser::SP); } - setState(2178); + setState(2185); oC_PatternElementChain(); break; } @@ -13558,7 +13633,7 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { default: throw NoViableAltException(this); } - setState(2181); + setState(2188); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 369, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -13611,7 +13686,7 @@ size_t CypherParser::OC_ExistSubqueryContext::getRuleIndex() const { CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { OC_ExistSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 258, CypherParser::RuleOC_ExistSubquery); + enterRule(_localctx, 260, CypherParser::RuleOC_ExistSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -13623,52 +13698,52 @@ CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { }); try { enterOuterAlt(_localctx, 1); - setState(2183); + setState(2190); match(CypherParser::EXISTS); - setState(2185); + setState(2192); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2184); + setState(2191); match(CypherParser::SP); } - setState(2187); + setState(2194); match(CypherParser::T__8); - setState(2189); + setState(2196); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2188); + setState(2195); match(CypherParser::SP); } - setState(2191); + setState(2198); match(CypherParser::MATCH); - setState(2193); + setState(2200); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2192); + setState(2199); match(CypherParser::SP); } - setState(2195); + setState(2202); oC_Pattern(); - setState(2200); + setState(2207); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 374, _ctx)) { case 1: { - setState(2197); + setState(2204); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2196); + setState(2203); match(CypherParser::SP); } - setState(2199); + setState(2206); oC_Where(); break; } @@ -13676,15 +13751,15 @@ CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { default: break; } - setState(2203); + setState(2210); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2202); + setState(2209); match(CypherParser::SP); } - setState(2205); + setState(2212); match(CypherParser::T__9); } @@ -13735,7 +13810,7 @@ size_t CypherParser::KU_CountSubqueryContext::getRuleIndex() const { CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { KU_CountSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 260, CypherParser::RuleKU_CountSubquery); + enterRule(_localctx, 262, CypherParser::RuleKU_CountSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -13747,52 +13822,52 @@ CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { }); try { enterOuterAlt(_localctx, 1); - setState(2207); + setState(2214); match(CypherParser::COUNT); - setState(2209); + setState(2216); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2208); + setState(2215); match(CypherParser::SP); } - setState(2211); + setState(2218); match(CypherParser::T__8); - setState(2213); + setState(2220); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2212); + setState(2219); match(CypherParser::SP); } - setState(2215); + setState(2222); match(CypherParser::MATCH); - setState(2217); + setState(2224); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2216); + setState(2223); match(CypherParser::SP); } - setState(2219); + setState(2226); oC_Pattern(); - setState(2224); + setState(2231); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 380, _ctx)) { case 1: { - setState(2221); + setState(2228); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2220); + setState(2227); match(CypherParser::SP); } - setState(2223); + setState(2230); oC_Where(); break; } @@ -13800,15 +13875,15 @@ CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { default: break; } - setState(2227); + setState(2234); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2226); + setState(2233); match(CypherParser::SP); } - setState(2229); + setState(2236); match(CypherParser::T__9); } @@ -13847,7 +13922,7 @@ size_t CypherParser::OC_PropertyLookupContext::getRuleIndex() const { CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { OC_PropertyLookupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 262, CypherParser::RuleOC_PropertyLookup); + enterRule(_localctx, 264, CypherParser::RuleOC_PropertyLookup); size_t _la = 0; #if __cplusplus > 201703L @@ -13859,19 +13934,20 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { }); try { enterOuterAlt(_localctx, 1); - setState(2231); + setState(2238); match(CypherParser::T__4); - setState(2233); + setState(2240); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2232); + setState(2239); match(CypherParser::SP); } - setState(2237); + setState(2244); _errHandler->sync(this); switch (_input->LA(1)) { + case CypherParser::USE: case CypherParser::COMMENT_: case CypherParser::EXPORT: case CypherParser::IMPORT: @@ -13885,13 +13961,13 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2235); + setState(2242); oC_PropertyKeyName(); break; } case CypherParser::STAR: { - setState(2236); + setState(2243); match(CypherParser::STAR); break; } @@ -13960,7 +14036,7 @@ size_t CypherParser::OC_CaseExpressionContext::getRuleIndex() const { CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { OC_CaseExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 264, CypherParser::RuleOC_CaseExpression); + enterRule(_localctx, 266, CypherParser::RuleOC_CaseExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13973,27 +14049,27 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2261); + setState(2268); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 389, _ctx)) { case 1: { - setState(2239); + setState(2246); match(CypherParser::CASE); - setState(2244); + setState(2251); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2241); + setState(2248); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2240); + setState(2247); match(CypherParser::SP); } - setState(2243); + setState(2250); oC_CaseAlternative(); break; } @@ -14001,7 +14077,7 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2246); + setState(2253); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 385, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -14009,33 +14085,33 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { } case 2: { - setState(2248); + setState(2255); match(CypherParser::CASE); - setState(2250); + setState(2257); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2249); + setState(2256); match(CypherParser::SP); } - setState(2252); + setState(2259); oC_Expression(); - setState(2257); + setState(2264); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2254); + setState(2261); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2253); + setState(2260); match(CypherParser::SP); } - setState(2256); + setState(2263); oC_CaseAlternative(); break; } @@ -14043,7 +14119,7 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2259); + setState(2266); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 388, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -14053,30 +14129,30 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2271); + setState(2278); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 392, _ctx)) { case 1: { - setState(2264); + setState(2271); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2263); + setState(2270); match(CypherParser::SP); } - setState(2266); + setState(2273); match(CypherParser::ELSE); - setState(2268); + setState(2275); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2267); + setState(2274); match(CypherParser::SP); } - setState(2270); + setState(2277); oC_Expression(); break; } @@ -14084,15 +14160,15 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2274); + setState(2281); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2273); + setState(2280); match(CypherParser::SP); } - setState(2276); + setState(2283); match(CypherParser::END); } @@ -14143,7 +14219,7 @@ size_t CypherParser::OC_CaseAlternativeContext::getRuleIndex() const { CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { OC_CaseAlternativeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 266, CypherParser::RuleOC_CaseAlternative); + enterRule(_localctx, 268, CypherParser::RuleOC_CaseAlternative); size_t _la = 0; #if __cplusplus > 201703L @@ -14155,37 +14231,37 @@ CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { }); try { enterOuterAlt(_localctx, 1); - setState(2278); + setState(2285); match(CypherParser::WHEN); - setState(2280); + setState(2287); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2279); + setState(2286); match(CypherParser::SP); } - setState(2282); + setState(2289); oC_Expression(); - setState(2284); + setState(2291); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2283); + setState(2290); match(CypherParser::SP); } - setState(2286); + setState(2293); match(CypherParser::THEN); - setState(2288); + setState(2295); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2287); + setState(2294); match(CypherParser::SP); } - setState(2290); + setState(2297); oC_Expression(); } @@ -14216,7 +14292,7 @@ size_t CypherParser::OC_VariableContext::getRuleIndex() const { CypherParser::OC_VariableContext* CypherParser::oC_Variable() { OC_VariableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 268, CypherParser::RuleOC_Variable); + enterRule(_localctx, 270, CypherParser::RuleOC_Variable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14227,7 +14303,7 @@ CypherParser::OC_VariableContext* CypherParser::oC_Variable() { }); try { enterOuterAlt(_localctx, 1); - setState(2292); + setState(2299); oC_SymbolicName(); } @@ -14262,7 +14338,7 @@ size_t CypherParser::OC_NumberLiteralContext::getRuleIndex() const { CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { OC_NumberLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 270, CypherParser::RuleOC_NumberLiteral); + enterRule(_localctx, 272, CypherParser::RuleOC_NumberLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14272,19 +14348,19 @@ CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { exitRule(); }); try { - setState(2296); + setState(2303); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2294); + setState(2301); oC_DoubleLiteral(); break; } case CypherParser::DecimalInteger: { enterOuterAlt(_localctx, 2); - setState(2295); + setState(2302); oC_IntegerLiteral(); break; } @@ -14325,7 +14401,7 @@ size_t CypherParser::OC_ParameterContext::getRuleIndex() const { CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { OC_ParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 272, CypherParser::RuleOC_Parameter); + enterRule(_localctx, 274, CypherParser::RuleOC_Parameter); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14336,11 +14412,12 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { }); try { enterOuterAlt(_localctx, 1); - setState(2298); + setState(2305); match(CypherParser::T__25); - setState(2301); + setState(2308); _errHandler->sync(this); switch (_input->LA(1)) { + case CypherParser::USE: case CypherParser::COMMENT_: case CypherParser::EXPORT: case CypherParser::IMPORT: @@ -14354,13 +14431,13 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2299); + setState(2306); oC_SymbolicName(); break; } case CypherParser::DecimalInteger: { - setState(2300); + setState(2307); match(CypherParser::DecimalInteger); break; } @@ -14405,7 +14482,7 @@ size_t CypherParser::OC_PropertyExpressionContext::getRuleIndex() const { CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression() { OC_PropertyExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 274, CypherParser::RuleOC_PropertyExpression); + enterRule(_localctx, 276, CypherParser::RuleOC_PropertyExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14417,17 +14494,17 @@ CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression( }); try { enterOuterAlt(_localctx, 1); - setState(2303); + setState(2310); oC_Atom(); - setState(2305); + setState(2312); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2304); + setState(2311); match(CypherParser::SP); } - setState(2307); + setState(2314); oC_PropertyLookup(); } @@ -14458,7 +14535,7 @@ size_t CypherParser::OC_PropertyKeyNameContext::getRuleIndex() const { CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { OC_PropertyKeyNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 276, CypherParser::RuleOC_PropertyKeyName); + enterRule(_localctx, 278, CypherParser::RuleOC_PropertyKeyName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14469,7 +14546,7 @@ CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { }); try { enterOuterAlt(_localctx, 1); - setState(2309); + setState(2316); oC_SchemaName(); } @@ -14500,7 +14577,7 @@ size_t CypherParser::OC_IntegerLiteralContext::getRuleIndex() const { CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { OC_IntegerLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 278, CypherParser::RuleOC_IntegerLiteral); + enterRule(_localctx, 280, CypherParser::RuleOC_IntegerLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14511,7 +14588,7 @@ CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2311); + setState(2318); match(CypherParser::DecimalInteger); } @@ -14542,7 +14619,7 @@ size_t CypherParser::OC_DoubleLiteralContext::getRuleIndex() const { CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { OC_DoubleLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 280, CypherParser::RuleOC_DoubleLiteral); + enterRule(_localctx, 282, CypherParser::RuleOC_DoubleLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14553,7 +14630,7 @@ CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2313); + setState(2320); match(CypherParser::RegularDecimalReal); } @@ -14584,7 +14661,7 @@ size_t CypherParser::OC_SchemaNameContext::getRuleIndex() const { CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { OC_SchemaNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 282, CypherParser::RuleOC_SchemaName); + enterRule(_localctx, 284, CypherParser::RuleOC_SchemaName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14595,7 +14672,7 @@ CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { }); try { enterOuterAlt(_localctx, 1); - setState(2315); + setState(2322); oC_SymbolicName(); } @@ -14638,7 +14715,7 @@ size_t CypherParser::OC_SymbolicNameContext::getRuleIndex() const { CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { OC_SymbolicNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 284, CypherParser::RuleOC_SymbolicName); + enterRule(_localctx, 286, CypherParser::RuleOC_SymbolicName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14648,19 +14725,19 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { exitRule(); }); try { - setState(2322); + setState(2329); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::UnescapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(2317); + setState(2324); match(CypherParser::UnescapedSymbolicName); break; } case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(2318); + setState(2325); antlrcpp::downCast(_localctx)->escapedsymbolicnameToken = match(CypherParser::EscapedSymbolicName); if ((antlrcpp::downCast(_localctx)->escapedsymbolicnameToken != nullptr ? antlrcpp::downCast(_localctx)->escapedsymbolicnameToken->getText() : "") == "``") { notifyEmptyToken(antlrcpp::downCast(_localctx)->escapedsymbolicnameToken); } break; @@ -14668,11 +14745,12 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::HexLetter: { enterOuterAlt(_localctx, 3); - setState(2320); + setState(2327); match(CypherParser::HexLetter); break; } + case CypherParser::USE: case CypherParser::COMMENT_: case CypherParser::EXPORT: case CypherParser::IMPORT: @@ -14684,7 +14762,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::COUNT: case CypherParser::END: { enterOuterAlt(_localctx, 4); - setState(2321); + setState(2328); kU_NonReservedKeywords(); break; } @@ -14749,6 +14827,10 @@ tree::TerminalNode* CypherParser::KU_NonReservedKeywordsContext::DATABASE() { return getToken(CypherParser::DATABASE, 0); } +tree::TerminalNode* CypherParser::KU_NonReservedKeywordsContext::USE() { + return getToken(CypherParser::USE, 0); +} + size_t CypherParser::KU_NonReservedKeywordsContext::getRuleIndex() const { return CypherParser::RuleKU_NonReservedKeywords; @@ -14757,7 +14839,7 @@ size_t CypherParser::KU_NonReservedKeywordsContext::getRuleIndex() const { CypherParser::KU_NonReservedKeywordsContext* CypherParser::kU_NonReservedKeywords() { KU_NonReservedKeywordsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 286, CypherParser::RuleKU_NonReservedKeywords); + enterRule(_localctx, 288, CypherParser::RuleKU_NonReservedKeywords); size_t _la = 0; #if __cplusplus > 201703L @@ -14769,11 +14851,11 @@ CypherParser::KU_NonReservedKeywordsContext* CypherParser::kU_NonReservedKeyword }); try { enterOuterAlt(_localctx, 1); - setState(2324); + setState(2331); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905237880832) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 69)) & -8644659484737667055) != 0))) { + ((1ULL << _la) & 1082271285452472320) != 0) || ((((_la - 70) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 70)) & -8644659484737667055) != 0))) { _errHandler->recoverInline(this); } else { @@ -14805,7 +14887,7 @@ size_t CypherParser::OC_LeftArrowHeadContext::getRuleIndex() const { CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { OC_LeftArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 288, CypherParser::RuleOC_LeftArrowHead); + enterRule(_localctx, 290, CypherParser::RuleOC_LeftArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -14817,7 +14899,7 @@ CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2326); + setState(2333); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 2013282304) != 0))) { @@ -14852,7 +14934,7 @@ size_t CypherParser::OC_RightArrowHeadContext::getRuleIndex() const { CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { OC_RightArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 290, CypherParser::RuleOC_RightArrowHead); + enterRule(_localctx, 292, CypherParser::RuleOC_RightArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -14864,7 +14946,7 @@ CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2328); + setState(2335); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 32212320256) != 0))) { @@ -14903,7 +14985,7 @@ size_t CypherParser::OC_DashContext::getRuleIndex() const { CypherParser::OC_DashContext* CypherParser::oC_Dash() { OC_DashContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 292, CypherParser::RuleOC_Dash); + enterRule(_localctx, 294, CypherParser::RuleOC_Dash); size_t _la = 0; #if __cplusplus > 201703L @@ -14915,7 +14997,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { }); try { enterOuterAlt(_localctx, 1); - setState(2330); + setState(2337); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 70334384439296) != 0) || _la == CypherParser::MINUS)) { @@ -14938,7 +15020,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { bool CypherParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { - case 35: return kU_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); + case 36: return kU_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); default: break; diff --git a/third_party/antlr4_cypher/include/cypher_lexer.h b/third_party/antlr4_cypher/include/cypher_lexer.h index d34c0d3a31..40aad2aa13 100644 --- a/third_party/antlr4_cypher/include/cypher_lexer.h +++ b/third_party/antlr4_cypher/include/cypher_lexer.h @@ -19,27 +19,27 @@ class CypherLexer : public antlr4::Lexer { T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, - T__44 = 45, ATTACH = 46, DBTYPE = 47, CALL = 48, COMMENT_ = 49, MACRO = 50, - GLOB = 51, COPY = 52, FROM = 53, COLUMN = 54, EXPORT = 55, IMPORT = 56, - DATABASE = 57, NODE = 58, TABLE = 59, GROUP = 60, RDFGRAPH = 61, DROP = 62, - ALTER = 63, DEFAULT = 64, RENAME = 65, ADD = 66, PRIMARY = 67, KEY = 68, - REL = 69, TO = 70, EXPLAIN = 71, PROFILE = 72, BEGIN = 73, TRANSACTION = 74, - READ = 75, ONLY = 76, WRITE = 77, COMMIT = 78, COMMIT_SKIP_CHECKPOINT = 79, - ROLLBACK = 80, ROLLBACK_SKIP_CHECKPOINT = 81, INSTALL = 82, EXTENSION = 83, - UNION = 84, ALL = 85, LOAD = 86, HEADERS = 87, OPTIONAL = 88, MATCH = 89, - UNWIND = 90, CREATE = 91, MERGE = 92, ON = 93, SET = 94, DETACH = 95, - DELETE = 96, WITH = 97, RETURN = 98, DISTINCT = 99, STAR = 100, AS = 101, - ORDER = 102, BY = 103, L_SKIP = 104, LIMIT = 105, ASCENDING = 106, ASC = 107, - DESCENDING = 108, DESC = 109, WHERE = 110, SHORTEST = 111, OR = 112, - XOR = 113, AND = 114, NOT = 115, INVALID_NOT_EQUAL = 116, MINUS = 117, - FACTORIAL = 118, COLON = 119, IN = 120, STARTS = 121, ENDS = 122, CONTAINS = 123, - IS = 124, NULL_ = 125, TRUE = 126, FALSE = 127, COUNT = 128, EXISTS = 129, - CASE = 130, ELSE = 131, END = 132, WHEN = 133, THEN = 134, StringLiteral = 135, - EscapedChar = 136, DecimalInteger = 137, HexLetter = 138, HexDigit = 139, - Digit = 140, NonZeroDigit = 141, NonZeroOctDigit = 142, ZeroDigit = 143, - RegularDecimalReal = 144, UnescapedSymbolicName = 145, IdentifierStart = 146, - IdentifierPart = 147, EscapedSymbolicName = 148, SP = 149, WHITESPACE = 150, - Comment = 151, Unknown = 152 + T__44 = 45, ATTACH = 46, DBTYPE = 47, USE = 48, CALL = 49, COMMENT_ = 50, + MACRO = 51, GLOB = 52, COPY = 53, FROM = 54, COLUMN = 55, EXPORT = 56, + IMPORT = 57, DATABASE = 58, NODE = 59, TABLE = 60, GROUP = 61, RDFGRAPH = 62, + DROP = 63, ALTER = 64, DEFAULT = 65, RENAME = 66, ADD = 67, PRIMARY = 68, + KEY = 69, REL = 70, TO = 71, EXPLAIN = 72, PROFILE = 73, BEGIN = 74, + TRANSACTION = 75, READ = 76, ONLY = 77, WRITE = 78, COMMIT = 79, COMMIT_SKIP_CHECKPOINT = 80, + ROLLBACK = 81, ROLLBACK_SKIP_CHECKPOINT = 82, INSTALL = 83, EXTENSION = 84, + UNION = 85, ALL = 86, LOAD = 87, HEADERS = 88, OPTIONAL = 89, MATCH = 90, + UNWIND = 91, CREATE = 92, MERGE = 93, ON = 94, SET = 95, DETACH = 96, + DELETE = 97, WITH = 98, RETURN = 99, DISTINCT = 100, STAR = 101, AS = 102, + ORDER = 103, BY = 104, L_SKIP = 105, LIMIT = 106, ASCENDING = 107, ASC = 108, + DESCENDING = 109, DESC = 110, WHERE = 111, SHORTEST = 112, OR = 113, + XOR = 114, AND = 115, NOT = 116, INVALID_NOT_EQUAL = 117, MINUS = 118, + FACTORIAL = 119, COLON = 120, IN = 121, STARTS = 122, ENDS = 123, CONTAINS = 124, + IS = 125, NULL_ = 126, TRUE = 127, FALSE = 128, COUNT = 129, EXISTS = 130, + CASE = 131, ELSE = 132, END = 133, WHEN = 134, THEN = 135, StringLiteral = 136, + EscapedChar = 137, DecimalInteger = 138, HexLetter = 139, HexDigit = 140, + Digit = 141, NonZeroDigit = 142, NonZeroOctDigit = 143, ZeroDigit = 144, + RegularDecimalReal = 145, UnescapedSymbolicName = 146, IdentifierStart = 147, + IdentifierPart = 148, EscapedSymbolicName = 149, SP = 150, WHITESPACE = 151, + Comment = 152, Unknown = 153 }; explicit CypherLexer(antlr4::CharStream *input); diff --git a/third_party/antlr4_cypher/include/cypher_parser.h b/third_party/antlr4_cypher/include/cypher_parser.h index f8c548370b..a1d41d214a 100644 --- a/third_party/antlr4_cypher/include/cypher_parser.h +++ b/third_party/antlr4_cypher/include/cypher_parser.h @@ -19,81 +19,81 @@ class CypherParser : public antlr4::Parser { T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, - T__44 = 45, ATTACH = 46, DBTYPE = 47, CALL = 48, COMMENT_ = 49, MACRO = 50, - GLOB = 51, COPY = 52, FROM = 53, COLUMN = 54, EXPORT = 55, IMPORT = 56, - DATABASE = 57, NODE = 58, TABLE = 59, GROUP = 60, RDFGRAPH = 61, DROP = 62, - ALTER = 63, DEFAULT = 64, RENAME = 65, ADD = 66, PRIMARY = 67, KEY = 68, - REL = 69, TO = 70, EXPLAIN = 71, PROFILE = 72, BEGIN = 73, TRANSACTION = 74, - READ = 75, ONLY = 76, WRITE = 77, COMMIT = 78, COMMIT_SKIP_CHECKPOINT = 79, - ROLLBACK = 80, ROLLBACK_SKIP_CHECKPOINT = 81, INSTALL = 82, EXTENSION = 83, - UNION = 84, ALL = 85, LOAD = 86, HEADERS = 87, OPTIONAL = 88, MATCH = 89, - UNWIND = 90, CREATE = 91, MERGE = 92, ON = 93, SET = 94, DETACH = 95, - DELETE = 96, WITH = 97, RETURN = 98, DISTINCT = 99, STAR = 100, AS = 101, - ORDER = 102, BY = 103, L_SKIP = 104, LIMIT = 105, ASCENDING = 106, ASC = 107, - DESCENDING = 108, DESC = 109, WHERE = 110, SHORTEST = 111, OR = 112, - XOR = 113, AND = 114, NOT = 115, INVALID_NOT_EQUAL = 116, MINUS = 117, - FACTORIAL = 118, COLON = 119, IN = 120, STARTS = 121, ENDS = 122, CONTAINS = 123, - IS = 124, NULL_ = 125, TRUE = 126, FALSE = 127, COUNT = 128, EXISTS = 129, - CASE = 130, ELSE = 131, END = 132, WHEN = 133, THEN = 134, StringLiteral = 135, - EscapedChar = 136, DecimalInteger = 137, HexLetter = 138, HexDigit = 139, - Digit = 140, NonZeroDigit = 141, NonZeroOctDigit = 142, ZeroDigit = 143, - RegularDecimalReal = 144, UnescapedSymbolicName = 145, IdentifierStart = 146, - IdentifierPart = 147, EscapedSymbolicName = 148, SP = 149, WHITESPACE = 150, - Comment = 151, Unknown = 152 + T__44 = 45, ATTACH = 46, DBTYPE = 47, USE = 48, CALL = 49, COMMENT_ = 50, + MACRO = 51, GLOB = 52, COPY = 53, FROM = 54, COLUMN = 55, EXPORT = 56, + IMPORT = 57, DATABASE = 58, NODE = 59, TABLE = 60, GROUP = 61, RDFGRAPH = 62, + DROP = 63, ALTER = 64, DEFAULT = 65, RENAME = 66, ADD = 67, PRIMARY = 68, + KEY = 69, REL = 70, TO = 71, EXPLAIN = 72, PROFILE = 73, BEGIN = 74, + TRANSACTION = 75, READ = 76, ONLY = 77, WRITE = 78, COMMIT = 79, COMMIT_SKIP_CHECKPOINT = 80, + ROLLBACK = 81, ROLLBACK_SKIP_CHECKPOINT = 82, INSTALL = 83, EXTENSION = 84, + UNION = 85, ALL = 86, LOAD = 87, HEADERS = 88, OPTIONAL = 89, MATCH = 90, + UNWIND = 91, CREATE = 92, MERGE = 93, ON = 94, SET = 95, DETACH = 96, + DELETE = 97, WITH = 98, RETURN = 99, DISTINCT = 100, STAR = 101, AS = 102, + ORDER = 103, BY = 104, L_SKIP = 105, LIMIT = 106, ASCENDING = 107, ASC = 108, + DESCENDING = 109, DESC = 110, WHERE = 111, SHORTEST = 112, OR = 113, + XOR = 114, AND = 115, NOT = 116, INVALID_NOT_EQUAL = 117, MINUS = 118, + FACTORIAL = 119, COLON = 120, IN = 121, STARTS = 122, ENDS = 123, CONTAINS = 124, + IS = 125, NULL_ = 126, TRUE = 127, FALSE = 128, COUNT = 129, EXISTS = 130, + CASE = 131, ELSE = 132, END = 133, WHEN = 134, THEN = 135, StringLiteral = 136, + EscapedChar = 137, DecimalInteger = 138, HexLetter = 139, HexDigit = 140, + Digit = 141, NonZeroDigit = 142, NonZeroOctDigit = 143, ZeroDigit = 144, + RegularDecimalReal = 145, UnescapedSymbolicName = 146, IdentifierStart = 147, + IdentifierPart = 148, EscapedSymbolicName = 149, SP = 150, WHITESPACE = 151, + Comment = 152, Unknown = 153 }; enum { RuleKu_Statements = 0, RuleOC_Cypher = 1, RuleOC_Statement = 2, RuleKU_CopyFrom = 3, RuleKU_ColumnNames = 4, RuleKU_ScanSource = 5, RuleKU_CopyFromByColumn = 6, RuleKU_CopyTO = 7, RuleKU_ExportDatabase = 8, RuleKU_ImportDatabase = 9, - RuleKU_AttachDatabase = 10, RuleKU_DetachDatabase = 11, RuleKU_StandaloneCall = 12, - RuleKU_CommentOn = 13, RuleKU_CreateMacro = 14, RuleKU_PositionalArgs = 15, - RuleKU_DefaultArg = 16, RuleKU_FilePaths = 17, RuleKU_ParsingOptions = 18, - RuleKU_ParsingOption = 19, RuleKU_CreateNodeTable = 20, RuleKU_CreateRelTable = 21, - RuleKU_CreateRelTableGroup = 22, RuleKU_RelTableConnection = 23, RuleKU_CreateRdfGraph = 24, - RuleKU_DropTable = 25, RuleKU_AlterTable = 26, RuleKU_AlterOptions = 27, - RuleKU_AddProperty = 28, RuleKU_DropProperty = 29, RuleKU_RenameTable = 30, - RuleKU_RenameProperty = 31, RuleKU_PropertyDefinitions = 32, RuleKU_PropertyDefinition = 33, - RuleKU_CreateNodeConstraint = 34, RuleKU_DataType = 35, RuleKU_ListIdentifiers = 36, - RuleKU_ListIdentifier = 37, RuleOC_AnyCypherOption = 38, RuleOC_Explain = 39, - RuleOC_Profile = 40, RuleKU_Transaction = 41, RuleKU_Extension = 42, - RuleKU_LoadExtension = 43, RuleKU_InstallExtension = 44, RuleOC_Query = 45, - RuleOC_RegularQuery = 46, RuleOC_Union = 47, RuleOC_SingleQuery = 48, - RuleOC_SinglePartQuery = 49, RuleOC_MultiPartQuery = 50, RuleKU_QueryPart = 51, - RuleOC_UpdatingClause = 52, RuleOC_ReadingClause = 53, RuleKU_LoadFrom = 54, - RuleKU_InQueryCall = 55, RuleOC_Match = 56, RuleOC_Unwind = 57, RuleOC_Create = 58, - RuleOC_Merge = 59, RuleOC_MergeAction = 60, RuleOC_Set = 61, RuleOC_SetItem = 62, - RuleOC_Delete = 63, RuleOC_With = 64, RuleOC_Return = 65, RuleOC_ProjectionBody = 66, - RuleOC_ProjectionItems = 67, RuleOC_ProjectionItem = 68, RuleOC_Order = 69, - RuleOC_Skip = 70, RuleOC_Limit = 71, RuleOC_SortItem = 72, RuleOC_Where = 73, - RuleOC_Pattern = 74, RuleOC_PatternPart = 75, RuleOC_AnonymousPatternPart = 76, - RuleOC_PatternElement = 77, RuleOC_NodePattern = 78, RuleOC_PatternElementChain = 79, - RuleOC_RelationshipPattern = 80, RuleOC_RelationshipDetail = 81, RuleKU_Properties = 82, - RuleOC_RelationshipTypes = 83, RuleOC_NodeLabels = 84, RuleOC_NodeLabel = 85, - RuleOC_RangeLiteral = 86, RuleKU_RecursiveRelationshipComprehension = 87, - RuleKU_IntermediateNodeProjectionItems = 88, RuleKU_IntermediateRelProjectionItems = 89, - RuleOC_LowerBound = 90, RuleOC_UpperBound = 91, RuleOC_LabelName = 92, - RuleOC_RelTypeName = 93, RuleOC_Expression = 94, RuleOC_OrExpression = 95, - RuleOC_XorExpression = 96, RuleOC_AndExpression = 97, RuleOC_NotExpression = 98, - RuleOC_ComparisonExpression = 99, RuleKU_ComparisonOperator = 100, RuleKU_BitwiseOrOperatorExpression = 101, - RuleKU_BitwiseAndOperatorExpression = 102, RuleKU_BitShiftOperatorExpression = 103, - RuleKU_BitShiftOperator = 104, RuleOC_AddOrSubtractExpression = 105, - RuleKU_AddOrSubtractOperator = 106, RuleOC_MultiplyDivideModuloExpression = 107, - RuleKU_MultiplyDivideModuloOperator = 108, RuleOC_PowerOfExpression = 109, - RuleOC_UnaryAddSubtractOrFactorialExpression = 110, RuleOC_StringListNullOperatorExpression = 111, - RuleOC_ListOperatorExpression = 112, RuleOC_StringOperatorExpression = 113, - RuleOC_RegularExpression = 114, RuleOC_NullOperatorExpression = 115, - RuleOC_PropertyOrLabelsExpression = 116, RuleOC_Atom = 117, RuleOC_Literal = 118, - RuleOC_BooleanLiteral = 119, RuleOC_ListLiteral = 120, RuleKU_ListEntry = 121, - RuleKU_StructLiteral = 122, RuleKU_StructField = 123, RuleOC_ParenthesizedExpression = 124, - RuleOC_FunctionInvocation = 125, RuleOC_FunctionName = 126, RuleKU_FunctionParameter = 127, - RuleOC_PathPatterns = 128, RuleOC_ExistSubquery = 129, RuleKU_CountSubquery = 130, - RuleOC_PropertyLookup = 131, RuleOC_CaseExpression = 132, RuleOC_CaseAlternative = 133, - RuleOC_Variable = 134, RuleOC_NumberLiteral = 135, RuleOC_Parameter = 136, - RuleOC_PropertyExpression = 137, RuleOC_PropertyKeyName = 138, RuleOC_IntegerLiteral = 139, - RuleOC_DoubleLiteral = 140, RuleOC_SchemaName = 141, RuleOC_SymbolicName = 142, - RuleKU_NonReservedKeywords = 143, RuleOC_LeftArrowHead = 144, RuleOC_RightArrowHead = 145, - RuleOC_Dash = 146 + RuleKU_AttachDatabase = 10, RuleKU_DetachDatabase = 11, RuleKU_UseDatabase = 12, + RuleKU_StandaloneCall = 13, RuleKU_CommentOn = 14, RuleKU_CreateMacro = 15, + RuleKU_PositionalArgs = 16, RuleKU_DefaultArg = 17, RuleKU_FilePaths = 18, + RuleKU_ParsingOptions = 19, RuleKU_ParsingOption = 20, RuleKU_CreateNodeTable = 21, + RuleKU_CreateRelTable = 22, RuleKU_CreateRelTableGroup = 23, RuleKU_RelTableConnection = 24, + RuleKU_CreateRdfGraph = 25, RuleKU_DropTable = 26, RuleKU_AlterTable = 27, + RuleKU_AlterOptions = 28, RuleKU_AddProperty = 29, RuleKU_DropProperty = 30, + RuleKU_RenameTable = 31, RuleKU_RenameProperty = 32, RuleKU_PropertyDefinitions = 33, + RuleKU_PropertyDefinition = 34, RuleKU_CreateNodeConstraint = 35, RuleKU_DataType = 36, + RuleKU_ListIdentifiers = 37, RuleKU_ListIdentifier = 38, RuleOC_AnyCypherOption = 39, + RuleOC_Explain = 40, RuleOC_Profile = 41, RuleKU_Transaction = 42, RuleKU_Extension = 43, + RuleKU_LoadExtension = 44, RuleKU_InstallExtension = 45, RuleOC_Query = 46, + RuleOC_RegularQuery = 47, RuleOC_Union = 48, RuleOC_SingleQuery = 49, + RuleOC_SinglePartQuery = 50, RuleOC_MultiPartQuery = 51, RuleKU_QueryPart = 52, + RuleOC_UpdatingClause = 53, RuleOC_ReadingClause = 54, RuleKU_LoadFrom = 55, + RuleKU_InQueryCall = 56, RuleOC_Match = 57, RuleOC_Unwind = 58, RuleOC_Create = 59, + RuleOC_Merge = 60, RuleOC_MergeAction = 61, RuleOC_Set = 62, RuleOC_SetItem = 63, + RuleOC_Delete = 64, RuleOC_With = 65, RuleOC_Return = 66, RuleOC_ProjectionBody = 67, + RuleOC_ProjectionItems = 68, RuleOC_ProjectionItem = 69, RuleOC_Order = 70, + RuleOC_Skip = 71, RuleOC_Limit = 72, RuleOC_SortItem = 73, RuleOC_Where = 74, + RuleOC_Pattern = 75, RuleOC_PatternPart = 76, RuleOC_AnonymousPatternPart = 77, + RuleOC_PatternElement = 78, RuleOC_NodePattern = 79, RuleOC_PatternElementChain = 80, + RuleOC_RelationshipPattern = 81, RuleOC_RelationshipDetail = 82, RuleKU_Properties = 83, + RuleOC_RelationshipTypes = 84, RuleOC_NodeLabels = 85, RuleOC_NodeLabel = 86, + RuleOC_RangeLiteral = 87, RuleKU_RecursiveRelationshipComprehension = 88, + RuleKU_IntermediateNodeProjectionItems = 89, RuleKU_IntermediateRelProjectionItems = 90, + RuleOC_LowerBound = 91, RuleOC_UpperBound = 92, RuleOC_LabelName = 93, + RuleOC_RelTypeName = 94, RuleOC_Expression = 95, RuleOC_OrExpression = 96, + RuleOC_XorExpression = 97, RuleOC_AndExpression = 98, RuleOC_NotExpression = 99, + RuleOC_ComparisonExpression = 100, RuleKU_ComparisonOperator = 101, + RuleKU_BitwiseOrOperatorExpression = 102, RuleKU_BitwiseAndOperatorExpression = 103, + RuleKU_BitShiftOperatorExpression = 104, RuleKU_BitShiftOperator = 105, + RuleOC_AddOrSubtractExpression = 106, RuleKU_AddOrSubtractOperator = 107, + RuleOC_MultiplyDivideModuloExpression = 108, RuleKU_MultiplyDivideModuloOperator = 109, + RuleOC_PowerOfExpression = 110, RuleOC_UnaryAddSubtractOrFactorialExpression = 111, + RuleOC_StringListNullOperatorExpression = 112, RuleOC_ListOperatorExpression = 113, + RuleOC_StringOperatorExpression = 114, RuleOC_RegularExpression = 115, + RuleOC_NullOperatorExpression = 116, RuleOC_PropertyOrLabelsExpression = 117, + RuleOC_Atom = 118, RuleOC_Literal = 119, RuleOC_BooleanLiteral = 120, + RuleOC_ListLiteral = 121, RuleKU_ListEntry = 122, RuleKU_StructLiteral = 123, + RuleKU_StructField = 124, RuleOC_ParenthesizedExpression = 125, RuleOC_FunctionInvocation = 126, + RuleOC_FunctionName = 127, RuleKU_FunctionParameter = 128, RuleOC_PathPatterns = 129, + RuleOC_ExistSubquery = 130, RuleKU_CountSubquery = 131, RuleOC_PropertyLookup = 132, + RuleOC_CaseExpression = 133, RuleOC_CaseAlternative = 134, RuleOC_Variable = 135, + RuleOC_NumberLiteral = 136, RuleOC_Parameter = 137, RuleOC_PropertyExpression = 138, + RuleOC_PropertyKeyName = 139, RuleOC_IntegerLiteral = 140, RuleOC_DoubleLiteral = 141, + RuleOC_SchemaName = 142, RuleOC_SymbolicName = 143, RuleKU_NonReservedKeywords = 144, + RuleOC_LeftArrowHead = 145, RuleOC_RightArrowHead = 146, RuleOC_Dash = 147 }; explicit CypherParser(antlr4::TokenStream *input); @@ -125,6 +125,7 @@ class CypherParser : public antlr4::Parser { class KU_ImportDatabaseContext; class KU_AttachDatabaseContext; class KU_DetachDatabaseContext; + class KU_UseDatabaseContext; class KU_StandaloneCallContext; class KU_CommentOnContext; class KU_CreateMacroContext; @@ -313,6 +314,7 @@ class CypherParser : public antlr4::Parser { KU_ImportDatabaseContext *kU_ImportDatabase(); KU_AttachDatabaseContext *kU_AttachDatabase(); KU_DetachDatabaseContext *kU_DetachDatabase(); + KU_UseDatabaseContext *kU_UseDatabase(); }; @@ -465,6 +467,19 @@ class CypherParser : public antlr4::Parser { KU_DetachDatabaseContext* kU_DetachDatabase(); + class KU_UseDatabaseContext : public antlr4::ParserRuleContext { + public: + KU_UseDatabaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *USE(); + antlr4::tree::TerminalNode *SP(); + OC_SchemaNameContext *oC_SchemaName(); + + + }; + + KU_UseDatabaseContext* kU_UseDatabase(); + class KU_StandaloneCallContext : public antlr4::ParserRuleContext { public: KU_StandaloneCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); @@ -2388,6 +2403,7 @@ class CypherParser : public antlr4::Parser { antlr4::tree::TerminalNode *IMPORT(); antlr4::tree::TerminalNode *EXPORT(); antlr4::tree::TerminalNode *DATABASE(); + antlr4::tree::TerminalNode *USE(); }; diff --git a/tools/shell/test/test_shell_basics.py b/tools/shell/test/test_shell_basics.py index cda3660d13..c76a286214 100644 --- a/tools/shell/test/test_shell_basics.py +++ b/tools/shell/test/test_shell_basics.py @@ -72,7 +72,7 @@ def test_multi_queries_one_line(temp_db) -> None: result.check_stdout("databases rule") result.check_stdout( [ - "Error: Parser exception: mismatched input '' expecting {ATTACH, CALL, COMMENT_, COPY, EXPORT, IMPORT, DROP, ALTER, BEGIN, COMMIT, COMMIT_SKIP_CHECKPOINT, ROLLBACK, ROLLBACK_SKIP_CHECKPOINT, INSTALL, LOAD, OPTIONAL, MATCH, UNWIND, CREATE, MERGE, SET, DETACH, DELETE, WITH, RETURN} (line: 1, offset: 6)", + "Error: Parser exception: mismatched input '' expecting {ATTACH, USE, CALL, COMMENT_, COPY, EXPORT, IMPORT, DROP, ALTER, BEGIN, COMMIT, COMMIT_SKIP_CHECKPOINT, ROLLBACK, ROLLBACK_SKIP_CHECKPOINT, INSTALL, LOAD, OPTIONAL, MATCH, UNWIND, CREATE, MERGE, SET, DETACH, DELETE, WITH, RETURN} (line: 1, offset: 6)", '" "', ], ) @@ -85,7 +85,7 @@ def test_multi_queries_one_line(temp_db) -> None: "Error: Parser exception: Invalid input < S>: expected rule ku_Statements (line: 1, offset: 24)", '"RETURN "databases rule" S a"', " ^", - "Error: Parser exception: mismatched input '' expecting {ATTACH, CALL, COMMENT_, COPY, EXPORT, IMPORT, DROP, ALTER, BEGIN, COMMIT, COMMIT_SKIP_CHECKPOINT, ROLLBACK, ROLLBACK_SKIP_CHECKPOINT, INSTALL, LOAD, OPTIONAL, MATCH, UNWIND, CREATE, MERGE, SET, DETACH, DELETE, WITH, RETURN} (line: 1, offset: 6)", + "Error: Parser exception: mismatched input '' expecting {ATTACH, USE, CALL, COMMENT_, COPY, EXPORT, IMPORT, DROP, ALTER, BEGIN, COMMIT, COMMIT_SKIP_CHECKPOINT, ROLLBACK, ROLLBACK_SKIP_CHECKPOINT, INSTALL, LOAD, OPTIONAL, MATCH, UNWIND, CREATE, MERGE, SET, DETACH, DELETE, WITH, RETURN} (line: 1, offset: 6)", '" "', ], )