From 7466bd019917142f19ffb195d37c87b0b0942fcc Mon Sep 17 00:00:00 2001 From: xiyang Date: Sun, 14 Apr 2024 22:15:23 -0400 Subject: [PATCH] Update duckdb scanning grammar --- .../test/test_files/duckdb_scanner.test | 23 +- .../test/test_files/postgres_scanner.test | 14 +- scripts/antlr4/Cypher.g4.copy | 19 +- src/antlr4/Cypher.g4 | 19 +- src/binder/bind/bind_file_scan.cpp | 7 +- src/binder/bind/read/bind_load_from.cpp | 35 +- src/include/common/string_utils.h | 10 +- src/include/main/client_context.h | 2 + src/include/main/database.h | 2 - src/include/parser/scan_source.h | 8 +- src/include/parser/transformer.h | 1 - src/main/client_context.cpp | 4 + src/main/database.cpp | 4 - src/parser/transform/transform_copy.cpp | 11 +- src/parser/transform/transform_ddl.cpp | 16 - src/parser/transformer.cpp | 14 +- src/processor/operator/attach_database.cpp | 13 +- src/processor/operator/detach_database.cpp | 2 +- third_party/antlr4_cypher/cypher_lexer.cpp | 44 +- third_party/antlr4_cypher/cypher_parser.cpp | 5324 ++++++++--------- .../antlr4_cypher/include/cypher_parser.h | 115 +- 21 files changed, 2814 insertions(+), 2873 deletions(-) diff --git a/extension/duckdb_scanner/test/test_files/duckdb_scanner.test b/extension/duckdb_scanner/test/test_files/duckdb_scanner.test index aa5a891cd6..7f8b617897 100644 --- a/extension/duckdb_scanner/test/test_files/duckdb_scanner.test +++ b/extension/duckdb_scanner/test/test_files/duckdb_scanner.test @@ -8,7 +8,7 @@ ---- ok -STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/tinysnb.db' as tinysnb (dbtype 'duckdb'); ---- ok --STATEMENT LOAD FROM tinysnb_person RETURN *; +-STATEMENT LOAD FROM tinysnb.person RETURN *; ---- 8 0|Alice|1|True|False|35|5.000000|1900-01-01|2011-08-20 11:25:30|3 years 2 days 13:02:00|[10,5]|[Aida]|[[10,8],[6,7,8]]|1.731000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 10|Hubert Blaine Wolfeschlegelsteinhausenbergerdorff|2|False|True|83|4.900000|1990-11-27|2023-02-21 13:25:30|3 years 2 days 13:02:00|[10,11,12,3,4,5,6,7]|[Ad,De,Hi,Kye,Orlan]|[[7],[10],[6,7]]|1.323000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a18 @@ -18,29 +18,29 @@ 7|Elizabeth|1|False|True|20|4.700000|1980-10-26|1976-12-23 11:21:42|48:24:11|[2]|[Ein]|[[6],[7],[8]]|1.463000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 8|Farooq|2|True|False|25|4.500000|1980-10-26|1972-07-31 13:22:30.678559|00:18:00.024|[3,4,5,6,7]|[Fesdwe]|[[8]]|1.510000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a16 9|Greg|2|False|False|40|4.900000|1980-10-26|1976-12-23 11:21:42|10 years 5 months 13:00:00.000024|[1]|[Grad]|[[10]]|1.600000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a17 --STATEMENT LOAD FROM tinysnb_organisation RETURN *; +-STATEMENT LOAD FROM tinysnb.organisation RETURN *; ---- 3 1|ABFsUni|325|3.700000|-2|10 years 5 months 13 hours 24 us|3 years 5 days|1.000000|{revenue: 138, "location": ['toronto','montr,eal'], stock: {price: [96,56], volume: 1000}}|3.12 4|CsWork|934|4.100000|-100|2 years 4 days 10 hours|26 years 52 days 48:00:00|0.780000|{revenue: 152, "location": ["vanco,uver north area"], stock: {price: [15,78,671], volume: 432}}|abcd 6|DEsWork|824|4.100000|7|2 years 4 hours 22 us 34 minutes|82:00:00.1|0.520000|{revenue: 558, "location": ['very long city name','new york'], stock: {price: [22], volume: 99}}|2023-12-15 --STATEMENT LOAD FROM tinysnb_movies RETURN *; +-STATEMENT LOAD FROM tinysnb.movies RETURN *; ---- 3 Roma|298|the movie is very interesting and funny|{rating: 1223.000000, stars: 100, "views": 10003, "release": 2011-02-11 16:44:22, release_ns: 2011-02-11 16:44:22.123456, release_ms: 2011-02-11 16:44:22.123, release_sec: 2011-02-11 16:44:22, release_tz: 2011-02-11 16:44:22.123456+00, film: 2013-02-22, u8: 1, u16: 15, u32: 200, u64: 4, hugedata: -15}|pure ascii characters|{} Sóló cón tu párejâ|126| this is a very very good movie|{rating: 5.300000, stars: 2, "views": 152, "release": 2011-08-20 11:25:30, release_ns: 2011-08-20 11:25:30.123456, release_ms: 2011-08-20 11:25:30.123, release_sec: 2011-08-20 11:25:30, release_tz: 2011-08-20 11:25:30.123456+00, film: 2012-05-11, u8: 220, u16: 20, u32: 1, u64: 180, hugedata: 1844674407370955161811111111}|\xAA\xABinteresting\x0B|{audience1=52, audience53=42} The 😂😃🧘🏻‍♂️🌍🌦️🍞🚗 movie|2544| the movie is very very good|{rating: 7.000000, stars: 10, "views": 982, "release": 2018-11-13 13:33:11, release_ns: 2018-11-13 13:33:11.123456, release_ms: 2018-11-13 13:33:11.123, release_sec: 2018-11-13 13:33:11, release_tz: 2018-11-13 13:33:11.123456+00, film: 2014-09-12, u8: 12, u16: 120, u32: 55, u64: 1, hugedata: -1844674407370955161511}|\xAB\xCD|{audience1=33} --STATEMENT LOAD FROM tinysnb_tableOfTypes RETURN count(*); +-STATEMENT LOAD FROM tinysnb.tableOfTypes RETURN count(*); ---- 1 49999 --STATEMENT LOAD FROM tinysnb_tableOfTypes WHERE id = 49992 or id = 28532 RETURN *; +-STATEMENT LOAD FROM tinysnb.tableOfTypes WHERE id = 49992 or id = 28532 RETURN *; ---- 2 28532|74|72.472423|True|1977-08-16|TKn|[94,92]|[AUSrJTUWVOESDor,ODOS6RfqMhsFO9aFUa,ziauQj]|[[123,55,181],[32]]|{ID: 666, "name": DiqSQ5u5UhS8aZi} 49992|50|31.582059|False|2056-05-02||[62,24,94]|[LpQO8OT3x45a]|[[268,281,166],[144,16,126,208,298],[22,287]]|{ID: 936, "name": sGPSafxMAhKiP} --STATEMENT LOAD FROM tinysnb_person1 RETURN *; +-STATEMENT LOAD FROM tinysnb.person1 RETURN *; ---- error Catalog exception: Table: person1 does not exist. -STATEMENT DETACH tinysnb; ---- ok --STATEMENT LOAD FROM tinysnb_person RETURN *; +-STATEMENT LOAD FROM tinysnb.person RETURN *; ---- error Binder exception: No database named tinysnb has been attached. -LOG AttachMultipleDuckDB @@ -48,17 +48,20 @@ Binder exception: No database named tinysnb has been attached. ---- ok -STATEMENT ATTACH '${KUZU_ROOT_DIRECTORY}/extension/duckdb_scanner/test/duckdb_database/other.db' as other (dbtype 'duckdb'); ---- ok --STATEMENT LOAD FROM other_person RETURN *; +-STATEMENT LOAD FROM other.person RETURN *; ---- 4 1 2 3 5 --STATEMENT LOAD FROM tinysnb_person RETURN count(*); +-STATEMENT LOAD FROM tinysnb.person RETURN count(*); ---- 1 8 -CASE InvalidDuckDBDatabase --STATEMENT LOAD FROM tinysnb1_person RETURN *; +-STATEMENT LOAD FROM tinysnb1.person RETURN *; ---- error 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. diff --git a/extension/postgres_scanner/test/test_files/postgres_scanner.test b/extension/postgres_scanner/test/test_files/postgres_scanner.test index 76ee4b0dc6..db996dec1e 100644 --- a/extension/postgres_scanner/test/test_files/postgres_scanner.test +++ b/extension/postgres_scanner/test/test_files/postgres_scanner.test @@ -8,7 +8,7 @@ ---- ok -STATEMENT ATTACH 'dbname=pgscan user=ci host=localhost' as tinysnb (dbtype 'POSTGRES'); ---- ok --STATEMENT LOAD FROM tinysnb_person RETURN *; +-STATEMENT LOAD FROM tinysnb.person RETURN *; ---- 8 0|Alice|1|True|False|35|5.000000|1900-01-01|2011-08-20 11:25:30|3 years 2 days 13:02:00|[10,5]|[Aida]|1.731000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 10|Hubert Blaine Wolfeschlegelsteinhausenbergerdorff|2|False|True|83|4.900000|1990-11-27|2023-02-21 13:25:30|3 years 2 days 13:02:00|[10,11,12,3,4,5,6,7]|[Ad,De,Hi,Kye,Orlan]|1.323000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a18 @@ -18,28 +18,28 @@ 7|Elizabeth|1|False|True|20|4.700000|1980-10-26|1976-12-23 11:21:42|48:24:11|[2]|[Ein]|1.463000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15 8|Farooq|2|True|False|25|4.500000|1980-10-26|1972-07-31 13:22:30.678559|00:18:00.024|[3,4,5,6,7]|[Fesdwe]|1.510000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a16 9|Greg|2|False|False|40|4.900000|1980-10-26|1976-12-23 11:21:42|10 years 5 months 13:00:00.000024|[1]|[Grad]|1.600000|a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a17 --STATEMENT LOAD FROM tinysnb_organisation RETURN *; +-STATEMENT LOAD FROM tinysnb.organisation RETURN *; ---- 3 1|ABFsUni|325|3.700000|-2|10 years 5 months 13:00:00.000024|3 years 5 days|1.000000|{revenue: 138, "location": [toronto,montr,eal]}|{price: [96,56], volume: 1000}|3.12 4|CsWork|934|4.100000|-100|2 years 4 days 10:00:00|26 years 52 days 48:00:00|0.780000|{revenue: 152, "location": [vanco,uver north area]}|{price: [15,78,671], volume: 432}|abcd 6|DEsWork|824|4.100000|7|2 years 04:34:00.000022|82:00:00.1|0.520000|{revenue: 558, "location": [very long city name,new york]}|{price: [22], volume: 99}|2023-12-15 --STATEMENT LOAD FROM tinysnb_movies RETURN *; +-STATEMENT LOAD FROM tinysnb.movies RETURN *; ---- 3 Roma|298|the movie is very interesting and funny|{rating: 1223.000000, stars: 100, "views": 10003, "release": 2011-02-11 16:44:22, release_ns: 2011-02-11 16:44:22, release_ms: 2011-02-11 16:44:22, release_sec: 2011-02-11 16:44:22, release_tz: 2011-02-11 08:44:22+00, film: 2013-02-22, u8: 1, u16: 15, u32: 200, u64: 4, hugedata: -15.000000}|pure ascii characters|[] Sóló cón tu párejâ|126|this is a very very good movie|{rating: 5.300000, stars: 2, "views": 152, "release": 2011-08-20 11:25:30, release_ns: 2011-08-20 11:25:30, release_ms: 2011-08-20 11:25:30, release_sec: 2011-08-20 11:25:30, release_tz: 2011-08-20 03:25:30+00, film: 2012-05-11, u8: 220, u16: 20, u32: 1, u64: 180, hugedata: 1844674407370955161600000000.000000}|\x5CxAA\x5CxABinteresting\x5Cx0B|[{"key": audience1, "value": 52},{"key": audience53, "value": 42}] The 😂😃🧘🏻‍♂️🌍🌦️🍞🚗 movie|2544|the movie is very very good|{rating: 7.000000, stars: 10, "views": 982, "release": 2018-11-13 13:33:11, release_ns: 2018-11-13 13:33:11, release_ms: 2018-11-13 13:33:11, release_sec: 2018-11-13 13:33:11, release_tz: 2018-11-13 05:33:11+00, film: 2014-09-12, u8: 12, u16: 120, u32: 55, u64: 1, hugedata: -1844674407370954899456.000000}|\x5CxAB\x5CxCD|[{"key": audience1, "value": 33}] --STATEMENT LOAD FROM tinysnb_person1 RETURN *; +-STATEMENT LOAD FROM tinysnb.person1 RETURN *; ---- error Catalog exception: Table: person1 does not exist. --STATEMENT LOAD FROM tinysnb1_person RETURN *; +-STATEMENT LOAD FROM tinysnb1.person RETURN *; ---- error Binder exception: No database named tinysnb1 has been attached. -STATEMENT ATTACH 'dbname=pgscan user=ci host=localhost' (dbtype 'POSTGRES'); ---- ok --STATEMENT LOAD FROM pgscan_movies RETURN count(*); +-STATEMENT LOAD FROM pgscan.movies RETURN count(*); ---- 1 3 --STATEMENT LOAD FROM pgscan_movies where length > 2500 RETURN name; +-STATEMENT LOAD FROM pgscan.movies where length > 2500 RETURN name; ---- 1 The 😂😃🧘🏻‍♂️🌍🌦️🍞🚗 movie # TODO(Ziyi): the error message is dependent on platforms. We have to implement regex in testing framework to handle this. diff --git a/scripts/antlr4/Cypher.g4.copy b/scripts/antlr4/Cypher.g4.copy index d3491a5ad8..392ff316f4 100644 --- a/scripts/antlr4/Cypher.g4.copy +++ b/scripts/antlr4/Cypher.g4.copy @@ -21,7 +21,12 @@ oC_Cypher oC_Statement : oC_Query - | kU_DDL + | kU_CreateNodeTable + | kU_CreateRelTable + | kU_CreateRelTableGroup + | kU_CreateRdfGraph + | kU_DropTable + | kU_AlterTable | kU_CopyFrom | kU_CopyFromByColumn | kU_CopyTO @@ -44,7 +49,8 @@ kU_ColumnNames kU_ScanSource : kU_FilePaths | '(' SP? oC_Query SP? ')' - | oC_Variable ; + | oC_Variable + | oC_Variable '.' SP? oC_SchemaName ; kU_CopyFromByColumn : COPY SP oC_SchemaName SP FROM SP '(' SP? StringLiteral ( SP? ',' SP? StringLiteral )* ')' SP BY SP COLUMN ; @@ -116,15 +122,6 @@ IMPORT: ( 'I' | 'i') ( 'M' | 'm') ( 'P' | 'p') ( 'O' | 'o') ( 'R' | 'r') ( 'T' | DATABASE: ( 'D' | 'd') ( 'A' | 'a') ( 'T' | 't') ( 'A' | 'a') ( 'B' | 'b') ( 'A' | 'a') ( 'S' | 's')( 'E' | 'e'); -kU_DDL - : kU_CreateNodeTable - | kU_CreateRelTable - | kU_CreateRelTableGroup - | kU_CreateRdfGraph - | kU_DropTable - | kU_AlterTable - ; - kU_CreateNodeTable : CREATE SP NODE SP TABLE SP oC_SchemaName SP? '(' SP? kU_PropertyDefinitions SP? ( ',' SP? kU_CreateNodeConstraint ) SP? ')' ; diff --git a/src/antlr4/Cypher.g4 b/src/antlr4/Cypher.g4 index d3491a5ad8..392ff316f4 100644 --- a/src/antlr4/Cypher.g4 +++ b/src/antlr4/Cypher.g4 @@ -21,7 +21,12 @@ oC_Cypher oC_Statement : oC_Query - | kU_DDL + | kU_CreateNodeTable + | kU_CreateRelTable + | kU_CreateRelTableGroup + | kU_CreateRdfGraph + | kU_DropTable + | kU_AlterTable | kU_CopyFrom | kU_CopyFromByColumn | kU_CopyTO @@ -44,7 +49,8 @@ kU_ColumnNames kU_ScanSource : kU_FilePaths | '(' SP? oC_Query SP? ')' - | oC_Variable ; + | oC_Variable + | oC_Variable '.' SP? oC_SchemaName ; kU_CopyFromByColumn : COPY SP oC_SchemaName SP FROM SP '(' SP? StringLiteral ( SP? ',' SP? StringLiteral )* ')' SP BY SP COLUMN ; @@ -116,15 +122,6 @@ IMPORT: ( 'I' | 'i') ( 'M' | 'm') ( 'P' | 'p') ( 'O' | 'o') ( 'R' | 'r') ( 'T' | DATABASE: ( 'D' | 'd') ( 'A' | 'a') ( 'T' | 't') ( 'A' | 'a') ( 'B' | 'b') ( 'A' | 'a') ( 'S' | 's')( 'E' | 'e'); -kU_DDL - : kU_CreateNodeTable - | kU_CreateRelTable - | kU_CreateRelTableGroup - | kU_CreateRdfGraph - | kU_DropTable - | kU_AlterTable - ; - kU_CreateNodeTable : CREATE SP NODE SP TABLE SP oC_SchemaName SP? '(' SP? kU_PropertyDefinitions SP? ( ',' SP? kU_CreateNodeConstraint ) SP? ')' ; diff --git a/src/binder/bind/bind_file_scan.cpp b/src/binder/bind/bind_file_scan.cpp index 2a2c4dff12..cf7c3035ab 100644 --- a/src/binder/bind/bind_file_scan.cpp +++ b/src/binder/bind/bind_file_scan.cpp @@ -109,9 +109,10 @@ std::unique_ptr Binder::bindScanSource(BaseScanSource* sour return std::make_unique(std::move(boundStatement)); } case ScanSourceType::OBJECT: { - auto objectSource = ku_dynamic_cast(source); - throw BinderException(stringFormat("Scan from external object {} is not supported.", - objectSource->objectName)); + auto objectSource = source->constPtrCast(); + auto objectStr = StringUtils::join(objectSource->objectNames, ","); + throw BinderException( + stringFormat("Scan from external object {} is not supported.", objectStr)); } default: KU_UNREACHABLE; diff --git a/src/binder/bind/read/bind_load_from.cpp b/src/binder/bind/read/bind_load_from.cpp index 75a64aba98..b13dec12ee 100644 --- a/src/binder/bind/read/bind_load_from.cpp +++ b/src/binder/bind/read/bind_load_from.cpp @@ -24,31 +24,38 @@ std::unique_ptr Binder::bindLoadFrom(const ReadingClause& re switch (source->type) { case ScanSourceType::OBJECT: { auto objectSource = source->constPtrCast(); - auto objectName = objectSource->objectName; - if (objectName.find("_") == std::string::npos) { - // Bind table + 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) { throw BinderException(ExceptionMessage::variableNotInScope(objectName)); } scanFunction = replacementData->func; bindData = scanFunction.bindFunc(clientContext, &replacementData->bindInput); - } else { - auto dbName = common::StringUtils::split(objectName, "_")[0]; - auto attachedDB = - clientContext->getDatabase()->getDatabaseManagerUnsafe()->getAttachedDatabase( - dbName); + } 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{ - common::stringFormat("No database named {} has been attached.", dbName)}; + stringFormat("No database named {} has been attached.", dbName)}; } - auto tableName = common::StringUtils::split(objectName, "_")[1]; - auto tableID = attachedDB->getCatalogContent()->getTableID(tableName); - auto tableCatalogEntry = ku_dynamic_cast( - attachedDB->getCatalogContent()->getTableCatalogEntry(tableID)); - scanFunction = tableCatalogEntry->getScanFunction(); + 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(); auto bindInput = function::TableFuncBindInput(); bindData = scanFunction.bindFunc(clientContext, &bindInput); + } else { + // LCOV_EXCL_START + // The following should never happen. + auto objectStr = StringUtils::join(objectSource->objectNames, ","); + throw BinderException(stringFormat("Cannot find object {}.", objectStr)); + // LCOV_EXCL_STOP } } break; case ScanSourceType::FILE: { diff --git a/src/include/common/string_utils.h b/src/include/common/string_utils.h index a50893e874..3141f1ebc1 100644 --- a/src/include/common/string_utils.h +++ b/src/include/common/string_utils.h @@ -12,10 +12,8 @@ namespace common { class StringUtils { public: KUZU_API static std::vector splitComma(const std::string& input); - KUZU_API static std::vector split(const std::string& input, const std::string& delimiter, bool ignoreEmptyStringParts = true); - static std::vector splitBySpace(const std::string& input); static void toUpper(std::string& input) { @@ -34,24 +32,22 @@ class StringUtils { static bool CharacterIsSpace(char c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; } - static bool CharacterIsDigit(char c) { return c >= '0' && c <= '9'; } - static inline std::string ltrim(const std::string& input) { + static std::string ltrim(const std::string& input) { auto s = input; s.erase(s.begin(), find_if(s.begin(), s.end(), [](unsigned char ch) { return !isspace(ch); })); return s; } - - static inline std::string rtrim(const std::string& input) { + static std::string rtrim(const std::string& input) { auto s = input; s.erase(find_if(s.rbegin(), s.rend(), [](unsigned char ch) { return !isspace(ch); }).base(), s.end()); return s; } - static inline void removeWhiteSpaces(std::string& str) { + static void removeWhiteSpaces(std::string& str) { std::regex whiteSpacePattern{"\\s"}; str = std::regex_replace(str, whiteSpacePattern, ""); } diff --git a/src/include/main/client_context.h b/src/include/main/client_context.h index 398227f6db..d8524955fd 100644 --- a/src/include/main/client_context.h +++ b/src/include/main/client_context.h @@ -31,6 +31,7 @@ struct ExtensionOptions; namespace main { class Database; +class DatabaseManager; struct ActiveQuery { explicit ActiveQuery(); @@ -90,6 +91,7 @@ class ClientContext { // Database component getters. KUZU_API Database* getDatabase() const { return database; } + DatabaseManager* getDatabaseManager() const; storage::StorageManager* getStorageManager() const; KUZU_API storage::MemoryManager* getMemoryManager(); catalog::Catalog* getCatalog() const; diff --git a/src/include/main/database.h b/src/include/main/database.h index 2af50812ce..d314b43f34 100644 --- a/src/include/main/database.h +++ b/src/include/main/database.h @@ -117,8 +117,6 @@ class Database { common::case_insensitive_map_t>& getStorageExtensions(); - DatabaseManager* getDatabaseManagerUnsafe() const; - private: void openLockFile(); void initDBDirAndCoreFilesIfNecessary(); diff --git a/src/include/parser/scan_source.h b/src/include/parser/scan_source.h index fa9caf4ba2..11ebe23fee 100644 --- a/src/include/parser/scan_source.h +++ b/src/include/parser/scan_source.h @@ -32,10 +32,12 @@ struct FileScanSource : public BaseScanSource { }; struct ObjectScanSource : public BaseScanSource { - std::string objectName; + // If multiple object presents, assuming they have a nested structure. + // E.g. for postgres.person, objectNames should be [postgres, person] + std::vector objectNames; - explicit ObjectScanSource(std::string objectName) - : BaseScanSource{common::ScanSourceType::OBJECT}, objectName{std::move(objectName)} {} + explicit ObjectScanSource(std::vector objectNames) + : BaseScanSource{common::ScanSourceType::OBJECT}, objectNames{std::move(objectNames)} {} }; struct QueryScanSource : public BaseScanSource { diff --git a/src/include/parser/transformer.h b/src/include/parser/transformer.h index 392af7a358..a44a9f25bb 100644 --- a/src/include/parser/transformer.h +++ b/src/include/parser/transformer.h @@ -184,7 +184,6 @@ class Transformer { CypherParser::OC_DoubleLiteralContext& ctx); // Transform ddl. - std::unique_ptr transformDDL(CypherParser::KU_DDLContext& ctx); std::unique_ptr transformAlterTable(CypherParser::KU_AlterTableContext& ctx); std::unique_ptr transformCreateNodeTable( CypherParser::KU_CreateNodeTableContext& ctx); diff --git a/src/main/client_context.cpp b/src/main/client_context.cpp index 4277dff331..9a87f62aad 100644 --- a/src/main/client_context.cpp +++ b/src/main/client_context.cpp @@ -154,6 +154,10 @@ std::string ClientContext::getExtensionDir() const { return common::stringFormat("{}/.kuzu/extension", config.homeDirectory); } +DatabaseManager* ClientContext::getDatabaseManager() const { + return database->databaseManager.get(); +} + storage::StorageManager* ClientContext::getStorageManager() const { return database->storageManager.get(); } diff --git a/src/main/database.cpp b/src/main/database.cpp index 7871707a52..293389e757 100644 --- a/src/main/database.cpp +++ b/src/main/database.cpp @@ -137,10 +137,6 @@ Database::getStorageExtensions() { return storageExtensions; } -DatabaseManager* Database::getDatabaseManagerUnsafe() const { - return databaseManager.get(); -} - void Database::openLockFile() { int flags; FileLockType lock; diff --git a/src/parser/transform/transform_copy.cpp b/src/parser/transform/transform_copy.cpp index 65947143e2..1a61da157b 100644 --- a/src/parser/transform/transform_copy.cpp +++ b/src/parser/transform/transform_copy.cpp @@ -68,11 +68,14 @@ std::unique_ptr Transformer::transformScanSource( auto query = transformQuery(*ctx.oC_Query()); return std::make_unique(std::move(query)); } else if (ctx.oC_Variable()) { - auto variable = transformVariable(*ctx.oC_Variable()); - return std::make_unique(std::move(variable)); - } else { - KU_UNREACHABLE; + std::vector objectNames; + objectNames.push_back(transformVariable(*ctx.oC_Variable())); + if (ctx.oC_SchemaName()) { + objectNames.push_back(transformSchemaName(*ctx.oC_SchemaName())); + } + return std::make_unique(std::move(objectNames)); } + KU_UNREACHABLE; } parsing_option_t Transformer::transformParsingOptions(CypherParser::KU_ParsingOptionsContext& ctx) { diff --git a/src/parser/transform/transform_ddl.cpp b/src/parser/transform/transform_ddl.cpp index 86f76de165..afe7cead84 100644 --- a/src/parser/transform/transform_ddl.cpp +++ b/src/parser/transform/transform_ddl.cpp @@ -9,22 +9,6 @@ using namespace kuzu::common; namespace kuzu { namespace parser { -std::unique_ptr Transformer::transformDDL(CypherParser::KU_DDLContext& ctx) { - if (ctx.kU_CreateNodeTable()) { - return transformCreateNodeTable(*ctx.kU_CreateNodeTable()); - } else if (ctx.kU_CreateRelTable()) { - return transformCreateRelTable(*ctx.kU_CreateRelTable()); - } else if (ctx.kU_CreateRelTableGroup()) { - return transformCreateRelTableGroup(*ctx.kU_CreateRelTableGroup()); - } else if (ctx.kU_CreateRdfGraph()) { - return transformCreateRdfGraphClause(*ctx.kU_CreateRdfGraph()); - } else if (ctx.kU_DropTable()) { - return transformDropTable(*ctx.kU_DropTable()); - } else { - return transformAlterTable(*ctx.kU_AlterTable()); - } -} - std::unique_ptr Transformer::transformAlterTable( CypherParser::KU_AlterTableContext& ctx) { if (ctx.kU_AlterOptions()->kU_AddProperty()) { diff --git a/src/parser/transformer.cpp b/src/parser/transformer.cpp index dafcfcad7b..dc9d59a00e 100644 --- a/src/parser/transformer.cpp +++ b/src/parser/transformer.cpp @@ -30,8 +30,18 @@ std::vector> Transformer::transform() { std::unique_ptr Transformer::transformStatement(CypherParser::OC_StatementContext& ctx) { if (ctx.oC_Query()) { return transformQuery(*ctx.oC_Query()); - } else if (ctx.kU_DDL()) { - return transformDDL(*ctx.kU_DDL()); + } else if (ctx.kU_CreateNodeTable()) { + return transformCreateNodeTable(*ctx.kU_CreateNodeTable()); + } else if (ctx.kU_CreateRelTable()) { + return transformCreateRelTable(*ctx.kU_CreateRelTable()); + } else if (ctx.kU_CreateRelTableGroup()) { + return transformCreateRelTableGroup(*ctx.kU_CreateRelTableGroup()); + } else if (ctx.kU_CreateRdfGraph()) { + return transformCreateRdfGraphClause(*ctx.kU_CreateRdfGraph()); + } else if (ctx.kU_DropTable()) { + return transformDropTable(*ctx.kU_DropTable()); + } else if (ctx.kU_AlterTable()) { + return transformAlterTable(*ctx.kU_AlterTable()); } else if (ctx.kU_CopyFromByColumn()) { return transformCopyFromByColumn(*ctx.kU_CopyFromByColumn()); } else if (ctx.kU_CopyFrom()) { diff --git a/src/processor/operator/attach_database.cpp b/src/processor/operator/attach_database.cpp index a924ba0710..4bf9293e94 100644 --- a/src/processor/operator/attach_database.cpp +++ b/src/processor/operator/attach_database.cpp @@ -7,15 +7,12 @@ namespace kuzu { namespace processor { -bool AttachDatabase::getNextTuplesInternal(kuzu::processor::ExecutionContext* context) { - for (auto& [name, storageExtension] : - context->clientContext->getDatabase()->getStorageExtensions()) { +bool AttachDatabase::getNextTuplesInternal(ExecutionContext* context) { + auto client = context->clientContext; + for (auto& [name, storageExtension] : client->getDatabase()->getStorageExtensions()) { if (storageExtension->canHandleDB(attachInfo.dbType)) { - auto db = storageExtension->attach(attachInfo.dbAlias, attachInfo.dbPath, - context->clientContext); - context->clientContext->getDatabase() - ->getDatabaseManagerUnsafe() - ->registerAttachedDatabase(std::move(db)); + auto db = storageExtension->attach(attachInfo.dbAlias, attachInfo.dbPath, client); + client->getDatabaseManager()->registerAttachedDatabase(std::move(db)); } } return false; diff --git a/src/processor/operator/detach_database.cpp b/src/processor/operator/detach_database.cpp index c9c2304176..f92c20cc64 100644 --- a/src/processor/operator/detach_database.cpp +++ b/src/processor/operator/detach_database.cpp @@ -7,7 +7,7 @@ namespace kuzu { namespace processor { bool DetachDatabase::getNextTuplesInternal(kuzu::processor::ExecutionContext* context) { - auto dbManager = context->clientContext->getDatabase()->getDatabaseManagerUnsafe(); + auto dbManager = context->clientContext->getDatabaseManager(); dbManager->detachDatabase(dbName); return false; } diff --git a/third_party/antlr4_cypher/cypher_lexer.cpp b/third_party/antlr4_cypher/cypher_lexer.cpp index be35a83528..941952d1e1 100644 --- a/third_party/antlr4_cypher/cypher_lexer.cpp +++ b/third_party/antlr4_cypher/cypher_lexer.cpp @@ -90,9 +90,9 @@ void cypherlexerLexerInitialize() { "DEFAULT_MODE" }, std::vector{ - "", "';'", "'('", "','", "')'", "'='", "'['", "']'", "'{'", "'}'", - "'|'", "'..'", "'<>'", "'<'", "'<='", "'>'", "'>='", "'&'", "'>>'", - "'<<'", "'+'", "'/'", "'%'", "'^'", "'=~'", "'.'", "'$'", "'\\u27E8'", + "", "';'", "'('", "','", "')'", "'.'", "'='", "'['", "']'", "'{'", + "'}'", "'|'", "'..'", "'<>'", "'<'", "'<='", "'>'", "'>='", "'&'", + "'>>'", "'<<'", "'+'", "'/'", "'%'", "'^'", "'=~'", "'$'", "'\\u27E8'", "'\\u3008'", "'\\uFE64'", "'\\uFF1C'", "'\\u27E9'", "'\\u3009'", "'\\uFE65'", "'\\uFF1E'", "'\\u00AD'", "'\\u2010'", "'\\u2011'", "'\\u2012'", "'\\u2013'", "'\\u2014'", "'\\u2015'", "'\\u2212'", "'\\uFE58'", "'\\uFE63'", "'\\uFF0D'", @@ -153,9 +153,9 @@ void cypherlexerLexerInitialize() { 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,10,1,11,1,11,1,11,1,12,1,12,1, - 13,1,13,1,13,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,18,1, - 18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,24,1, + 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, @@ -514,10 +514,10 @@ void cypherlexerLexerInitialize() { 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,368,1,0,0,0,25,371,1,0,0,0,27,373, - 1,0,0,0,29,376,1,0,0,0,31,378,1,0,0,0,33,381,1,0,0,0,35,383,1,0,0,0,37, - 386,1,0,0,0,39,389,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,400,1,0,0,0,51,402,1,0,0,0,53,404,1,0,0,0,55,406, + 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, @@ -552,18 +552,18 @@ void cypherlexerLexerInitialize() { 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,61,0, - 0,354,10,1,0,0,0,355,356,5,91,0,0,356,12,1,0,0,0,357,358,5,93,0,0,358, - 14,1,0,0,0,359,360,5,123,0,0,360,16,1,0,0,0,361,362,5,125,0,0,362,18, - 1,0,0,0,363,364,5,124,0,0,364,20,1,0,0,0,365,366,5,46,0,0,366,367,5,46, - 0,0,367,22,1,0,0,0,368,369,5,60,0,0,369,370,5,62,0,0,370,24,1,0,0,0,371, - 372,5,60,0,0,372,26,1,0,0,0,373,374,5,60,0,0,374,375,5,61,0,0,375,28, - 1,0,0,0,376,377,5,62,0,0,377,30,1,0,0,0,378,379,5,62,0,0,379,380,5,61, - 0,0,380,32,1,0,0,0,381,382,5,38,0,0,382,34,1,0,0,0,383,384,5,62,0,0,384, - 385,5,62,0,0,385,36,1,0,0,0,386,387,5,60,0,0,387,388,5,60,0,0,388,38, - 1,0,0,0,389,390,5,43,0,0,390,40,1,0,0,0,391,392,5,47,0,0,392,42,1,0,0, - 0,393,394,5,37,0,0,394,44,1,0,0,0,395,396,5,94,0,0,396,46,1,0,0,0,397, - 398,5,61,0,0,398,399,5,126,0,0,399,48,1,0,0,0,400,401,5,46,0,0,401,50, + 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, diff --git a/third_party/antlr4_cypher/cypher_parser.cpp b/third_party/antlr4_cypher/cypher_parser.cpp index 17cccc8fbc..2b80eb9d1e 100644 --- a/third_party/antlr4_cypher/cypher_parser.cpp +++ b/third_party/antlr4_cypher/cypher_parser.cpp @@ -55,29 +55,28 @@ void cypherParserInitialize() { "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_DDL", - "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_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", @@ -94,9 +93,9 @@ void cypherParserInitialize() { "oC_Dash" }, std::vector{ - "", "';'", "'('", "','", "')'", "'='", "'['", "']'", "'{'", "'}'", - "'|'", "'..'", "'<>'", "'<'", "'<='", "'>'", "'>='", "'&'", "'>>'", - "'<<'", "'+'", "'/'", "'%'", "'^'", "'=~'", "'.'", "'$'", "'\\u27E8'", + "", "';'", "'('", "','", "')'", "'.'", "'='", "'['", "']'", "'{'", + "'}'", "'|'", "'..'", "'<>'", "'<'", "'<='", "'>'", "'>='", "'&'", + "'>>'", "'<<'", "'+'", "'/'", "'%'", "'^'", "'=~'", "'$'", "'\\u27E8'", "'\\u3008'", "'\\uFE64'", "'\\uFF1C'", "'\\u27E9'", "'\\u3009'", "'\\uFE65'", "'\\uFF1E'", "'\\u00AD'", "'\\u2010'", "'\\u2011'", "'\\u2012'", "'\\u2013'", "'\\u2014'", "'\\u2015'", "'\\u2212'", "'\\uFE58'", "'\\uFE63'", "'\\uFF0D'", @@ -130,7 +129,7 @@ void cypherParserInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,1,152,2331,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,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, 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, @@ -152,900 +151,900 @@ 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,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,3,2,343,8,2,1,3,1,3,1,3,1,3,3,3,349,8,3, - 1,3,1,3,3,3,353,8,3,1,3,3,3,356,8,3,1,3,1,3,1,3,1,3,3,3,362,8,3,1,3,3, - 3,365,8,3,1,4,1,4,3,4,369,8,4,1,4,1,4,3,4,373,8,4,1,4,1,4,3,4,377,8,4, - 1,4,5,4,380,8,4,10,4,12,4,383,9,4,1,4,3,4,386,8,4,1,4,1,4,1,5,1,5,1,5, - 3,5,393,8,5,1,5,1,5,3,5,397,8,5,1,5,1,5,1,5,3,5,402,8,5,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,3,6,412,8,6,1,6,1,6,3,6,416,8,6,1,6,1,6,3,6,420,8,6, - 1,6,5,6,423,8,6,10,6,12,6,426,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7, - 1,7,3,7,438,8,7,1,7,1,7,3,7,442,8,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,450,8, - 7,1,7,3,7,453,8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,461,8,8,1,8,3,8,464,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,481,8,10,1,10,3,10,484,8,10,1,10,1,10,3,10,488,8,10,1,10,1,10,1, - 10,1,10,3,10,494,8,10,1,10,3,10,497,8,10,1,11,1,11,1,11,1,11,1,12,1,12, - 1,12,1,12,3,12,507,8,12,1,12,1,12,3,12,511,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,533,8,14,1,14,1,14,3,14,537,8,14,1,14,3,14,540,8,14,1,14, - 3,14,543,8,14,1,14,3,14,546,8,14,1,14,3,14,549,8,14,1,14,1,14,3,14,553, - 8,14,1,14,5,14,556,8,14,10,14,12,14,559,9,14,1,14,3,14,562,8,14,1,14, - 1,14,1,14,1,14,1,14,1,14,1,15,1,15,3,15,572,8,15,1,15,1,15,3,15,576,8, - 15,1,15,5,15,579,8,15,10,15,12,15,582,9,15,1,16,1,16,3,16,586,8,16,1, - 16,1,16,1,16,3,16,591,8,16,1,16,1,16,1,17,1,17,3,17,597,8,17,1,17,1,17, - 3,17,601,8,17,1,17,1,17,3,17,605,8,17,1,17,5,17,608,8,17,10,17,12,17, - 611,9,17,1,17,1,17,1,17,1,17,3,17,617,8,17,1,17,1,17,3,17,621,8,17,1, - 17,1,17,3,17,625,8,17,1,17,3,17,628,8,17,1,18,1,18,3,18,632,8,18,1,18, - 1,18,3,18,636,8,18,1,18,1,18,3,18,640,8,18,1,18,5,18,643,8,18,10,18,12, - 18,646,9,18,1,18,3,18,649,8,18,1,18,1,18,1,19,1,19,3,19,655,8,19,1,19, - 1,19,3,19,659,8,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,3,20,669,8, - 20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,679,8,21,1,21,1,21,3, - 21,683,8,21,1,21,1,21,3,21,687,8,21,1,21,1,21,3,21,691,8,21,1,21,1,21, - 1,21,3,21,696,8,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22, - 3,22,708,8,22,1,22,1,22,3,22,712,8,22,1,22,1,22,3,22,716,8,22,1,22,1, - 22,3,22,720,8,22,1,22,1,22,3,22,724,8,22,3,22,726,8,22,1,22,1,22,3,22, - 730,8,22,1,22,1,22,3,22,734,8,22,3,22,736,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,750,8,23,1,23,1,23,3,23,754, - 8,23,1,23,1,23,3,23,758,8,23,1,23,1,23,3,23,762,8,23,1,23,4,23,765,8, - 23,11,23,12,23,766,1,23,3,23,770,8,23,1,23,1,23,3,23,774,8,23,1,23,1, - 23,3,23,778,8,23,3,23,780,8,23,1,23,1,23,3,23,784,8,23,1,23,1,23,3,23, - 788,8,23,3,23,790,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,826,8,28,1, - 29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,837,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,859,8,33,1,33,1,33,3,33,863,8,33,1,33,5,33,866, - 8,33,10,33,12,33,869,9,33,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,3,35, - 879,8,35,1,35,1,35,3,35,883,8,35,1,35,1,35,3,35,887,8,35,1,35,1,35,1, - 36,1,36,1,36,1,36,3,36,895,8,36,1,36,1,36,3,36,899,8,36,1,36,1,36,3,36, - 903,8,36,1,36,1,36,1,36,1,36,3,36,909,8,36,1,36,1,36,3,36,913,8,36,1, - 36,1,36,3,36,917,8,36,1,36,1,36,1,36,1,36,3,36,923,8,36,1,36,1,36,3,36, - 927,8,36,1,36,1,36,3,36,931,8,36,1,36,1,36,3,36,935,8,36,1,36,1,36,3, - 36,939,8,36,1,36,1,36,3,36,943,8,36,1,36,1,36,5,36,947,8,36,10,36,12, - 36,950,9,36,1,37,1,37,5,37,954,8,37,10,37,12,37,957,9,37,1,38,1,38,3, - 38,961,8,38,1,38,1,38,1,39,1,39,3,39,967,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, - 987,8,42,1,43,1,43,3,43,991,8,43,1,44,1,44,1,44,1,44,1,44,1,44,3,44,999, - 8,44,1,45,1,45,1,45,1,45,1,46,1,46,1,47,1,47,3,47,1009,8,47,1,47,5,47, - 1012,8,47,10,47,12,47,1015,9,47,1,47,1,47,3,47,1019,8,47,4,47,1021,8, - 47,11,47,12,47,1022,1,47,1,47,1,47,3,47,1028,8,47,1,48,1,48,1,48,1,48, - 3,48,1034,8,48,1,48,1,48,1,48,3,48,1039,8,48,1,48,3,48,1042,8,48,1,49, - 1,49,3,49,1046,8,49,1,50,1,50,3,50,1050,8,50,5,50,1052,8,50,10,50,12, - 50,1055,9,50,1,50,1,50,1,50,3,50,1060,8,50,5,50,1062,8,50,10,50,12,50, - 1065,9,50,1,50,1,50,3,50,1069,8,50,1,50,5,50,1072,8,50,10,50,12,50,1075, - 9,50,1,50,3,50,1078,8,50,1,50,3,50,1081,8,50,1,50,1,50,3,50,1085,8,50, - 4,50,1087,8,50,11,50,12,50,1088,1,50,1,50,3,50,1093,8,50,1,51,1,51,3, - 51,1097,8,51,4,51,1099,8,51,11,51,12,51,1100,1,51,1,51,1,52,1,52,3,52, - 1107,8,52,5,52,1109,8,52,10,52,12,52,1112,9,52,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,1,53,1,53,1,53,1,53, - 3,53,1129,8,53,1,54,1,54,1,54,1,54,3,54,1135,8,54,1,55,1,55,1,55,1,55, - 1,55,1,55,3,55,1143,8,55,1,55,1,55,3,55,1147,8,55,1,55,1,55,3,55,1151, - 8,55,1,55,1,55,3,55,1155,8,55,1,55,1,55,1,55,1,55,1,55,3,55,1162,8,55, - 1,55,3,55,1165,8,55,1,55,3,55,1168,8,55,1,55,3,55,1171,8,55,1,56,1,56, - 1,56,1,56,3,56,1177,8,56,1,56,3,56,1180,8,56,1,57,1,57,3,57,1184,8,57, - 1,57,1,57,3,57,1188,8,57,1,57,1,57,3,57,1192,8,57,1,57,3,57,1195,8,57, - 1,58,1,58,3,58,1199,8,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,3,59, - 1209,8,59,1,59,1,59,1,60,1,60,3,60,1215,8,60,1,60,1,60,1,60,5,60,1220, - 8,60,10,60,12,60,1223,9,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1, - 61,1,61,3,61,1235,8,61,1,62,1,62,3,62,1239,8,62,1,62,1,62,3,62,1243,8, - 62,1,62,1,62,3,62,1247,8,62,1,62,5,62,1250,8,62,10,62,12,62,1253,9,62, - 1,63,1,63,3,63,1257,8,63,1,63,1,63,3,63,1261,8,63,1,63,1,63,1,64,1,64, - 3,64,1267,8,64,1,64,1,64,3,64,1271,8,64,1,64,1,64,3,64,1275,8,64,1,64, - 1,64,3,64,1279,8,64,1,64,5,64,1282,8,64,10,64,12,64,1285,9,64,1,65,1, - 65,1,65,3,65,1290,8,65,1,65,3,65,1293,8,65,1,66,1,66,1,66,1,67,3,67,1299, - 8,67,1,67,3,67,1302,8,67,1,67,1,67,1,67,1,67,3,67,1308,8,67,1,67,1,67, - 3,67,1312,8,67,1,67,1,67,3,67,1316,8,67,1,68,1,68,3,68,1320,8,68,1,68, - 1,68,3,68,1324,8,68,1,68,5,68,1327,8,68,10,68,12,68,1330,9,68,1,68,1, - 68,3,68,1334,8,68,1,68,1,68,3,68,1338,8,68,1,68,5,68,1341,8,68,10,68, - 12,68,1344,9,68,3,68,1346,8,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,3,69, - 1355,8,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,1364,8,70,1,70,5,70, - 1367,8,70,10,70,12,70,1370,9,70,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1, - 72,1,73,1,73,3,73,1382,8,73,1,73,3,73,1385,8,73,1,74,1,74,1,74,1,74,1, - 75,1,75,3,75,1393,8,75,1,75,1,75,3,75,1397,8,75,1,75,5,75,1400,8,75,10, - 75,12,75,1403,9,75,1,76,1,76,3,76,1407,8,76,1,76,1,76,3,76,1411,8,76, - 1,76,1,76,1,76,3,76,1416,8,76,1,77,1,77,1,78,1,78,3,78,1422,8,78,1,78, - 5,78,1425,8,78,10,78,12,78,1428,9,78,1,78,1,78,1,78,1,78,3,78,1434,8, - 78,1,79,1,79,3,79,1438,8,79,1,79,1,79,3,79,1442,8,79,3,79,1444,8,79,1, - 79,1,79,3,79,1448,8,79,3,79,1450,8,79,1,79,1,79,3,79,1454,8,79,3,79,1456, - 8,79,1,79,1,79,1,80,1,80,3,80,1462,8,80,1,80,1,80,1,81,1,81,3,81,1468, - 8,81,1,81,1,81,3,81,1472,8,81,1,81,3,81,1475,8,81,1,81,3,81,1478,8,81, - 1,81,1,81,1,81,1,81,3,81,1484,8,81,1,81,3,81,1487,8,81,1,81,3,81,1490, - 8,81,1,81,1,81,3,81,1494,8,81,1,81,1,81,1,81,1,81,3,81,1500,8,81,1,81, - 3,81,1503,8,81,1,81,3,81,1506,8,81,1,81,1,81,3,81,1510,8,81,1,82,1,82, - 3,82,1514,8,82,1,82,1,82,3,82,1518,8,82,3,82,1520,8,82,1,82,1,82,3,82, - 1524,8,82,3,82,1526,8,82,1,82,1,82,3,82,1530,8,82,3,82,1532,8,82,1,82, - 1,82,3,82,1536,8,82,3,82,1538,8,82,1,82,1,82,1,83,1,83,3,83,1544,8,83, - 1,83,1,83,3,83,1548,8,83,1,83,1,83,3,83,1552,8,83,1,83,1,83,3,83,1556, - 8,83,1,83,1,83,3,83,1560,8,83,1,83,1,83,3,83,1564,8,83,1,83,1,83,3,83, - 1568,8,83,1,83,1,83,3,83,1572,8,83,5,83,1574,8,83,10,83,12,83,1577,9, - 83,3,83,1579,8,83,1,83,1,83,1,84,1,84,3,84,1585,8,84,1,84,1,84,3,84,1589, - 8,84,1,84,1,84,3,84,1593,8,84,1,84,3,84,1596,8,84,1,84,5,84,1599,8,84, - 10,84,12,84,1602,9,84,1,85,1,85,3,85,1606,8,85,1,85,5,85,1609,8,85,10, - 85,12,85,1612,9,85,1,86,1,86,3,86,1616,8,86,1,86,1,86,1,87,1,87,3,87, - 1622,8,87,1,87,1,87,1,87,1,87,3,87,1628,8,87,1,87,3,87,1631,8,87,1,87, - 3,87,1634,8,87,1,87,3,87,1637,8,87,1,87,1,87,3,87,1641,8,87,1,87,3,87, - 1644,8,87,1,87,3,87,1647,8,87,1,87,3,87,1650,8,87,1,87,3,87,1653,8,87, - 1,88,1,88,3,88,1657,8,88,1,88,1,88,3,88,1661,8,88,1,88,1,88,3,88,1665, - 8,88,1,88,1,88,3,88,1669,8,88,1,88,1,88,3,88,1673,8,88,1,88,3,88,1676, - 8,88,1,88,3,88,1679,8,88,1,88,1,88,3,88,1683,8,88,1,88,1,88,3,88,1687, - 8,88,1,88,1,88,3,88,1691,8,88,1,88,1,88,3,88,1695,8,88,3,88,1697,8,88, - 1,88,1,88,1,89,1,89,3,89,1703,8,89,1,89,3,89,1706,8,89,1,89,3,89,1709, - 8,89,1,89,1,89,1,90,1,90,3,90,1715,8,90,1,90,3,90,1718,8,90,1,90,3,90, - 1721,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,1740,8,96,10,96,12,96,1743,9,96,1,97,1, - 97,1,97,1,97,1,97,5,97,1750,8,97,10,97,12,97,1753,9,97,1,98,1,98,1,98, - 1,98,1,98,5,98,1760,8,98,10,98,12,98,1763,9,98,1,99,1,99,3,99,1767,8, - 99,5,99,1769,8,99,10,99,12,99,1772,9,99,1,99,1,99,1,100,1,100,3,100,1778, - 8,100,1,100,1,100,3,100,1782,8,100,1,100,1,100,3,100,1786,8,100,1,100, - 1,100,3,100,1790,8,100,1,100,1,100,3,100,1794,8,100,1,100,1,100,1,100, - 1,100,1,100,1,100,3,100,1802,8,100,1,100,1,100,3,100,1806,8,100,1,100, - 1,100,3,100,1810,8,100,1,100,1,100,3,100,1814,8,100,1,100,1,100,4,100, - 1818,8,100,11,100,12,100,1819,1,100,1,100,3,100,1824,8,100,1,101,1,101, - 1,102,1,102,3,102,1830,8,102,1,102,1,102,3,102,1834,8,102,1,102,5,102, - 1837,8,102,10,102,12,102,1840,9,102,1,103,1,103,3,103,1844,8,103,1,103, - 1,103,3,103,1848,8,103,1,103,5,103,1851,8,103,10,103,12,103,1854,9,103, - 1,104,1,104,3,104,1858,8,104,1,104,1,104,3,104,1862,8,104,1,104,1,104, - 5,104,1866,8,104,10,104,12,104,1869,9,104,1,105,1,105,1,106,1,106,3,106, - 1875,8,106,1,106,1,106,3,106,1879,8,106,1,106,1,106,5,106,1883,8,106, - 10,106,12,106,1886,9,106,1,107,1,107,1,108,1,108,3,108,1892,8,108,1,108, - 1,108,3,108,1896,8,108,1,108,1,108,5,108,1900,8,108,10,108,12,108,1903, - 9,108,1,109,1,109,1,110,1,110,3,110,1909,8,110,1,110,1,110,3,110,1913, - 8,110,1,110,5,110,1916,8,110,10,110,12,110,1919,9,110,1,111,1,111,3,111, - 1923,8,111,5,111,1925,8,111,10,111,12,111,1928,9,111,1,111,1,111,3,111, - 1932,8,111,1,111,3,111,1935,8,111,1,112,1,112,1,112,4,112,1940,8,112, - 11,112,12,112,1941,1,112,3,112,1945,8,112,1,113,1,113,1,113,3,113,1950, - 8,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,3,113,1959,8,113,1,113, - 1,113,3,113,1963,8,113,1,113,3,113,1966,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,1979,8,114,1,114,3,114, - 1982,8,114,1,114,1,114,1,115,3,115,1987,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,2001,8,116,1,117, - 1,117,3,117,2005,8,117,1,117,5,117,2008,8,117,10,117,12,117,2011,9,117, - 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118,2022,8,118, - 1,119,1,119,1,119,1,119,1,119,1,119,3,119,2030,8,119,1,120,1,120,1,121, - 1,121,3,121,2036,8,121,1,121,1,121,3,121,2040,8,121,1,121,1,121,3,121, - 2044,8,121,5,121,2046,8,121,10,121,12,121,2049,9,121,3,121,2051,8,121, - 1,121,1,121,1,122,1,122,3,122,2057,8,122,1,122,3,122,2060,8,122,1,123, - 1,123,3,123,2064,8,123,1,123,1,123,3,123,2068,8,123,1,123,1,123,3,123, - 2072,8,123,1,123,1,123,3,123,2076,8,123,5,123,2078,8,123,10,123,12,123, - 2081,9,123,1,123,1,123,1,124,1,124,3,124,2087,8,124,1,124,3,124,2090, - 8,124,1,124,1,124,3,124,2094,8,124,1,124,1,124,1,125,1,125,3,125,2100, - 8,125,1,125,1,125,3,125,2104,8,125,1,125,1,125,1,126,1,126,3,126,2110, - 8,126,1,126,1,126,3,126,2114,8,126,1,126,1,126,3,126,2118,8,126,1,126, - 1,126,1,126,3,126,2123,8,126,1,126,1,126,3,126,2127,8,126,1,126,1,126, - 3,126,2131,8,126,3,126,2133,8,126,1,126,1,126,3,126,2137,8,126,1,126, - 1,126,3,126,2141,8,126,1,126,1,126,3,126,2145,8,126,5,126,2147,8,126, - 10,126,12,126,2150,9,126,3,126,2152,8,126,1,126,1,126,3,126,2156,8,126, - 1,127,1,127,1,128,1,128,3,128,2162,8,128,1,128,1,128,1,128,3,128,2167, - 8,128,3,128,2169,8,128,1,128,1,128,1,129,1,129,3,129,2175,8,129,1,129, - 4,129,2178,8,129,11,129,12,129,2179,1,130,1,130,3,130,2184,8,130,1,130, - 1,130,3,130,2188,8,130,1,130,1,130,3,130,2192,8,130,1,130,1,130,3,130, - 2196,8,130,1,130,3,130,2199,8,130,1,130,3,130,2202,8,130,1,130,1,130, - 1,131,1,131,3,131,2208,8,131,1,131,1,131,3,131,2212,8,131,1,131,1,131, - 3,131,2216,8,131,1,131,1,131,3,131,2220,8,131,1,131,3,131,2223,8,131, - 1,131,3,131,2226,8,131,1,131,1,131,1,132,1,132,3,132,2232,8,132,1,132, - 1,132,3,132,2236,8,132,1,133,1,133,3,133,2240,8,133,1,133,4,133,2243, - 8,133,11,133,12,133,2244,1,133,1,133,3,133,2249,8,133,1,133,1,133,3,133, - 2253,8,133,1,133,4,133,2256,8,133,11,133,12,133,2257,3,133,2260,8,133, - 1,133,3,133,2263,8,133,1,133,1,133,3,133,2267,8,133,1,133,3,133,2270, - 8,133,1,133,3,133,2273,8,133,1,133,1,133,1,134,1,134,3,134,2279,8,134, - 1,134,1,134,3,134,2283,8,134,1,134,1,134,3,134,2287,8,134,1,134,1,134, - 1,135,1,135,1,136,1,136,3,136,2295,8,136,1,137,1,137,1,137,3,137,2300, - 8,137,1,138,1,138,3,138,2304,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,2321,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,59,59,61,61,1,0,106,109, - 2,0,5,5,12,16,1,0,18,19,2,0,20,20,117,117,2,0,21,22,100,100,1,0,126,127, - 7,0,49,49,55,58,69,69,73,73,120,120,128,128,132,132,2,0,13,13,27,30,2, - 0,15,15,31,34,2,0,35,45,117,117,2636,0,296,1,0,0,0,2,316,1,0,0,0,4,342, - 1,0,0,0,6,344,1,0,0,0,8,366,1,0,0,0,10,401,1,0,0,0,12,403,1,0,0,0,14, - 433,1,0,0,0,16,454,1,0,0,0,18,465,1,0,0,0,20,471,1,0,0,0,22,498,1,0,0, - 0,24,502,1,0,0,0,26,514,1,0,0,0,28,526,1,0,0,0,30,569,1,0,0,0,32,583, - 1,0,0,0,34,627,1,0,0,0,36,629,1,0,0,0,38,652,1,0,0,0,40,668,1,0,0,0,42, - 670,1,0,0,0,44,699,1,0,0,0,46,739,1,0,0,0,48,793,1,0,0,0,50,801,1,0,0, - 0,52,807,1,0,0,0,54,813,1,0,0,0,56,825,1,0,0,0,58,827,1,0,0,0,60,838, - 1,0,0,0,62,842,1,0,0,0,64,848,1,0,0,0,66,856,1,0,0,0,68,870,1,0,0,0,70, - 874,1,0,0,0,72,942,1,0,0,0,74,951,1,0,0,0,76,958,1,0,0,0,78,966,1,0,0, - 0,80,968,1,0,0,0,82,970,1,0,0,0,84,986,1,0,0,0,86,990,1,0,0,0,88,992, - 1,0,0,0,90,1000,1,0,0,0,92,1004,1,0,0,0,94,1027,1,0,0,0,96,1041,1,0,0, - 0,98,1045,1,0,0,0,100,1092,1,0,0,0,102,1098,1,0,0,0,104,1110,1,0,0,0, - 106,1128,1,0,0,0,108,1134,1,0,0,0,110,1136,1,0,0,0,112,1172,1,0,0,0,114, - 1183,1,0,0,0,116,1196,1,0,0,0,118,1206,1,0,0,0,120,1212,1,0,0,0,122,1234, - 1,0,0,0,124,1236,1,0,0,0,126,1254,1,0,0,0,128,1266,1,0,0,0,130,1286,1, - 0,0,0,132,1294,1,0,0,0,134,1301,1,0,0,0,136,1345,1,0,0,0,138,1354,1,0, - 0,0,140,1356,1,0,0,0,142,1371,1,0,0,0,144,1375,1,0,0,0,146,1379,1,0,0, - 0,148,1386,1,0,0,0,150,1390,1,0,0,0,152,1415,1,0,0,0,154,1417,1,0,0,0, - 156,1433,1,0,0,0,158,1435,1,0,0,0,160,1459,1,0,0,0,162,1509,1,0,0,0,164, - 1511,1,0,0,0,166,1541,1,0,0,0,168,1582,1,0,0,0,170,1603,1,0,0,0,172,1613, - 1,0,0,0,174,1619,1,0,0,0,176,1654,1,0,0,0,178,1700,1,0,0,0,180,1712,1, - 0,0,0,182,1724,1,0,0,0,184,1726,1,0,0,0,186,1728,1,0,0,0,188,1730,1,0, - 0,0,190,1732,1,0,0,0,192,1734,1,0,0,0,194,1744,1,0,0,0,196,1754,1,0,0, - 0,198,1770,1,0,0,0,200,1823,1,0,0,0,202,1825,1,0,0,0,204,1827,1,0,0,0, - 206,1841,1,0,0,0,208,1855,1,0,0,0,210,1870,1,0,0,0,212,1872,1,0,0,0,214, - 1887,1,0,0,0,216,1889,1,0,0,0,218,1904,1,0,0,0,220,1906,1,0,0,0,222,1926, - 1,0,0,0,224,1936,1,0,0,0,226,1965,1,0,0,0,228,1978,1,0,0,0,230,1986,1, - 0,0,0,232,2000,1,0,0,0,234,2002,1,0,0,0,236,2021,1,0,0,0,238,2029,1,0, - 0,0,240,2031,1,0,0,0,242,2033,1,0,0,0,244,2054,1,0,0,0,246,2061,1,0,0, - 0,248,2086,1,0,0,0,250,2097,1,0,0,0,252,2155,1,0,0,0,254,2157,1,0,0,0, - 256,2168,1,0,0,0,258,2172,1,0,0,0,260,2181,1,0,0,0,262,2205,1,0,0,0,264, - 2229,1,0,0,0,266,2259,1,0,0,0,268,2276,1,0,0,0,270,2290,1,0,0,0,272,2294, - 1,0,0,0,274,2296,1,0,0,0,276,2301,1,0,0,0,278,2307,1,0,0,0,280,2309,1, - 0,0,0,282,2311,1,0,0,0,284,2313,1,0,0,0,286,2320,1,0,0,0,288,2322,1,0, - 0,0,290,2324,1,0,0,0,292,2326,1,0,0,0,294,2328,1,0,0,0,296,307,3,2,1, - 0,297,299,5,149,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,149,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,149,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,149,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,149,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,343,3,92,46,0,329,343,3,40,20,0,330,343,3,6,3,0,331,343,3,12,6,0, - 332,343,3,14,7,0,333,343,3,24,12,0,334,343,3,28,14,0,335,343,3,26,13, - 0,336,343,3,84,42,0,337,343,3,86,43,0,338,343,3,16,8,0,339,343,3,18,9, - 0,340,343,3,20,10,0,341,343,3,22,11,0,342,328,1,0,0,0,342,329,1,0,0,0, - 342,330,1,0,0,0,342,331,1,0,0,0,342,332,1,0,0,0,342,333,1,0,0,0,342,334, - 1,0,0,0,342,335,1,0,0,0,342,336,1,0,0,0,342,337,1,0,0,0,342,338,1,0,0, - 0,342,339,1,0,0,0,342,340,1,0,0,0,342,341,1,0,0,0,343,5,1,0,0,0,344,345, - 5,52,0,0,345,346,5,149,0,0,346,355,3,284,142,0,347,349,5,149,0,0,348, - 347,1,0,0,0,348,349,1,0,0,0,349,350,1,0,0,0,350,352,3,8,4,0,351,353,5, - 149,0,0,352,351,1,0,0,0,352,353,1,0,0,0,353,356,1,0,0,0,354,356,5,149, - 0,0,355,348,1,0,0,0,355,354,1,0,0,0,356,357,1,0,0,0,357,358,5,53,0,0, - 358,359,5,149,0,0,359,364,3,10,5,0,360,362,5,149,0,0,361,360,1,0,0,0, - 361,362,1,0,0,0,362,363,1,0,0,0,363,365,3,36,18,0,364,361,1,0,0,0,364, - 365,1,0,0,0,365,7,1,0,0,0,366,368,5,2,0,0,367,369,5,149,0,0,368,367,1, - 0,0,0,368,369,1,0,0,0,369,370,1,0,0,0,370,381,3,284,142,0,371,373,5,149, - 0,0,372,371,1,0,0,0,372,373,1,0,0,0,373,374,1,0,0,0,374,376,5,3,0,0,375, - 377,5,149,0,0,376,375,1,0,0,0,376,377,1,0,0,0,377,378,1,0,0,0,378,380, - 3,284,142,0,379,372,1,0,0,0,380,383,1,0,0,0,381,379,1,0,0,0,381,382,1, - 0,0,0,382,385,1,0,0,0,383,381,1,0,0,0,384,386,5,149,0,0,385,384,1,0,0, - 0,385,386,1,0,0,0,386,387,1,0,0,0,387,388,5,4,0,0,388,9,1,0,0,0,389,402, - 3,34,17,0,390,392,5,2,0,0,391,393,5,149,0,0,392,391,1,0,0,0,392,393,1, - 0,0,0,393,394,1,0,0,0,394,396,3,92,46,0,395,397,5,149,0,0,396,395,1,0, - 0,0,396,397,1,0,0,0,397,398,1,0,0,0,398,399,5,4,0,0,399,402,1,0,0,0,400, - 402,3,270,135,0,401,389,1,0,0,0,401,390,1,0,0,0,401,400,1,0,0,0,402,11, - 1,0,0,0,403,404,5,52,0,0,404,405,5,149,0,0,405,406,3,284,142,0,406,407, - 5,149,0,0,407,408,5,53,0,0,408,409,5,149,0,0,409,411,5,2,0,0,410,412, - 5,149,0,0,411,410,1,0,0,0,411,412,1,0,0,0,412,413,1,0,0,0,413,424,5,135, - 0,0,414,416,5,149,0,0,415,414,1,0,0,0,415,416,1,0,0,0,416,417,1,0,0,0, - 417,419,5,3,0,0,418,420,5,149,0,0,419,418,1,0,0,0,419,420,1,0,0,0,420, - 421,1,0,0,0,421,423,5,135,0,0,422,415,1,0,0,0,423,426,1,0,0,0,424,422, - 1,0,0,0,424,425,1,0,0,0,425,427,1,0,0,0,426,424,1,0,0,0,427,428,5,4,0, - 0,428,429,5,149,0,0,429,430,5,103,0,0,430,431,5,149,0,0,431,432,5,54, - 0,0,432,13,1,0,0,0,433,434,5,52,0,0,434,435,5,149,0,0,435,437,5,2,0,0, - 436,438,5,149,0,0,437,436,1,0,0,0,437,438,1,0,0,0,438,439,1,0,0,0,439, - 441,3,92,46,0,440,442,5,149,0,0,441,440,1,0,0,0,441,442,1,0,0,0,442,443, - 1,0,0,0,443,444,5,4,0,0,444,445,5,149,0,0,445,446,5,70,0,0,446,447,5, - 149,0,0,447,452,5,135,0,0,448,450,5,149,0,0,449,448,1,0,0,0,449,450,1, - 0,0,0,450,451,1,0,0,0,451,453,3,36,18,0,452,449,1,0,0,0,452,453,1,0,0, - 0,453,15,1,0,0,0,454,455,5,55,0,0,455,456,5,149,0,0,456,457,5,57,0,0, - 457,458,5,149,0,0,458,463,5,135,0,0,459,461,5,149,0,0,460,459,1,0,0,0, - 460,461,1,0,0,0,461,462,1,0,0,0,462,464,3,36,18,0,463,460,1,0,0,0,463, - 464,1,0,0,0,464,17,1,0,0,0,465,466,5,56,0,0,466,467,5,149,0,0,467,468, - 5,57,0,0,468,469,5,149,0,0,469,470,5,135,0,0,470,19,1,0,0,0,471,472,5, - 46,0,0,472,473,5,149,0,0,473,480,5,135,0,0,474,475,5,149,0,0,475,476, - 5,101,0,0,476,477,5,149,0,0,477,478,3,284,142,0,478,479,5,149,0,0,479, - 481,1,0,0,0,480,474,1,0,0,0,480,481,1,0,0,0,481,496,1,0,0,0,482,484,5, - 149,0,0,483,482,1,0,0,0,483,484,1,0,0,0,484,485,1,0,0,0,485,487,5,2,0, - 0,486,488,5,149,0,0,487,486,1,0,0,0,487,488,1,0,0,0,488,489,1,0,0,0,489, - 490,5,47,0,0,490,491,5,149,0,0,491,493,5,135,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,4,0,0,496,483,1, - 0,0,0,496,497,1,0,0,0,497,21,1,0,0,0,498,499,5,95,0,0,499,500,5,149,0, - 0,500,501,3,284,142,0,501,23,1,0,0,0,502,503,5,48,0,0,503,504,5,149,0, - 0,504,506,3,286,143,0,505,507,5,149,0,0,506,505,1,0,0,0,506,507,1,0,0, - 0,507,508,1,0,0,0,508,510,5,5,0,0,509,511,5,149,0,0,510,509,1,0,0,0,510, - 511,1,0,0,0,511,512,1,0,0,0,512,513,3,238,119,0,513,25,1,0,0,0,514,515, - 5,49,0,0,515,516,5,149,0,0,516,517,5,93,0,0,517,518,5,149,0,0,518,519, - 5,59,0,0,519,520,5,149,0,0,520,521,3,284,142,0,521,522,5,149,0,0,522, - 523,5,124,0,0,523,524,5,149,0,0,524,525,5,135,0,0,525,27,1,0,0,0,526, - 527,5,91,0,0,527,528,5,149,0,0,528,529,5,50,0,0,529,530,5,149,0,0,530, - 532,3,254,127,0,531,533,5,149,0,0,532,531,1,0,0,0,532,533,1,0,0,0,533, - 534,1,0,0,0,534,536,5,2,0,0,535,537,5,149,0,0,536,535,1,0,0,0,536,537, - 1,0,0,0,537,539,1,0,0,0,538,540,3,30,15,0,539,538,1,0,0,0,539,540,1,0, - 0,0,540,542,1,0,0,0,541,543,5,149,0,0,542,541,1,0,0,0,542,543,1,0,0,0, - 543,545,1,0,0,0,544,546,3,32,16,0,545,544,1,0,0,0,545,546,1,0,0,0,546, - 557,1,0,0,0,547,549,5,149,0,0,548,547,1,0,0,0,548,549,1,0,0,0,549,550, - 1,0,0,0,550,552,5,3,0,0,551,553,5,149,0,0,552,551,1,0,0,0,552,553,1,0, - 0,0,553,554,1,0,0,0,554,556,3,32,16,0,555,548,1,0,0,0,556,559,1,0,0,0, - 557,555,1,0,0,0,557,558,1,0,0,0,558,561,1,0,0,0,559,557,1,0,0,0,560,562, - 5,149,0,0,561,560,1,0,0,0,561,562,1,0,0,0,562,563,1,0,0,0,563,564,5,4, - 0,0,564,565,5,149,0,0,565,566,5,101,0,0,566,567,5,149,0,0,567,568,3,190, - 95,0,568,29,1,0,0,0,569,580,3,286,143,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,575,5,3,0,0,574,576,5,149,0,0, - 575,574,1,0,0,0,575,576,1,0,0,0,576,577,1,0,0,0,577,579,3,286,143,0,578, - 571,1,0,0,0,579,582,1,0,0,0,580,578,1,0,0,0,580,581,1,0,0,0,581,31,1, - 0,0,0,582,580,1,0,0,0,583,585,3,286,143,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,588,5,119,0,0,588,590,5,5,0, - 0,589,591,5,149,0,0,590,589,1,0,0,0,590,591,1,0,0,0,591,592,1,0,0,0,592, - 593,3,238,119,0,593,33,1,0,0,0,594,596,5,6,0,0,595,597,5,149,0,0,596, - 595,1,0,0,0,596,597,1,0,0,0,597,598,1,0,0,0,598,609,5,135,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,604,5,3, - 0,0,603,605,5,149,0,0,604,603,1,0,0,0,604,605,1,0,0,0,605,606,1,0,0,0, - 606,608,5,135,0,0,607,600,1,0,0,0,608,611,1,0,0,0,609,607,1,0,0,0,609, - 610,1,0,0,0,610,612,1,0,0,0,611,609,1,0,0,0,612,628,5,7,0,0,613,628,5, - 135,0,0,614,616,5,51,0,0,615,617,5,149,0,0,616,615,1,0,0,0,616,617,1, - 0,0,0,617,618,1,0,0,0,618,620,5,2,0,0,619,621,5,149,0,0,620,619,1,0,0, - 0,620,621,1,0,0,0,621,622,1,0,0,0,622,624,5,135,0,0,623,625,5,149,0,0, - 624,623,1,0,0,0,624,625,1,0,0,0,625,626,1,0,0,0,626,628,5,4,0,0,627,594, - 1,0,0,0,627,613,1,0,0,0,627,614,1,0,0,0,628,35,1,0,0,0,629,631,5,2,0, - 0,630,632,5,149,0,0,631,630,1,0,0,0,631,632,1,0,0,0,632,633,1,0,0,0,633, - 644,3,38,19,0,634,636,5,149,0,0,635,634,1,0,0,0,635,636,1,0,0,0,636,637, - 1,0,0,0,637,639,5,3,0,0,638,640,5,149,0,0,639,638,1,0,0,0,639,640,1,0, - 0,0,640,641,1,0,0,0,641,643,3,38,19,0,642,635,1,0,0,0,643,646,1,0,0,0, - 644,642,1,0,0,0,644,645,1,0,0,0,645,648,1,0,0,0,646,644,1,0,0,0,647,649, - 5,149,0,0,648,647,1,0,0,0,648,649,1,0,0,0,649,650,1,0,0,0,650,651,5,4, - 0,0,651,37,1,0,0,0,652,654,3,286,143,0,653,655,5,149,0,0,654,653,1,0, - 0,0,654,655,1,0,0,0,655,656,1,0,0,0,656,658,5,5,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,3,238,119,0,661, - 39,1,0,0,0,662,669,3,42,21,0,663,669,3,44,22,0,664,669,3,46,23,0,665, - 669,3,50,25,0,666,669,3,52,26,0,667,669,3,54,27,0,668,662,1,0,0,0,668, - 663,1,0,0,0,668,664,1,0,0,0,668,665,1,0,0,0,668,666,1,0,0,0,668,667,1, - 0,0,0,669,41,1,0,0,0,670,671,5,91,0,0,671,672,5,149,0,0,672,673,5,58, - 0,0,673,674,5,149,0,0,674,675,5,59,0,0,675,676,5,149,0,0,676,678,3,284, - 142,0,677,679,5,149,0,0,678,677,1,0,0,0,678,679,1,0,0,0,679,680,1,0,0, - 0,680,682,5,2,0,0,681,683,5,149,0,0,682,681,1,0,0,0,682,683,1,0,0,0,683, - 684,1,0,0,0,684,686,3,66,33,0,685,687,5,149,0,0,686,685,1,0,0,0,686,687, - 1,0,0,0,687,688,1,0,0,0,688,690,5,3,0,0,689,691,5,149,0,0,690,689,1,0, - 0,0,690,691,1,0,0,0,691,692,1,0,0,0,692,693,3,70,35,0,693,695,1,0,0,0, - 694,696,5,149,0,0,695,694,1,0,0,0,695,696,1,0,0,0,696,697,1,0,0,0,697, - 698,5,4,0,0,698,43,1,0,0,0,699,700,5,91,0,0,700,701,5,149,0,0,701,702, - 5,69,0,0,702,703,5,149,0,0,703,704,5,59,0,0,704,705,5,149,0,0,705,707, - 3,284,142,0,706,708,5,149,0,0,707,706,1,0,0,0,707,708,1,0,0,0,708,709, - 1,0,0,0,709,711,5,2,0,0,710,712,5,149,0,0,711,710,1,0,0,0,711,712,1,0, - 0,0,712,713,1,0,0,0,713,715,3,48,24,0,714,716,5,149,0,0,715,714,1,0,0, - 0,715,716,1,0,0,0,716,725,1,0,0,0,717,719,5,3,0,0,718,720,5,149,0,0,719, - 718,1,0,0,0,719,720,1,0,0,0,720,721,1,0,0,0,721,723,3,66,33,0,722,724, - 5,149,0,0,723,722,1,0,0,0,723,724,1,0,0,0,724,726,1,0,0,0,725,717,1,0, - 0,0,725,726,1,0,0,0,726,735,1,0,0,0,727,729,5,3,0,0,728,730,5,149,0,0, - 729,728,1,0,0,0,729,730,1,0,0,0,730,731,1,0,0,0,731,733,3,286,143,0,732, - 734,5,149,0,0,733,732,1,0,0,0,733,734,1,0,0,0,734,736,1,0,0,0,735,727, - 1,0,0,0,735,736,1,0,0,0,736,737,1,0,0,0,737,738,5,4,0,0,738,45,1,0,0, - 0,739,740,5,91,0,0,740,741,5,149,0,0,741,742,5,69,0,0,742,743,5,149,0, - 0,743,744,5,59,0,0,744,745,5,149,0,0,745,746,5,60,0,0,746,747,5,149,0, - 0,747,749,3,284,142,0,748,750,5,149,0,0,749,748,1,0,0,0,749,750,1,0,0, - 0,750,751,1,0,0,0,751,753,5,2,0,0,752,754,5,149,0,0,753,752,1,0,0,0,753, - 754,1,0,0,0,754,755,1,0,0,0,755,757,3,48,24,0,756,758,5,149,0,0,757,756, - 1,0,0,0,757,758,1,0,0,0,758,764,1,0,0,0,759,761,5,3,0,0,760,762,5,149, - 0,0,761,760,1,0,0,0,761,762,1,0,0,0,762,763,1,0,0,0,763,765,3,48,24,0, - 764,759,1,0,0,0,765,766,1,0,0,0,766,764,1,0,0,0,766,767,1,0,0,0,767,769, - 1,0,0,0,768,770,5,149,0,0,769,768,1,0,0,0,769,770,1,0,0,0,770,779,1,0, - 0,0,771,773,5,3,0,0,772,774,5,149,0,0,773,772,1,0,0,0,773,774,1,0,0,0, - 774,775,1,0,0,0,775,777,3,66,33,0,776,778,5,149,0,0,777,776,1,0,0,0,777, - 778,1,0,0,0,778,780,1,0,0,0,779,771,1,0,0,0,779,780,1,0,0,0,780,789,1, - 0,0,0,781,783,5,3,0,0,782,784,5,149,0,0,783,782,1,0,0,0,783,784,1,0,0, - 0,784,785,1,0,0,0,785,787,3,286,143,0,786,788,5,149,0,0,787,786,1,0,0, - 0,787,788,1,0,0,0,788,790,1,0,0,0,789,781,1,0,0,0,789,790,1,0,0,0,790, - 791,1,0,0,0,791,792,5,4,0,0,792,47,1,0,0,0,793,794,5,53,0,0,794,795,5, - 149,0,0,795,796,3,284,142,0,796,797,5,149,0,0,797,798,5,70,0,0,798,799, - 5,149,0,0,799,800,3,284,142,0,800,49,1,0,0,0,801,802,5,91,0,0,802,803, - 5,149,0,0,803,804,5,61,0,0,804,805,5,149,0,0,805,806,3,284,142,0,806, - 51,1,0,0,0,807,808,5,62,0,0,808,809,5,149,0,0,809,810,7,0,0,0,810,811, - 5,149,0,0,811,812,3,284,142,0,812,53,1,0,0,0,813,814,5,63,0,0,814,815, - 5,149,0,0,815,816,5,59,0,0,816,817,5,149,0,0,817,818,3,284,142,0,818, - 819,5,149,0,0,819,820,3,56,28,0,820,55,1,0,0,0,821,826,3,58,29,0,822, - 826,3,60,30,0,823,826,3,62,31,0,824,826,3,64,32,0,825,821,1,0,0,0,825, - 822,1,0,0,0,825,823,1,0,0,0,825,824,1,0,0,0,826,57,1,0,0,0,827,828,5, - 66,0,0,828,829,5,149,0,0,829,830,3,278,139,0,830,831,5,149,0,0,831,836, - 3,72,36,0,832,833,5,149,0,0,833,834,5,64,0,0,834,835,5,149,0,0,835,837, - 3,190,95,0,836,832,1,0,0,0,836,837,1,0,0,0,837,59,1,0,0,0,838,839,5,62, - 0,0,839,840,5,149,0,0,840,841,3,278,139,0,841,61,1,0,0,0,842,843,5,65, - 0,0,843,844,5,149,0,0,844,845,5,70,0,0,845,846,5,149,0,0,846,847,3,284, - 142,0,847,63,1,0,0,0,848,849,5,65,0,0,849,850,5,149,0,0,850,851,3,278, - 139,0,851,852,5,149,0,0,852,853,5,70,0,0,853,854,5,149,0,0,854,855,3, - 278,139,0,855,65,1,0,0,0,856,867,3,68,34,0,857,859,5,149,0,0,858,857, - 1,0,0,0,858,859,1,0,0,0,859,860,1,0,0,0,860,862,5,3,0,0,861,863,5,149, - 0,0,862,861,1,0,0,0,862,863,1,0,0,0,863,864,1,0,0,0,864,866,3,68,34,0, - 865,858,1,0,0,0,866,869,1,0,0,0,867,865,1,0,0,0,867,868,1,0,0,0,868,67, - 1,0,0,0,869,867,1,0,0,0,870,871,3,278,139,0,871,872,5,149,0,0,872,873, - 3,72,36,0,873,69,1,0,0,0,874,875,5,67,0,0,875,876,5,149,0,0,876,878,5, - 68,0,0,877,879,5,149,0,0,878,877,1,0,0,0,878,879,1,0,0,0,879,880,1,0, - 0,0,880,882,5,2,0,0,881,883,5,149,0,0,882,881,1,0,0,0,882,883,1,0,0,0, - 883,884,1,0,0,0,884,886,3,278,139,0,885,887,5,149,0,0,886,885,1,0,0,0, - 886,887,1,0,0,0,887,888,1,0,0,0,888,889,5,4,0,0,889,71,1,0,0,0,890,891, - 6,36,-1,0,891,943,3,286,143,0,892,894,5,84,0,0,893,895,5,149,0,0,894, - 893,1,0,0,0,894,895,1,0,0,0,895,896,1,0,0,0,896,898,5,2,0,0,897,899,5, - 149,0,0,898,897,1,0,0,0,898,899,1,0,0,0,899,900,1,0,0,0,900,902,3,66, - 33,0,901,903,5,149,0,0,902,901,1,0,0,0,902,903,1,0,0,0,903,904,1,0,0, - 0,904,905,5,4,0,0,905,943,1,0,0,0,906,908,3,286,143,0,907,909,5,149,0, - 0,908,907,1,0,0,0,908,909,1,0,0,0,909,910,1,0,0,0,910,912,5,2,0,0,911, - 913,5,149,0,0,912,911,1,0,0,0,912,913,1,0,0,0,913,914,1,0,0,0,914,916, - 3,66,33,0,915,917,5,149,0,0,916,915,1,0,0,0,916,917,1,0,0,0,917,918,1, - 0,0,0,918,919,5,4,0,0,919,943,1,0,0,0,920,922,3,286,143,0,921,923,5,149, - 0,0,922,921,1,0,0,0,922,923,1,0,0,0,923,924,1,0,0,0,924,926,5,2,0,0,925, - 927,5,149,0,0,926,925,1,0,0,0,926,927,1,0,0,0,927,928,1,0,0,0,928,930, - 3,72,36,0,929,931,5,149,0,0,930,929,1,0,0,0,930,931,1,0,0,0,931,932,1, - 0,0,0,932,934,5,3,0,0,933,935,5,149,0,0,934,933,1,0,0,0,934,935,1,0,0, - 0,935,936,1,0,0,0,936,938,3,72,36,0,937,939,5,149,0,0,938,937,1,0,0,0, - 938,939,1,0,0,0,939,940,1,0,0,0,940,941,5,4,0,0,941,943,1,0,0,0,942,890, - 1,0,0,0,942,892,1,0,0,0,942,906,1,0,0,0,942,920,1,0,0,0,943,948,1,0,0, - 0,944,945,10,4,0,0,945,947,3,74,37,0,946,944,1,0,0,0,947,950,1,0,0,0, - 948,946,1,0,0,0,948,949,1,0,0,0,949,73,1,0,0,0,950,948,1,0,0,0,951,955, - 3,76,38,0,952,954,3,76,38,0,953,952,1,0,0,0,954,957,1,0,0,0,955,953,1, - 0,0,0,955,956,1,0,0,0,956,75,1,0,0,0,957,955,1,0,0,0,958,960,5,6,0,0, - 959,961,3,280,140,0,960,959,1,0,0,0,960,961,1,0,0,0,961,962,1,0,0,0,962, - 963,5,7,0,0,963,77,1,0,0,0,964,967,3,80,40,0,965,967,3,82,41,0,966,964, - 1,0,0,0,966,965,1,0,0,0,967,79,1,0,0,0,968,969,5,71,0,0,969,81,1,0,0, - 0,970,971,5,72,0,0,971,83,1,0,0,0,972,973,5,73,0,0,973,974,5,149,0,0, - 974,987,5,74,0,0,975,976,5,73,0,0,976,977,5,149,0,0,977,978,5,74,0,0, - 978,979,5,149,0,0,979,980,5,75,0,0,980,981,5,149,0,0,981,987,5,76,0,0, - 982,987,5,78,0,0,983,987,5,79,0,0,984,987,5,80,0,0,985,987,5,81,0,0,986, - 972,1,0,0,0,986,975,1,0,0,0,986,982,1,0,0,0,986,983,1,0,0,0,986,984,1, - 0,0,0,986,985,1,0,0,0,987,85,1,0,0,0,988,991,3,88,44,0,989,991,3,90,45, - 0,990,988,1,0,0,0,990,989,1,0,0,0,991,87,1,0,0,0,992,993,5,86,0,0,993, - 994,5,149,0,0,994,995,5,83,0,0,995,998,5,149,0,0,996,999,5,135,0,0,997, - 999,3,270,135,0,998,996,1,0,0,0,998,997,1,0,0,0,999,89,1,0,0,0,1000,1001, - 5,82,0,0,1001,1002,5,149,0,0,1002,1003,3,270,135,0,1003,91,1,0,0,0,1004, - 1005,3,94,47,0,1005,93,1,0,0,0,1006,1013,3,98,49,0,1007,1009,5,149,0, - 0,1008,1007,1,0,0,0,1008,1009,1,0,0,0,1009,1010,1,0,0,0,1010,1012,3,96, - 48,0,1011,1008,1,0,0,0,1012,1015,1,0,0,0,1013,1011,1,0,0,0,1013,1014, - 1,0,0,0,1014,1028,1,0,0,0,1015,1013,1,0,0,0,1016,1018,3,132,66,0,1017, - 1019,5,149,0,0,1018,1017,1,0,0,0,1018,1019,1,0,0,0,1019,1021,1,0,0,0, - 1020,1016,1,0,0,0,1021,1022,1,0,0,0,1022,1020,1,0,0,0,1022,1023,1,0,0, - 0,1023,1024,1,0,0,0,1024,1025,3,98,49,0,1025,1026,6,47,-1,0,1026,1028, - 1,0,0,0,1027,1006,1,0,0,0,1027,1020,1,0,0,0,1028,95,1,0,0,0,1029,1030, - 5,84,0,0,1030,1031,5,149,0,0,1031,1033,5,85,0,0,1032,1034,5,149,0,0,1033, - 1032,1,0,0,0,1033,1034,1,0,0,0,1034,1035,1,0,0,0,1035,1042,3,98,49,0, - 1036,1038,5,84,0,0,1037,1039,5,149,0,0,1038,1037,1,0,0,0,1038,1039,1, - 0,0,0,1039,1040,1,0,0,0,1040,1042,3,98,49,0,1041,1029,1,0,0,0,1041,1036, - 1,0,0,0,1042,97,1,0,0,0,1043,1046,3,100,50,0,1044,1046,3,102,51,0,1045, - 1043,1,0,0,0,1045,1044,1,0,0,0,1046,99,1,0,0,0,1047,1049,3,108,54,0,1048, - 1050,5,149,0,0,1049,1048,1,0,0,0,1049,1050,1,0,0,0,1050,1052,1,0,0,0, - 1051,1047,1,0,0,0,1052,1055,1,0,0,0,1053,1051,1,0,0,0,1053,1054,1,0,0, - 0,1054,1056,1,0,0,0,1055,1053,1,0,0,0,1056,1093,3,132,66,0,1057,1059, - 3,108,54,0,1058,1060,5,149,0,0,1059,1058,1,0,0,0,1059,1060,1,0,0,0,1060, - 1062,1,0,0,0,1061,1057,1,0,0,0,1062,1065,1,0,0,0,1063,1061,1,0,0,0,1063, - 1064,1,0,0,0,1064,1066,1,0,0,0,1065,1063,1,0,0,0,1066,1073,3,106,53,0, - 1067,1069,5,149,0,0,1068,1067,1,0,0,0,1068,1069,1,0,0,0,1069,1070,1,0, - 0,0,1070,1072,3,106,53,0,1071,1068,1,0,0,0,1072,1075,1,0,0,0,1073,1071, - 1,0,0,0,1073,1074,1,0,0,0,1074,1080,1,0,0,0,1075,1073,1,0,0,0,1076,1078, - 5,149,0,0,1077,1076,1,0,0,0,1077,1078,1,0,0,0,1078,1079,1,0,0,0,1079, - 1081,3,132,66,0,1080,1077,1,0,0,0,1080,1081,1,0,0,0,1081,1093,1,0,0,0, - 1082,1084,3,108,54,0,1083,1085,5,149,0,0,1084,1083,1,0,0,0,1084,1085, - 1,0,0,0,1085,1087,1,0,0,0,1086,1082,1,0,0,0,1087,1088,1,0,0,0,1088,1086, - 1,0,0,0,1088,1089,1,0,0,0,1089,1090,1,0,0,0,1090,1091,6,50,-1,0,1091, - 1093,1,0,0,0,1092,1053,1,0,0,0,1092,1063,1,0,0,0,1092,1086,1,0,0,0,1093, - 101,1,0,0,0,1094,1096,3,104,52,0,1095,1097,5,149,0,0,1096,1095,1,0,0, - 0,1096,1097,1,0,0,0,1097,1099,1,0,0,0,1098,1094,1,0,0,0,1099,1100,1,0, - 0,0,1100,1098,1,0,0,0,1100,1101,1,0,0,0,1101,1102,1,0,0,0,1102,1103,3, - 100,50,0,1103,103,1,0,0,0,1104,1106,3,108,54,0,1105,1107,5,149,0,0,1106, - 1105,1,0,0,0,1106,1107,1,0,0,0,1107,1109,1,0,0,0,1108,1104,1,0,0,0,1109, - 1112,1,0,0,0,1110,1108,1,0,0,0,1110,1111,1,0,0,0,1111,1119,1,0,0,0,1112, - 1110,1,0,0,0,1113,1115,3,106,53,0,1114,1116,5,149,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,1122,1,0,0,0,1121,1119,1, - 0,0,0,1122,1123,3,130,65,0,1123,105,1,0,0,0,1124,1129,3,118,59,0,1125, - 1129,3,120,60,0,1126,1129,3,124,62,0,1127,1129,3,128,64,0,1128,1124,1, - 0,0,0,1128,1125,1,0,0,0,1128,1126,1,0,0,0,1128,1127,1,0,0,0,1129,107, - 1,0,0,0,1130,1135,3,114,57,0,1131,1135,3,116,58,0,1132,1135,3,112,56, - 0,1133,1135,3,110,55,0,1134,1130,1,0,0,0,1134,1131,1,0,0,0,1134,1132, - 1,0,0,0,1134,1133,1,0,0,0,1135,109,1,0,0,0,1136,1154,5,86,0,0,1137,1138, - 5,149,0,0,1138,1139,5,97,0,0,1139,1140,5,149,0,0,1140,1142,5,87,0,0,1141, - 1143,5,149,0,0,1142,1141,1,0,0,0,1142,1143,1,0,0,0,1143,1144,1,0,0,0, - 1144,1146,5,2,0,0,1145,1147,5,149,0,0,1146,1145,1,0,0,0,1146,1147,1,0, - 0,0,1147,1148,1,0,0,0,1148,1150,3,66,33,0,1149,1151,5,149,0,0,1150,1149, - 1,0,0,0,1150,1151,1,0,0,0,1151,1152,1,0,0,0,1152,1153,5,4,0,0,1153,1155, - 1,0,0,0,1154,1137,1,0,0,0,1154,1155,1,0,0,0,1155,1156,1,0,0,0,1156,1157, - 5,149,0,0,1157,1158,5,53,0,0,1158,1159,5,149,0,0,1159,1164,3,10,5,0,1160, - 1162,5,149,0,0,1161,1160,1,0,0,0,1161,1162,1,0,0,0,1162,1163,1,0,0,0, - 1163,1165,3,36,18,0,1164,1161,1,0,0,0,1164,1165,1,0,0,0,1165,1170,1,0, - 0,0,1166,1168,5,149,0,0,1167,1166,1,0,0,0,1167,1168,1,0,0,0,1168,1169, - 1,0,0,0,1169,1171,3,148,74,0,1170,1167,1,0,0,0,1170,1171,1,0,0,0,1171, - 111,1,0,0,0,1172,1173,5,48,0,0,1173,1174,5,149,0,0,1174,1179,3,252,126, - 0,1175,1177,5,149,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,113, - 1,0,0,0,1181,1182,5,88,0,0,1182,1184,5,149,0,0,1183,1181,1,0,0,0,1183, - 1184,1,0,0,0,1184,1185,1,0,0,0,1185,1187,5,89,0,0,1186,1188,5,149,0,0, - 1187,1186,1,0,0,0,1187,1188,1,0,0,0,1188,1189,1,0,0,0,1189,1194,3,150, - 75,0,1190,1192,5,149,0,0,1191,1190,1,0,0,0,1191,1192,1,0,0,0,1192,1193, - 1,0,0,0,1193,1195,3,148,74,0,1194,1191,1,0,0,0,1194,1195,1,0,0,0,1195, - 115,1,0,0,0,1196,1198,5,90,0,0,1197,1199,5,149,0,0,1198,1197,1,0,0,0, - 1198,1199,1,0,0,0,1199,1200,1,0,0,0,1200,1201,3,190,95,0,1201,1202,5, - 149,0,0,1202,1203,5,101,0,0,1203,1204,5,149,0,0,1204,1205,3,270,135,0, - 1205,117,1,0,0,0,1206,1208,5,91,0,0,1207,1209,5,149,0,0,1208,1207,1,0, - 0,0,1208,1209,1,0,0,0,1209,1210,1,0,0,0,1210,1211,3,150,75,0,1211,119, - 1,0,0,0,1212,1214,5,92,0,0,1213,1215,5,149,0,0,1214,1213,1,0,0,0,1214, - 1215,1,0,0,0,1215,1216,1,0,0,0,1216,1221,3,150,75,0,1217,1218,5,149,0, - 0,1218,1220,3,122,61,0,1219,1217,1,0,0,0,1220,1223,1,0,0,0,1221,1219, - 1,0,0,0,1221,1222,1,0,0,0,1222,121,1,0,0,0,1223,1221,1,0,0,0,1224,1225, - 5,93,0,0,1225,1226,5,149,0,0,1226,1227,5,89,0,0,1227,1228,5,149,0,0,1228, - 1235,3,124,62,0,1229,1230,5,93,0,0,1230,1231,5,149,0,0,1231,1232,5,91, - 0,0,1232,1233,5,149,0,0,1233,1235,3,124,62,0,1234,1224,1,0,0,0,1234,1229, - 1,0,0,0,1235,123,1,0,0,0,1236,1238,5,94,0,0,1237,1239,5,149,0,0,1238, - 1237,1,0,0,0,1238,1239,1,0,0,0,1239,1240,1,0,0,0,1240,1251,3,126,63,0, - 1241,1243,5,149,0,0,1242,1241,1,0,0,0,1242,1243,1,0,0,0,1243,1244,1,0, - 0,0,1244,1246,5,3,0,0,1245,1247,5,149,0,0,1246,1245,1,0,0,0,1246,1247, - 1,0,0,0,1247,1248,1,0,0,0,1248,1250,3,126,63,0,1249,1242,1,0,0,0,1250, - 1253,1,0,0,0,1251,1249,1,0,0,0,1251,1252,1,0,0,0,1252,125,1,0,0,0,1253, - 1251,1,0,0,0,1254,1256,3,276,138,0,1255,1257,5,149,0,0,1256,1255,1,0, - 0,0,1256,1257,1,0,0,0,1257,1258,1,0,0,0,1258,1260,5,5,0,0,1259,1261,5, - 149,0,0,1260,1259,1,0,0,0,1260,1261,1,0,0,0,1261,1262,1,0,0,0,1262,1263, - 3,190,95,0,1263,127,1,0,0,0,1264,1265,5,95,0,0,1265,1267,5,149,0,0,1266, - 1264,1,0,0,0,1266,1267,1,0,0,0,1267,1268,1,0,0,0,1268,1270,5,96,0,0,1269, - 1271,5,149,0,0,1270,1269,1,0,0,0,1270,1271,1,0,0,0,1271,1272,1,0,0,0, - 1272,1283,3,190,95,0,1273,1275,5,149,0,0,1274,1273,1,0,0,0,1274,1275, - 1,0,0,0,1275,1276,1,0,0,0,1276,1278,5,3,0,0,1277,1279,5,149,0,0,1278, - 1277,1,0,0,0,1278,1279,1,0,0,0,1279,1280,1,0,0,0,1280,1282,3,190,95,0, - 1281,1274,1,0,0,0,1282,1285,1,0,0,0,1283,1281,1,0,0,0,1283,1284,1,0,0, - 0,1284,129,1,0,0,0,1285,1283,1,0,0,0,1286,1287,5,97,0,0,1287,1292,3,134, - 67,0,1288,1290,5,149,0,0,1289,1288,1,0,0,0,1289,1290,1,0,0,0,1290,1291, - 1,0,0,0,1291,1293,3,148,74,0,1292,1289,1,0,0,0,1292,1293,1,0,0,0,1293, - 131,1,0,0,0,1294,1295,5,98,0,0,1295,1296,3,134,67,0,1296,133,1,0,0,0, - 1297,1299,5,149,0,0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0, - 0,0,1300,1302,5,99,0,0,1301,1298,1,0,0,0,1301,1302,1,0,0,0,1302,1303, - 1,0,0,0,1303,1304,5,149,0,0,1304,1307,3,136,68,0,1305,1306,5,149,0,0, - 1306,1308,3,140,70,0,1307,1305,1,0,0,0,1307,1308,1,0,0,0,1308,1311,1, - 0,0,0,1309,1310,5,149,0,0,1310,1312,3,142,71,0,1311,1309,1,0,0,0,1311, - 1312,1,0,0,0,1312,1315,1,0,0,0,1313,1314,5,149,0,0,1314,1316,3,144,72, - 0,1315,1313,1,0,0,0,1315,1316,1,0,0,0,1316,135,1,0,0,0,1317,1328,5,100, - 0,0,1318,1320,5,149,0,0,1319,1318,1,0,0,0,1319,1320,1,0,0,0,1320,1321, - 1,0,0,0,1321,1323,5,3,0,0,1322,1324,5,149,0,0,1323,1322,1,0,0,0,1323, - 1324,1,0,0,0,1324,1325,1,0,0,0,1325,1327,3,138,69,0,1326,1319,1,0,0,0, - 1327,1330,1,0,0,0,1328,1326,1,0,0,0,1328,1329,1,0,0,0,1329,1346,1,0,0, - 0,1330,1328,1,0,0,0,1331,1342,3,138,69,0,1332,1334,5,149,0,0,1333,1332, - 1,0,0,0,1333,1334,1,0,0,0,1334,1335,1,0,0,0,1335,1337,5,3,0,0,1336,1338, - 5,149,0,0,1337,1336,1,0,0,0,1337,1338,1,0,0,0,1338,1339,1,0,0,0,1339, - 1341,3,138,69,0,1340,1333,1,0,0,0,1341,1344,1,0,0,0,1342,1340,1,0,0,0, - 1342,1343,1,0,0,0,1343,1346,1,0,0,0,1344,1342,1,0,0,0,1345,1317,1,0,0, - 0,1345,1331,1,0,0,0,1346,137,1,0,0,0,1347,1348,3,190,95,0,1348,1349,5, - 149,0,0,1349,1350,5,101,0,0,1350,1351,5,149,0,0,1351,1352,3,270,135,0, - 1352,1355,1,0,0,0,1353,1355,3,190,95,0,1354,1347,1,0,0,0,1354,1353,1, - 0,0,0,1355,139,1,0,0,0,1356,1357,5,102,0,0,1357,1358,5,149,0,0,1358,1359, - 5,103,0,0,1359,1360,5,149,0,0,1360,1368,3,146,73,0,1361,1363,5,3,0,0, - 1362,1364,5,149,0,0,1363,1362,1,0,0,0,1363,1364,1,0,0,0,1364,1365,1,0, - 0,0,1365,1367,3,146,73,0,1366,1361,1,0,0,0,1367,1370,1,0,0,0,1368,1366, - 1,0,0,0,1368,1369,1,0,0,0,1369,141,1,0,0,0,1370,1368,1,0,0,0,1371,1372, - 5,104,0,0,1372,1373,5,149,0,0,1373,1374,3,190,95,0,1374,143,1,0,0,0,1375, - 1376,5,105,0,0,1376,1377,5,149,0,0,1377,1378,3,190,95,0,1378,145,1,0, - 0,0,1379,1384,3,190,95,0,1380,1382,5,149,0,0,1381,1380,1,0,0,0,1381,1382, - 1,0,0,0,1382,1383,1,0,0,0,1383,1385,7,1,0,0,1384,1381,1,0,0,0,1384,1385, - 1,0,0,0,1385,147,1,0,0,0,1386,1387,5,110,0,0,1387,1388,5,149,0,0,1388, - 1389,3,190,95,0,1389,149,1,0,0,0,1390,1401,3,152,76,0,1391,1393,5,149, - 0,0,1392,1391,1,0,0,0,1392,1393,1,0,0,0,1393,1394,1,0,0,0,1394,1396,5, - 3,0,0,1395,1397,5,149,0,0,1396,1395,1,0,0,0,1396,1397,1,0,0,0,1397,1398, - 1,0,0,0,1398,1400,3,152,76,0,1399,1392,1,0,0,0,1400,1403,1,0,0,0,1401, - 1399,1,0,0,0,1401,1402,1,0,0,0,1402,151,1,0,0,0,1403,1401,1,0,0,0,1404, - 1406,3,270,135,0,1405,1407,5,149,0,0,1406,1405,1,0,0,0,1406,1407,1,0, - 0,0,1407,1408,1,0,0,0,1408,1410,5,5,0,0,1409,1411,5,149,0,0,1410,1409, - 1,0,0,0,1410,1411,1,0,0,0,1411,1412,1,0,0,0,1412,1413,3,154,77,0,1413, - 1416,1,0,0,0,1414,1416,3,154,77,0,1415,1404,1,0,0,0,1415,1414,1,0,0,0, - 1416,153,1,0,0,0,1417,1418,3,156,78,0,1418,155,1,0,0,0,1419,1426,3,158, - 79,0,1420,1422,5,149,0,0,1421,1420,1,0,0,0,1421,1422,1,0,0,0,1422,1423, - 1,0,0,0,1423,1425,3,160,80,0,1424,1421,1,0,0,0,1425,1428,1,0,0,0,1426, - 1424,1,0,0,0,1426,1427,1,0,0,0,1427,1434,1,0,0,0,1428,1426,1,0,0,0,1429, - 1430,5,2,0,0,1430,1431,3,156,78,0,1431,1432,5,4,0,0,1432,1434,1,0,0,0, - 1433,1419,1,0,0,0,1433,1429,1,0,0,0,1434,157,1,0,0,0,1435,1437,5,2,0, - 0,1436,1438,5,149,0,0,1437,1436,1,0,0,0,1437,1438,1,0,0,0,1438,1443,1, - 0,0,0,1439,1441,3,270,135,0,1440,1442,5,149,0,0,1441,1440,1,0,0,0,1441, - 1442,1,0,0,0,1442,1444,1,0,0,0,1443,1439,1,0,0,0,1443,1444,1,0,0,0,1444, - 1449,1,0,0,0,1445,1447,3,170,85,0,1446,1448,5,149,0,0,1447,1446,1,0,0, - 0,1447,1448,1,0,0,0,1448,1450,1,0,0,0,1449,1445,1,0,0,0,1449,1450,1,0, - 0,0,1450,1455,1,0,0,0,1451,1453,3,166,83,0,1452,1454,5,149,0,0,1453,1452, - 1,0,0,0,1453,1454,1,0,0,0,1454,1456,1,0,0,0,1455,1451,1,0,0,0,1455,1456, - 1,0,0,0,1456,1457,1,0,0,0,1457,1458,5,4,0,0,1458,159,1,0,0,0,1459,1461, - 3,162,81,0,1460,1462,5,149,0,0,1461,1460,1,0,0,0,1461,1462,1,0,0,0,1462, - 1463,1,0,0,0,1463,1464,3,158,79,0,1464,161,1,0,0,0,1465,1467,3,290,145, - 0,1466,1468,5,149,0,0,1467,1466,1,0,0,0,1467,1468,1,0,0,0,1468,1469,1, - 0,0,0,1469,1471,3,294,147,0,1470,1472,5,149,0,0,1471,1470,1,0,0,0,1471, - 1472,1,0,0,0,1472,1474,1,0,0,0,1473,1475,3,164,82,0,1474,1473,1,0,0,0, - 1474,1475,1,0,0,0,1475,1477,1,0,0,0,1476,1478,5,149,0,0,1477,1476,1,0, - 0,0,1477,1478,1,0,0,0,1478,1479,1,0,0,0,1479,1480,3,294,147,0,1480,1510, - 1,0,0,0,1481,1483,3,294,147,0,1482,1484,5,149,0,0,1483,1482,1,0,0,0,1483, - 1484,1,0,0,0,1484,1486,1,0,0,0,1485,1487,3,164,82,0,1486,1485,1,0,0,0, - 1486,1487,1,0,0,0,1487,1489,1,0,0,0,1488,1490,5,149,0,0,1489,1488,1,0, - 0,0,1489,1490,1,0,0,0,1490,1491,1,0,0,0,1491,1493,3,294,147,0,1492,1494, - 5,149,0,0,1493,1492,1,0,0,0,1493,1494,1,0,0,0,1494,1495,1,0,0,0,1495, - 1496,3,292,146,0,1496,1510,1,0,0,0,1497,1499,3,294,147,0,1498,1500,5, - 149,0,0,1499,1498,1,0,0,0,1499,1500,1,0,0,0,1500,1502,1,0,0,0,1501,1503, - 3,164,82,0,1502,1501,1,0,0,0,1502,1503,1,0,0,0,1503,1505,1,0,0,0,1504, - 1506,5,149,0,0,1505,1504,1,0,0,0,1505,1506,1,0,0,0,1506,1507,1,0,0,0, - 1507,1508,3,294,147,0,1508,1510,1,0,0,0,1509,1465,1,0,0,0,1509,1481,1, - 0,0,0,1509,1497,1,0,0,0,1510,163,1,0,0,0,1511,1513,5,6,0,0,1512,1514, - 5,149,0,0,1513,1512,1,0,0,0,1513,1514,1,0,0,0,1514,1519,1,0,0,0,1515, - 1517,3,270,135,0,1516,1518,5,149,0,0,1517,1516,1,0,0,0,1517,1518,1,0, - 0,0,1518,1520,1,0,0,0,1519,1515,1,0,0,0,1519,1520,1,0,0,0,1520,1525,1, - 0,0,0,1521,1523,3,168,84,0,1522,1524,5,149,0,0,1523,1522,1,0,0,0,1523, - 1524,1,0,0,0,1524,1526,1,0,0,0,1525,1521,1,0,0,0,1525,1526,1,0,0,0,1526, - 1531,1,0,0,0,1527,1529,3,174,87,0,1528,1530,5,149,0,0,1529,1528,1,0,0, - 0,1529,1530,1,0,0,0,1530,1532,1,0,0,0,1531,1527,1,0,0,0,1531,1532,1,0, - 0,0,1532,1537,1,0,0,0,1533,1535,3,166,83,0,1534,1536,5,149,0,0,1535,1534, - 1,0,0,0,1535,1536,1,0,0,0,1536,1538,1,0,0,0,1537,1533,1,0,0,0,1537,1538, - 1,0,0,0,1538,1539,1,0,0,0,1539,1540,5,7,0,0,1540,165,1,0,0,0,1541,1543, - 5,8,0,0,1542,1544,5,149,0,0,1543,1542,1,0,0,0,1543,1544,1,0,0,0,1544, - 1578,1,0,0,0,1545,1547,3,278,139,0,1546,1548,5,149,0,0,1547,1546,1,0, - 0,0,1547,1548,1,0,0,0,1548,1549,1,0,0,0,1549,1551,5,119,0,0,1550,1552, - 5,149,0,0,1551,1550,1,0,0,0,1551,1552,1,0,0,0,1552,1553,1,0,0,0,1553, - 1555,3,190,95,0,1554,1556,5,149,0,0,1555,1554,1,0,0,0,1555,1556,1,0,0, - 0,1556,1575,1,0,0,0,1557,1559,5,3,0,0,1558,1560,5,149,0,0,1559,1558,1, - 0,0,0,1559,1560,1,0,0,0,1560,1561,1,0,0,0,1561,1563,3,278,139,0,1562, - 1564,5,149,0,0,1563,1562,1,0,0,0,1563,1564,1,0,0,0,1564,1565,1,0,0,0, - 1565,1567,5,119,0,0,1566,1568,5,149,0,0,1567,1566,1,0,0,0,1567,1568,1, - 0,0,0,1568,1569,1,0,0,0,1569,1571,3,190,95,0,1570,1572,5,149,0,0,1571, - 1570,1,0,0,0,1571,1572,1,0,0,0,1572,1574,1,0,0,0,1573,1557,1,0,0,0,1574, - 1577,1,0,0,0,1575,1573,1,0,0,0,1575,1576,1,0,0,0,1576,1579,1,0,0,0,1577, - 1575,1,0,0,0,1578,1545,1,0,0,0,1578,1579,1,0,0,0,1579,1580,1,0,0,0,1580, - 1581,5,9,0,0,1581,167,1,0,0,0,1582,1584,5,119,0,0,1583,1585,5,149,0,0, - 1584,1583,1,0,0,0,1584,1585,1,0,0,0,1585,1586,1,0,0,0,1586,1600,3,188, - 94,0,1587,1589,5,149,0,0,1588,1587,1,0,0,0,1588,1589,1,0,0,0,1589,1590, - 1,0,0,0,1590,1592,5,10,0,0,1591,1593,5,119,0,0,1592,1591,1,0,0,0,1592, - 1593,1,0,0,0,1593,1595,1,0,0,0,1594,1596,5,149,0,0,1595,1594,1,0,0,0, - 1595,1596,1,0,0,0,1596,1597,1,0,0,0,1597,1599,3,188,94,0,1598,1588,1, - 0,0,0,1599,1602,1,0,0,0,1600,1598,1,0,0,0,1600,1601,1,0,0,0,1601,169, - 1,0,0,0,1602,1600,1,0,0,0,1603,1610,3,172,86,0,1604,1606,5,149,0,0,1605, - 1604,1,0,0,0,1605,1606,1,0,0,0,1606,1607,1,0,0,0,1607,1609,3,172,86,0, - 1608,1605,1,0,0,0,1609,1612,1,0,0,0,1610,1608,1,0,0,0,1610,1611,1,0,0, - 0,1611,171,1,0,0,0,1612,1610,1,0,0,0,1613,1615,5,119,0,0,1614,1616,5, - 149,0,0,1615,1614,1,0,0,0,1615,1616,1,0,0,0,1616,1617,1,0,0,0,1617,1618, - 3,186,93,0,1618,173,1,0,0,0,1619,1621,5,100,0,0,1620,1622,5,149,0,0,1621, - 1620,1,0,0,0,1621,1622,1,0,0,0,1622,1627,1,0,0,0,1623,1628,5,111,0,0, - 1624,1625,5,85,0,0,1625,1626,5,149,0,0,1626,1628,5,111,0,0,1627,1623, - 1,0,0,0,1627,1624,1,0,0,0,1627,1628,1,0,0,0,1628,1630,1,0,0,0,1629,1631, - 5,149,0,0,1630,1629,1,0,0,0,1630,1631,1,0,0,0,1631,1646,1,0,0,0,1632, - 1634,3,182,91,0,1633,1632,1,0,0,0,1633,1634,1,0,0,0,1634,1636,1,0,0,0, - 1635,1637,5,149,0,0,1636,1635,1,0,0,0,1636,1637,1,0,0,0,1637,1638,1,0, - 0,0,1638,1640,5,11,0,0,1639,1641,5,149,0,0,1640,1639,1,0,0,0,1640,1641, - 1,0,0,0,1641,1643,1,0,0,0,1642,1644,3,184,92,0,1643,1642,1,0,0,0,1643, - 1644,1,0,0,0,1644,1647,1,0,0,0,1645,1647,3,280,140,0,1646,1633,1,0,0, - 0,1646,1645,1,0,0,0,1646,1647,1,0,0,0,1647,1652,1,0,0,0,1648,1650,5,149, - 0,0,1649,1648,1,0,0,0,1649,1650,1,0,0,0,1650,1651,1,0,0,0,1651,1653,3, - 176,88,0,1652,1649,1,0,0,0,1652,1653,1,0,0,0,1653,175,1,0,0,0,1654,1656, - 5,2,0,0,1655,1657,5,149,0,0,1656,1655,1,0,0,0,1656,1657,1,0,0,0,1657, - 1658,1,0,0,0,1658,1660,3,270,135,0,1659,1661,5,149,0,0,1660,1659,1,0, - 0,0,1660,1661,1,0,0,0,1661,1662,1,0,0,0,1662,1664,5,3,0,0,1663,1665,5, - 149,0,0,1664,1663,1,0,0,0,1664,1665,1,0,0,0,1665,1666,1,0,0,0,1666,1675, - 3,270,135,0,1667,1669,5,149,0,0,1668,1667,1,0,0,0,1668,1669,1,0,0,0,1669, - 1670,1,0,0,0,1670,1672,5,10,0,0,1671,1673,5,149,0,0,1672,1671,1,0,0,0, - 1672,1673,1,0,0,0,1673,1674,1,0,0,0,1674,1676,3,148,74,0,1675,1668,1, - 0,0,0,1675,1676,1,0,0,0,1676,1696,1,0,0,0,1677,1679,5,149,0,0,1678,1677, - 1,0,0,0,1678,1679,1,0,0,0,1679,1680,1,0,0,0,1680,1682,5,10,0,0,1681,1683, - 5,149,0,0,1682,1681,1,0,0,0,1682,1683,1,0,0,0,1683,1684,1,0,0,0,1684, - 1686,3,180,90,0,1685,1687,5,149,0,0,1686,1685,1,0,0,0,1686,1687,1,0,0, - 0,1687,1688,1,0,0,0,1688,1690,5,3,0,0,1689,1691,5,149,0,0,1690,1689,1, - 0,0,0,1690,1691,1,0,0,0,1691,1692,1,0,0,0,1692,1694,3,178,89,0,1693,1695, - 5,149,0,0,1694,1693,1,0,0,0,1694,1695,1,0,0,0,1695,1697,1,0,0,0,1696, - 1678,1,0,0,0,1696,1697,1,0,0,0,1697,1698,1,0,0,0,1698,1699,5,4,0,0,1699, - 177,1,0,0,0,1700,1702,5,8,0,0,1701,1703,5,149,0,0,1702,1701,1,0,0,0,1702, - 1703,1,0,0,0,1703,1705,1,0,0,0,1704,1706,3,136,68,0,1705,1704,1,0,0,0, - 1705,1706,1,0,0,0,1706,1708,1,0,0,0,1707,1709,5,149,0,0,1708,1707,1,0, - 0,0,1708,1709,1,0,0,0,1709,1710,1,0,0,0,1710,1711,5,9,0,0,1711,179,1, - 0,0,0,1712,1714,5,8,0,0,1713,1715,5,149,0,0,1714,1713,1,0,0,0,1714,1715, - 1,0,0,0,1715,1717,1,0,0,0,1716,1718,3,136,68,0,1717,1716,1,0,0,0,1717, - 1718,1,0,0,0,1718,1720,1,0,0,0,1719,1721,5,149,0,0,1720,1719,1,0,0,0, - 1720,1721,1,0,0,0,1721,1722,1,0,0,0,1722,1723,5,9,0,0,1723,181,1,0,0, - 0,1724,1725,5,137,0,0,1725,183,1,0,0,0,1726,1727,5,137,0,0,1727,185,1, - 0,0,0,1728,1729,3,284,142,0,1729,187,1,0,0,0,1730,1731,3,284,142,0,1731, - 189,1,0,0,0,1732,1733,3,192,96,0,1733,191,1,0,0,0,1734,1741,3,194,97, - 0,1735,1736,5,149,0,0,1736,1737,5,112,0,0,1737,1738,5,149,0,0,1738,1740, - 3,194,97,0,1739,1735,1,0,0,0,1740,1743,1,0,0,0,1741,1739,1,0,0,0,1741, - 1742,1,0,0,0,1742,193,1,0,0,0,1743,1741,1,0,0,0,1744,1751,3,196,98,0, - 1745,1746,5,149,0,0,1746,1747,5,113,0,0,1747,1748,5,149,0,0,1748,1750, - 3,196,98,0,1749,1745,1,0,0,0,1750,1753,1,0,0,0,1751,1749,1,0,0,0,1751, - 1752,1,0,0,0,1752,195,1,0,0,0,1753,1751,1,0,0,0,1754,1761,3,198,99,0, - 1755,1756,5,149,0,0,1756,1757,5,114,0,0,1757,1758,5,149,0,0,1758,1760, - 3,198,99,0,1759,1755,1,0,0,0,1760,1763,1,0,0,0,1761,1759,1,0,0,0,1761, - 1762,1,0,0,0,1762,197,1,0,0,0,1763,1761,1,0,0,0,1764,1766,5,115,0,0,1765, - 1767,5,149,0,0,1766,1765,1,0,0,0,1766,1767,1,0,0,0,1767,1769,1,0,0,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,1773,1,0,0,0,1772,1770,1,0,0,0,1773,1774,3,200,100,0,1774,199, - 1,0,0,0,1775,1785,3,204,102,0,1776,1778,5,149,0,0,1777,1776,1,0,0,0,1777, - 1778,1,0,0,0,1778,1779,1,0,0,0,1779,1781,3,202,101,0,1780,1782,5,149, - 0,0,1781,1780,1,0,0,0,1781,1782,1,0,0,0,1782,1783,1,0,0,0,1783,1784,3, - 204,102,0,1784,1786,1,0,0,0,1785,1777,1,0,0,0,1785,1786,1,0,0,0,1786, - 1824,1,0,0,0,1787,1789,3,204,102,0,1788,1790,5,149,0,0,1789,1788,1,0, - 0,0,1789,1790,1,0,0,0,1790,1791,1,0,0,0,1791,1793,5,116,0,0,1792,1794, - 5,149,0,0,1793,1792,1,0,0,0,1793,1794,1,0,0,0,1794,1795,1,0,0,0,1795, - 1796,3,204,102,0,1796,1797,1,0,0,0,1797,1798,6,100,-1,0,1798,1824,1,0, - 0,0,1799,1801,3,204,102,0,1800,1802,5,149,0,0,1801,1800,1,0,0,0,1801, - 1802,1,0,0,0,1802,1803,1,0,0,0,1803,1805,3,202,101,0,1804,1806,5,149, - 0,0,1805,1804,1,0,0,0,1805,1806,1,0,0,0,1806,1807,1,0,0,0,1807,1817,3, - 204,102,0,1808,1810,5,149,0,0,1809,1808,1,0,0,0,1809,1810,1,0,0,0,1810, - 1811,1,0,0,0,1811,1813,3,202,101,0,1812,1814,5,149,0,0,1813,1812,1,0, - 0,0,1813,1814,1,0,0,0,1814,1815,1,0,0,0,1815,1816,3,204,102,0,1816,1818, - 1,0,0,0,1817,1809,1,0,0,0,1818,1819,1,0,0,0,1819,1817,1,0,0,0,1819,1820, - 1,0,0,0,1820,1821,1,0,0,0,1821,1822,6,100,-1,0,1822,1824,1,0,0,0,1823, - 1775,1,0,0,0,1823,1787,1,0,0,0,1823,1799,1,0,0,0,1824,201,1,0,0,0,1825, - 1826,7,2,0,0,1826,203,1,0,0,0,1827,1838,3,206,103,0,1828,1830,5,149,0, - 0,1829,1828,1,0,0,0,1829,1830,1,0,0,0,1830,1831,1,0,0,0,1831,1833,5,10, - 0,0,1832,1834,5,149,0,0,1833,1832,1,0,0,0,1833,1834,1,0,0,0,1834,1835, - 1,0,0,0,1835,1837,3,206,103,0,1836,1829,1,0,0,0,1837,1840,1,0,0,0,1838, - 1836,1,0,0,0,1838,1839,1,0,0,0,1839,205,1,0,0,0,1840,1838,1,0,0,0,1841, - 1852,3,208,104,0,1842,1844,5,149,0,0,1843,1842,1,0,0,0,1843,1844,1,0, - 0,0,1844,1845,1,0,0,0,1845,1847,5,17,0,0,1846,1848,5,149,0,0,1847,1846, - 1,0,0,0,1847,1848,1,0,0,0,1848,1849,1,0,0,0,1849,1851,3,208,104,0,1850, - 1843,1,0,0,0,1851,1854,1,0,0,0,1852,1850,1,0,0,0,1852,1853,1,0,0,0,1853, - 207,1,0,0,0,1854,1852,1,0,0,0,1855,1867,3,212,106,0,1856,1858,5,149,0, - 0,1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1859,1,0,0,0,1859,1861,3,210, - 105,0,1860,1862,5,149,0,0,1861,1860,1,0,0,0,1861,1862,1,0,0,0,1862,1863, - 1,0,0,0,1863,1864,3,212,106,0,1864,1866,1,0,0,0,1865,1857,1,0,0,0,1866, - 1869,1,0,0,0,1867,1865,1,0,0,0,1867,1868,1,0,0,0,1868,209,1,0,0,0,1869, - 1867,1,0,0,0,1870,1871,7,3,0,0,1871,211,1,0,0,0,1872,1884,3,216,108,0, - 1873,1875,5,149,0,0,1874,1873,1,0,0,0,1874,1875,1,0,0,0,1875,1876,1,0, - 0,0,1876,1878,3,214,107,0,1877,1879,5,149,0,0,1878,1877,1,0,0,0,1878, - 1879,1,0,0,0,1879,1880,1,0,0,0,1880,1881,3,216,108,0,1881,1883,1,0,0, - 0,1882,1874,1,0,0,0,1883,1886,1,0,0,0,1884,1882,1,0,0,0,1884,1885,1,0, - 0,0,1885,213,1,0,0,0,1886,1884,1,0,0,0,1887,1888,7,4,0,0,1888,215,1,0, - 0,0,1889,1901,3,220,110,0,1890,1892,5,149,0,0,1891,1890,1,0,0,0,1891, - 1892,1,0,0,0,1892,1893,1,0,0,0,1893,1895,3,218,109,0,1894,1896,5,149, - 0,0,1895,1894,1,0,0,0,1895,1896,1,0,0,0,1896,1897,1,0,0,0,1897,1898,3, - 220,110,0,1898,1900,1,0,0,0,1899,1891,1,0,0,0,1900,1903,1,0,0,0,1901, - 1899,1,0,0,0,1901,1902,1,0,0,0,1902,217,1,0,0,0,1903,1901,1,0,0,0,1904, - 1905,7,5,0,0,1905,219,1,0,0,0,1906,1917,3,222,111,0,1907,1909,5,149,0, - 0,1908,1907,1,0,0,0,1908,1909,1,0,0,0,1909,1910,1,0,0,0,1910,1912,5,23, - 0,0,1911,1913,5,149,0,0,1912,1911,1,0,0,0,1912,1913,1,0,0,0,1913,1914, - 1,0,0,0,1914,1916,3,222,111,0,1915,1908,1,0,0,0,1916,1919,1,0,0,0,1917, - 1915,1,0,0,0,1917,1918,1,0,0,0,1918,221,1,0,0,0,1919,1917,1,0,0,0,1920, - 1922,5,117,0,0,1921,1923,5,149,0,0,1922,1921,1,0,0,0,1922,1923,1,0,0, - 0,1923,1925,1,0,0,0,1924,1920,1,0,0,0,1925,1928,1,0,0,0,1926,1924,1,0, - 0,0,1926,1927,1,0,0,0,1927,1929,1,0,0,0,1928,1926,1,0,0,0,1929,1934,3, - 224,112,0,1930,1932,5,149,0,0,1931,1930,1,0,0,0,1931,1932,1,0,0,0,1932, - 1933,1,0,0,0,1933,1935,5,118,0,0,1934,1931,1,0,0,0,1934,1935,1,0,0,0, - 1935,223,1,0,0,0,1936,1944,3,234,117,0,1937,1945,3,228,114,0,1938,1940, - 3,226,113,0,1939,1938,1,0,0,0,1940,1941,1,0,0,0,1941,1939,1,0,0,0,1941, - 1942,1,0,0,0,1942,1945,1,0,0,0,1943,1945,3,232,116,0,1944,1937,1,0,0, - 0,1944,1939,1,0,0,0,1944,1943,1,0,0,0,1944,1945,1,0,0,0,1945,225,1,0, - 0,0,1946,1947,5,149,0,0,1947,1949,5,120,0,0,1948,1950,5,149,0,0,1949, - 1948,1,0,0,0,1949,1950,1,0,0,0,1950,1951,1,0,0,0,1951,1966,3,234,117, - 0,1952,1953,5,6,0,0,1953,1954,3,190,95,0,1954,1955,5,7,0,0,1955,1966, - 1,0,0,0,1956,1958,5,6,0,0,1957,1959,3,190,95,0,1958,1957,1,0,0,0,1958, - 1959,1,0,0,0,1959,1960,1,0,0,0,1960,1962,5,119,0,0,1961,1963,3,190,95, - 0,1962,1961,1,0,0,0,1962,1963,1,0,0,0,1963,1964,1,0,0,0,1964,1966,5,7, - 0,0,1965,1946,1,0,0,0,1965,1952,1,0,0,0,1965,1956,1,0,0,0,1966,227,1, - 0,0,0,1967,1979,3,230,115,0,1968,1969,5,149,0,0,1969,1970,5,121,0,0,1970, - 1971,5,149,0,0,1971,1979,5,97,0,0,1972,1973,5,149,0,0,1973,1974,5,122, - 0,0,1974,1975,5,149,0,0,1975,1979,5,97,0,0,1976,1977,5,149,0,0,1977,1979, - 5,123,0,0,1978,1967,1,0,0,0,1978,1968,1,0,0,0,1978,1972,1,0,0,0,1978, - 1976,1,0,0,0,1979,1981,1,0,0,0,1980,1982,5,149,0,0,1981,1980,1,0,0,0, - 1981,1982,1,0,0,0,1982,1983,1,0,0,0,1983,1984,3,234,117,0,1984,229,1, - 0,0,0,1985,1987,5,149,0,0,1986,1985,1,0,0,0,1986,1987,1,0,0,0,1987,1988, - 1,0,0,0,1988,1989,5,24,0,0,1989,231,1,0,0,0,1990,1991,5,149,0,0,1991, - 1992,5,124,0,0,1992,1993,5,149,0,0,1993,2001,5,125,0,0,1994,1995,5,149, - 0,0,1995,1996,5,124,0,0,1996,1997,5,149,0,0,1997,1998,5,115,0,0,1998, - 1999,5,149,0,0,1999,2001,5,125,0,0,2000,1990,1,0,0,0,2000,1994,1,0,0, - 0,2001,233,1,0,0,0,2002,2009,3,236,118,0,2003,2005,5,149,0,0,2004,2003, - 1,0,0,0,2004,2005,1,0,0,0,2005,2006,1,0,0,0,2006,2008,3,264,132,0,2007, - 2004,1,0,0,0,2008,2011,1,0,0,0,2009,2007,1,0,0,0,2009,2010,1,0,0,0,2010, - 235,1,0,0,0,2011,2009,1,0,0,0,2012,2022,3,238,119,0,2013,2022,3,274,137, - 0,2014,2022,3,266,133,0,2015,2022,3,250,125,0,2016,2022,3,252,126,0,2017, - 2022,3,258,129,0,2018,2022,3,260,130,0,2019,2022,3,262,131,0,2020,2022, - 3,270,135,0,2021,2012,1,0,0,0,2021,2013,1,0,0,0,2021,2014,1,0,0,0,2021, - 2015,1,0,0,0,2021,2016,1,0,0,0,2021,2017,1,0,0,0,2021,2018,1,0,0,0,2021, - 2019,1,0,0,0,2021,2020,1,0,0,0,2022,237,1,0,0,0,2023,2030,3,272,136,0, - 2024,2030,5,135,0,0,2025,2030,3,240,120,0,2026,2030,5,125,0,0,2027,2030, - 3,242,121,0,2028,2030,3,246,123,0,2029,2023,1,0,0,0,2029,2024,1,0,0,0, - 2029,2025,1,0,0,0,2029,2026,1,0,0,0,2029,2027,1,0,0,0,2029,2028,1,0,0, - 0,2030,239,1,0,0,0,2031,2032,7,6,0,0,2032,241,1,0,0,0,2033,2035,5,6,0, - 0,2034,2036,5,149,0,0,2035,2034,1,0,0,0,2035,2036,1,0,0,0,2036,2050,1, - 0,0,0,2037,2039,3,190,95,0,2038,2040,5,149,0,0,2039,2038,1,0,0,0,2039, - 2040,1,0,0,0,2040,2047,1,0,0,0,2041,2043,3,244,122,0,2042,2044,5,149, - 0,0,2043,2042,1,0,0,0,2043,2044,1,0,0,0,2044,2046,1,0,0,0,2045,2041,1, - 0,0,0,2046,2049,1,0,0,0,2047,2045,1,0,0,0,2047,2048,1,0,0,0,2048,2051, - 1,0,0,0,2049,2047,1,0,0,0,2050,2037,1,0,0,0,2050,2051,1,0,0,0,2051,2052, - 1,0,0,0,2052,2053,5,7,0,0,2053,243,1,0,0,0,2054,2056,5,3,0,0,2055,2057, - 5,149,0,0,2056,2055,1,0,0,0,2056,2057,1,0,0,0,2057,2059,1,0,0,0,2058, - 2060,3,190,95,0,2059,2058,1,0,0,0,2059,2060,1,0,0,0,2060,245,1,0,0,0, - 2061,2063,5,8,0,0,2062,2064,5,149,0,0,2063,2062,1,0,0,0,2063,2064,1,0, - 0,0,2064,2065,1,0,0,0,2065,2067,3,248,124,0,2066,2068,5,149,0,0,2067, - 2066,1,0,0,0,2067,2068,1,0,0,0,2068,2079,1,0,0,0,2069,2071,5,3,0,0,2070, - 2072,5,149,0,0,2071,2070,1,0,0,0,2071,2072,1,0,0,0,2072,2073,1,0,0,0, - 2073,2075,3,248,124,0,2074,2076,5,149,0,0,2075,2074,1,0,0,0,2075,2076, - 1,0,0,0,2076,2078,1,0,0,0,2077,2069,1,0,0,0,2078,2081,1,0,0,0,2079,2077, - 1,0,0,0,2079,2080,1,0,0,0,2080,2082,1,0,0,0,2081,2079,1,0,0,0,2082,2083, - 5,9,0,0,2083,247,1,0,0,0,2084,2087,3,286,143,0,2085,2087,5,135,0,0,2086, - 2084,1,0,0,0,2086,2085,1,0,0,0,2087,2089,1,0,0,0,2088,2090,5,149,0,0, - 2089,2088,1,0,0,0,2089,2090,1,0,0,0,2090,2091,1,0,0,0,2091,2093,5,119, - 0,0,2092,2094,5,149,0,0,2093,2092,1,0,0,0,2093,2094,1,0,0,0,2094,2095, - 1,0,0,0,2095,2096,3,190,95,0,2096,249,1,0,0,0,2097,2099,5,2,0,0,2098, - 2100,5,149,0,0,2099,2098,1,0,0,0,2099,2100,1,0,0,0,2100,2101,1,0,0,0, - 2101,2103,3,190,95,0,2102,2104,5,149,0,0,2103,2102,1,0,0,0,2103,2104, - 1,0,0,0,2104,2105,1,0,0,0,2105,2106,5,4,0,0,2106,251,1,0,0,0,2107,2109, - 5,128,0,0,2108,2110,5,149,0,0,2109,2108,1,0,0,0,2109,2110,1,0,0,0,2110, - 2111,1,0,0,0,2111,2113,5,2,0,0,2112,2114,5,149,0,0,2113,2112,1,0,0,0, - 2113,2114,1,0,0,0,2114,2115,1,0,0,0,2115,2117,5,100,0,0,2116,2118,5,149, - 0,0,2117,2116,1,0,0,0,2117,2118,1,0,0,0,2118,2119,1,0,0,0,2119,2156,5, - 4,0,0,2120,2122,3,254,127,0,2121,2123,5,149,0,0,2122,2121,1,0,0,0,2122, - 2123,1,0,0,0,2123,2124,1,0,0,0,2124,2126,5,2,0,0,2125,2127,5,149,0,0, - 2126,2125,1,0,0,0,2126,2127,1,0,0,0,2127,2132,1,0,0,0,2128,2130,5,99, - 0,0,2129,2131,5,149,0,0,2130,2129,1,0,0,0,2130,2131,1,0,0,0,2131,2133, - 1,0,0,0,2132,2128,1,0,0,0,2132,2133,1,0,0,0,2133,2151,1,0,0,0,2134,2136, - 3,256,128,0,2135,2137,5,149,0,0,2136,2135,1,0,0,0,2136,2137,1,0,0,0,2137, - 2148,1,0,0,0,2138,2140,5,3,0,0,2139,2141,5,149,0,0,2140,2139,1,0,0,0, - 2140,2141,1,0,0,0,2141,2142,1,0,0,0,2142,2144,3,256,128,0,2143,2145,5, - 149,0,0,2144,2143,1,0,0,0,2144,2145,1,0,0,0,2145,2147,1,0,0,0,2146,2138, - 1,0,0,0,2147,2150,1,0,0,0,2148,2146,1,0,0,0,2148,2149,1,0,0,0,2149,2152, - 1,0,0,0,2150,2148,1,0,0,0,2151,2134,1,0,0,0,2151,2152,1,0,0,0,2152,2153, - 1,0,0,0,2153,2154,5,4,0,0,2154,2156,1,0,0,0,2155,2107,1,0,0,0,2155,2120, - 1,0,0,0,2156,253,1,0,0,0,2157,2158,3,286,143,0,2158,255,1,0,0,0,2159, - 2161,3,286,143,0,2160,2162,5,149,0,0,2161,2160,1,0,0,0,2161,2162,1,0, - 0,0,2162,2163,1,0,0,0,2163,2164,5,119,0,0,2164,2166,5,5,0,0,2165,2167, - 5,149,0,0,2166,2165,1,0,0,0,2166,2167,1,0,0,0,2167,2169,1,0,0,0,2168, - 2159,1,0,0,0,2168,2169,1,0,0,0,2169,2170,1,0,0,0,2170,2171,3,190,95,0, - 2171,257,1,0,0,0,2172,2177,3,158,79,0,2173,2175,5,149,0,0,2174,2173,1, - 0,0,0,2174,2175,1,0,0,0,2175,2176,1,0,0,0,2176,2178,3,160,80,0,2177,2174, - 1,0,0,0,2178,2179,1,0,0,0,2179,2177,1,0,0,0,2179,2180,1,0,0,0,2180,259, - 1,0,0,0,2181,2183,5,129,0,0,2182,2184,5,149,0,0,2183,2182,1,0,0,0,2183, - 2184,1,0,0,0,2184,2185,1,0,0,0,2185,2187,5,8,0,0,2186,2188,5,149,0,0, - 2187,2186,1,0,0,0,2187,2188,1,0,0,0,2188,2189,1,0,0,0,2189,2191,5,89, - 0,0,2190,2192,5,149,0,0,2191,2190,1,0,0,0,2191,2192,1,0,0,0,2192,2193, - 1,0,0,0,2193,2198,3,150,75,0,2194,2196,5,149,0,0,2195,2194,1,0,0,0,2195, - 2196,1,0,0,0,2196,2197,1,0,0,0,2197,2199,3,148,74,0,2198,2195,1,0,0,0, - 2198,2199,1,0,0,0,2199,2201,1,0,0,0,2200,2202,5,149,0,0,2201,2200,1,0, - 0,0,2201,2202,1,0,0,0,2202,2203,1,0,0,0,2203,2204,5,9,0,0,2204,261,1, - 0,0,0,2205,2207,5,128,0,0,2206,2208,5,149,0,0,2207,2206,1,0,0,0,2207, - 2208,1,0,0,0,2208,2209,1,0,0,0,2209,2211,5,8,0,0,2210,2212,5,149,0,0, - 2211,2210,1,0,0,0,2211,2212,1,0,0,0,2212,2213,1,0,0,0,2213,2215,5,89, - 0,0,2214,2216,5,149,0,0,2215,2214,1,0,0,0,2215,2216,1,0,0,0,2216,2217, - 1,0,0,0,2217,2222,3,150,75,0,2218,2220,5,149,0,0,2219,2218,1,0,0,0,2219, - 2220,1,0,0,0,2220,2221,1,0,0,0,2221,2223,3,148,74,0,2222,2219,1,0,0,0, - 2222,2223,1,0,0,0,2223,2225,1,0,0,0,2224,2226,5,149,0,0,2225,2224,1,0, - 0,0,2225,2226,1,0,0,0,2226,2227,1,0,0,0,2227,2228,5,9,0,0,2228,263,1, - 0,0,0,2229,2231,5,25,0,0,2230,2232,5,149,0,0,2231,2230,1,0,0,0,2231,2232, - 1,0,0,0,2232,2235,1,0,0,0,2233,2236,3,278,139,0,2234,2236,5,100,0,0,2235, - 2233,1,0,0,0,2235,2234,1,0,0,0,2236,265,1,0,0,0,2237,2242,5,130,0,0,2238, - 2240,5,149,0,0,2239,2238,1,0,0,0,2239,2240,1,0,0,0,2240,2241,1,0,0,0, - 2241,2243,3,268,134,0,2242,2239,1,0,0,0,2243,2244,1,0,0,0,2244,2242,1, - 0,0,0,2244,2245,1,0,0,0,2245,2260,1,0,0,0,2246,2248,5,130,0,0,2247,2249, - 5,149,0,0,2248,2247,1,0,0,0,2248,2249,1,0,0,0,2249,2250,1,0,0,0,2250, - 2255,3,190,95,0,2251,2253,5,149,0,0,2252,2251,1,0,0,0,2252,2253,1,0,0, - 0,2253,2254,1,0,0,0,2254,2256,3,268,134,0,2255,2252,1,0,0,0,2256,2257, - 1,0,0,0,2257,2255,1,0,0,0,2257,2258,1,0,0,0,2258,2260,1,0,0,0,2259,2237, - 1,0,0,0,2259,2246,1,0,0,0,2260,2269,1,0,0,0,2261,2263,5,149,0,0,2262, - 2261,1,0,0,0,2262,2263,1,0,0,0,2263,2264,1,0,0,0,2264,2266,5,131,0,0, - 2265,2267,5,149,0,0,2266,2265,1,0,0,0,2266,2267,1,0,0,0,2267,2268,1,0, - 0,0,2268,2270,3,190,95,0,2269,2262,1,0,0,0,2269,2270,1,0,0,0,2270,2272, - 1,0,0,0,2271,2273,5,149,0,0,2272,2271,1,0,0,0,2272,2273,1,0,0,0,2273, - 2274,1,0,0,0,2274,2275,5,132,0,0,2275,267,1,0,0,0,2276,2278,5,133,0,0, - 2277,2279,5,149,0,0,2278,2277,1,0,0,0,2278,2279,1,0,0,0,2279,2280,1,0, - 0,0,2280,2282,3,190,95,0,2281,2283,5,149,0,0,2282,2281,1,0,0,0,2282,2283, - 1,0,0,0,2283,2284,1,0,0,0,2284,2286,5,134,0,0,2285,2287,5,149,0,0,2286, - 2285,1,0,0,0,2286,2287,1,0,0,0,2287,2288,1,0,0,0,2288,2289,3,190,95,0, - 2289,269,1,0,0,0,2290,2291,3,286,143,0,2291,271,1,0,0,0,2292,2295,3,282, - 141,0,2293,2295,3,280,140,0,2294,2292,1,0,0,0,2294,2293,1,0,0,0,2295, - 273,1,0,0,0,2296,2299,5,26,0,0,2297,2300,3,286,143,0,2298,2300,5,137, - 0,0,2299,2297,1,0,0,0,2299,2298,1,0,0,0,2300,275,1,0,0,0,2301,2303,3, - 236,118,0,2302,2304,5,149,0,0,2303,2302,1,0,0,0,2303,2304,1,0,0,0,2304, - 2305,1,0,0,0,2305,2306,3,264,132,0,2306,277,1,0,0,0,2307,2308,3,284,142, - 0,2308,279,1,0,0,0,2309,2310,5,137,0,0,2310,281,1,0,0,0,2311,2312,5,144, - 0,0,2312,283,1,0,0,0,2313,2314,3,286,143,0,2314,285,1,0,0,0,2315,2321, - 5,145,0,0,2316,2317,5,148,0,0,2317,2321,6,143,-1,0,2318,2321,5,138,0, - 0,2319,2321,3,288,144,0,2320,2315,1,0,0,0,2320,2316,1,0,0,0,2320,2318, - 1,0,0,0,2320,2319,1,0,0,0,2321,287,1,0,0,0,2322,2323,7,7,0,0,2323,289, - 1,0,0,0,2324,2325,7,8,0,0,2325,291,1,0,0,0,2326,2327,7,9,0,0,2327,293, - 1,0,0,0,2328,2329,7,10,0,0,2329,295,1,0,0,0,401,298,302,307,311,316,319, - 323,326,342,348,352,355,361,364,368,372,376,381,385,392,396,401,411,415, - 419,424,437,441,449,452,460,463,480,483,487,493,496,506,510,532,536,539, - 542,545,548,552,557,561,571,575,580,585,590,596,600,604,609,616,620,624, - 627,631,635,639,644,648,654,658,668,678,682,686,690,695,707,711,715,719, - 723,725,729,733,735,749,753,757,761,766,769,773,777,779,783,787,789,825, - 836,858,862,867,878,882,886,894,898,902,908,912,916,922,926,930,934,938, - 942,948,955,960,966,986,990,998,1008,1013,1018,1022,1027,1033,1038,1041, - 1045,1049,1053,1059,1063,1068,1073,1077,1080,1084,1088,1092,1096,1100, - 1106,1110,1115,1119,1128,1134,1142,1146,1150,1154,1161,1164,1167,1170, - 1176,1179,1183,1187,1191,1194,1198,1208,1214,1221,1234,1238,1242,1246, - 1251,1256,1260,1266,1270,1274,1278,1283,1289,1292,1298,1301,1307,1311, - 1315,1319,1323,1328,1333,1337,1342,1345,1354,1363,1368,1381,1384,1392, - 1396,1401,1406,1410,1415,1421,1426,1433,1437,1441,1443,1447,1449,1453, - 1455,1461,1467,1471,1474,1477,1483,1486,1489,1493,1499,1502,1505,1509, - 1513,1517,1519,1523,1525,1529,1531,1535,1537,1543,1547,1551,1555,1559, - 1563,1567,1571,1575,1578,1584,1588,1592,1595,1600,1605,1610,1615,1621, - 1627,1630,1633,1636,1640,1643,1646,1649,1652,1656,1660,1664,1668,1672, - 1675,1678,1682,1686,1690,1694,1696,1702,1705,1708,1714,1717,1720,1741, - 1751,1761,1766,1770,1777,1781,1785,1789,1793,1801,1805,1809,1813,1819, - 1823,1829,1833,1838,1843,1847,1852,1857,1861,1867,1874,1878,1884,1891, - 1895,1901,1908,1912,1917,1922,1926,1931,1934,1941,1944,1949,1958,1962, - 1965,1978,1981,1986,2000,2004,2009,2021,2029,2035,2039,2043,2047,2050, - 2056,2059,2063,2067,2071,2075,2079,2086,2089,2093,2099,2103,2109,2113, - 2117,2122,2126,2130,2132,2136,2140,2144,2148,2151,2155,2161,2166,2168, - 2174,2179,2183,2187,2191,2195,2198,2201,2207,2211,2215,2219,2222,2225, - 2231,2235,2239,2244,2248,2252,2257,2259,2262,2266,2269,2272,2278,2282, - 2286,2294,2299,2303,2320 + 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 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -1141,29 +1140,29 @@ CypherParser::Ku_StatementsContext* CypherParser::ku_Statements() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(296); + setState(294); oC_Cypher(); - setState(307); + setState(305); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(298); + setState(296); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(297); + setState(295); match(CypherParser::SP); } - setState(300); + setState(298); match(CypherParser::T__0); - setState(302); + setState(300); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 1, _ctx)) { case 1: { - setState(301); + setState(299); match(CypherParser::SP); break; } @@ -1171,22 +1170,22 @@ CypherParser::Ku_StatementsContext* CypherParser::ku_Statements() { default: break; } - setState(304); + setState(302); oC_Cypher(); } - setState(309); + setState(307); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); } - setState(311); + setState(309); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(310); + setState(308); match(CypherParser::SP); } - setState(313); + setState(311); match(CypherParser::EOF); } @@ -1241,41 +1240,41 @@ CypherParser::OC_CypherContext* CypherParser::oC_Cypher() { }); try { enterOuterAlt(_localctx, 1); - setState(316); + setState(314); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::EXPLAIN || _la == CypherParser::PROFILE) { - setState(315); + setState(313); oC_AnyCypherOption(); } - setState(319); + setState(317); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(318); + setState(316); match(CypherParser::SP); } - setState(321); + setState(319); oC_Statement(); - setState(326); + setState(324); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 7, _ctx)) { case 1: { - setState(323); + setState(321); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(322); + setState(320); match(CypherParser::SP); } - setState(325); + setState(323); match(CypherParser::T__0); break; } @@ -1304,8 +1303,28 @@ CypherParser::OC_QueryContext* CypherParser::OC_StatementContext::oC_Query() { return getRuleContext(0); } -CypherParser::KU_DDLContext* CypherParser::OC_StatementContext::kU_DDL() { - return getRuleContext(0); +CypherParser::KU_CreateNodeTableContext* CypherParser::OC_StatementContext::kU_CreateNodeTable() { + return getRuleContext(0); +} + +CypherParser::KU_CreateRelTableContext* CypherParser::OC_StatementContext::kU_CreateRelTable() { + return getRuleContext(0); +} + +CypherParser::KU_CreateRelTableGroupContext* CypherParser::OC_StatementContext::kU_CreateRelTableGroup() { + return getRuleContext(0); +} + +CypherParser::KU_CreateRdfGraphContext* CypherParser::OC_StatementContext::kU_CreateRdfGraph() { + return getRuleContext(0); +} + +CypherParser::KU_DropTableContext* CypherParser::OC_StatementContext::kU_DropTable() { + return getRuleContext(0); +} + +CypherParser::KU_AlterTableContext* CypherParser::OC_StatementContext::kU_AlterTable() { + return getRuleContext(0); } CypherParser::KU_CopyFromContext* CypherParser::OC_StatementContext::kU_CopyFrom() { @@ -1374,103 +1393,138 @@ CypherParser::OC_StatementContext* CypherParser::oC_Statement() { exitRule(); }); try { - setState(342); + setState(345); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(328); + setState(326); oC_Query(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(329); - kU_DDL(); + setState(327); + kU_CreateNodeTable(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(330); - kU_CopyFrom(); + setState(328); + kU_CreateRelTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(331); - kU_CopyFromByColumn(); + setState(329); + kU_CreateRelTableGroup(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(332); - kU_CopyTO(); + setState(330); + kU_CreateRdfGraph(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(333); - kU_StandaloneCall(); + setState(331); + kU_DropTable(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(334); - kU_CreateMacro(); + setState(332); + kU_AlterTable(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(335); - kU_CommentOn(); + setState(333); + kU_CopyFrom(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(336); - kU_Transaction(); + setState(334); + kU_CopyFromByColumn(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(337); - kU_Extension(); + setState(335); + kU_CopyTO(); break; } case 11: { enterOuterAlt(_localctx, 11); - setState(338); - kU_ExportDatabase(); + setState(336); + kU_StandaloneCall(); break; } case 12: { enterOuterAlt(_localctx, 12); - setState(339); - kU_ImportDatabase(); + setState(337); + kU_CreateMacro(); break; } case 13: { enterOuterAlt(_localctx, 13); - setState(340); - kU_AttachDatabase(); + setState(338); + kU_CommentOn(); break; } case 14: { enterOuterAlt(_localctx, 14); + setState(339); + kU_Transaction(); + break; + } + + case 15: { + enterOuterAlt(_localctx, 15); + setState(340); + kU_Extension(); + break; + } + + case 16: { + enterOuterAlt(_localctx, 16); setState(341); + kU_ExportDatabase(); + break; + } + + case 17: { + enterOuterAlt(_localctx, 17); + setState(342); + kU_ImportDatabase(); + break; + } + + case 18: { + enterOuterAlt(_localctx, 18); + setState(343); + kU_AttachDatabase(); + break; + } + + case 19: { + enterOuterAlt(_localctx, 19); + setState(344); kU_DetachDatabase(); break; } @@ -1547,39 +1601,39 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(344); + setState(347); match(CypherParser::COPY); - setState(345); + setState(348); match(CypherParser::SP); - setState(346); + setState(349); oC_SchemaName(); - setState(355); + setState(358); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 11, _ctx)) { case 1: { - setState(348); + setState(351); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(347); + setState(350); match(CypherParser::SP); } - setState(350); + setState(353); kU_ColumnNames(); - setState(352); + setState(355); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(351); + setState(354); match(CypherParser::SP); } break; } case 2: { - setState(354); + setState(357); match(CypherParser::SP); break; } @@ -1587,26 +1641,26 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { default: break; } - setState(357); + setState(360); match(CypherParser::FROM); - setState(358); + setState(361); match(CypherParser::SP); - setState(359); + setState(362); kU_ScanSource(); - setState(364); + setState(367); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { case 1: { - setState(361); + setState(364); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(360); + setState(363); match(CypherParser::SP); } - setState(363); + setState(366); kU_ParsingOptions(); break; } @@ -1668,57 +1722,57 @@ CypherParser::KU_ColumnNamesContext* CypherParser::kU_ColumnNames() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(366); + setState(369); match(CypherParser::T__1); - setState(368); + setState(371); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(367); + setState(370); match(CypherParser::SP); } - setState(370); + setState(373); oC_SchemaName(); - setState(381); + setState(384); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(372); + setState(375); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(371); + setState(374); match(CypherParser::SP); } - setState(374); + setState(377); match(CypherParser::T__2); - setState(376); + setState(379); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(375); + setState(378); match(CypherParser::SP); } - setState(378); + setState(381); oC_SchemaName(); } - setState(383); + setState(386); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); } - setState(385); + setState(388); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(384); + setState(387); match(CypherParser::SP); } - setState(387); + setState(390); match(CypherParser::T__3); } @@ -1757,6 +1811,10 @@ CypherParser::OC_VariableContext* CypherParser::KU_ScanSourceContext::oC_Variabl return getRuleContext(0); } +CypherParser::OC_SchemaNameContext* CypherParser::KU_ScanSourceContext::oC_SchemaName() { + return getRuleContext(0); +} + size_t CypherParser::KU_ScanSourceContext::getRuleIndex() const { return CypherParser::RuleKU_ScanSource; @@ -1776,66 +1834,71 @@ CypherParser::KU_ScanSourceContext* CypherParser::kU_ScanSource() { exitRule(); }); try { - setState(401); + setState(411); _errHandler->sync(this); - switch (_input->LA(1)) { - case CypherParser::T__5: - case CypherParser::GLOB: - case CypherParser::StringLiteral: { - enterOuterAlt(_localctx, 1); - setState(389); - kU_FilePaths(); - break; - } + switch (getInterpreter()->adaptivePredict(_input, 22, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(392); + kU_FilePaths(); + break; + } - case CypherParser::T__1: { - enterOuterAlt(_localctx, 2); - setState(390); - match(CypherParser::T__1); - setState(392); - _errHandler->sync(this); + case 2: { + enterOuterAlt(_localctx, 2); + setState(393); + match(CypherParser::T__1); + setState(395); + _errHandler->sync(this); - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(391); - match(CypherParser::SP); - } + _la = _input->LA(1); + if (_la == CypherParser::SP) { setState(394); - oC_Query(); - setState(396); - _errHandler->sync(this); + match(CypherParser::SP); + } + setState(397); + oC_Query(); + setState(399); + _errHandler->sync(this); - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(395); - match(CypherParser::SP); - } + _la = _input->LA(1); + if (_la == CypherParser::SP) { setState(398); - match(CypherParser::T__3); - break; + match(CypherParser::SP); } + setState(401); + match(CypherParser::T__3); + break; + } - case CypherParser::COMMENT_: - case CypherParser::EXPORT: - case CypherParser::IMPORT: - case CypherParser::DATABASE: - case CypherParser::NODE: - case CypherParser::REL: - case CypherParser::BEGIN: - case CypherParser::IN: - case CypherParser::COUNT: - case CypherParser::END: - case CypherParser::HexLetter: - case CypherParser::UnescapedSymbolicName: - case CypherParser::EscapedSymbolicName: { - enterOuterAlt(_localctx, 3); - setState(400); - oC_Variable(); - break; + case 3: { + enterOuterAlt(_localctx, 3); + setState(403); + oC_Variable(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(404); + oC_Variable(); + setState(405); + match(CypherParser::T__4); + setState(407); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(406); + match(CypherParser::SP); } + setState(409); + oC_SchemaName(); + break; + } default: - throw NoViableAltException(this); + break; } } @@ -1910,67 +1973,67 @@ CypherParser::KU_CopyFromByColumnContext* CypherParser::kU_CopyFromByColumn() { }); try { enterOuterAlt(_localctx, 1); - setState(403); + setState(413); match(CypherParser::COPY); - setState(404); + setState(414); match(CypherParser::SP); - setState(405); + setState(415); oC_SchemaName(); - setState(406); + setState(416); match(CypherParser::SP); - setState(407); + setState(417); match(CypherParser::FROM); - setState(408); + setState(418); match(CypherParser::SP); - setState(409); + setState(419); match(CypherParser::T__1); - setState(411); + setState(421); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(410); + setState(420); match(CypherParser::SP); } - setState(413); + setState(423); match(CypherParser::StringLiteral); - setState(424); + setState(434); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2 || _la == CypherParser::SP) { - setState(415); + setState(425); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(414); + setState(424); match(CypherParser::SP); } - setState(417); + setState(427); match(CypherParser::T__2); - setState(419); + setState(429); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(418); + setState(428); match(CypherParser::SP); } - setState(421); + setState(431); match(CypherParser::StringLiteral); - setState(426); + setState(436); _errHandler->sync(this); _la = _input->LA(1); } - setState(427); + setState(437); match(CypherParser::T__3); - setState(428); + setState(438); match(CypherParser::SP); - setState(429); + setState(439); match(CypherParser::BY); - setState(430); + setState(440); match(CypherParser::SP); - setState(431); + setState(441); match(CypherParser::COLUMN); } @@ -2037,54 +2100,54 @@ CypherParser::KU_CopyTOContext* CypherParser::kU_CopyTO() { }); try { enterOuterAlt(_localctx, 1); - setState(433); + setState(443); match(CypherParser::COPY); - setState(434); + setState(444); match(CypherParser::SP); - setState(435); + setState(445); match(CypherParser::T__1); - setState(437); + setState(447); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(436); + setState(446); match(CypherParser::SP); } - setState(439); + setState(449); oC_Query(); - setState(441); + setState(451); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(440); + setState(450); match(CypherParser::SP); } - setState(443); + setState(453); match(CypherParser::T__3); - setState(444); + setState(454); match(CypherParser::SP); - setState(445); + setState(455); match(CypherParser::TO); - setState(446); + setState(456); match(CypherParser::SP); - setState(447); + setState(457); match(CypherParser::StringLiteral); - setState(452); + setState(462); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 29, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 30, _ctx)) { case 1: { - setState(449); + setState(459); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(448); + setState(458); match(CypherParser::SP); } - setState(451); + setState(461); kU_ParsingOptions(); break; } @@ -2153,30 +2216,30 @@ CypherParser::KU_ExportDatabaseContext* CypherParser::kU_ExportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(454); + setState(464); match(CypherParser::EXPORT); - setState(455); + setState(465); match(CypherParser::SP); - setState(456); + setState(466); match(CypherParser::DATABASE); - setState(457); + setState(467); match(CypherParser::SP); - setState(458); + setState(468); match(CypherParser::StringLiteral); - setState(463); + setState(473); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 31, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 32, _ctx)) { case 1: { - setState(460); + setState(470); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(459); + setState(469); match(CypherParser::SP); } - setState(462); + setState(472); kU_ParsingOptions(); break; } @@ -2240,15 +2303,15 @@ CypherParser::KU_ImportDatabaseContext* CypherParser::kU_ImportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(465); + setState(475); match(CypherParser::IMPORT); - setState(466); + setState(476); match(CypherParser::SP); - setState(467); + setState(477); match(CypherParser::DATABASE); - setState(468); + setState(478); match(CypherParser::SP); - setState(469); + setState(479); match(CypherParser::StringLiteral); } @@ -2319,26 +2382,26 @@ CypherParser::KU_AttachDatabaseContext* CypherParser::kU_AttachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(471); + setState(481); match(CypherParser::ATTACH); - setState(472); + setState(482); match(CypherParser::SP); - setState(473); + setState(483); match(CypherParser::StringLiteral); - setState(480); + setState(490); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 32, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 33, _ctx)) { case 1: { - setState(474); + setState(484); match(CypherParser::SP); - setState(475); + setState(485); match(CypherParser::AS); - setState(476); + setState(486); match(CypherParser::SP); - setState(477); + setState(487); oC_SchemaName(); - setState(478); + setState(488); match(CypherParser::SP); break; } @@ -2346,44 +2409,44 @@ CypherParser::KU_AttachDatabaseContext* CypherParser::kU_AttachDatabase() { default: break; } - setState(496); + setState(506); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 36, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 37, _ctx)) { case 1: { - setState(483); + setState(493); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(482); + setState(492); match(CypherParser::SP); } - setState(485); + setState(495); match(CypherParser::T__1); - setState(487); + setState(497); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(486); + setState(496); match(CypherParser::SP); } - setState(489); + setState(499); match(CypherParser::DBTYPE); - setState(490); + setState(500); match(CypherParser::SP); - setState(491); + setState(501); match(CypherParser::StringLiteral); - setState(493); + setState(503); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(492); + setState(502); match(CypherParser::SP); } - setState(495); + setState(505); match(CypherParser::T__3); break; } @@ -2439,11 +2502,11 @@ CypherParser::KU_DetachDatabaseContext* CypherParser::kU_DetachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(498); + setState(508); match(CypherParser::DETACH); - setState(499); + setState(509); match(CypherParser::SP); - setState(500); + setState(510); oC_SchemaName(); } @@ -2502,31 +2565,31 @@ CypherParser::KU_StandaloneCallContext* CypherParser::kU_StandaloneCall() { }); try { enterOuterAlt(_localctx, 1); - setState(502); + setState(512); match(CypherParser::CALL); - setState(503); + setState(513); match(CypherParser::SP); - setState(504); + setState(514); oC_SymbolicName(); - setState(506); + setState(516); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(505); + setState(515); match(CypherParser::SP); } - setState(508); - match(CypherParser::T__4); - setState(510); + setState(518); + match(CypherParser::T__5); + setState(520); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(509); + setState(519); match(CypherParser::SP); } - setState(512); + setState(522); oC_Literal(); } @@ -2596,27 +2659,27 @@ CypherParser::KU_CommentOnContext* CypherParser::kU_CommentOn() { }); try { enterOuterAlt(_localctx, 1); - setState(514); + setState(524); match(CypherParser::COMMENT_); - setState(515); + setState(525); match(CypherParser::SP); - setState(516); + setState(526); match(CypherParser::ON); - setState(517); + setState(527); match(CypherParser::SP); - setState(518); + setState(528); match(CypherParser::TABLE); - setState(519); + setState(529); match(CypherParser::SP); - setState(520); + setState(530); oC_SchemaName(); - setState(521); + setState(531); match(CypherParser::SP); - setState(522); + setState(532); match(CypherParser::IS); - setState(523); + setState(533); match(CypherParser::SP); - setState(524); + setState(534); match(CypherParser::StringLiteral); } @@ -2696,32 +2759,32 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(526); + setState(536); match(CypherParser::CREATE); - setState(527); + setState(537); match(CypherParser::SP); - setState(528); + setState(538); match(CypherParser::MACRO); - setState(529); + setState(539); match(CypherParser::SP); - setState(530); + setState(540); oC_FunctionName(); - setState(532); + setState(542); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(531); + setState(541); match(CypherParser::SP); } - setState(534); + setState(544); match(CypherParser::T__1); - setState(536); + setState(546); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 40, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 41, _ctx)) { case 1: { - setState(535); + setState(545); match(CypherParser::SP); break; } @@ -2729,12 +2792,12 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(539); + setState(549); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 41, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 42, _ctx)) { case 1: { - setState(538); + setState(548); kU_PositionalArgs(); break; } @@ -2742,12 +2805,12 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(542); + setState(552); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 42, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 43, _ctx)) { case 1: { - setState(541); + setState(551); match(CypherParser::SP); break; } @@ -2755,63 +2818,63 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(545); + setState(555); _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(544); + setState(554); kU_DefaultArg(); } - setState(557); + setState(567); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 46, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(548); + setState(558); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(547); + setState(557); match(CypherParser::SP); } - setState(550); + setState(560); match(CypherParser::T__2); - setState(552); + setState(562); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(551); + setState(561); match(CypherParser::SP); } - setState(554); + setState(564); kU_DefaultArg(); } - setState(559); + setState(569); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 46, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); } - setState(561); + setState(571); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(560); + setState(570); match(CypherParser::SP); } - setState(563); + setState(573); match(CypherParser::T__3); - setState(564); + setState(574); match(CypherParser::SP); - setState(565); + setState(575); match(CypherParser::AS); - setState(566); + setState(576); match(CypherParser::SP); - setState(567); + setState(577); oC_Expression(); } @@ -2867,37 +2930,37 @@ CypherParser::KU_PositionalArgsContext* CypherParser::kU_PositionalArgs() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(569); + setState(579); oC_SymbolicName(); - setState(580); + setState(590); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 50, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 51, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(571); + setState(581); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(570); + setState(580); match(CypherParser::SP); } - setState(573); + setState(583); match(CypherParser::T__2); - setState(575); + setState(585); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(574); + setState(584); match(CypherParser::SP); } - setState(577); + setState(587); oC_SymbolicName(); } - setState(582); + setState(592); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 50, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 51, _ctx); } } @@ -2956,29 +3019,29 @@ CypherParser::KU_DefaultArgContext* CypherParser::kU_DefaultArg() { }); try { enterOuterAlt(_localctx, 1); - setState(583); + setState(593); oC_SymbolicName(); - setState(585); + setState(595); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(584); + setState(594); match(CypherParser::SP); } - setState(587); + setState(597); match(CypherParser::COLON); - setState(588); - match(CypherParser::T__4); - setState(590); + setState(598); + match(CypherParser::T__5); + setState(600); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(589); + setState(599); match(CypherParser::SP); } - setState(592); + setState(602); oC_Literal(); } @@ -3036,96 +3099,96 @@ CypherParser::KU_FilePathsContext* CypherParser::kU_FilePaths() { exitRule(); }); try { - setState(627); + setState(637); _errHandler->sync(this); switch (_input->LA(1)) { - case CypherParser::T__5: { + case CypherParser::T__6: { enterOuterAlt(_localctx, 1); - setState(594); - match(CypherParser::T__5); - setState(596); + setState(604); + match(CypherParser::T__6); + setState(606); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(595); + setState(605); match(CypherParser::SP); } - setState(598); + setState(608); match(CypherParser::StringLiteral); - setState(609); + setState(619); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2 || _la == CypherParser::SP) { - setState(600); + setState(610); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(599); + setState(609); match(CypherParser::SP); } - setState(602); + setState(612); match(CypherParser::T__2); - setState(604); + setState(614); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(603); + setState(613); match(CypherParser::SP); } - setState(606); + setState(616); match(CypherParser::StringLiteral); - setState(611); + setState(621); _errHandler->sync(this); _la = _input->LA(1); } - setState(612); - match(CypherParser::T__6); + setState(622); + match(CypherParser::T__7); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(613); + setState(623); match(CypherParser::StringLiteral); break; } case CypherParser::GLOB: { enterOuterAlt(_localctx, 3); - setState(614); + setState(624); match(CypherParser::GLOB); - setState(616); + setState(626); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(615); + setState(625); match(CypherParser::SP); } - setState(618); + setState(628); match(CypherParser::T__1); - setState(620); + setState(630); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(619); + setState(629); match(CypherParser::SP); } - setState(622); + setState(632); match(CypherParser::StringLiteral); - setState(624); + setState(634); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(623); + setState(633); match(CypherParser::SP); } - setState(626); + setState(636); match(CypherParser::T__3); break; } @@ -3187,57 +3250,57 @@ CypherParser::KU_ParsingOptionsContext* CypherParser::kU_ParsingOptions() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(629); + setState(639); match(CypherParser::T__1); - setState(631); + setState(641); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(630); + setState(640); match(CypherParser::SP); } - setState(633); + setState(643); kU_ParsingOption(); - setState(644); + setState(654); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(635); + setState(645); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(634); + setState(644); match(CypherParser::SP); } - setState(637); + setState(647); match(CypherParser::T__2); - setState(639); + setState(649); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(638); + setState(648); match(CypherParser::SP); } - setState(641); + setState(651); kU_ParsingOption(); } - setState(646); + setState(656); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); } - setState(648); + setState(658); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(647); + setState(657); match(CypherParser::SP); } - setState(650); + setState(660); match(CypherParser::T__3); } @@ -3292,27 +3355,27 @@ CypherParser::KU_ParsingOptionContext* CypherParser::kU_ParsingOption() { }); try { enterOuterAlt(_localctx, 1); - setState(652); + setState(662); oC_SymbolicName(); - setState(654); + setState(664); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(653); + setState(663); match(CypherParser::SP); } - setState(656); - match(CypherParser::T__4); - setState(658); + setState(666); + match(CypherParser::T__5); + setState(668); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(657); + setState(667); match(CypherParser::SP); } - setState(660); + setState(670); oC_Literal(); } @@ -3325,113 +3388,6 @@ CypherParser::KU_ParsingOptionContext* CypherParser::kU_ParsingOption() { return _localctx; } -//----------------- KU_DDLContext ------------------------------------------------------------------ - -CypherParser::KU_DDLContext::KU_DDLContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -CypherParser::KU_CreateNodeTableContext* CypherParser::KU_DDLContext::kU_CreateNodeTable() { - return getRuleContext(0); -} - -CypherParser::KU_CreateRelTableContext* CypherParser::KU_DDLContext::kU_CreateRelTable() { - return getRuleContext(0); -} - -CypherParser::KU_CreateRelTableGroupContext* CypherParser::KU_DDLContext::kU_CreateRelTableGroup() { - return getRuleContext(0); -} - -CypherParser::KU_CreateRdfGraphContext* CypherParser::KU_DDLContext::kU_CreateRdfGraph() { - return getRuleContext(0); -} - -CypherParser::KU_DropTableContext* CypherParser::KU_DDLContext::kU_DropTable() { - return getRuleContext(0); -} - -CypherParser::KU_AlterTableContext* CypherParser::KU_DDLContext::kU_AlterTable() { - return getRuleContext(0); -} - - -size_t CypherParser::KU_DDLContext::getRuleIndex() const { - return CypherParser::RuleKU_DDL; -} - - -CypherParser::KU_DDLContext* CypherParser::kU_DDL() { - KU_DDLContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 40, CypherParser::RuleKU_DDL); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(668); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 68, _ctx)) { - case 1: { - enterOuterAlt(_localctx, 1); - setState(662); - kU_CreateNodeTable(); - break; - } - - case 2: { - enterOuterAlt(_localctx, 2); - setState(663); - kU_CreateRelTable(); - break; - } - - case 3: { - enterOuterAlt(_localctx, 3); - setState(664); - kU_CreateRelTableGroup(); - break; - } - - case 4: { - enterOuterAlt(_localctx, 4); - setState(665); - kU_CreateRdfGraph(); - break; - } - - case 5: { - enterOuterAlt(_localctx, 5); - setState(666); - kU_DropTable(); - break; - } - - case 6: { - enterOuterAlt(_localctx, 6); - setState(667); - kU_AlterTable(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - //----------------- KU_CreateNodeTableContext ------------------------------------------------------------------ CypherParser::KU_CreateNodeTableContext::KU_CreateNodeTableContext(ParserRuleContext *parent, size_t invokingState) @@ -3478,7 +3434,7 @@ size_t CypherParser::KU_CreateNodeTableContext::getRuleIndex() const { CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { KU_CreateNodeTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 42, CypherParser::RuleKU_CreateNodeTable); + enterRule(_localctx, 40, CypherParser::RuleKU_CreateNodeTable); size_t _la = 0; #if __cplusplus > 201703L @@ -3490,70 +3446,70 @@ CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { }); try { enterOuterAlt(_localctx, 1); - setState(670); - match(CypherParser::CREATE); - setState(671); - match(CypherParser::SP); setState(672); - match(CypherParser::NODE); + match(CypherParser::CREATE); setState(673); match(CypherParser::SP); setState(674); - match(CypherParser::TABLE); + match(CypherParser::NODE); setState(675); match(CypherParser::SP); setState(676); - oC_SchemaName(); + match(CypherParser::TABLE); + setState(677); + match(CypherParser::SP); setState(678); + oC_SchemaName(); + setState(680); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(677); + setState(679); match(CypherParser::SP); } - setState(680); - match(CypherParser::T__1); setState(682); + match(CypherParser::T__1); + setState(684); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(681); + setState(683); match(CypherParser::SP); } - setState(684); - kU_PropertyDefinitions(); setState(686); + kU_PropertyDefinitions(); + setState(688); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(685); + setState(687); match(CypherParser::SP); } - setState(688); - match(CypherParser::T__2); setState(690); + match(CypherParser::T__2); + setState(692); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(689); + setState(691); match(CypherParser::SP); } - setState(692); + setState(694); kU_CreateNodeConstraint(); - setState(695); + setState(697); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(694); + setState(696); match(CypherParser::SP); } - setState(697); + setState(699); match(CypherParser::T__3); } @@ -3616,7 +3572,7 @@ size_t CypherParser::KU_CreateRelTableContext::getRuleIndex() const { CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { KU_CreateRelTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 44, CypherParser::RuleKU_CreateRelTable); + enterRule(_localctx, 42, CypherParser::RuleKU_CreateRelTable); size_t _la = 0; #if __cplusplus > 201703L @@ -3628,71 +3584,71 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { }); try { enterOuterAlt(_localctx, 1); - setState(699); - match(CypherParser::CREATE); - setState(700); - match(CypherParser::SP); setState(701); - match(CypherParser::REL); + match(CypherParser::CREATE); setState(702); match(CypherParser::SP); setState(703); - match(CypherParser::TABLE); + match(CypherParser::REL); setState(704); match(CypherParser::SP); setState(705); - oC_SchemaName(); + match(CypherParser::TABLE); + setState(706); + match(CypherParser::SP); setState(707); + oC_SchemaName(); + setState(709); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(706); + setState(708); match(CypherParser::SP); } - setState(709); - match(CypherParser::T__1); setState(711); + match(CypherParser::T__1); + setState(713); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(710); + setState(712); match(CypherParser::SP); } - setState(713); - kU_RelTableConnection(); setState(715); + kU_RelTableConnection(); + setState(717); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(714); + setState(716); match(CypherParser::SP); } - setState(725); + setState(727); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 79, _ctx)) { case 1: { - setState(717); - match(CypherParser::T__2); setState(719); + match(CypherParser::T__2); + setState(721); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(718); + setState(720); match(CypherParser::SP); } - setState(721); - kU_PropertyDefinitions(); setState(723); + kU_PropertyDefinitions(); + setState(725); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(722); + setState(724); match(CypherParser::SP); } break; @@ -3701,33 +3657,33 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { default: break; } - setState(735); + setState(737); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__2) { - setState(727); - match(CypherParser::T__2); setState(729); + match(CypherParser::T__2); + setState(731); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(728); + setState(730); match(CypherParser::SP); } - setState(731); - oC_SymbolicName(); setState(733); + oC_SymbolicName(); + setState(735); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(732); + setState(734); match(CypherParser::SP); } } - setState(737); + setState(739); match(CypherParser::T__3); } @@ -3798,7 +3754,7 @@ size_t CypherParser::KU_CreateRelTableGroupContext::getRuleIndex() const { CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGroup() { KU_CreateRelTableGroupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 46, CypherParser::RuleKU_CreateRelTableGroup); + enterRule(_localctx, 44, CypherParser::RuleKU_CreateRelTableGroup); size_t _la = 0; #if __cplusplus > 201703L @@ -3809,71 +3765,71 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou exitRule(); }); try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(739); - match(CypherParser::CREATE); - setState(740); - match(CypherParser::SP); + size_t alt; + enterOuterAlt(_localctx, 1); setState(741); - match(CypherParser::REL); + match(CypherParser::CREATE); setState(742); match(CypherParser::SP); setState(743); - match(CypherParser::TABLE); + match(CypherParser::REL); setState(744); match(CypherParser::SP); setState(745); - match(CypherParser::GROUP); + match(CypherParser::TABLE); setState(746); match(CypherParser::SP); setState(747); - oC_SchemaName(); + match(CypherParser::GROUP); + setState(748); + match(CypherParser::SP); setState(749); + oC_SchemaName(); + setState(751); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(748); + setState(750); match(CypherParser::SP); } - setState(751); - match(CypherParser::T__1); setState(753); + match(CypherParser::T__1); + setState(755); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(752); + setState(754); match(CypherParser::SP); } - setState(755); - kU_RelTableConnection(); setState(757); + kU_RelTableConnection(); + setState(759); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(756); + setState(758); match(CypherParser::SP); } - setState(764); + setState(766); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(759); - match(CypherParser::T__2); setState(761); + match(CypherParser::T__2); + setState(763); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(760); + setState(762); match(CypherParser::SP); } - setState(763); + setState(765); kU_RelTableConnection(); break; } @@ -3881,41 +3837,41 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: throw NoViableAltException(this); } - setState(766); + setState(768); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 87, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(769); + setState(771); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(768); + setState(770); match(CypherParser::SP); } - setState(779); + setState(781); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 91, _ctx)) { case 1: { - setState(771); - match(CypherParser::T__2); setState(773); + match(CypherParser::T__2); + setState(775); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(772); + setState(774); match(CypherParser::SP); } - setState(775); - kU_PropertyDefinitions(); setState(777); + kU_PropertyDefinitions(); + setState(779); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(776); + setState(778); match(CypherParser::SP); } break; @@ -3924,33 +3880,33 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: break; } - setState(789); + setState(791); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__2) { - setState(781); - match(CypherParser::T__2); setState(783); + match(CypherParser::T__2); + setState(785); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(782); + setState(784); match(CypherParser::SP); } - setState(785); - oC_SymbolicName(); setState(787); + oC_SymbolicName(); + setState(789); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(786); + setState(788); match(CypherParser::SP); } } - setState(791); + setState(793); match(CypherParser::T__3); } @@ -4001,7 +3957,7 @@ size_t CypherParser::KU_RelTableConnectionContext::getRuleIndex() const { CypherParser::KU_RelTableConnectionContext* CypherParser::kU_RelTableConnection() { KU_RelTableConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 48, CypherParser::RuleKU_RelTableConnection); + enterRule(_localctx, 46, CypherParser::RuleKU_RelTableConnection); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4012,19 +3968,19 @@ CypherParser::KU_RelTableConnectionContext* CypherParser::kU_RelTableConnection( }); try { enterOuterAlt(_localctx, 1); - setState(793); - match(CypherParser::FROM); - setState(794); - match(CypherParser::SP); setState(795); - oC_SchemaName(); + match(CypherParser::FROM); setState(796); match(CypherParser::SP); setState(797); - match(CypherParser::TO); + oC_SchemaName(); setState(798); match(CypherParser::SP); setState(799); + match(CypherParser::TO); + setState(800); + match(CypherParser::SP); + setState(801); oC_SchemaName(); } @@ -4071,7 +4027,7 @@ size_t CypherParser::KU_CreateRdfGraphContext::getRuleIndex() const { CypherParser::KU_CreateRdfGraphContext* CypherParser::kU_CreateRdfGraph() { KU_CreateRdfGraphContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 50, CypherParser::RuleKU_CreateRdfGraph); + enterRule(_localctx, 48, CypherParser::RuleKU_CreateRdfGraph); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4082,15 +4038,15 @@ CypherParser::KU_CreateRdfGraphContext* CypherParser::kU_CreateRdfGraph() { }); try { enterOuterAlt(_localctx, 1); - setState(801); - match(CypherParser::CREATE); - setState(802); - match(CypherParser::SP); setState(803); - match(CypherParser::RDFGRAPH); + match(CypherParser::CREATE); setState(804); match(CypherParser::SP); setState(805); + match(CypherParser::RDFGRAPH); + setState(806); + match(CypherParser::SP); + setState(807); oC_SchemaName(); } @@ -4141,7 +4097,7 @@ size_t CypherParser::KU_DropTableContext::getRuleIndex() const { CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { KU_DropTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 52, CypherParser::RuleKU_DropTable); + enterRule(_localctx, 50, CypherParser::RuleKU_DropTable); size_t _la = 0; #if __cplusplus > 201703L @@ -4153,11 +4109,11 @@ CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { }); try { enterOuterAlt(_localctx, 1); - setState(807); + setState(809); match(CypherParser::DROP); - setState(808); + setState(810); match(CypherParser::SP); - setState(809); + setState(811); _la = _input->LA(1); if (!(_la == CypherParser::TABLE @@ -4168,9 +4124,9 @@ CypherParser::KU_DropTableContext* CypherParser::kU_DropTable() { _errHandler->reportMatch(this); consume(); } - setState(810); + setState(812); match(CypherParser::SP); - setState(811); + setState(813); oC_SchemaName(); } @@ -4221,7 +4177,7 @@ size_t CypherParser::KU_AlterTableContext::getRuleIndex() const { CypherParser::KU_AlterTableContext* CypherParser::kU_AlterTable() { KU_AlterTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 54, CypherParser::RuleKU_AlterTable); + enterRule(_localctx, 52, CypherParser::RuleKU_AlterTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4232,19 +4188,19 @@ CypherParser::KU_AlterTableContext* CypherParser::kU_AlterTable() { }); try { enterOuterAlt(_localctx, 1); - setState(813); - match(CypherParser::ALTER); - setState(814); - match(CypherParser::SP); setState(815); - match(CypherParser::TABLE); + match(CypherParser::ALTER); setState(816); match(CypherParser::SP); setState(817); - oC_SchemaName(); + match(CypherParser::TABLE); setState(818); match(CypherParser::SP); setState(819); + oC_SchemaName(); + setState(820); + match(CypherParser::SP); + setState(821); kU_AlterOptions(); } @@ -4287,7 +4243,7 @@ size_t CypherParser::KU_AlterOptionsContext::getRuleIndex() const { CypherParser::KU_AlterOptionsContext* CypherParser::kU_AlterOptions() { KU_AlterOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 56, CypherParser::RuleKU_AlterOptions); + enterRule(_localctx, 54, CypherParser::RuleKU_AlterOptions); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4297,33 +4253,33 @@ CypherParser::KU_AlterOptionsContext* CypherParser::kU_AlterOptions() { exitRule(); }); try { - setState(825); + setState(827); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 95, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(821); + setState(823); kU_AddProperty(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(822); + setState(824); kU_DropProperty(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(823); + setState(825); kU_RenameTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(824); + setState(826); kU_RenameProperty(); break; } @@ -4384,7 +4340,7 @@ size_t CypherParser::KU_AddPropertyContext::getRuleIndex() const { CypherParser::KU_AddPropertyContext* CypherParser::kU_AddProperty() { KU_AddPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 58, CypherParser::RuleKU_AddProperty); + enterRule(_localctx, 56, CypherParser::RuleKU_AddProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4395,28 +4351,28 @@ CypherParser::KU_AddPropertyContext* CypherParser::kU_AddProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(827); - match(CypherParser::ADD); - setState(828); - match(CypherParser::SP); setState(829); - oC_PropertyKeyName(); + match(CypherParser::ADD); setState(830); match(CypherParser::SP); setState(831); + oC_PropertyKeyName(); + setState(832); + match(CypherParser::SP); + setState(833); kU_DataType(0); - setState(836); + setState(838); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 96, _ctx)) { case 1: { - setState(832); - match(CypherParser::SP); - setState(833); - match(CypherParser::DEFAULT); setState(834); match(CypherParser::SP); setState(835); + match(CypherParser::DEFAULT); + setState(836); + match(CypherParser::SP); + setState(837); oC_Expression(); break; } @@ -4461,7 +4417,7 @@ size_t CypherParser::KU_DropPropertyContext::getRuleIndex() const { CypherParser::KU_DropPropertyContext* CypherParser::kU_DropProperty() { KU_DropPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 60, CypherParser::RuleKU_DropProperty); + enterRule(_localctx, 58, CypherParser::RuleKU_DropProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4472,11 +4428,11 @@ CypherParser::KU_DropPropertyContext* CypherParser::kU_DropProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(838); + setState(840); match(CypherParser::DROP); - setState(839); + setState(841); match(CypherParser::SP); - setState(840); + setState(842); oC_PropertyKeyName(); } @@ -4523,7 +4479,7 @@ size_t CypherParser::KU_RenameTableContext::getRuleIndex() const { CypherParser::KU_RenameTableContext* CypherParser::kU_RenameTable() { KU_RenameTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 62, CypherParser::RuleKU_RenameTable); + enterRule(_localctx, 60, CypherParser::RuleKU_RenameTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4534,15 +4490,15 @@ CypherParser::KU_RenameTableContext* CypherParser::kU_RenameTable() { }); try { enterOuterAlt(_localctx, 1); - setState(842); - match(CypherParser::RENAME); - setState(843); - match(CypherParser::SP); setState(844); - match(CypherParser::TO); + match(CypherParser::RENAME); setState(845); match(CypherParser::SP); setState(846); + match(CypherParser::TO); + setState(847); + match(CypherParser::SP); + setState(848); oC_SchemaName(); } @@ -4593,7 +4549,7 @@ size_t CypherParser::KU_RenamePropertyContext::getRuleIndex() const { CypherParser::KU_RenamePropertyContext* CypherParser::kU_RenameProperty() { KU_RenamePropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 64, CypherParser::RuleKU_RenameProperty); + enterRule(_localctx, 62, CypherParser::RuleKU_RenameProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4604,19 +4560,19 @@ CypherParser::KU_RenamePropertyContext* CypherParser::kU_RenameProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(848); - match(CypherParser::RENAME); - setState(849); - match(CypherParser::SP); setState(850); - oC_PropertyKeyName(); + match(CypherParser::RENAME); setState(851); match(CypherParser::SP); setState(852); - match(CypherParser::TO); + oC_PropertyKeyName(); setState(853); match(CypherParser::SP); setState(854); + match(CypherParser::TO); + setState(855); + match(CypherParser::SP); + setState(856); oC_PropertyKeyName(); } @@ -4659,7 +4615,7 @@ size_t CypherParser::KU_PropertyDefinitionsContext::getRuleIndex() const { CypherParser::KU_PropertyDefinitionsContext* CypherParser::kU_PropertyDefinitions() { KU_PropertyDefinitionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 66, CypherParser::RuleKU_PropertyDefinitions); + enterRule(_localctx, 64, CypherParser::RuleKU_PropertyDefinitions); size_t _la = 0; #if __cplusplus > 201703L @@ -4672,35 +4628,35 @@ CypherParser::KU_PropertyDefinitionsContext* CypherParser::kU_PropertyDefinition try { size_t alt; enterOuterAlt(_localctx, 1); - setState(856); + setState(858); kU_PropertyDefinition(); - setState(867); + setState(869); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 99, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(858); + setState(860); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(857); + setState(859); match(CypherParser::SP); } - setState(860); - match(CypherParser::T__2); setState(862); + match(CypherParser::T__2); + setState(864); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(861); + setState(863); match(CypherParser::SP); } - setState(864); + setState(866); kU_PropertyDefinition(); } - setState(869); + setState(871); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 99, _ctx); } @@ -4741,7 +4697,7 @@ size_t CypherParser::KU_PropertyDefinitionContext::getRuleIndex() const { CypherParser::KU_PropertyDefinitionContext* CypherParser::kU_PropertyDefinition() { KU_PropertyDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 68, CypherParser::RuleKU_PropertyDefinition); + enterRule(_localctx, 66, CypherParser::RuleKU_PropertyDefinition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4752,11 +4708,11 @@ CypherParser::KU_PropertyDefinitionContext* CypherParser::kU_PropertyDefinition( }); try { enterOuterAlt(_localctx, 1); - setState(870); + setState(872); oC_PropertyKeyName(); - setState(871); + setState(873); match(CypherParser::SP); - setState(872); + setState(874); kU_DataType(0); } @@ -4803,7 +4759,7 @@ size_t CypherParser::KU_CreateNodeConstraintContext::getRuleIndex() const { CypherParser::KU_CreateNodeConstraintContext* CypherParser::kU_CreateNodeConstraint() { KU_CreateNodeConstraintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 70, CypherParser::RuleKU_CreateNodeConstraint); + enterRule(_localctx, 68, CypherParser::RuleKU_CreateNodeConstraint); size_t _la = 0; #if __cplusplus > 201703L @@ -4815,41 +4771,41 @@ CypherParser::KU_CreateNodeConstraintContext* CypherParser::kU_CreateNodeConstra }); try { enterOuterAlt(_localctx, 1); - setState(874); + setState(876); match(CypherParser::PRIMARY); - setState(875); + setState(877); match(CypherParser::SP); - setState(876); - match(CypherParser::KEY); setState(878); + match(CypherParser::KEY); + setState(880); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(877); + setState(879); match(CypherParser::SP); } - setState(880); - match(CypherParser::T__1); setState(882); + match(CypherParser::T__1); + setState(884); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(881); + setState(883); match(CypherParser::SP); } - setState(884); - oC_PropertyKeyName(); setState(886); + oC_PropertyKeyName(); + setState(888); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(885); + setState(887); match(CypherParser::SP); } - setState(888); + setState(890); match(CypherParser::T__3); } @@ -4917,8 +4873,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 = 72; - enterRecursionRule(_localctx, 72, CypherParser::RuleKU_DataType, precedence); + size_t startState = 70; + enterRecursionRule(_localctx, 70, CypherParser::RuleKU_DataType, precedence); size_t _la = 0; @@ -4932,139 +4888,139 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(942); + setState(944); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 114, _ctx)) { case 1: { - setState(891); + setState(893); oC_SymbolicName(); break; } case 2: { - setState(892); - match(CypherParser::UNION); setState(894); + match(CypherParser::UNION); + setState(896); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(893); + setState(895); match(CypherParser::SP); } - setState(896); - match(CypherParser::T__1); setState(898); + match(CypherParser::T__1); + setState(900); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(897); + setState(899); match(CypherParser::SP); } - setState(900); - kU_PropertyDefinitions(); setState(902); + kU_PropertyDefinitions(); + setState(904); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(901); + setState(903); match(CypherParser::SP); } - setState(904); + setState(906); match(CypherParser::T__3); break; } case 3: { - setState(906); - oC_SymbolicName(); setState(908); + oC_SymbolicName(); + setState(910); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(907); + setState(909); match(CypherParser::SP); } - setState(910); - match(CypherParser::T__1); setState(912); + match(CypherParser::T__1); + setState(914); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(911); + setState(913); match(CypherParser::SP); } - setState(914); - kU_PropertyDefinitions(); setState(916); + kU_PropertyDefinitions(); + setState(918); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(915); + setState(917); match(CypherParser::SP); } - setState(918); + setState(920); match(CypherParser::T__3); break; } case 4: { - setState(920); - oC_SymbolicName(); setState(922); + oC_SymbolicName(); + setState(924); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(921); + setState(923); match(CypherParser::SP); } - setState(924); - match(CypherParser::T__1); setState(926); + match(CypherParser::T__1); + setState(928); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(925); + setState(927); match(CypherParser::SP); } - setState(928); - kU_DataType(0); setState(930); + kU_DataType(0); + setState(932); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(929); + setState(931); match(CypherParser::SP); } - setState(932); - match(CypherParser::T__2); setState(934); + match(CypherParser::T__2); + setState(936); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(933); + setState(935); match(CypherParser::SP); } - setState(936); - kU_DataType(0); setState(938); + kU_DataType(0); + setState(940); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(937); + setState(939); match(CypherParser::SP); } - setState(940); + setState(942); match(CypherParser::T__3); break; } @@ -5073,7 +5029,7 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { break; } _ctx->stop = _input->LT(-1); - setState(948); + setState(950); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 115, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { @@ -5083,13 +5039,13 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { previousContext = _localctx; _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleKU_DataType); - setState(944); + setState(946); if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(945); + setState(947); kU_ListIdentifiers(); } - setState(950); + setState(952); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 115, _ctx); } @@ -5124,7 +5080,7 @@ size_t CypherParser::KU_ListIdentifiersContext::getRuleIndex() const { CypherParser::KU_ListIdentifiersContext* CypherParser::kU_ListIdentifiers() { KU_ListIdentifiersContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 74, CypherParser::RuleKU_ListIdentifiers); + enterRule(_localctx, 72, CypherParser::RuleKU_ListIdentifiers); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5136,17 +5092,17 @@ CypherParser::KU_ListIdentifiersContext* CypherParser::kU_ListIdentifiers() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(951); + setState(953); kU_ListIdentifier(); - setState(955); + setState(957); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 116, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(952); + setState(954); kU_ListIdentifier(); } - setState(957); + setState(959); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 116, _ctx); } @@ -5179,7 +5135,7 @@ size_t CypherParser::KU_ListIdentifierContext::getRuleIndex() const { CypherParser::KU_ListIdentifierContext* CypherParser::kU_ListIdentifier() { KU_ListIdentifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 76, CypherParser::RuleKU_ListIdentifier); + enterRule(_localctx, 74, CypherParser::RuleKU_ListIdentifier); size_t _la = 0; #if __cplusplus > 201703L @@ -5191,18 +5147,18 @@ CypherParser::KU_ListIdentifierContext* CypherParser::kU_ListIdentifier() { }); try { enterOuterAlt(_localctx, 1); - setState(958); - match(CypherParser::T__5); setState(960); + match(CypherParser::T__6); + setState(962); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(959); + setState(961); oC_IntegerLiteral(); } - setState(962); - match(CypherParser::T__6); + setState(964); + match(CypherParser::T__7); } catch (RecognitionException &e) { @@ -5236,7 +5192,7 @@ size_t CypherParser::OC_AnyCypherOptionContext::getRuleIndex() const { CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { OC_AnyCypherOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, CypherParser::RuleOC_AnyCypherOption); + enterRule(_localctx, 76, CypherParser::RuleOC_AnyCypherOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5246,19 +5202,19 @@ CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { exitRule(); }); try { - setState(966); + setState(968); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::EXPLAIN: { enterOuterAlt(_localctx, 1); - setState(964); + setState(966); oC_Explain(); break; } case CypherParser::PROFILE: { enterOuterAlt(_localctx, 2); - setState(965); + setState(967); oC_Profile(); break; } @@ -5295,7 +5251,7 @@ size_t CypherParser::OC_ExplainContext::getRuleIndex() const { CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { OC_ExplainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, CypherParser::RuleOC_Explain); + enterRule(_localctx, 78, CypherParser::RuleOC_Explain); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5306,7 +5262,7 @@ CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { }); try { enterOuterAlt(_localctx, 1); - setState(968); + setState(970); match(CypherParser::EXPLAIN); } @@ -5337,7 +5293,7 @@ size_t CypherParser::OC_ProfileContext::getRuleIndex() const { CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { OC_ProfileContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, CypherParser::RuleOC_Profile); + enterRule(_localctx, 80, CypherParser::RuleOC_Profile); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5348,7 +5304,7 @@ CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { }); try { enterOuterAlt(_localctx, 1); - setState(970); + setState(972); match(CypherParser::PROFILE); } @@ -5415,7 +5371,7 @@ size_t CypherParser::KU_TransactionContext::getRuleIndex() const { CypherParser::KU_TransactionContext* CypherParser::kU_Transaction() { KU_TransactionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, CypherParser::RuleKU_Transaction); + enterRule(_localctx, 82, CypherParser::RuleKU_Transaction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5425,63 +5381,63 @@ CypherParser::KU_TransactionContext* CypherParser::kU_Transaction() { exitRule(); }); try { - setState(986); + setState(988); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 119, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(972); + setState(974); match(CypherParser::BEGIN); - setState(973); + setState(975); match(CypherParser::SP); - setState(974); + setState(976); match(CypherParser::TRANSACTION); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(975); - match(CypherParser::BEGIN); - setState(976); - match(CypherParser::SP); setState(977); - match(CypherParser::TRANSACTION); + match(CypherParser::BEGIN); setState(978); match(CypherParser::SP); setState(979); - match(CypherParser::READ); + match(CypherParser::TRANSACTION); setState(980); match(CypherParser::SP); setState(981); + match(CypherParser::READ); + setState(982); + match(CypherParser::SP); + setState(983); match(CypherParser::ONLY); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(982); + setState(984); match(CypherParser::COMMIT); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(983); + setState(985); match(CypherParser::COMMIT_SKIP_CHECKPOINT); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(984); + setState(986); match(CypherParser::ROLLBACK); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(985); + setState(987); match(CypherParser::ROLLBACK_SKIP_CHECKPOINT); break; } @@ -5522,7 +5478,7 @@ size_t CypherParser::KU_ExtensionContext::getRuleIndex() const { CypherParser::KU_ExtensionContext* CypherParser::kU_Extension() { KU_ExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, CypherParser::RuleKU_Extension); + enterRule(_localctx, 84, CypherParser::RuleKU_Extension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5532,19 +5488,19 @@ CypherParser::KU_ExtensionContext* CypherParser::kU_Extension() { exitRule(); }); try { - setState(990); + setState(992); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::LOAD: { enterOuterAlt(_localctx, 1); - setState(988); + setState(990); kU_LoadExtension(); break; } case CypherParser::INSTALL: { enterOuterAlt(_localctx, 2); - setState(989); + setState(991); kU_InstallExtension(); break; } @@ -5601,7 +5557,7 @@ size_t CypherParser::KU_LoadExtensionContext::getRuleIndex() const { CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { KU_LoadExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, CypherParser::RuleKU_LoadExtension); + enterRule(_localctx, 86, CypherParser::RuleKU_LoadExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5612,19 +5568,19 @@ CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(992); + setState(994); match(CypherParser::LOAD); - setState(993); + setState(995); match(CypherParser::SP); - setState(994); + setState(996); match(CypherParser::EXTENSION); - setState(995); + setState(997); match(CypherParser::SP); - setState(998); + setState(1000); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::StringLiteral: { - setState(996); + setState(998); match(CypherParser::StringLiteral); break; } @@ -5642,7 +5598,7 @@ CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(997); + setState(999); oC_Variable(); break; } @@ -5687,7 +5643,7 @@ size_t CypherParser::KU_InstallExtensionContext::getRuleIndex() const { CypherParser::KU_InstallExtensionContext* CypherParser::kU_InstallExtension() { KU_InstallExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, CypherParser::RuleKU_InstallExtension); + enterRule(_localctx, 88, CypherParser::RuleKU_InstallExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5698,11 +5654,11 @@ CypherParser::KU_InstallExtensionContext* CypherParser::kU_InstallExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1000); + setState(1002); match(CypherParser::INSTALL); - setState(1001); + setState(1003); match(CypherParser::SP); - setState(1002); + setState(1004); oC_Variable(); } @@ -5733,7 +5689,7 @@ size_t CypherParser::OC_QueryContext::getRuleIndex() const { CypherParser::OC_QueryContext* CypherParser::oC_Query() { OC_QueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, CypherParser::RuleOC_Query); + enterRule(_localctx, 90, CypherParser::RuleOC_Query); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5744,7 +5700,7 @@ CypherParser::OC_QueryContext* CypherParser::oC_Query() { }); try { enterOuterAlt(_localctx, 1); - setState(1004); + setState(1006); oC_RegularQuery(); } @@ -5799,7 +5755,7 @@ size_t CypherParser::OC_RegularQueryContext::getRuleIndex() const { CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { OC_RegularQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, CypherParser::RuleOC_RegularQuery); + enterRule(_localctx, 92, CypherParser::RuleOC_RegularQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -5811,30 +5767,30 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { }); try { size_t alt; - setState(1027); + setState(1029); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 126, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1006); + setState(1008); oC_SingleQuery(); - setState(1013); + setState(1015); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 123, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1008); + setState(1010); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1007); + setState(1009); match(CypherParser::SP); } - setState(1010); + setState(1012); oC_Union(); } - setState(1015); + setState(1017); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 123, _ctx); } @@ -5843,20 +5799,20 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { case 2: { enterOuterAlt(_localctx, 2); - setState(1020); + setState(1022); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1016); - oC_Return(); setState(1018); + oC_Return(); + setState(1020); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1017); + setState(1019); match(CypherParser::SP); } break; @@ -5865,11 +5821,11 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { default: throw NoViableAltException(this); } - setState(1022); + setState(1024); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 125, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1024); + setState(1026); oC_SingleQuery(); notifyReturnNotAtEnd(_localctx->start); break; @@ -5923,7 +5879,7 @@ size_t CypherParser::OC_UnionContext::getRuleIndex() const { CypherParser::OC_UnionContext* CypherParser::oC_Union() { OC_UnionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, CypherParser::RuleOC_Union); + enterRule(_localctx, 94, CypherParser::RuleOC_Union); size_t _la = 0; #if __cplusplus > 201703L @@ -5934,43 +5890,43 @@ CypherParser::OC_UnionContext* CypherParser::oC_Union() { exitRule(); }); try { - setState(1041); + setState(1043); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 129, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1029); + setState(1031); match(CypherParser::UNION); - setState(1030); + setState(1032); match(CypherParser::SP); - setState(1031); - match(CypherParser::ALL); setState(1033); + match(CypherParser::ALL); + setState(1035); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1032); + setState(1034); match(CypherParser::SP); } - setState(1035); + setState(1037); oC_SingleQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1036); - match(CypherParser::UNION); setState(1038); + match(CypherParser::UNION); + setState(1040); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1037); + setState(1039); match(CypherParser::SP); } - setState(1040); + setState(1042); oC_SingleQuery(); break; } @@ -6011,7 +5967,7 @@ size_t CypherParser::OC_SingleQueryContext::getRuleIndex() const { CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { OC_SingleQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, CypherParser::RuleOC_SingleQuery); + enterRule(_localctx, 96, CypherParser::RuleOC_SingleQuery); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6021,19 +5977,19 @@ CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { exitRule(); }); try { - setState(1045); + setState(1047); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 130, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1043); + setState(1045); oC_SinglePartQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1044); + setState(1046); oC_MultiPartQuery(); break; } @@ -6094,7 +6050,7 @@ size_t CypherParser::OC_SinglePartQueryContext::getRuleIndex() const { CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { OC_SinglePartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, CypherParser::RuleOC_SinglePartQuery); + enterRule(_localctx, 98, CypherParser::RuleOC_SinglePartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -6106,92 +6062,92 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { }); try { size_t alt; - setState(1092); + setState(1094); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 141, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1053); + setState(1055); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 48) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 48)) & 7971459301377) != 0)) { - setState(1047); - oC_ReadingClause(); setState(1049); + oC_ReadingClause(); + setState(1051); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1048); + setState(1050); match(CypherParser::SP); } - setState(1055); + setState(1057); _errHandler->sync(this); _la = _input->LA(1); } - setState(1056); + setState(1058); oC_Return(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1063); + setState(1065); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 48) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 48)) & 7971459301377) != 0)) { - setState(1057); - oC_ReadingClause(); setState(1059); + oC_ReadingClause(); + setState(1061); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1058); + setState(1060); match(CypherParser::SP); } - setState(1065); + setState(1067); _errHandler->sync(this); _la = _input->LA(1); } - setState(1066); + setState(1068); oC_UpdatingClause(); - setState(1073); + setState(1075); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 136, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1068); + setState(1070); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1067); + setState(1069); match(CypherParser::SP); } - setState(1070); + setState(1072); oC_UpdatingClause(); } - setState(1075); + setState(1077); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 136, _ctx); } - setState(1080); + setState(1082); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 138, _ctx)) { case 1: { - setState(1077); + setState(1079); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1076); + setState(1078); match(CypherParser::SP); } - setState(1079); + setState(1081); oC_Return(); break; } @@ -6204,18 +6160,18 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { case 3: { enterOuterAlt(_localctx, 3); - setState(1086); + setState(1088); _errHandler->sync(this); _la = _input->LA(1); do { - setState(1082); - oC_ReadingClause(); setState(1084); + oC_ReadingClause(); + setState(1086); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 139, _ctx)) { case 1: { - setState(1083); + setState(1085); match(CypherParser::SP); break; } @@ -6223,7 +6179,7 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { default: break; } - setState(1088); + setState(1090); _errHandler->sync(this); _la = _input->LA(1); } while (((((_la - 48) & ~ 0x3fULL) == 0) && @@ -6280,7 +6236,7 @@ size_t CypherParser::OC_MultiPartQueryContext::getRuleIndex() const { CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { OC_MultiPartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, CypherParser::RuleOC_MultiPartQuery); + enterRule(_localctx, 100, CypherParser::RuleOC_MultiPartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -6293,20 +6249,20 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1098); + setState(1100); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1094); - kU_QueryPart(); setState(1096); + kU_QueryPart(); + setState(1098); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1095); + setState(1097); match(CypherParser::SP); } break; @@ -6315,11 +6271,11 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { default: throw NoViableAltException(this); } - setState(1100); + setState(1102); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 143, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1102); + setState(1104); oC_SinglePartQuery(); } @@ -6374,7 +6330,7 @@ size_t CypherParser::KU_QueryPartContext::getRuleIndex() const { CypherParser::KU_QueryPartContext* CypherParser::kU_QueryPart() { KU_QueryPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, CypherParser::RuleKU_QueryPart); + enterRule(_localctx, 102, CypherParser::RuleKU_QueryPart); size_t _la = 0; #if __cplusplus > 201703L @@ -6386,45 +6342,45 @@ CypherParser::KU_QueryPartContext* CypherParser::kU_QueryPart() { }); try { enterOuterAlt(_localctx, 1); - setState(1110); + setState(1112); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 48) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 48)) & 7971459301377) != 0)) { - setState(1104); - oC_ReadingClause(); setState(1106); + oC_ReadingClause(); + setState(1108); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1105); + setState(1107); match(CypherParser::SP); } - setState(1112); + setState(1114); _errHandler->sync(this); _la = _input->LA(1); } - setState(1119); + setState(1121); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 91) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 91)) & 59) != 0)) { - setState(1113); - oC_UpdatingClause(); setState(1115); + oC_UpdatingClause(); + setState(1117); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1114); + setState(1116); match(CypherParser::SP); } - setState(1121); + setState(1123); _errHandler->sync(this); _la = _input->LA(1); } - setState(1122); + setState(1124); oC_With(); } @@ -6467,7 +6423,7 @@ size_t CypherParser::OC_UpdatingClauseContext::getRuleIndex() const { CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { OC_UpdatingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, CypherParser::RuleOC_UpdatingClause); + enterRule(_localctx, 104, CypherParser::RuleOC_UpdatingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6477,26 +6433,26 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { exitRule(); }); try { - setState(1128); + setState(1130); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::CREATE: { enterOuterAlt(_localctx, 1); - setState(1124); + setState(1126); oC_Create(); break; } case CypherParser::MERGE: { enterOuterAlt(_localctx, 2); - setState(1125); + setState(1127); oC_Merge(); break; } case CypherParser::SET: { enterOuterAlt(_localctx, 3); - setState(1126); + setState(1128); oC_Set(); break; } @@ -6504,7 +6460,7 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { case CypherParser::DETACH: case CypherParser::DELETE: { enterOuterAlt(_localctx, 4); - setState(1127); + setState(1129); oC_Delete(); break; } @@ -6553,7 +6509,7 @@ size_t CypherParser::OC_ReadingClauseContext::getRuleIndex() const { CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { OC_ReadingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, CypherParser::RuleOC_ReadingClause); + enterRule(_localctx, 106, CypherParser::RuleOC_ReadingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6563,34 +6519,34 @@ CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { exitRule(); }); try { - setState(1134); + setState(1136); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::OPTIONAL: case CypherParser::MATCH: { enterOuterAlt(_localctx, 1); - setState(1130); + setState(1132); oC_Match(); break; } case CypherParser::UNWIND: { enterOuterAlt(_localctx, 2); - setState(1131); + setState(1133); oC_Unwind(); break; } case CypherParser::CALL: { enterOuterAlt(_localctx, 3); - setState(1132); + setState(1134); kU_InQueryCall(); break; } case CypherParser::LOAD: { enterOuterAlt(_localctx, 4); - setState(1133); + setState(1135); kU_LoadFrom(); break; } @@ -6663,7 +6619,7 @@ size_t CypherParser::KU_LoadFromContext::getRuleIndex() const { CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { KU_LoadFromContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, CypherParser::RuleKU_LoadFrom); + enterRule(_localctx, 108, CypherParser::RuleKU_LoadFrom); size_t _la = 0; #if __cplusplus > 201703L @@ -6675,50 +6631,50 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(1136); + setState(1138); match(CypherParser::LOAD); - setState(1154); + setState(1156); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 153, _ctx)) { case 1: { - setState(1137); - match(CypherParser::SP); - setState(1138); - match(CypherParser::WITH); setState(1139); match(CypherParser::SP); setState(1140); - match(CypherParser::HEADERS); + match(CypherParser::WITH); + setState(1141); + match(CypherParser::SP); setState(1142); + match(CypherParser::HEADERS); + setState(1144); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1141); + setState(1143); match(CypherParser::SP); } - setState(1144); - match(CypherParser::T__1); setState(1146); + match(CypherParser::T__1); + setState(1148); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1145); + setState(1147); match(CypherParser::SP); } - setState(1148); - kU_PropertyDefinitions(); setState(1150); + kU_PropertyDefinitions(); + setState(1152); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1149); + setState(1151); match(CypherParser::SP); } - setState(1152); + setState(1154); match(CypherParser::T__3); break; } @@ -6726,28 +6682,28 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { default: break; } - setState(1156); - match(CypherParser::SP); - setState(1157); - match(CypherParser::FROM); setState(1158); match(CypherParser::SP); setState(1159); + match(CypherParser::FROM); + setState(1160); + match(CypherParser::SP); + setState(1161); kU_ScanSource(); - setState(1164); + setState(1166); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 155, _ctx)) { case 1: { - setState(1161); + setState(1163); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1160); + setState(1162); match(CypherParser::SP); } - setState(1163); + setState(1165); kU_ParsingOptions(); break; } @@ -6755,20 +6711,20 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { default: break; } - setState(1170); + setState(1172); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 157, _ctx)) { case 1: { - setState(1167); + setState(1169); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1166); + setState(1168); match(CypherParser::SP); } - setState(1169); + setState(1171); oC_Where(); break; } @@ -6821,7 +6777,7 @@ size_t CypherParser::KU_InQueryCallContext::getRuleIndex() const { CypherParser::KU_InQueryCallContext* CypherParser::kU_InQueryCall() { KU_InQueryCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, CypherParser::RuleKU_InQueryCall); + enterRule(_localctx, 110, CypherParser::RuleKU_InQueryCall); size_t _la = 0; #if __cplusplus > 201703L @@ -6833,26 +6789,26 @@ CypherParser::KU_InQueryCallContext* CypherParser::kU_InQueryCall() { }); try { enterOuterAlt(_localctx, 1); - setState(1172); + setState(1174); match(CypherParser::CALL); - setState(1173); + setState(1175); match(CypherParser::SP); - setState(1174); + setState(1176); oC_FunctionInvocation(); - setState(1179); + setState(1181); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 159, _ctx)) { case 1: { - setState(1176); + setState(1178); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1175); + setState(1177); match(CypherParser::SP); } - setState(1178); + setState(1180); oC_Where(); break; } @@ -6909,7 +6865,7 @@ size_t CypherParser::OC_MatchContext::getRuleIndex() const { CypherParser::OC_MatchContext* CypherParser::oC_Match() { OC_MatchContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, CypherParser::RuleOC_Match); + enterRule(_localctx, 112, CypherParser::RuleOC_Match); size_t _la = 0; #if __cplusplus > 201703L @@ -6921,42 +6877,42 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { }); try { enterOuterAlt(_localctx, 1); - setState(1183); + setState(1185); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::OPTIONAL) { - setState(1181); + setState(1183); match(CypherParser::OPTIONAL); - setState(1182); + setState(1184); match(CypherParser::SP); } - setState(1185); - match(CypherParser::MATCH); setState(1187); + match(CypherParser::MATCH); + setState(1189); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1186); + setState(1188); match(CypherParser::SP); } - setState(1189); + setState(1191); oC_Pattern(); - setState(1194); + setState(1196); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 163, _ctx)) { case 1: { - setState(1191); + setState(1193); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1190); + setState(1192); match(CypherParser::SP); } - setState(1193); + setState(1195); oC_Where(); break; } @@ -7013,7 +6969,7 @@ size_t CypherParser::OC_UnwindContext::getRuleIndex() const { CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { OC_UnwindContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 116, CypherParser::RuleOC_Unwind); + enterRule(_localctx, 114, CypherParser::RuleOC_Unwind); size_t _la = 0; #if __cplusplus > 201703L @@ -7025,25 +6981,25 @@ CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { }); try { enterOuterAlt(_localctx, 1); - setState(1196); - match(CypherParser::UNWIND); setState(1198); + match(CypherParser::UNWIND); + setState(1200); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1197); + setState(1199); match(CypherParser::SP); } - setState(1200); - oC_Expression(); - setState(1201); - match(CypherParser::SP); setState(1202); - match(CypherParser::AS); + oC_Expression(); setState(1203); match(CypherParser::SP); setState(1204); + match(CypherParser::AS); + setState(1205); + match(CypherParser::SP); + setState(1206); oC_Variable(); } @@ -7082,7 +7038,7 @@ size_t CypherParser::OC_CreateContext::getRuleIndex() const { CypherParser::OC_CreateContext* CypherParser::oC_Create() { OC_CreateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 118, CypherParser::RuleOC_Create); + enterRule(_localctx, 116, CypherParser::RuleOC_Create); size_t _la = 0; #if __cplusplus > 201703L @@ -7094,17 +7050,17 @@ CypherParser::OC_CreateContext* CypherParser::oC_Create() { }); try { enterOuterAlt(_localctx, 1); - setState(1206); - match(CypherParser::CREATE); setState(1208); + match(CypherParser::CREATE); + setState(1210); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1207); + setState(1209); match(CypherParser::SP); } - setState(1210); + setState(1212); oC_Pattern(); } @@ -7155,7 +7111,7 @@ size_t CypherParser::OC_MergeContext::getRuleIndex() const { CypherParser::OC_MergeContext* CypherParser::oC_Merge() { OC_MergeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, CypherParser::RuleOC_Merge); + enterRule(_localctx, 118, CypherParser::RuleOC_Merge); size_t _la = 0; #if __cplusplus > 201703L @@ -7168,29 +7124,29 @@ CypherParser::OC_MergeContext* CypherParser::oC_Merge() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1212); - match(CypherParser::MERGE); setState(1214); + match(CypherParser::MERGE); + setState(1216); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1213); + setState(1215); match(CypherParser::SP); } - setState(1216); + setState(1218); oC_Pattern(); - setState(1221); + setState(1223); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 167, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1217); + setState(1219); match(CypherParser::SP); - setState(1218); + setState(1220); oC_MergeAction(); } - setState(1223); + setState(1225); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 167, _ctx); } @@ -7243,7 +7199,7 @@ size_t CypherParser::OC_MergeActionContext::getRuleIndex() const { CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { OC_MergeActionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, CypherParser::RuleOC_MergeAction); + enterRule(_localctx, 120, CypherParser::RuleOC_MergeAction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7253,35 +7209,35 @@ CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { exitRule(); }); try { - setState(1234); + setState(1236); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 168, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1224); - match(CypherParser::ON); - setState(1225); - match(CypherParser::SP); setState(1226); - match(CypherParser::MATCH); + match(CypherParser::ON); setState(1227); match(CypherParser::SP); setState(1228); + match(CypherParser::MATCH); + setState(1229); + match(CypherParser::SP); + setState(1230); oC_Set(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1229); - match(CypherParser::ON); - setState(1230); - match(CypherParser::SP); setState(1231); - match(CypherParser::CREATE); + match(CypherParser::ON); setState(1232); match(CypherParser::SP); setState(1233); + match(CypherParser::CREATE); + setState(1234); + match(CypherParser::SP); + setState(1235); oC_Set(); break; } @@ -7334,7 +7290,7 @@ size_t CypherParser::OC_SetContext::getRuleIndex() const { CypherParser::OC_SetContext* CypherParser::oC_Set() { OC_SetContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, CypherParser::RuleOC_Set); + enterRule(_localctx, 122, CypherParser::RuleOC_Set); size_t _la = 0; #if __cplusplus > 201703L @@ -7347,45 +7303,45 @@ CypherParser::OC_SetContext* CypherParser::oC_Set() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1236); - match(CypherParser::SET); setState(1238); + match(CypherParser::SET); + setState(1240); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1237); + setState(1239); match(CypherParser::SP); } - setState(1240); + setState(1242); oC_SetItem(); - setState(1251); + setState(1253); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 172, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1242); + setState(1244); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1241); + setState(1243); match(CypherParser::SP); } - setState(1244); - match(CypherParser::T__2); setState(1246); + match(CypherParser::T__2); + setState(1248); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1245); + setState(1247); match(CypherParser::SP); } - setState(1248); + setState(1250); oC_SetItem(); } - setState(1253); + setState(1255); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 172, _ctx); } @@ -7430,7 +7386,7 @@ size_t CypherParser::OC_SetItemContext::getRuleIndex() const { CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { OC_SetItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, CypherParser::RuleOC_SetItem); + enterRule(_localctx, 124, CypherParser::RuleOC_SetItem); size_t _la = 0; #if __cplusplus > 201703L @@ -7442,27 +7398,27 @@ CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1254); - oC_PropertyExpression(); setState(1256); + oC_PropertyExpression(); + setState(1258); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1255); + setState(1257); match(CypherParser::SP); } - setState(1258); - match(CypherParser::T__4); setState(1260); + match(CypherParser::T__5); + setState(1262); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1259); + setState(1261); match(CypherParser::SP); } - setState(1262); + setState(1264); oC_Expression(); } @@ -7513,7 +7469,7 @@ size_t CypherParser::OC_DeleteContext::getRuleIndex() const { CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { OC_DeleteContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, CypherParser::RuleOC_Delete); + enterRule(_localctx, 126, CypherParser::RuleOC_Delete); size_t _la = 0; #if __cplusplus > 201703L @@ -7526,55 +7482,55 @@ CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1266); + setState(1268); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DETACH) { - setState(1264); + setState(1266); match(CypherParser::DETACH); - setState(1265); + setState(1267); match(CypherParser::SP); } - setState(1268); - match(CypherParser::DELETE); setState(1270); + match(CypherParser::DELETE); + setState(1272); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1269); + setState(1271); match(CypherParser::SP); } - setState(1272); + setState(1274); oC_Expression(); - setState(1283); + setState(1285); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 179, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1274); + setState(1276); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1273); + setState(1275); match(CypherParser::SP); } - setState(1276); - match(CypherParser::T__2); setState(1278); + match(CypherParser::T__2); + setState(1280); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1277); + setState(1279); match(CypherParser::SP); } - setState(1280); + setState(1282); oC_Expression(); } - setState(1285); + setState(1287); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 179, _ctx); } @@ -7619,7 +7575,7 @@ size_t CypherParser::OC_WithContext::getRuleIndex() const { CypherParser::OC_WithContext* CypherParser::oC_With() { OC_WithContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, CypherParser::RuleOC_With); + enterRule(_localctx, 128, CypherParser::RuleOC_With); size_t _la = 0; #if __cplusplus > 201703L @@ -7631,24 +7587,24 @@ CypherParser::OC_WithContext* CypherParser::oC_With() { }); try { enterOuterAlt(_localctx, 1); - setState(1286); + setState(1288); match(CypherParser::WITH); - setState(1287); + setState(1289); oC_ProjectionBody(); - setState(1292); + setState(1294); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 181, _ctx)) { case 1: { - setState(1289); + setState(1291); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1288); + setState(1290); match(CypherParser::SP); } - setState(1291); + setState(1293); oC_Where(); break; } @@ -7689,7 +7645,7 @@ size_t CypherParser::OC_ReturnContext::getRuleIndex() const { CypherParser::OC_ReturnContext* CypherParser::oC_Return() { OC_ReturnContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, CypherParser::RuleOC_Return); + enterRule(_localctx, 130, CypherParser::RuleOC_Return); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7700,9 +7656,9 @@ CypherParser::OC_ReturnContext* CypherParser::oC_Return() { }); try { enterOuterAlt(_localctx, 1); - setState(1294); + setState(1296); match(CypherParser::RETURN); - setState(1295); + setState(1297); oC_ProjectionBody(); } @@ -7757,7 +7713,7 @@ size_t CypherParser::OC_ProjectionBodyContext::getRuleIndex() const { CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { OC_ProjectionBodyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, CypherParser::RuleOC_ProjectionBody); + enterRule(_localctx, 132, CypherParser::RuleOC_ProjectionBody); size_t _la = 0; #if __cplusplus > 201703L @@ -7769,20 +7725,20 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { }); try { enterOuterAlt(_localctx, 1); - setState(1301); + setState(1303); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 183, _ctx)) { case 1: { - setState(1298); + setState(1300); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1297); + setState(1299); match(CypherParser::SP); } - setState(1300); + setState(1302); match(CypherParser::DISTINCT); break; } @@ -7790,18 +7746,18 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1303); + setState(1305); match(CypherParser::SP); - setState(1304); + setState(1306); oC_ProjectionItems(); - setState(1307); + setState(1309); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 184, _ctx)) { case 1: { - setState(1305); + setState(1307); match(CypherParser::SP); - setState(1306); + setState(1308); oC_Order(); break; } @@ -7809,14 +7765,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1311); + setState(1313); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 185, _ctx)) { case 1: { - setState(1309); + setState(1311); match(CypherParser::SP); - setState(1310); + setState(1312); oC_Skip(); break; } @@ -7824,14 +7780,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1315); + setState(1317); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 186, _ctx)) { case 1: { - setState(1313); + setState(1315); match(CypherParser::SP); - setState(1314); + setState(1316); oC_Limit(); break; } @@ -7884,7 +7840,7 @@ size_t CypherParser::OC_ProjectionItemsContext::getRuleIndex() const { CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { OC_ProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, CypherParser::RuleOC_ProjectionItems); + enterRule(_localctx, 134, CypherParser::RuleOC_ProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -7896,40 +7852,40 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { }); try { size_t alt; - setState(1345); + setState(1347); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::STAR: { enterOuterAlt(_localctx, 1); - setState(1317); + setState(1319); match(CypherParser::STAR); - setState(1328); + setState(1330); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 189, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1319); + setState(1321); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1318); + setState(1320); match(CypherParser::SP); } - setState(1321); - match(CypherParser::T__2); setState(1323); + match(CypherParser::T__2); + setState(1325); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1322); + setState(1324); match(CypherParser::SP); } - setState(1325); + setState(1327); oC_ProjectionItem(); } - setState(1330); + setState(1332); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 189, _ctx); } @@ -7937,8 +7893,8 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { } case CypherParser::T__1: - case CypherParser::T__5: - case CypherParser::T__7: + case CypherParser::T__6: + case CypherParser::T__8: case CypherParser::T__25: case CypherParser::COMMENT_: case CypherParser::EXPORT: @@ -7964,35 +7920,35 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(1331); + setState(1333); oC_ProjectionItem(); - setState(1342); + setState(1344); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 192, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1333); + setState(1335); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1332); + setState(1334); match(CypherParser::SP); } - setState(1335); - match(CypherParser::T__2); setState(1337); + match(CypherParser::T__2); + setState(1339); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1336); + setState(1338); match(CypherParser::SP); } - setState(1339); + setState(1341); oC_ProjectionItem(); } - setState(1344); + setState(1346); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 192, _ctx); } @@ -8047,7 +8003,7 @@ size_t CypherParser::OC_ProjectionItemContext::getRuleIndex() const { CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { OC_ProjectionItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, CypherParser::RuleOC_ProjectionItem); + enterRule(_localctx, 136, CypherParser::RuleOC_ProjectionItem); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8057,27 +8013,27 @@ CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { exitRule(); }); try { - setState(1354); + setState(1356); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 194, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1347); - oC_Expression(); - setState(1348); - match(CypherParser::SP); setState(1349); - match(CypherParser::AS); + oC_Expression(); setState(1350); match(CypherParser::SP); setState(1351); + match(CypherParser::AS); + setState(1352); + match(CypherParser::SP); + setState(1353); oC_Variable(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1353); + setState(1355); oC_Expression(); break; } @@ -8134,7 +8090,7 @@ size_t CypherParser::OC_OrderContext::getRuleIndex() const { CypherParser::OC_OrderContext* CypherParser::oC_Order() { OC_OrderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, CypherParser::RuleOC_Order); + enterRule(_localctx, 138, CypherParser::RuleOC_Order); size_t _la = 0; #if __cplusplus > 201703L @@ -8146,33 +8102,33 @@ CypherParser::OC_OrderContext* CypherParser::oC_Order() { }); try { enterOuterAlt(_localctx, 1); - setState(1356); - match(CypherParser::ORDER); - setState(1357); - match(CypherParser::SP); setState(1358); - match(CypherParser::BY); + match(CypherParser::ORDER); setState(1359); match(CypherParser::SP); setState(1360); + match(CypherParser::BY); + setState(1361); + match(CypherParser::SP); + setState(1362); oC_SortItem(); - setState(1368); + setState(1370); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(1361); - match(CypherParser::T__2); setState(1363); + match(CypherParser::T__2); + setState(1365); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1362); + setState(1364); match(CypherParser::SP); } - setState(1365); + setState(1367); oC_SortItem(); - setState(1370); + setState(1372); _errHandler->sync(this); _la = _input->LA(1); } @@ -8213,7 +8169,7 @@ size_t CypherParser::OC_SkipContext::getRuleIndex() const { CypherParser::OC_SkipContext* CypherParser::oC_Skip() { OC_SkipContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, CypherParser::RuleOC_Skip); + enterRule(_localctx, 140, CypherParser::RuleOC_Skip); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8224,11 +8180,11 @@ CypherParser::OC_SkipContext* CypherParser::oC_Skip() { }); try { enterOuterAlt(_localctx, 1); - setState(1371); + setState(1373); match(CypherParser::L_SKIP); - setState(1372); + setState(1374); match(CypherParser::SP); - setState(1373); + setState(1375); oC_Expression(); } @@ -8267,7 +8223,7 @@ size_t CypherParser::OC_LimitContext::getRuleIndex() const { CypherParser::OC_LimitContext* CypherParser::oC_Limit() { OC_LimitContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, CypherParser::RuleOC_Limit); + enterRule(_localctx, 142, CypherParser::RuleOC_Limit); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8278,11 +8234,11 @@ CypherParser::OC_LimitContext* CypherParser::oC_Limit() { }); try { enterOuterAlt(_localctx, 1); - setState(1375); + setState(1377); match(CypherParser::LIMIT); - setState(1376); + setState(1378); match(CypherParser::SP); - setState(1377); + setState(1379); oC_Expression(); } @@ -8333,7 +8289,7 @@ size_t CypherParser::OC_SortItemContext::getRuleIndex() const { CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { OC_SortItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, CypherParser::RuleOC_SortItem); + enterRule(_localctx, 144, CypherParser::RuleOC_SortItem); size_t _la = 0; #if __cplusplus > 201703L @@ -8345,22 +8301,22 @@ CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1379); + setState(1381); oC_Expression(); - setState(1384); + setState(1386); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 198, _ctx)) { case 1: { - setState(1381); + setState(1383); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1380); + setState(1382); match(CypherParser::SP); } - setState(1383); + setState(1385); _la = _input->LA(1); if (!(((((_la - 106) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 106)) & 15) != 0))) { @@ -8413,7 +8369,7 @@ size_t CypherParser::OC_WhereContext::getRuleIndex() const { CypherParser::OC_WhereContext* CypherParser::oC_Where() { OC_WhereContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, CypherParser::RuleOC_Where); + enterRule(_localctx, 146, CypherParser::RuleOC_Where); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8424,11 +8380,11 @@ CypherParser::OC_WhereContext* CypherParser::oC_Where() { }); try { enterOuterAlt(_localctx, 1); - setState(1386); + setState(1388); match(CypherParser::WHERE); - setState(1387); + setState(1389); match(CypherParser::SP); - setState(1388); + setState(1390); oC_Expression(); } @@ -8471,7 +8427,7 @@ size_t CypherParser::OC_PatternContext::getRuleIndex() const { CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { OC_PatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, CypherParser::RuleOC_Pattern); + enterRule(_localctx, 148, CypherParser::RuleOC_Pattern); size_t _la = 0; #if __cplusplus > 201703L @@ -8484,35 +8440,35 @@ CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1390); + setState(1392); oC_PatternPart(); - setState(1401); + setState(1403); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 201, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1392); + setState(1394); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1391); + setState(1393); match(CypherParser::SP); } - setState(1394); - match(CypherParser::T__2); setState(1396); + match(CypherParser::T__2); + setState(1398); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1395); + setState(1397); match(CypherParser::SP); } - setState(1398); + setState(1400); oC_PatternPart(); } - setState(1403); + setState(1405); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 201, _ctx); } @@ -8557,7 +8513,7 @@ size_t CypherParser::OC_PatternPartContext::getRuleIndex() const { CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { OC_PatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, CypherParser::RuleOC_PatternPart); + enterRule(_localctx, 150, CypherParser::RuleOC_PatternPart); size_t _la = 0; #if __cplusplus > 201703L @@ -8568,7 +8524,7 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { exitRule(); }); try { - setState(1415); + setState(1417); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::COMMENT_: @@ -8585,34 +8541,34 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(1404); - oC_Variable(); setState(1406); + oC_Variable(); + setState(1408); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1405); + setState(1407); match(CypherParser::SP); } - setState(1408); - match(CypherParser::T__4); setState(1410); + match(CypherParser::T__5); + setState(1412); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1409); + setState(1411); match(CypherParser::SP); } - setState(1412); + setState(1414); oC_AnonymousPatternPart(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(1414); + setState(1416); oC_AnonymousPatternPart(); break; } @@ -8649,7 +8605,7 @@ size_t CypherParser::OC_AnonymousPatternPartContext::getRuleIndex() const { CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternPart() { OC_AnonymousPatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, CypherParser::RuleOC_AnonymousPatternPart); + enterRule(_localctx, 152, CypherParser::RuleOC_AnonymousPatternPart); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8660,7 +8616,7 @@ CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternP }); try { enterOuterAlt(_localctx, 1); - setState(1417); + setState(1419); oC_PatternElement(); } @@ -8711,7 +8667,7 @@ size_t CypherParser::OC_PatternElementContext::getRuleIndex() const { CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { OC_PatternElementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, CypherParser::RuleOC_PatternElement); + enterRule(_localctx, 154, CypherParser::RuleOC_PatternElement); size_t _la = 0; #if __cplusplus > 201703L @@ -8723,30 +8679,30 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { }); try { size_t alt; - setState(1433); + setState(1435); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 207, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1419); + setState(1421); oC_NodePattern(); - setState(1426); + setState(1428); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 206, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1421); + setState(1423); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1420); + setState(1422); match(CypherParser::SP); } - setState(1423); + setState(1425); oC_PatternElementChain(); } - setState(1428); + setState(1430); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 206, _ctx); } @@ -8755,11 +8711,11 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { case 2: { enterOuterAlt(_localctx, 2); - setState(1429); + setState(1431); match(CypherParser::T__1); - setState(1430); + setState(1432); oC_PatternElement(); - setState(1431); + setState(1433); match(CypherParser::T__3); break; } @@ -8812,7 +8768,7 @@ size_t CypherParser::OC_NodePatternContext::getRuleIndex() const { CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { OC_NodePatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, CypherParser::RuleOC_NodePattern); + enterRule(_localctx, 156, CypherParser::RuleOC_NodePattern); size_t _la = 0; #if __cplusplus > 201703L @@ -8824,67 +8780,67 @@ CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { }); try { enterOuterAlt(_localctx, 1); - setState(1435); - match(CypherParser::T__1); setState(1437); + match(CypherParser::T__1); + setState(1439); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1436); + setState(1438); match(CypherParser::SP); } - setState(1443); + setState(1445); _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(1439); - oC_Variable(); setState(1441); + oC_Variable(); + setState(1443); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1440); + setState(1442); match(CypherParser::SP); } } - setState(1449); + setState(1451); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1445); - oC_NodeLabels(); setState(1447); + oC_NodeLabels(); + setState(1449); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1446); + setState(1448); match(CypherParser::SP); } } - setState(1455); + setState(1457); _errHandler->sync(this); _la = _input->LA(1); - if (_la == CypherParser::T__7) { - setState(1451); - kU_Properties(); + if (_la == CypherParser::T__8) { setState(1453); + kU_Properties(); + setState(1455); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1452); + setState(1454); match(CypherParser::SP); } } - setState(1457); + setState(1459); match(CypherParser::T__3); } @@ -8923,7 +8879,7 @@ size_t CypherParser::OC_PatternElementChainContext::getRuleIndex() const { CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChain() { OC_PatternElementChainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, CypherParser::RuleOC_PatternElementChain); + enterRule(_localctx, 158, CypherParser::RuleOC_PatternElementChain); size_t _la = 0; #if __cplusplus > 201703L @@ -8935,17 +8891,17 @@ CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChai }); try { enterOuterAlt(_localctx, 1); - setState(1459); - oC_RelationshipPattern(); setState(1461); + oC_RelationshipPattern(); + setState(1463); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1460); + setState(1462); match(CypherParser::SP); } - setState(1463); + setState(1465); oC_NodePattern(); } @@ -9000,7 +8956,7 @@ size_t CypherParser::OC_RelationshipPatternContext::getRuleIndex() const { CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPattern() { OC_RelationshipPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, CypherParser::RuleOC_RelationshipPattern); + enterRule(_localctx, 160, CypherParser::RuleOC_RelationshipPattern); size_t _la = 0; #if __cplusplus > 201703L @@ -9011,29 +8967,29 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter exitRule(); }); try { - setState(1509); + setState(1511); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 227, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1465); - oC_LeftArrowHead(); setState(1467); + oC_LeftArrowHead(); + setState(1469); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1466); + setState(1468); match(CypherParser::SP); } - setState(1469); - oC_Dash(); setState(1471); + oC_Dash(); + setState(1473); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 217, _ctx)) { case 1: { - setState(1470); + setState(1472); match(CypherParser::SP); break; } @@ -9041,37 +8997,37 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1474); + setState(1476); _errHandler->sync(this); _la = _input->LA(1); - if (_la == CypherParser::T__5) { - setState(1473); + if (_la == CypherParser::T__6) { + setState(1475); oC_RelationshipDetail(); } - setState(1477); + setState(1479); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1476); + setState(1478); match(CypherParser::SP); } - setState(1479); + setState(1481); oC_Dash(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1481); - oC_Dash(); setState(1483); + oC_Dash(); + setState(1485); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 220, _ctx)) { case 1: { - setState(1482); + setState(1484); match(CypherParser::SP); break; } @@ -9079,47 +9035,47 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1486); + setState(1488); _errHandler->sync(this); _la = _input->LA(1); - if (_la == CypherParser::T__5) { - setState(1485); + if (_la == CypherParser::T__6) { + setState(1487); oC_RelationshipDetail(); } - setState(1489); + setState(1491); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1488); + setState(1490); match(CypherParser::SP); } - setState(1491); - oC_Dash(); setState(1493); + oC_Dash(); + setState(1495); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1492); + setState(1494); match(CypherParser::SP); } - setState(1495); + setState(1497); oC_RightArrowHead(); break; } case 3: { - enterOuterAlt(_localctx, 3); - setState(1497); - oC_Dash(); + enterOuterAlt(_localctx, 3); setState(1499); + oC_Dash(); + setState(1501); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 224, _ctx)) { case 1: { - setState(1498); + setState(1500); match(CypherParser::SP); break; } @@ -9127,23 +9083,23 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1502); + setState(1504); _errHandler->sync(this); _la = _input->LA(1); - if (_la == CypherParser::T__5) { - setState(1501); + if (_la == CypherParser::T__6) { + setState(1503); oC_RelationshipDetail(); } - setState(1505); + setState(1507); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1504); + setState(1506); match(CypherParser::SP); } - setState(1507); + setState(1509); oC_Dash(); break; } @@ -9200,7 +9156,7 @@ size_t CypherParser::OC_RelationshipDetailContext::getRuleIndex() const { CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail() { OC_RelationshipDetailContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, CypherParser::RuleOC_RelationshipDetail); + enterRule(_localctx, 162, CypherParser::RuleOC_RelationshipDetail); size_t _la = 0; #if __cplusplus > 201703L @@ -9212,84 +9168,84 @@ CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail( }); try { enterOuterAlt(_localctx, 1); - setState(1511); - match(CypherParser::T__5); setState(1513); + match(CypherParser::T__6); + setState(1515); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1512); + setState(1514); match(CypherParser::SP); } - setState(1519); + setState(1521); _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(1515); - oC_Variable(); setState(1517); + oC_Variable(); + setState(1519); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1516); + setState(1518); match(CypherParser::SP); } } - setState(1525); + setState(1527); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1521); - oC_RelationshipTypes(); setState(1523); + oC_RelationshipTypes(); + setState(1525); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1522); + setState(1524); match(CypherParser::SP); } } - setState(1531); + setState(1533); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::STAR) { - setState(1527); - oC_RangeLiteral(); setState(1529); + oC_RangeLiteral(); + setState(1531); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1528); + setState(1530); match(CypherParser::SP); } } - setState(1537); + setState(1539); _errHandler->sync(this); _la = _input->LA(1); - if (_la == CypherParser::T__7) { - setState(1533); - kU_Properties(); + if (_la == CypherParser::T__8) { setState(1535); + kU_Properties(); + setState(1537); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1534); + setState(1536); match(CypherParser::SP); } } - setState(1539); - match(CypherParser::T__6); + setState(1541); + match(CypherParser::T__7); } catch (RecognitionException &e) { @@ -9347,7 +9303,7 @@ size_t CypherParser::KU_PropertiesContext::getRuleIndex() const { CypherParser::KU_PropertiesContext* CypherParser::kU_Properties() { KU_PropertiesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, CypherParser::RuleKU_Properties); + enterRule(_localctx, 164, CypherParser::RuleKU_Properties); size_t _la = 0; #if __cplusplus > 201703L @@ -9359,104 +9315,104 @@ CypherParser::KU_PropertiesContext* CypherParser::kU_Properties() { }); try { enterOuterAlt(_localctx, 1); - setState(1541); - match(CypherParser::T__7); setState(1543); + match(CypherParser::T__8); + setState(1545); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1542); + setState(1544); match(CypherParser::SP); } - setState(1578); + setState(1580); _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(1545); - oC_PropertyKeyName(); setState(1547); + oC_PropertyKeyName(); + setState(1549); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1546); + setState(1548); match(CypherParser::SP); } - setState(1549); - match(CypherParser::COLON); setState(1551); + match(CypherParser::COLON); + setState(1553); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1550); + setState(1552); match(CypherParser::SP); } - setState(1553); - oC_Expression(); setState(1555); + oC_Expression(); + setState(1557); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1554); + setState(1556); match(CypherParser::SP); } - setState(1575); + setState(1577); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(1557); - match(CypherParser::T__2); setState(1559); + match(CypherParser::T__2); + setState(1561); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1558); + setState(1560); match(CypherParser::SP); } - setState(1561); - oC_PropertyKeyName(); setState(1563); + oC_PropertyKeyName(); + setState(1565); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1562); + setState(1564); match(CypherParser::SP); } - setState(1565); - match(CypherParser::COLON); setState(1567); + match(CypherParser::COLON); + setState(1569); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1566); + setState(1568); match(CypherParser::SP); } - setState(1569); - oC_Expression(); setState(1571); + oC_Expression(); + setState(1573); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1570); + setState(1572); match(CypherParser::SP); } - setState(1577); + setState(1579); _errHandler->sync(this); _la = _input->LA(1); } } - setState(1580); - match(CypherParser::T__8); + setState(1582); + match(CypherParser::T__9); } catch (RecognitionException &e) { @@ -9506,7 +9462,7 @@ size_t CypherParser::OC_RelationshipTypesContext::getRuleIndex() const { CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() { OC_RelationshipTypesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, CypherParser::RuleOC_RelationshipTypes); + enterRule(_localctx, 166, CypherParser::RuleOC_RelationshipTypes); size_t _la = 0; #if __cplusplus > 201703L @@ -9519,53 +9475,53 @@ CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1582); - match(CypherParser::COLON); setState(1584); + match(CypherParser::COLON); + setState(1586); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1583); + setState(1585); match(CypherParser::SP); } - setState(1586); + setState(1588); oC_RelTypeName(); - setState(1600); + setState(1602); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1588); + setState(1590); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1587); + setState(1589); match(CypherParser::SP); } - setState(1590); - match(CypherParser::T__9); setState(1592); + match(CypherParser::T__10); + setState(1594); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1591); + setState(1593); match(CypherParser::COLON); } - setState(1595); + setState(1597); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1594); + setState(1596); match(CypherParser::SP); } - setState(1597); + setState(1599); oC_RelTypeName(); } - setState(1602); + setState(1604); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); } @@ -9610,7 +9566,7 @@ size_t CypherParser::OC_NodeLabelsContext::getRuleIndex() const { CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { OC_NodeLabelsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, CypherParser::RuleOC_NodeLabels); + enterRule(_localctx, 168, CypherParser::RuleOC_NodeLabels); size_t _la = 0; #if __cplusplus > 201703L @@ -9623,25 +9579,25 @@ CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1603); + setState(1605); oC_NodeLabel(); - setState(1610); + setState(1612); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 253, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1605); + setState(1607); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1604); + setState(1606); match(CypherParser::SP); } - setState(1607); + setState(1609); oC_NodeLabel(); } - setState(1612); + setState(1614); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 253, _ctx); } @@ -9682,7 +9638,7 @@ size_t CypherParser::OC_NodeLabelContext::getRuleIndex() const { CypherParser::OC_NodeLabelContext* CypherParser::oC_NodeLabel() { OC_NodeLabelContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, CypherParser::RuleOC_NodeLabel); + enterRule(_localctx, 170, CypherParser::RuleOC_NodeLabel); size_t _la = 0; #if __cplusplus > 201703L @@ -9694,17 +9650,17 @@ CypherParser::OC_NodeLabelContext* CypherParser::oC_NodeLabel() { }); try { enterOuterAlt(_localctx, 1); - setState(1613); - match(CypherParser::COLON); setState(1615); + match(CypherParser::COLON); + setState(1617); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1614); + setState(1616); match(CypherParser::SP); } - setState(1617); + setState(1619); oC_LabelName(); } @@ -9767,7 +9723,7 @@ size_t CypherParser::OC_RangeLiteralContext::getRuleIndex() const { CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { OC_RangeLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, CypherParser::RuleOC_RangeLiteral); + enterRule(_localctx, 172, CypherParser::RuleOC_RangeLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -9779,14 +9735,14 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(1619); - match(CypherParser::STAR); setState(1621); + match(CypherParser::STAR); + setState(1623); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 255, _ctx)) { case 1: { - setState(1620); + setState(1622); match(CypherParser::SP); break; } @@ -9794,29 +9750,29 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1627); + setState(1629); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::SHORTEST: { - setState(1623); + setState(1625); match(CypherParser::SHORTEST); break; } case CypherParser::ALL: { - setState(1624); + setState(1626); match(CypherParser::ALL); - setState(1625); + setState(1627); match(CypherParser::SP); - setState(1626); + setState(1628); match(CypherParser::SHORTEST); break; } case CypherParser::T__1: - case CypherParser::T__6: case CypherParser::T__7: - case CypherParser::T__10: + case CypherParser::T__8: + case CypherParser::T__11: case CypherParser::DecimalInteger: case CypherParser::SP: { break; @@ -9825,12 +9781,12 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1630); + setState(1632); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 257, _ctx)) { case 1: { - setState(1629); + setState(1631); match(CypherParser::SP); break; } @@ -9838,35 +9794,35 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1646); + setState(1648); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 262, _ctx)) { case 1: { - setState(1633); + setState(1635); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1632); + setState(1634); oC_LowerBound(); } - setState(1636); + setState(1638); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1635); + setState(1637); match(CypherParser::SP); } - setState(1638); - match(CypherParser::T__10); setState(1640); + match(CypherParser::T__11); + setState(1642); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 260, _ctx)) { case 1: { - setState(1639); + setState(1641); match(CypherParser::SP); break; } @@ -9874,19 +9830,19 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1643); + setState(1645); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1642); + setState(1644); oC_UpperBound(); } break; } case 2: { - setState(1645); + setState(1647); oC_IntegerLiteral(); break; } @@ -9894,20 +9850,20 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1652); + setState(1654); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 264, _ctx)) { case 1: { - setState(1649); + setState(1651); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1648); + setState(1650); match(CypherParser::SP); } - setState(1651); + setState(1653); kU_RecursiveRelationshipComprehension(); break; } @@ -9968,7 +9924,7 @@ size_t CypherParser::KU_RecursiveRelationshipComprehensionContext::getRuleIndex( CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_RecursiveRelationshipComprehension() { KU_RecursiveRelationshipComprehensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, CypherParser::RuleKU_RecursiveRelationshipComprehension); + enterRule(_localctx, 174, CypherParser::RuleKU_RecursiveRelationshipComprehension); size_t _la = 0; #if __cplusplus > 201703L @@ -9980,62 +9936,62 @@ CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_Rec }); try { enterOuterAlt(_localctx, 1); - setState(1654); - match(CypherParser::T__1); setState(1656); + match(CypherParser::T__1); + setState(1658); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1655); + setState(1657); match(CypherParser::SP); } - setState(1658); - oC_Variable(); setState(1660); + oC_Variable(); + setState(1662); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1659); + setState(1661); match(CypherParser::SP); } - setState(1662); - match(CypherParser::T__2); setState(1664); + match(CypherParser::T__2); + setState(1666); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1663); + setState(1665); match(CypherParser::SP); } - setState(1666); + setState(1668); oC_Variable(); - setState(1675); + setState(1677); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 270, _ctx)) { case 1: { - setState(1668); + setState(1670); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1667); + setState(1669); match(CypherParser::SP); } - setState(1670); - match(CypherParser::T__9); setState(1672); + match(CypherParser::T__10); + setState(1674); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1671); + setState(1673); match(CypherParser::SP); } - setState(1674); + setState(1676); oC_Where(); break; } @@ -10043,61 +9999,61 @@ CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_Rec default: break; } - setState(1696); + setState(1698); _errHandler->sync(this); _la = _input->LA(1); - if (_la == CypherParser::T__9 || _la == CypherParser::SP) { - setState(1678); + if (_la == CypherParser::T__10 || _la == CypherParser::SP) { + setState(1680); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1677); + setState(1679); match(CypherParser::SP); } - setState(1680); - match(CypherParser::T__9); setState(1682); + match(CypherParser::T__10); + setState(1684); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1681); + setState(1683); match(CypherParser::SP); } - setState(1684); - kU_IntermediateRelProjectionItems(); setState(1686); + kU_IntermediateRelProjectionItems(); + setState(1688); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1685); + setState(1687); match(CypherParser::SP); } - setState(1688); - match(CypherParser::T__2); setState(1690); + match(CypherParser::T__2); + setState(1692); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1689); + setState(1691); match(CypherParser::SP); } - setState(1692); - kU_IntermediateNodeProjectionItems(); setState(1694); + kU_IntermediateNodeProjectionItems(); + setState(1696); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1693); + setState(1695); match(CypherParser::SP); } } - setState(1698); + setState(1700); match(CypherParser::T__3); } @@ -10136,7 +10092,7 @@ size_t CypherParser::KU_IntermediateNodeProjectionItemsContext::getRuleIndex() c CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_IntermediateNodeProjectionItems() { KU_IntermediateNodeProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, CypherParser::RuleKU_IntermediateNodeProjectionItems); + enterRule(_localctx, 176, CypherParser::RuleKU_IntermediateNodeProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -10148,14 +10104,14 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm }); try { enterOuterAlt(_localctx, 1); - setState(1700); - match(CypherParser::T__7); setState(1702); + match(CypherParser::T__8); + setState(1704); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 277, _ctx)) { case 1: { - setState(1701); + setState(1703); match(CypherParser::SP); break; } @@ -10163,27 +10119,27 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm default: break; } - setState(1705); + setState(1707); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990020) != 0) || ((((_la - 69) & ~ 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(1704); + setState(1706); oC_ProjectionItems(); } - setState(1708); + setState(1710); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1707); + setState(1709); match(CypherParser::SP); } - setState(1710); - match(CypherParser::T__8); + setState(1712); + match(CypherParser::T__9); } catch (RecognitionException &e) { @@ -10221,7 +10177,7 @@ size_t CypherParser::KU_IntermediateRelProjectionItemsContext::getRuleIndex() co CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_IntermediateRelProjectionItems() { KU_IntermediateRelProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, CypherParser::RuleKU_IntermediateRelProjectionItems); + enterRule(_localctx, 178, CypherParser::RuleKU_IntermediateRelProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -10233,14 +10189,14 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme }); try { enterOuterAlt(_localctx, 1); - setState(1712); - match(CypherParser::T__7); setState(1714); + match(CypherParser::T__8); + setState(1716); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 280, _ctx)) { case 1: { - setState(1713); + setState(1715); match(CypherParser::SP); break; } @@ -10248,27 +10204,27 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme default: break; } - setState(1717); + setState(1719); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990020) != 0) || ((((_la - 69) & ~ 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(1716); + setState(1718); oC_ProjectionItems(); } - setState(1720); + setState(1722); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1719); + setState(1721); match(CypherParser::SP); } - setState(1722); - match(CypherParser::T__8); + setState(1724); + match(CypherParser::T__9); } catch (RecognitionException &e) { @@ -10298,7 +10254,7 @@ size_t CypherParser::OC_LowerBoundContext::getRuleIndex() const { CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { OC_LowerBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 182, CypherParser::RuleOC_LowerBound); + enterRule(_localctx, 180, CypherParser::RuleOC_LowerBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10309,7 +10265,7 @@ CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { }); try { enterOuterAlt(_localctx, 1); - setState(1724); + setState(1726); match(CypherParser::DecimalInteger); } @@ -10340,7 +10296,7 @@ size_t CypherParser::OC_UpperBoundContext::getRuleIndex() const { CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { OC_UpperBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, CypherParser::RuleOC_UpperBound); + enterRule(_localctx, 182, CypherParser::RuleOC_UpperBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10351,7 +10307,7 @@ CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { }); try { enterOuterAlt(_localctx, 1); - setState(1726); + setState(1728); match(CypherParser::DecimalInteger); } @@ -10382,7 +10338,7 @@ size_t CypherParser::OC_LabelNameContext::getRuleIndex() const { CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { OC_LabelNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, CypherParser::RuleOC_LabelName); + enterRule(_localctx, 184, CypherParser::RuleOC_LabelName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10393,7 +10349,7 @@ CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { }); try { enterOuterAlt(_localctx, 1); - setState(1728); + setState(1730); oC_SchemaName(); } @@ -10424,7 +10380,7 @@ size_t CypherParser::OC_RelTypeNameContext::getRuleIndex() const { CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { OC_RelTypeNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 188, CypherParser::RuleOC_RelTypeName); + enterRule(_localctx, 186, CypherParser::RuleOC_RelTypeName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10435,7 +10391,7 @@ CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { }); try { enterOuterAlt(_localctx, 1); - setState(1730); + setState(1732); oC_SchemaName(); } @@ -10466,7 +10422,7 @@ size_t CypherParser::OC_ExpressionContext::getRuleIndex() const { CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { OC_ExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 190, CypherParser::RuleOC_Expression); + enterRule(_localctx, 188, CypherParser::RuleOC_Expression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10477,7 +10433,7 @@ CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { }); try { enterOuterAlt(_localctx, 1); - setState(1732); + setState(1734); oC_OrExpression(); } @@ -10528,7 +10484,7 @@ size_t CypherParser::OC_OrExpressionContext::getRuleIndex() const { CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { OC_OrExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 192, CypherParser::RuleOC_OrExpression); + enterRule(_localctx, 190, CypherParser::RuleOC_OrExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10540,23 +10496,23 @@ CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1734); + setState(1736); oC_XorExpression(); - setState(1741); + setState(1743); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 283, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1735); - match(CypherParser::SP); - setState(1736); - match(CypherParser::OR); setState(1737); match(CypherParser::SP); setState(1738); + match(CypherParser::OR); + setState(1739); + match(CypherParser::SP); + setState(1740); oC_XorExpression(); } - setState(1743); + setState(1745); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 283, _ctx); } @@ -10609,7 +10565,7 @@ size_t CypherParser::OC_XorExpressionContext::getRuleIndex() const { CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { OC_XorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 194, CypherParser::RuleOC_XorExpression); + enterRule(_localctx, 192, CypherParser::RuleOC_XorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10621,23 +10577,23 @@ CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1744); + setState(1746); oC_AndExpression(); - setState(1751); + setState(1753); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 284, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1745); - match(CypherParser::SP); - setState(1746); - match(CypherParser::XOR); setState(1747); match(CypherParser::SP); setState(1748); + match(CypherParser::XOR); + setState(1749); + match(CypherParser::SP); + setState(1750); oC_AndExpression(); } - setState(1753); + setState(1755); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 284, _ctx); } @@ -10690,7 +10646,7 @@ size_t CypherParser::OC_AndExpressionContext::getRuleIndex() const { CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { OC_AndExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 196, CypherParser::RuleOC_AndExpression); + enterRule(_localctx, 194, CypherParser::RuleOC_AndExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10702,23 +10658,23 @@ CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1754); + setState(1756); oC_NotExpression(); - setState(1761); + setState(1763); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 285, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1755); - match(CypherParser::SP); - setState(1756); - match(CypherParser::AND); setState(1757); match(CypherParser::SP); setState(1758); + match(CypherParser::AND); + setState(1759); + match(CypherParser::SP); + setState(1760); oC_NotExpression(); } - setState(1763); + setState(1765); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 285, _ctx); } @@ -10767,7 +10723,7 @@ size_t CypherParser::OC_NotExpressionContext::getRuleIndex() const { CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { OC_NotExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 198, CypherParser::RuleOC_NotExpression); + enterRule(_localctx, 196, CypherParser::RuleOC_NotExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10779,25 +10735,25 @@ CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(1770); + setState(1772); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::NOT) { - setState(1764); - match(CypherParser::NOT); setState(1766); + match(CypherParser::NOT); + setState(1768); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1765); + setState(1767); match(CypherParser::SP); } - setState(1772); + setState(1774); _errHandler->sync(this); _la = _input->LA(1); } - setState(1773); + setState(1775); oC_ComparisonExpression(); } @@ -10852,7 +10808,7 @@ size_t CypherParser::OC_ComparisonExpressionContext::getRuleIndex() const { CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpression() { OC_ComparisonExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 200, CypherParser::RuleOC_ComparisonExpression); + enterRule(_localctx, 198, CypherParser::RuleOC_ComparisonExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -10864,37 +10820,37 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress }); try { size_t alt; - setState(1823); + setState(1825); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 298, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1775); + setState(1777); kU_BitwiseOrOperatorExpression(); - setState(1785); + setState(1787); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 290, _ctx)) { case 1: { - setState(1777); + setState(1779); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1776); + setState(1778); match(CypherParser::SP); } - setState(1779); - kU_ComparisonOperator(); setState(1781); + kU_ComparisonOperator(); + setState(1783); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1780); + setState(1782); match(CypherParser::SP); } - setState(1783); + setState(1785); kU_BitwiseOrOperatorExpression(); break; } @@ -10907,28 +10863,28 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 2: { enterOuterAlt(_localctx, 2); - setState(1787); + setState(1789); kU_BitwiseOrOperatorExpression(); - setState(1789); + setState(1791); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1788); + setState(1790); match(CypherParser::SP); } - setState(1791); - antlrcpp::downCast(_localctx)->invalid_not_equalToken = match(CypherParser::INVALID_NOT_EQUAL); setState(1793); + antlrcpp::downCast(_localctx)->invalid_not_equalToken = match(CypherParser::INVALID_NOT_EQUAL); + setState(1795); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1792); + setState(1794); match(CypherParser::SP); } - setState(1795); + setState(1797); kU_BitwiseOrOperatorExpression(); notifyInvalidNotEqualOperator(antlrcpp::downCast(_localctx)->invalid_not_equalToken); break; @@ -10936,53 +10892,53 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 3: { enterOuterAlt(_localctx, 3); - setState(1799); - kU_BitwiseOrOperatorExpression(); setState(1801); + kU_BitwiseOrOperatorExpression(); + setState(1803); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1800); + setState(1802); match(CypherParser::SP); } - setState(1803); - kU_ComparisonOperator(); setState(1805); + kU_ComparisonOperator(); + setState(1807); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1804); + setState(1806); match(CypherParser::SP); } - setState(1807); + setState(1809); kU_BitwiseOrOperatorExpression(); - setState(1817); + setState(1819); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1809); + setState(1811); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1808); + setState(1810); match(CypherParser::SP); } - setState(1811); - kU_ComparisonOperator(); setState(1813); + kU_ComparisonOperator(); + setState(1815); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1812); + setState(1814); match(CypherParser::SP); } - setState(1815); + setState(1817); kU_BitwiseOrOperatorExpression(); break; } @@ -10990,7 +10946,7 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress default: throw NoViableAltException(this); } - setState(1819); + setState(1821); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 297, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -11026,7 +10982,7 @@ size_t CypherParser::KU_ComparisonOperatorContext::getRuleIndex() const { CypherParser::KU_ComparisonOperatorContext* CypherParser::kU_ComparisonOperator() { KU_ComparisonOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 202, CypherParser::RuleKU_ComparisonOperator); + enterRule(_localctx, 200, CypherParser::RuleKU_ComparisonOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11038,10 +10994,10 @@ CypherParser::KU_ComparisonOperatorContext* CypherParser::kU_ComparisonOperator( }); try { enterOuterAlt(_localctx, 1); - setState(1825); + setState(1827); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 127008) != 0))) { + ((1ULL << _la) & 254016) != 0))) { _errHandler->recoverInline(this); } else { @@ -11089,7 +11045,7 @@ size_t CypherParser::KU_BitwiseOrOperatorExpressionContext::getRuleIndex() const CypherParser::KU_BitwiseOrOperatorExpressionContext* CypherParser::kU_BitwiseOrOperatorExpression() { KU_BitwiseOrOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 204, CypherParser::RuleKU_BitwiseOrOperatorExpression); + enterRule(_localctx, 202, CypherParser::RuleKU_BitwiseOrOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11102,35 +11058,35 @@ CypherParser::KU_BitwiseOrOperatorExpressionContext* CypherParser::kU_BitwiseOrO try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1827); + setState(1829); kU_BitwiseAndOperatorExpression(); - setState(1838); + setState(1840); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 301, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1829); + setState(1831); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1828); + setState(1830); match(CypherParser::SP); } - setState(1831); - match(CypherParser::T__9); setState(1833); + match(CypherParser::T__10); + setState(1835); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1832); + setState(1834); match(CypherParser::SP); } - setState(1835); + setState(1837); kU_BitwiseAndOperatorExpression(); } - setState(1840); + setState(1842); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 301, _ctx); } @@ -11175,7 +11131,7 @@ size_t CypherParser::KU_BitwiseAndOperatorExpressionContext::getRuleIndex() cons CypherParser::KU_BitwiseAndOperatorExpressionContext* CypherParser::kU_BitwiseAndOperatorExpression() { KU_BitwiseAndOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 206, CypherParser::RuleKU_BitwiseAndOperatorExpression); + enterRule(_localctx, 204, CypherParser::RuleKU_BitwiseAndOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11188,35 +11144,35 @@ CypherParser::KU_BitwiseAndOperatorExpressionContext* CypherParser::kU_BitwiseAn try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1841); + setState(1843); kU_BitShiftOperatorExpression(); - setState(1852); + setState(1854); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 304, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1843); + setState(1845); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1842); + setState(1844); match(CypherParser::SP); } - setState(1845); - match(CypherParser::T__16); setState(1847); + match(CypherParser::T__17); + setState(1849); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1846); + setState(1848); match(CypherParser::SP); } - setState(1849); + setState(1851); kU_BitShiftOperatorExpression(); } - setState(1854); + setState(1856); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 304, _ctx); } @@ -11269,7 +11225,7 @@ size_t CypherParser::KU_BitShiftOperatorExpressionContext::getRuleIndex() const CypherParser::KU_BitShiftOperatorExpressionContext* CypherParser::kU_BitShiftOperatorExpression() { KU_BitShiftOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 208, CypherParser::RuleKU_BitShiftOperatorExpression); + enterRule(_localctx, 206, CypherParser::RuleKU_BitShiftOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11282,35 +11238,35 @@ CypherParser::KU_BitShiftOperatorExpressionContext* CypherParser::kU_BitShiftOpe try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1855); + setState(1857); oC_AddOrSubtractExpression(); - setState(1867); + setState(1869); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 307, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1857); + setState(1859); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1856); + setState(1858); match(CypherParser::SP); } - setState(1859); - kU_BitShiftOperator(); setState(1861); + kU_BitShiftOperator(); + setState(1863); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1860); + setState(1862); match(CypherParser::SP); } - setState(1863); + setState(1865); oC_AddOrSubtractExpression(); } - setState(1869); + setState(1871); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 307, _ctx); } @@ -11339,7 +11295,7 @@ size_t CypherParser::KU_BitShiftOperatorContext::getRuleIndex() const { CypherParser::KU_BitShiftOperatorContext* CypherParser::kU_BitShiftOperator() { KU_BitShiftOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 210, CypherParser::RuleKU_BitShiftOperator); + enterRule(_localctx, 208, CypherParser::RuleKU_BitShiftOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11351,11 +11307,11 @@ CypherParser::KU_BitShiftOperatorContext* CypherParser::kU_BitShiftOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(1870); + setState(1872); _la = _input->LA(1); - if (!(_la == CypherParser::T__17 + if (!(_la == CypherParser::T__18 - || _la == CypherParser::T__18)) { + || _la == CypherParser::T__19)) { _errHandler->recoverInline(this); } else { @@ -11411,7 +11367,7 @@ size_t CypherParser::OC_AddOrSubtractExpressionContext::getRuleIndex() const { CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractExpression() { OC_AddOrSubtractExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 212, CypherParser::RuleOC_AddOrSubtractExpression); + enterRule(_localctx, 210, CypherParser::RuleOC_AddOrSubtractExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11424,35 +11380,35 @@ CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractE try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1872); + setState(1874); oC_MultiplyDivideModuloExpression(); - setState(1884); + setState(1886); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 310, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1874); + setState(1876); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1873); + setState(1875); match(CypherParser::SP); } - setState(1876); - kU_AddOrSubtractOperator(); setState(1878); + kU_AddOrSubtractOperator(); + setState(1880); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1877); + setState(1879); match(CypherParser::SP); } - setState(1880); + setState(1882); oC_MultiplyDivideModuloExpression(); } - setState(1886); + setState(1888); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 310, _ctx); } @@ -11485,7 +11441,7 @@ size_t CypherParser::KU_AddOrSubtractOperatorContext::getRuleIndex() const { CypherParser::KU_AddOrSubtractOperatorContext* CypherParser::kU_AddOrSubtractOperator() { KU_AddOrSubtractOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 214, CypherParser::RuleKU_AddOrSubtractOperator); + enterRule(_localctx, 212, CypherParser::RuleKU_AddOrSubtractOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11497,9 +11453,9 @@ CypherParser::KU_AddOrSubtractOperatorContext* CypherParser::kU_AddOrSubtractOpe }); try { enterOuterAlt(_localctx, 1); - setState(1887); + setState(1889); _la = _input->LA(1); - if (!(_la == CypherParser::T__19 || _la == CypherParser::MINUS)) { + if (!(_la == CypherParser::T__20 || _la == CypherParser::MINUS)) { _errHandler->recoverInline(this); } else { @@ -11555,7 +11511,7 @@ size_t CypherParser::OC_MultiplyDivideModuloExpressionContext::getRuleIndex() co CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_MultiplyDivideModuloExpression() { OC_MultiplyDivideModuloExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 216, CypherParser::RuleOC_MultiplyDivideModuloExpression); + enterRule(_localctx, 214, CypherParser::RuleOC_MultiplyDivideModuloExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11568,35 +11524,35 @@ CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_Multipl try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1889); + setState(1891); oC_PowerOfExpression(); - setState(1901); + setState(1903); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 313, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1891); + setState(1893); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1890); + setState(1892); match(CypherParser::SP); } - setState(1893); - kU_MultiplyDivideModuloOperator(); setState(1895); + kU_MultiplyDivideModuloOperator(); + setState(1897); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1894); + setState(1896); match(CypherParser::SP); } - setState(1897); + setState(1899); oC_PowerOfExpression(); } - setState(1903); + setState(1905); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 313, _ctx); } @@ -11629,7 +11585,7 @@ size_t CypherParser::KU_MultiplyDivideModuloOperatorContext::getRuleIndex() cons CypherParser::KU_MultiplyDivideModuloOperatorContext* CypherParser::kU_MultiplyDivideModuloOperator() { KU_MultiplyDivideModuloOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 218, CypherParser::RuleKU_MultiplyDivideModuloOperator); + enterRule(_localctx, 216, CypherParser::RuleKU_MultiplyDivideModuloOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -11641,11 +11597,11 @@ CypherParser::KU_MultiplyDivideModuloOperatorContext* CypherParser::kU_MultiplyD }); try { enterOuterAlt(_localctx, 1); - setState(1904); + setState(1906); _la = _input->LA(1); - if (!(_la == CypherParser::T__20 + if (!(_la == CypherParser::T__21 - || _la == CypherParser::T__21 || _la == CypherParser::STAR)) { + || _la == CypherParser::T__22 || _la == CypherParser::STAR)) { _errHandler->recoverInline(this); } else { @@ -11693,7 +11649,7 @@ size_t CypherParser::OC_PowerOfExpressionContext::getRuleIndex() const { CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() { OC_PowerOfExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 220, CypherParser::RuleOC_PowerOfExpression); + enterRule(_localctx, 218, CypherParser::RuleOC_PowerOfExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11706,35 +11662,35 @@ CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1906); + setState(1908); oC_UnaryAddSubtractOrFactorialExpression(); - setState(1917); + setState(1919); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 316, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1908); + setState(1910); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1907); + setState(1909); match(CypherParser::SP); } - setState(1910); - match(CypherParser::T__22); setState(1912); + match(CypherParser::T__23); + setState(1914); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1911); + setState(1913); match(CypherParser::SP); } - setState(1914); + setState(1916); oC_UnaryAddSubtractOrFactorialExpression(); } - setState(1919); + setState(1921); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 316, _ctx); } @@ -11787,7 +11743,7 @@ size_t CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext::getRuleInd CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_UnaryAddSubtractOrFactorialExpression() { OC_UnaryAddSubtractOrFactorialExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 222, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); + enterRule(_localctx, 220, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -11799,40 +11755,40 @@ CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_ }); try { enterOuterAlt(_localctx, 1); - setState(1926); + setState(1928); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::MINUS) { - setState(1920); - match(CypherParser::MINUS); setState(1922); + match(CypherParser::MINUS); + setState(1924); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1921); + setState(1923); match(CypherParser::SP); } - setState(1928); + setState(1930); _errHandler->sync(this); _la = _input->LA(1); } - setState(1929); + setState(1931); oC_StringListNullOperatorExpression(); - setState(1934); + setState(1936); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 320, _ctx)) { case 1: { - setState(1931); + setState(1933); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1930); + setState(1932); match(CypherParser::SP); } - setState(1933); + setState(1935); match(CypherParser::FACTORIAL); break; } @@ -11885,7 +11841,7 @@ size_t CypherParser::OC_StringListNullOperatorExpressionContext::getRuleIndex() CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_StringListNullOperatorExpression() { OC_StringListNullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 224, CypherParser::RuleOC_StringListNullOperatorExpression); + enterRule(_localctx, 222, CypherParser::RuleOC_StringListNullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11897,26 +11853,26 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1936); + setState(1938); oC_PropertyOrLabelsExpression(); - setState(1944); + setState(1946); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 322, _ctx)) { case 1: { - setState(1937); + setState(1939); oC_StringOperatorExpression(); break; } case 2: { - setState(1939); + setState(1941); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1938); + setState(1940); oC_ListOperatorExpression(); break; } @@ -11924,7 +11880,7 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin default: throw NoViableAltException(this); } - setState(1941); + setState(1943); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 321, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -11932,7 +11888,7 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin } case 3: { - setState(1943); + setState(1945); oC_NullOperatorExpression(); break; } @@ -11993,7 +11949,7 @@ size_t CypherParser::OC_ListOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExpression() { OC_ListOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 226, CypherParser::RuleOC_ListOperatorExpression); + enterRule(_localctx, 224, CypherParser::RuleOC_ListOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12004,69 +11960,69 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp exitRule(); }); try { - setState(1965); + setState(1967); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 326, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1946); + setState(1948); match(CypherParser::SP); - setState(1947); - match(CypherParser::IN); setState(1949); + match(CypherParser::IN); + setState(1951); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1948); + setState(1950); match(CypherParser::SP); } - setState(1951); + setState(1953); oC_PropertyOrLabelsExpression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1952); - match(CypherParser::T__5); - setState(1953); - oC_Expression(); setState(1954); match(CypherParser::T__6); + setState(1955); + oC_Expression(); + setState(1956); + match(CypherParser::T__7); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1956); - match(CypherParser::T__5); setState(1958); + match(CypherParser::T__6); + setState(1960); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990020) != 0) || ((((_la - 69) & ~ 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(1957); + setState(1959); oC_Expression(); } - setState(1960); - match(CypherParser::COLON); setState(1962); + match(CypherParser::COLON); + setState(1964); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990020) != 0) || ((((_la - 69) & ~ 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(1961); + setState(1963); oC_Expression(); } - setState(1964); - match(CypherParser::T__6); + setState(1966); + match(CypherParser::T__7); break; } @@ -12130,7 +12086,7 @@ size_t CypherParser::OC_StringOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperatorExpression() { OC_StringOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 228, CypherParser::RuleOC_StringOperatorExpression); + enterRule(_localctx, 226, CypherParser::RuleOC_StringOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12142,43 +12098,43 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato }); try { enterOuterAlt(_localctx, 1); - setState(1978); + setState(1980); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 327, _ctx)) { case 1: { - setState(1967); + setState(1969); oC_RegularExpression(); break; } case 2: { - setState(1968); - match(CypherParser::SP); - setState(1969); - match(CypherParser::STARTS); setState(1970); match(CypherParser::SP); setState(1971); + match(CypherParser::STARTS); + setState(1972); + match(CypherParser::SP); + setState(1973); match(CypherParser::WITH); break; } case 3: { - setState(1972); - match(CypherParser::SP); - setState(1973); - match(CypherParser::ENDS); setState(1974); match(CypherParser::SP); setState(1975); + match(CypherParser::ENDS); + setState(1976); + match(CypherParser::SP); + setState(1977); match(CypherParser::WITH); break; } case 4: { - setState(1976); + setState(1978); match(CypherParser::SP); - setState(1977); + setState(1979); match(CypherParser::CONTAINS); break; } @@ -12186,15 +12142,15 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato default: break; } - setState(1981); + setState(1983); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1980); + setState(1982); match(CypherParser::SP); } - setState(1983); + setState(1985); oC_PropertyOrLabelsExpression(); } @@ -12225,7 +12181,7 @@ size_t CypherParser::OC_RegularExpressionContext::getRuleIndex() const { CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() { OC_RegularExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 230, CypherParser::RuleOC_RegularExpression); + enterRule(_localctx, 228, CypherParser::RuleOC_RegularExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12237,16 +12193,16 @@ CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() }); try { enterOuterAlt(_localctx, 1); - setState(1986); + setState(1988); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1985); + setState(1987); match(CypherParser::SP); } - setState(1988); - match(CypherParser::T__23); + setState(1990); + match(CypherParser::T__24); } catch (RecognitionException &e) { @@ -12292,7 +12248,7 @@ size_t CypherParser::OC_NullOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExpression() { OC_NullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 232, CypherParser::RuleOC_NullOperatorExpression); + enterRule(_localctx, 230, CypherParser::RuleOC_NullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12302,35 +12258,35 @@ CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExp exitRule(); }); try { - setState(2000); + setState(2002); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 330, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1990); - match(CypherParser::SP); - setState(1991); - match(CypherParser::IS); setState(1992); match(CypherParser::SP); setState(1993); + match(CypherParser::IS); + setState(1994); + match(CypherParser::SP); + setState(1995); match(CypherParser::NULL_); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1994); - match(CypherParser::SP); - setState(1995); - match(CypherParser::IS); setState(1996); match(CypherParser::SP); setState(1997); - match(CypherParser::NOT); + match(CypherParser::IS); setState(1998); match(CypherParser::SP); setState(1999); + match(CypherParser::NOT); + setState(2000); + match(CypherParser::SP); + setState(2001); match(CypherParser::NULL_); break; } @@ -12383,7 +12339,7 @@ size_t CypherParser::OC_PropertyOrLabelsExpressionContext::getRuleIndex() const CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrLabelsExpression() { OC_PropertyOrLabelsExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 234, CypherParser::RuleOC_PropertyOrLabelsExpression); + enterRule(_localctx, 232, CypherParser::RuleOC_PropertyOrLabelsExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -12396,25 +12352,25 @@ CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrL try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2002); + setState(2004); oC_Atom(); - setState(2009); + setState(2011); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 332, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2004); + setState(2006); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2003); + setState(2005); match(CypherParser::SP); } - setState(2006); + setState(2008); oC_PropertyLookup(); } - setState(2011); + setState(2013); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 332, _ctx); } @@ -12479,7 +12435,7 @@ size_t CypherParser::OC_AtomContext::getRuleIndex() const { CypherParser::OC_AtomContext* CypherParser::oC_Atom() { OC_AtomContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 236, CypherParser::RuleOC_Atom); + enterRule(_localctx, 234, CypherParser::RuleOC_Atom); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12489,68 +12445,68 @@ CypherParser::OC_AtomContext* CypherParser::oC_Atom() { exitRule(); }); try { - setState(2021); + setState(2023); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 333, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2012); + setState(2014); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2013); + setState(2015); oC_Parameter(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2014); + setState(2016); oC_CaseExpression(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(2015); + setState(2017); oC_ParenthesizedExpression(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(2016); + setState(2018); oC_FunctionInvocation(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(2017); + setState(2019); oC_PathPatterns(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(2018); + setState(2020); oC_ExistSubquery(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(2019); + setState(2021); kU_CountSubquery(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(2020); + setState(2022); oC_Variable(); break; } @@ -12607,7 +12563,7 @@ size_t CypherParser::OC_LiteralContext::getRuleIndex() const { CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { OC_LiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 238, CypherParser::RuleOC_Literal); + enterRule(_localctx, 236, CypherParser::RuleOC_Literal); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12617,20 +12573,20 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { exitRule(); }); try { - setState(2029); + setState(2031); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::DecimalInteger: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2023); + setState(2025); oC_NumberLiteral(); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(2024); + setState(2026); match(CypherParser::StringLiteral); break; } @@ -12638,28 +12594,28 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { case CypherParser::TRUE: case CypherParser::FALSE: { enterOuterAlt(_localctx, 3); - setState(2025); + setState(2027); oC_BooleanLiteral(); break; } case CypherParser::NULL_: { enterOuterAlt(_localctx, 4); - setState(2026); + setState(2028); match(CypherParser::NULL_); break; } - case CypherParser::T__5: { + case CypherParser::T__6: { enterOuterAlt(_localctx, 5); - setState(2027); + setState(2029); oC_ListLiteral(); break; } - case CypherParser::T__7: { + case CypherParser::T__8: { enterOuterAlt(_localctx, 6); - setState(2028); + setState(2030); kU_StructLiteral(); break; } @@ -12700,7 +12656,7 @@ size_t CypherParser::OC_BooleanLiteralContext::getRuleIndex() const { CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { OC_BooleanLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 240, CypherParser::RuleOC_BooleanLiteral); + enterRule(_localctx, 238, CypherParser::RuleOC_BooleanLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12712,7 +12668,7 @@ CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2031); + setState(2033); _la = _input->LA(1); if (!(_la == CypherParser::TRUE @@ -12768,7 +12724,7 @@ size_t CypherParser::OC_ListLiteralContext::getRuleIndex() const { CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { OC_ListLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 242, CypherParser::RuleOC_ListLiteral); + enterRule(_localctx, 240, CypherParser::RuleOC_ListLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12780,55 +12736,55 @@ CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2033); - match(CypherParser::T__5); setState(2035); + match(CypherParser::T__6); + setState(2037); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2034); + setState(2036); match(CypherParser::SP); } - setState(2050); + setState(2052); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990020) != 0) || ((((_la - 69) & ~ 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(2037); - oC_Expression(); setState(2039); + oC_Expression(); + setState(2041); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2038); + setState(2040); match(CypherParser::SP); } - setState(2047); + setState(2049); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2041); - kU_ListEntry(); setState(2043); + kU_ListEntry(); + setState(2045); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2042); + setState(2044); match(CypherParser::SP); } - setState(2049); + setState(2051); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2052); - match(CypherParser::T__6); + setState(2054); + match(CypherParser::T__7); } catch (RecognitionException &e) { @@ -12862,7 +12818,7 @@ size_t CypherParser::KU_ListEntryContext::getRuleIndex() const { CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { KU_ListEntryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 244, CypherParser::RuleKU_ListEntry); + enterRule(_localctx, 242, CypherParser::RuleKU_ListEntry); size_t _la = 0; #if __cplusplus > 201703L @@ -12874,14 +12830,14 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { }); try { enterOuterAlt(_localctx, 1); - setState(2054); - match(CypherParser::T__2); setState(2056); + match(CypherParser::T__2); + setState(2058); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 340, _ctx)) { case 1: { - setState(2055); + setState(2057); match(CypherParser::SP); break; } @@ -12889,15 +12845,15 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { default: break; } - setState(2059); + setState(2061); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990020) != 0) || ((((_la - 69) & ~ 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(2058); + setState(2060); oC_Expression(); } @@ -12941,7 +12897,7 @@ size_t CypherParser::KU_StructLiteralContext::getRuleIndex() const { CypherParser::KU_StructLiteralContext* CypherParser::kU_StructLiteral() { KU_StructLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 246, CypherParser::RuleKU_StructLiteral); + enterRule(_localctx, 244, CypherParser::RuleKU_StructLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12953,56 +12909,56 @@ CypherParser::KU_StructLiteralContext* CypherParser::kU_StructLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2061); - match(CypherParser::T__7); setState(2063); + match(CypherParser::T__8); + setState(2065); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2062); + setState(2064); match(CypherParser::SP); } - setState(2065); - kU_StructField(); setState(2067); + kU_StructField(); + setState(2069); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2066); + setState(2068); match(CypherParser::SP); } - setState(2079); + setState(2081); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2069); - match(CypherParser::T__2); setState(2071); + match(CypherParser::T__2); + setState(2073); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2070); + setState(2072); match(CypherParser::SP); } - setState(2073); - kU_StructField(); setState(2075); + kU_StructField(); + setState(2077); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2074); + setState(2076); match(CypherParser::SP); } - setState(2081); + setState(2083); _errHandler->sync(this); _la = _input->LA(1); } - setState(2082); - match(CypherParser::T__8); + setState(2084); + match(CypherParser::T__9); } catch (RecognitionException &e) { @@ -13052,7 +13008,7 @@ size_t CypherParser::KU_StructFieldContext::getRuleIndex() const { CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { KU_StructFieldContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 248, CypherParser::RuleKU_StructField); + enterRule(_localctx, 246, CypherParser::RuleKU_StructField); size_t _la = 0; #if __cplusplus > 201703L @@ -13064,7 +13020,7 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { }); try { enterOuterAlt(_localctx, 1); - setState(2086); + setState(2088); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::COMMENT_: @@ -13080,13 +13036,13 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2084); + setState(2086); oC_SymbolicName(); break; } case CypherParser::StringLiteral: { - setState(2085); + setState(2087); match(CypherParser::StringLiteral); break; } @@ -13094,25 +13050,25 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { default: throw NoViableAltException(this); } - setState(2089); + setState(2091); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2088); + setState(2090); match(CypherParser::SP); } - setState(2091); - match(CypherParser::COLON); setState(2093); + match(CypherParser::COLON); + setState(2095); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2092); + setState(2094); match(CypherParser::SP); } - setState(2095); + setState(2097); oC_Expression(); } @@ -13151,7 +13107,7 @@ size_t CypherParser::OC_ParenthesizedExpressionContext::getRuleIndex() const { CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedExpression() { OC_ParenthesizedExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 250, CypherParser::RuleOC_ParenthesizedExpression); + enterRule(_localctx, 248, CypherParser::RuleOC_ParenthesizedExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13163,27 +13119,27 @@ CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedE }); try { enterOuterAlt(_localctx, 1); - setState(2097); - match(CypherParser::T__1); setState(2099); + match(CypherParser::T__1); + setState(2101); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2098); + setState(2100); match(CypherParser::SP); } - setState(2101); - oC_Expression(); setState(2103); + oC_Expression(); + setState(2105); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2102); + setState(2104); match(CypherParser::SP); } - setState(2105); + setState(2107); match(CypherParser::T__3); } @@ -13242,7 +13198,7 @@ size_t CypherParser::OC_FunctionInvocationContext::getRuleIndex() const { CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation() { OC_FunctionInvocationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 252, CypherParser::RuleOC_FunctionInvocation); + enterRule(_localctx, 250, CypherParser::RuleOC_FunctionInvocation); size_t _la = 0; #if __cplusplus > 201703L @@ -13253,132 +13209,132 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( exitRule(); }); try { - setState(2155); + setState(2157); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 364, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2107); - match(CypherParser::COUNT); setState(2109); + match(CypherParser::COUNT); + setState(2111); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2108); + setState(2110); match(CypherParser::SP); } - setState(2111); - match(CypherParser::T__1); setState(2113); + match(CypherParser::T__1); + setState(2115); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2112); + setState(2114); match(CypherParser::SP); } - setState(2115); - match(CypherParser::STAR); setState(2117); + match(CypherParser::STAR); + setState(2119); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2116); + setState(2118); match(CypherParser::SP); } - setState(2119); + setState(2121); match(CypherParser::T__3); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2120); - oC_FunctionName(); setState(2122); + oC_FunctionName(); + setState(2124); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2121); + setState(2123); match(CypherParser::SP); } - setState(2124); - match(CypherParser::T__1); setState(2126); + match(CypherParser::T__1); + setState(2128); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2125); + setState(2127); match(CypherParser::SP); } - setState(2132); + setState(2134); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DISTINCT) { - setState(2128); - match(CypherParser::DISTINCT); setState(2130); + match(CypherParser::DISTINCT); + setState(2132); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2129); + setState(2131); match(CypherParser::SP); } } - setState(2151); + setState(2153); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 540994905304990020) != 0) || ((((_la - 69) & ~ 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(2134); - kU_FunctionParameter(); setState(2136); + kU_FunctionParameter(); + setState(2138); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2135); + setState(2137); match(CypherParser::SP); } - setState(2148); + setState(2150); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2138); - match(CypherParser::T__2); setState(2140); + match(CypherParser::T__2); + setState(2142); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2139); + setState(2141); match(CypherParser::SP); } - setState(2142); - kU_FunctionParameter(); setState(2144); + kU_FunctionParameter(); + setState(2146); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2143); + setState(2145); match(CypherParser::SP); } - setState(2150); + setState(2152); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2153); + setState(2155); match(CypherParser::T__3); break; } @@ -13415,7 +13371,7 @@ size_t CypherParser::OC_FunctionNameContext::getRuleIndex() const { CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { OC_FunctionNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 254, CypherParser::RuleOC_FunctionName); + enterRule(_localctx, 252, CypherParser::RuleOC_FunctionName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13426,7 +13382,7 @@ CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { }); try { enterOuterAlt(_localctx, 1); - setState(2157); + setState(2159); oC_SymbolicName(); } @@ -13473,7 +13429,7 @@ size_t CypherParser::KU_FunctionParameterContext::getRuleIndex() const { CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() { KU_FunctionParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 256, CypherParser::RuleKU_FunctionParameter); + enterRule(_localctx, 254, CypherParser::RuleKU_FunctionParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -13485,31 +13441,31 @@ CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() }); try { enterOuterAlt(_localctx, 1); - setState(2168); + setState(2170); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 367, _ctx)) { case 1: { - setState(2159); - oC_SymbolicName(); setState(2161); + oC_SymbolicName(); + setState(2163); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2160); + setState(2162); match(CypherParser::SP); } - setState(2163); + setState(2165); match(CypherParser::COLON); - setState(2164); - match(CypherParser::T__4); setState(2166); + match(CypherParser::T__5); + setState(2168); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2165); + setState(2167); match(CypherParser::SP); } break; @@ -13518,7 +13474,7 @@ CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() default: break; } - setState(2170); + setState(2172); oC_Expression(); } @@ -13565,7 +13521,7 @@ size_t CypherParser::OC_PathPatternsContext::getRuleIndex() const { CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { OC_PathPatternsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 258, CypherParser::RuleOC_PathPatterns); + enterRule(_localctx, 256, CypherParser::RuleOC_PathPatterns); size_t _la = 0; #if __cplusplus > 201703L @@ -13578,23 +13534,23 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2172); + setState(2174); oC_NodePattern(); - setState(2177); + setState(2179); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2174); + setState(2176); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2173); + setState(2175); match(CypherParser::SP); } - setState(2176); + setState(2178); oC_PatternElementChain(); break; } @@ -13602,7 +13558,7 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { default: throw NoViableAltException(this); } - setState(2179); + setState(2181); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 369, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -13655,7 +13611,7 @@ size_t CypherParser::OC_ExistSubqueryContext::getRuleIndex() const { CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { OC_ExistSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 260, CypherParser::RuleOC_ExistSubquery); + enterRule(_localctx, 258, CypherParser::RuleOC_ExistSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -13667,52 +13623,52 @@ CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { }); try { enterOuterAlt(_localctx, 1); - setState(2181); - match(CypherParser::EXISTS); setState(2183); + match(CypherParser::EXISTS); + setState(2185); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2182); + setState(2184); match(CypherParser::SP); } - setState(2185); - match(CypherParser::T__7); setState(2187); + match(CypherParser::T__8); + setState(2189); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2186); + setState(2188); match(CypherParser::SP); } - setState(2189); - match(CypherParser::MATCH); setState(2191); + match(CypherParser::MATCH); + setState(2193); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2190); + setState(2192); match(CypherParser::SP); } - setState(2193); + setState(2195); oC_Pattern(); - setState(2198); + setState(2200); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 374, _ctx)) { case 1: { - setState(2195); + setState(2197); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2194); + setState(2196); match(CypherParser::SP); } - setState(2197); + setState(2199); oC_Where(); break; } @@ -13720,16 +13676,16 @@ CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { default: break; } - setState(2201); + setState(2203); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2200); + setState(2202); match(CypherParser::SP); } - setState(2203); - match(CypherParser::T__8); + setState(2205); + match(CypherParser::T__9); } catch (RecognitionException &e) { @@ -13779,7 +13735,7 @@ size_t CypherParser::KU_CountSubqueryContext::getRuleIndex() const { CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { KU_CountSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 262, CypherParser::RuleKU_CountSubquery); + enterRule(_localctx, 260, CypherParser::RuleKU_CountSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -13791,52 +13747,52 @@ CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { }); try { enterOuterAlt(_localctx, 1); - setState(2205); - match(CypherParser::COUNT); setState(2207); + match(CypherParser::COUNT); + setState(2209); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2206); + setState(2208); match(CypherParser::SP); } - setState(2209); - match(CypherParser::T__7); setState(2211); + match(CypherParser::T__8); + setState(2213); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2210); + setState(2212); match(CypherParser::SP); } - setState(2213); - match(CypherParser::MATCH); setState(2215); + match(CypherParser::MATCH); + setState(2217); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2214); + setState(2216); match(CypherParser::SP); } - setState(2217); + setState(2219); oC_Pattern(); - setState(2222); + setState(2224); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 380, _ctx)) { case 1: { - setState(2219); + setState(2221); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2218); + setState(2220); match(CypherParser::SP); } - setState(2221); + setState(2223); oC_Where(); break; } @@ -13844,16 +13800,16 @@ CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { default: break; } - setState(2225); + setState(2227); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2224); + setState(2226); match(CypherParser::SP); } - setState(2227); - match(CypherParser::T__8); + setState(2229); + match(CypherParser::T__9); } catch (RecognitionException &e) { @@ -13891,7 +13847,7 @@ size_t CypherParser::OC_PropertyLookupContext::getRuleIndex() const { CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { OC_PropertyLookupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 264, CypherParser::RuleOC_PropertyLookup); + enterRule(_localctx, 262, CypherParser::RuleOC_PropertyLookup); size_t _la = 0; #if __cplusplus > 201703L @@ -13903,17 +13859,17 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { }); try { enterOuterAlt(_localctx, 1); - setState(2229); - match(CypherParser::T__24); setState(2231); + match(CypherParser::T__4); + setState(2233); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2230); + setState(2232); match(CypherParser::SP); } - setState(2235); + setState(2237); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::COMMENT_: @@ -13929,13 +13885,13 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2233); + setState(2235); oC_PropertyKeyName(); break; } case CypherParser::STAR: { - setState(2234); + setState(2236); match(CypherParser::STAR); break; } @@ -14004,7 +13960,7 @@ size_t CypherParser::OC_CaseExpressionContext::getRuleIndex() const { CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { OC_CaseExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 266, CypherParser::RuleOC_CaseExpression); + enterRule(_localctx, 264, CypherParser::RuleOC_CaseExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14017,27 +13973,27 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2259); + setState(2261); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 389, _ctx)) { case 1: { - setState(2237); + setState(2239); match(CypherParser::CASE); - setState(2242); + setState(2244); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2239); + setState(2241); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2238); + setState(2240); match(CypherParser::SP); } - setState(2241); + setState(2243); oC_CaseAlternative(); break; } @@ -14045,7 +14001,7 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2244); + setState(2246); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 385, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -14053,33 +14009,33 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { } case 2: { - setState(2246); - match(CypherParser::CASE); setState(2248); + match(CypherParser::CASE); + setState(2250); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2247); + setState(2249); match(CypherParser::SP); } - setState(2250); + setState(2252); oC_Expression(); - setState(2255); + setState(2257); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2252); + setState(2254); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2251); + setState(2253); match(CypherParser::SP); } - setState(2254); + setState(2256); oC_CaseAlternative(); break; } @@ -14087,7 +14043,7 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2257); + setState(2259); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 388, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); @@ -14097,30 +14053,30 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2269); + setState(2271); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 392, _ctx)) { case 1: { - setState(2262); + setState(2264); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2261); + setState(2263); match(CypherParser::SP); } - setState(2264); - match(CypherParser::ELSE); setState(2266); + match(CypherParser::ELSE); + setState(2268); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2265); + setState(2267); match(CypherParser::SP); } - setState(2268); + setState(2270); oC_Expression(); break; } @@ -14128,15 +14084,15 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2272); + setState(2274); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2271); + setState(2273); match(CypherParser::SP); } - setState(2274); + setState(2276); match(CypherParser::END); } @@ -14187,7 +14143,7 @@ size_t CypherParser::OC_CaseAlternativeContext::getRuleIndex() const { CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { OC_CaseAlternativeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 268, CypherParser::RuleOC_CaseAlternative); + enterRule(_localctx, 266, CypherParser::RuleOC_CaseAlternative); size_t _la = 0; #if __cplusplus > 201703L @@ -14199,37 +14155,37 @@ CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { }); try { enterOuterAlt(_localctx, 1); - setState(2276); - match(CypherParser::WHEN); setState(2278); + match(CypherParser::WHEN); + setState(2280); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2277); + setState(2279); match(CypherParser::SP); } - setState(2280); - oC_Expression(); setState(2282); + oC_Expression(); + setState(2284); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2281); + setState(2283); match(CypherParser::SP); } - setState(2284); - match(CypherParser::THEN); setState(2286); + match(CypherParser::THEN); + setState(2288); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2285); + setState(2287); match(CypherParser::SP); } - setState(2288); + setState(2290); oC_Expression(); } @@ -14260,7 +14216,7 @@ size_t CypherParser::OC_VariableContext::getRuleIndex() const { CypherParser::OC_VariableContext* CypherParser::oC_Variable() { OC_VariableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 270, CypherParser::RuleOC_Variable); + enterRule(_localctx, 268, CypherParser::RuleOC_Variable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14271,7 +14227,7 @@ CypherParser::OC_VariableContext* CypherParser::oC_Variable() { }); try { enterOuterAlt(_localctx, 1); - setState(2290); + setState(2292); oC_SymbolicName(); } @@ -14306,7 +14262,7 @@ size_t CypherParser::OC_NumberLiteralContext::getRuleIndex() const { CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { OC_NumberLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 272, CypherParser::RuleOC_NumberLiteral); + enterRule(_localctx, 270, CypherParser::RuleOC_NumberLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14316,19 +14272,19 @@ CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { exitRule(); }); try { - setState(2294); + setState(2296); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2292); + setState(2294); oC_DoubleLiteral(); break; } case CypherParser::DecimalInteger: { enterOuterAlt(_localctx, 2); - setState(2293); + setState(2295); oC_IntegerLiteral(); break; } @@ -14369,7 +14325,7 @@ size_t CypherParser::OC_ParameterContext::getRuleIndex() const { CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { OC_ParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 274, CypherParser::RuleOC_Parameter); + enterRule(_localctx, 272, CypherParser::RuleOC_Parameter); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14380,9 +14336,9 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { }); try { enterOuterAlt(_localctx, 1); - setState(2296); + setState(2298); match(CypherParser::T__25); - setState(2299); + setState(2301); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::COMMENT_: @@ -14398,13 +14354,13 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2297); + setState(2299); oC_SymbolicName(); break; } case CypherParser::DecimalInteger: { - setState(2298); + setState(2300); match(CypherParser::DecimalInteger); break; } @@ -14449,7 +14405,7 @@ size_t CypherParser::OC_PropertyExpressionContext::getRuleIndex() const { CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression() { OC_PropertyExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 276, CypherParser::RuleOC_PropertyExpression); + enterRule(_localctx, 274, CypherParser::RuleOC_PropertyExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14461,17 +14417,17 @@ CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression( }); try { enterOuterAlt(_localctx, 1); - setState(2301); - oC_Atom(); setState(2303); + oC_Atom(); + setState(2305); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2302); + setState(2304); match(CypherParser::SP); } - setState(2305); + setState(2307); oC_PropertyLookup(); } @@ -14502,7 +14458,7 @@ size_t CypherParser::OC_PropertyKeyNameContext::getRuleIndex() const { CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { OC_PropertyKeyNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 278, CypherParser::RuleOC_PropertyKeyName); + enterRule(_localctx, 276, CypherParser::RuleOC_PropertyKeyName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14513,7 +14469,7 @@ CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { }); try { enterOuterAlt(_localctx, 1); - setState(2307); + setState(2309); oC_SchemaName(); } @@ -14544,7 +14500,7 @@ size_t CypherParser::OC_IntegerLiteralContext::getRuleIndex() const { CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { OC_IntegerLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 280, CypherParser::RuleOC_IntegerLiteral); + enterRule(_localctx, 278, CypherParser::RuleOC_IntegerLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14555,7 +14511,7 @@ CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2309); + setState(2311); match(CypherParser::DecimalInteger); } @@ -14586,7 +14542,7 @@ size_t CypherParser::OC_DoubleLiteralContext::getRuleIndex() const { CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { OC_DoubleLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 282, CypherParser::RuleOC_DoubleLiteral); + enterRule(_localctx, 280, CypherParser::RuleOC_DoubleLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14597,7 +14553,7 @@ CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2311); + setState(2313); match(CypherParser::RegularDecimalReal); } @@ -14628,7 +14584,7 @@ size_t CypherParser::OC_SchemaNameContext::getRuleIndex() const { CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { OC_SchemaNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 284, CypherParser::RuleOC_SchemaName); + enterRule(_localctx, 282, CypherParser::RuleOC_SchemaName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14639,7 +14595,7 @@ CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { }); try { enterOuterAlt(_localctx, 1); - setState(2313); + setState(2315); oC_SymbolicName(); } @@ -14682,7 +14638,7 @@ size_t CypherParser::OC_SymbolicNameContext::getRuleIndex() const { CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { OC_SymbolicNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 286, CypherParser::RuleOC_SymbolicName); + enterRule(_localctx, 284, CypherParser::RuleOC_SymbolicName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14692,19 +14648,19 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { exitRule(); }); try { - setState(2320); + setState(2322); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::UnescapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(2315); + setState(2317); match(CypherParser::UnescapedSymbolicName); break; } case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(2316); + setState(2318); antlrcpp::downCast(_localctx)->escapedsymbolicnameToken = match(CypherParser::EscapedSymbolicName); if ((antlrcpp::downCast(_localctx)->escapedsymbolicnameToken != nullptr ? antlrcpp::downCast(_localctx)->escapedsymbolicnameToken->getText() : "") == "``") { notifyEmptyToken(antlrcpp::downCast(_localctx)->escapedsymbolicnameToken); } break; @@ -14712,7 +14668,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::HexLetter: { enterOuterAlt(_localctx, 3); - setState(2318); + setState(2320); match(CypherParser::HexLetter); break; } @@ -14728,7 +14684,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::COUNT: case CypherParser::END: { enterOuterAlt(_localctx, 4); - setState(2319); + setState(2321); kU_NonReservedKeywords(); break; } @@ -14801,7 +14757,7 @@ size_t CypherParser::KU_NonReservedKeywordsContext::getRuleIndex() const { CypherParser::KU_NonReservedKeywordsContext* CypherParser::kU_NonReservedKeywords() { KU_NonReservedKeywordsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 288, CypherParser::RuleKU_NonReservedKeywords); + enterRule(_localctx, 286, CypherParser::RuleKU_NonReservedKeywords); size_t _la = 0; #if __cplusplus > 201703L @@ -14813,7 +14769,7 @@ CypherParser::KU_NonReservedKeywordsContext* CypherParser::kU_NonReservedKeyword }); try { enterOuterAlt(_localctx, 1); - setState(2322); + setState(2324); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 540994905237880832) != 0) || ((((_la - 69) & ~ 0x3fULL) == 0) && @@ -14849,7 +14805,7 @@ size_t CypherParser::OC_LeftArrowHeadContext::getRuleIndex() const { CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { OC_LeftArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 290, CypherParser::RuleOC_LeftArrowHead); + enterRule(_localctx, 288, CypherParser::RuleOC_LeftArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -14861,10 +14817,10 @@ CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2324); + setState(2326); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 2013274112) != 0))) { + ((1ULL << _la) & 2013282304) != 0))) { _errHandler->recoverInline(this); } else { @@ -14896,7 +14852,7 @@ size_t CypherParser::OC_RightArrowHeadContext::getRuleIndex() const { CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { OC_RightArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 292, CypherParser::RuleOC_RightArrowHead); + enterRule(_localctx, 290, CypherParser::RuleOC_RightArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -14908,10 +14864,10 @@ CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2326); + setState(2328); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 32212287488) != 0))) { + ((1ULL << _la) & 32212320256) != 0))) { _errHandler->recoverInline(this); } else { @@ -14947,7 +14903,7 @@ size_t CypherParser::OC_DashContext::getRuleIndex() const { CypherParser::OC_DashContext* CypherParser::oC_Dash() { OC_DashContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 294, CypherParser::RuleOC_Dash); + enterRule(_localctx, 292, CypherParser::RuleOC_Dash); size_t _la = 0; #if __cplusplus > 201703L @@ -14959,7 +14915,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { }); try { enterOuterAlt(_localctx, 1); - setState(2328); + setState(2330); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 70334384439296) != 0) || _la == CypherParser::MINUS)) { @@ -14982,7 +14938,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { bool CypherParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { - case 36: return kU_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); + case 35: return kU_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); default: break; diff --git a/third_party/antlr4_cypher/include/cypher_parser.h b/third_party/antlr4_cypher/include/cypher_parser.h index 64ea634c38..f8c548370b 100644 --- a/third_party/antlr4_cypher/include/cypher_parser.h +++ b/third_party/antlr4_cypher/include/cypher_parser.h @@ -49,51 +49,51 @@ class CypherParser : public antlr4::Parser { 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_DDL = 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 + 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 }; explicit CypherParser(antlr4::TokenStream *input); @@ -133,7 +133,6 @@ class CypherParser : public antlr4::Parser { class KU_FilePathsContext; class KU_ParsingOptionsContext; class KU_ParsingOptionContext; - class KU_DDLContext; class KU_CreateNodeTableContext; class KU_CreateRelTableContext; class KU_CreateRelTableGroupContext; @@ -296,7 +295,12 @@ class CypherParser : public antlr4::Parser { OC_StatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; OC_QueryContext *oC_Query(); - KU_DDLContext *kU_DDL(); + KU_CreateNodeTableContext *kU_CreateNodeTable(); + KU_CreateRelTableContext *kU_CreateRelTable(); + KU_CreateRelTableGroupContext *kU_CreateRelTableGroup(); + KU_CreateRdfGraphContext *kU_CreateRdfGraph(); + KU_DropTableContext *kU_DropTable(); + KU_AlterTableContext *kU_AlterTable(); KU_CopyFromContext *kU_CopyFrom(); KU_CopyFromByColumnContext *kU_CopyFromByColumn(); KU_CopyTOContext *kU_CopyTO(); @@ -356,6 +360,7 @@ class CypherParser : public antlr4::Parser { std::vector SP(); antlr4::tree::TerminalNode* SP(size_t i); OC_VariableContext *oC_Variable(); + OC_SchemaNameContext *oC_SchemaName(); }; @@ -585,22 +590,6 @@ class CypherParser : public antlr4::Parser { KU_ParsingOptionContext* kU_ParsingOption(); - class KU_DDLContext : public antlr4::ParserRuleContext { - public: - KU_DDLContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - KU_CreateNodeTableContext *kU_CreateNodeTable(); - KU_CreateRelTableContext *kU_CreateRelTable(); - KU_CreateRelTableGroupContext *kU_CreateRelTableGroup(); - KU_CreateRdfGraphContext *kU_CreateRdfGraph(); - KU_DropTableContext *kU_DropTable(); - KU_AlterTableContext *kU_AlterTable(); - - - }; - - KU_DDLContext* kU_DDL(); - class KU_CreateNodeTableContext : public antlr4::ParserRuleContext { public: KU_CreateNodeTableContext(antlr4::ParserRuleContext *parent, size_t invokingState);