diff --git a/package-lock.json b/package-lock.json index a56e13e..17502ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@antv/g6": "^5.0.49", "@duckdb/duckdb-wasm": "1.29.0", - "@ladybugdb/core": "0.18.0", - "@ladybugdb/wasm-core": "0.18.0", + "@ladybugdb/core": "0.19.1", + "@ladybugdb/wasm-core": "0.19.1", "antlr4-c3": "3.2.3", "antlr4ng": "1.0.7", "bootstrap": "^5.3.1", @@ -438,21 +438,21 @@ } }, "node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -499,14 +499,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -572,23 +572,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-globals": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", @@ -762,14 +745,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1173,23 +1156,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", @@ -1374,23 +1340,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-json-strings": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", @@ -1610,23 +1559,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-object-rest-spread/node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", @@ -2048,23 +1980,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", @@ -2356,9 +2271,9 @@ } }, "node_modules/@ladybugdb/core": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@ladybugdb/core/-/core-0.18.0.tgz", - "integrity": "sha512-3X1NCsZZn2oPF/KtvrbQtRu9NvRw9z6BvNSW3lO9xe/I89HSnAsXXFaMDIirLnm3hgGb8ocnVhuMAyfS4DXnhA==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@ladybugdb/core/-/core-0.19.1.tgz", + "integrity": "sha512-8W2g6xUi4jm96fs4EayyMcsvEEtIb8vboZhw9/YG98881cIcmZjmqAN91XGUp4vb8NqoFr3Wp7wcu3dqJk0b7w==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -2367,17 +2282,17 @@ "node-addon-api": "^6.0.0" }, "optionalDependencies": { - "@ladybugdb/core-darwin-arm64": "0.18.0", - "@ladybugdb/core-darwin-x64": "0.18.0", - "@ladybugdb/core-linux-arm64": "0.18.0", - "@ladybugdb/core-linux-x64": "0.18.0", - "@ladybugdb/core-win32-x64": "0.18.0" + "@ladybugdb/core-darwin-arm64": "0.19.1", + "@ladybugdb/core-darwin-x64": "0.19.1", + "@ladybugdb/core-linux-arm64": "0.19.1", + "@ladybugdb/core-linux-x64": "0.19.1", + "@ladybugdb/core-win32-x64": "0.19.1" } }, "node_modules/@ladybugdb/core-darwin-arm64": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@ladybugdb/core-darwin-arm64/-/core-darwin-arm64-0.18.0.tgz", - "integrity": "sha512-HlJswkjSdPyXDp+krZBnU5jHQYK/1G4jTBj9Y5cUkm7ze+qR7mj9bkstUldEC3t2N7W6Os7wzTIUUORpHDRGvA==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@ladybugdb/core-darwin-arm64/-/core-darwin-arm64-0.19.1.tgz", + "integrity": "sha512-VGQs1NThAygMsoOlxud05pqKA9xfUptl55iYkwvW45As5MSI7+M86WN0Pp0VdPEfw8vNQJehrlHR5LvVAuWc2Q==", "cpu": [ "arm64" ], @@ -2388,9 +2303,9 @@ ] }, "node_modules/@ladybugdb/core-darwin-x64": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@ladybugdb/core-darwin-x64/-/core-darwin-x64-0.18.0.tgz", - "integrity": "sha512-NUqnxnnGPs3XR86/4fLWsn+Cz9/sykVIaNOw3BsYccpiGWKvnGnDcpKID1HVHRcSa84N+CrXPkuzUvkRD36s3Q==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@ladybugdb/core-darwin-x64/-/core-darwin-x64-0.19.1.tgz", + "integrity": "sha512-CGfM6ostxDS5jztxwjkXXtxrjMDgsFMRoyr5HZDCFw1+iXC1rIzmK/Y7RIw+KbQ49aPzSmkhBC447mFviBJxoA==", "cpu": [ "x64" ], @@ -2401,9 +2316,9 @@ ] }, "node_modules/@ladybugdb/core-linux-arm64": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@ladybugdb/core-linux-arm64/-/core-linux-arm64-0.18.0.tgz", - "integrity": "sha512-/wHoqsPOna+lZZbeAOFRiTHHpaiuA+07H5FUQqZI/qrEfjjN38xznmnLVCE5YZcFCzNxAS4aK40rXaUFZLj+Ow==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@ladybugdb/core-linux-arm64/-/core-linux-arm64-0.19.1.tgz", + "integrity": "sha512-BZUQwlkvNXENc5GVyXdfRF0Dv9JX8XMlcdMMiB5GKrEhTCpajQ3D58woHPVvn0JEjw7Ms3tHo6kXUAMZKYXIVg==", "cpu": [ "arm64" ], @@ -2414,9 +2329,9 @@ ] }, "node_modules/@ladybugdb/core-linux-x64": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@ladybugdb/core-linux-x64/-/core-linux-x64-0.18.0.tgz", - "integrity": "sha512-ge9pGnU94jVBOYxAuUq3d9BYSS3ProtwIKse9ZKXxeL9Hh8Qmwcz9Ey++BJMm+lSN8dE0lUBQTGXCTd1jrMnpA==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@ladybugdb/core-linux-x64/-/core-linux-x64-0.19.1.tgz", + "integrity": "sha512-LDx+E1UHlmNXSb3F9QmvdBgZGfB3wI/DcrHzfOwXgT3BP8C4ScB2tZdpiYQiuPp8MiSZ9kuuGqos8A4tQKQu8Q==", "cpu": [ "x64" ], @@ -2427,9 +2342,9 @@ ] }, "node_modules/@ladybugdb/core-win32-x64": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@ladybugdb/core-win32-x64/-/core-win32-x64-0.18.0.tgz", - "integrity": "sha512-RLW9m9BJ4LdFjKsTOZdg43FjmdboZ1gvhmnP494JPfVsmNt+7lMJOmhtvuePj3uAhOEd9qOpGN8hqGiPDywbOA==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@ladybugdb/core-win32-x64/-/core-win32-x64-0.19.1.tgz", + "integrity": "sha512-2spst1g+Z050Fz/5z7Pc6Fuc5dVXLzekOuWW4lP+mEGCL3tkv3QWYxk37DiFy+O9fDFxiWK2f3aauab58/f9kQ==", "cpu": [ "x64" ], @@ -2653,9 +2568,9 @@ } }, "node_modules/@ladybugdb/wasm-core": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@ladybugdb/wasm-core/-/wasm-core-0.18.0.tgz", - "integrity": "sha512-56WB0J2meOW5nadrhQ4byHBm67iihdpE8lVe2epfF7+N5qtQ6NrU40yHpK7dyy2OlSp+rBAPhqIkJsx2rIecAA==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@ladybugdb/wasm-core/-/wasm-core-0.19.1.tgz", + "integrity": "sha512-fB0H966sT34CBiALCpocCJfixSJ6NQF6Sl/5x5u+MV7LirJngVnH0XsT5iBYjAB3+2mWgDN79C/vLzHZV/VT8A==", "license": "MIT", "dependencies": { "threads": "^1.7.0", @@ -5081,9 +4996,9 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", - "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz", + "integrity": "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==", "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -5198,9 +5113,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -7901,9 +7816,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", "funding": [ { "type": "github", @@ -7913,7 +7828,8 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { "version": "1.19.1", @@ -8222,16 +8138,16 @@ } }, "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -8609,9 +8525,9 @@ "license": "MIT" }, "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -8882,9 +8798,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", - "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.10.tgz", + "integrity": "sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8996,9 +8912,9 @@ "license": "ISC" }, "node_modules/immutable": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", - "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", + "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", "dev": true, "license": "MIT" }, @@ -9349,9 +9265,9 @@ } }, "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "version": "17.13.4", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.4.tgz", + "integrity": "sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -9380,10 +9296,20 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -9503,14 +9429,14 @@ } }, "node_modules/launch-editor": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", - "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.14.1.tgz", + "integrity": "sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==", "dev": true, "license": "MIT", "dependencies": { "picocolors": "^1.1.1", - "shell-quote": "^1.8.3" + "shell-quote": "^1.8.4" } }, "node_modules/launch-editor-middleware": { @@ -10282,9 +10208,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "funding": [ { "type": "github", @@ -11151,9 +11077,9 @@ } }, "node_modules/postcss": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", - "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "funding": [ { "type": "opencollective", @@ -11168,8 +11094,9 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -12845,9 +12772,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz", + "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==", "dev": true, "license": "MIT", "engines": { @@ -13301,9 +13228,9 @@ "dev": true }, "node_modules/svgo": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.2.tgz", - "integrity": "sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.3.tgz", + "integrity": "sha512-5EZD0pafXX6PphdwOGCiVLDSaV1xyuQao2blHajHLsPxr07q4mmEjdtXEWgG07ae2mIz8Ex2CDXNCTiXhy3Khw==", "dev": true, "license": "MIT", "dependencies": { @@ -13355,9 +13282,9 @@ } }, "node_modules/tar": { - "version": "7.5.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.15.tgz", - "integrity": "sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==", + "version": "7.5.22", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz", + "integrity": "sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -14288,9 +14215,9 @@ } }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz", + "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==", "dev": true, "license": "MIT", "engines": { @@ -14671,9 +14598,9 @@ } }, "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.5.tgz", + "integrity": "sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -14807,9 +14734,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", - "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", "devOptional": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index a92b976..2a10ec7 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "lint": "vue-cli-service lint", "fetch-datasets": "node src/server/utils/FetchDatasets.js", "generate-grammar-prod": "node -e \"require('fs').accessSync('src/utils/CypherParser/CypherParser.ts'); console.log('Using checked-in Cypher parser')\"", - "generate-grammar": "python3 ladybug/scripts/antlr4/keywordhandler.py ladybug/src/antlr4/Cypher.g4 ladybug/src/antlr4/keywords.txt ./Cypher.g4 /tmp/header.h && rm /tmp/header.h && rm -rf src/utils/CypherParser/ && npx antlr4ng-cli -o src/utils/CypherParser -Dlanguage=TypeScript -no-visitor -no-listener Cypher.g4 && rm Cypher.g4 && cd src/utils/CypherParser && mv CypherParser.ts CypherParserOld.ts && grep -v \"notify\" CypherParserOld.ts > CypherParser.ts && rm CypherParserOld.ts", + "generate-grammar": "python3 ladybug/scripts/antlr4/keywordhandler.py ladybug/src/antlr4/Cypher.g4 ladybug/src/antlr4/keywords.txt ./Cypher.g4 /tmp/header.h && rm /tmp/header.h && rm -rf src/utils/CypherParser/ && npx antlr4ng -o src/utils/CypherParser -Dlanguage=TypeScript -no-visitor -no-listener Cypher.g4 && rm Cypher.g4 && cd src/utils/CypherParser && mv CypherParser.ts CypherParserOld.ts && grep -v \"notify\" CypherParserOld.ts > CypherParser.ts && rm CypherParserOld.ts", "clean": "rm -rf node_modules dist datasets src/utils/CypherParser", "eslint": "eslint --ext .js,.vue src", "eslint-fix": "eslint --ext .js,.vue src --fix" @@ -21,8 +21,8 @@ "dependencies": { "@antv/g6": "^5.0.49", "@duckdb/duckdb-wasm": "1.29.0", - "@ladybugdb/core": "0.18.0", - "@ladybugdb/wasm-core": "0.18.0", + "@ladybugdb/core": "0.19.1", + "@ladybugdb/wasm-core": "0.19.1", "antlr4-c3": "3.2.3", "antlr4ng": "1.0.7", "bootstrap": "^5.3.1", diff --git a/src/utils/CypherParser/Cypher.interp b/src/utils/CypherParser/Cypher.interp index 294fa06..88b8a37 100644 --- a/src/utils/CypherParser/Cypher.interp +++ b/src/utils/CypherParser/Cypher.interp @@ -160,6 +160,11 @@ null null null null +null +null +null +null +null '*' null '!=' @@ -238,6 +243,7 @@ ANY ADD ALL ALTER +ANALYZE AND AS ASC @@ -277,12 +283,14 @@ EXTENSION FALSE FROM FORCE +FOR GLOB GRAPH GROUP HEADERS HINT IMPORT +INDEX IF IN INCREMENT @@ -306,6 +314,7 @@ NONE NULL ON ONLY +OPTIONS OPTIONAL OR ORDER @@ -320,6 +329,7 @@ ROLLBACK ROLLBACK_SKIP_CHECKPOINT SEQUENCE SET +SORTED SHORTEST START STARTS @@ -377,91 +387,105 @@ CypherComment Unknown rule names: -ku_Statements +iC_Statements oC_Cypher oC_Statement -kU_CopyFrom -kU_ColumnNames -kU_ScanSource -kU_CopyFromByColumn -kU_CopyTO -kU_ExportDatabase -kU_ImportDatabase -kU_AttachDatabase -kU_Option -kU_Options -kU_DetachDatabase -kU_UseDatabase -kU_StandaloneCall -kU_CommentOn -kU_CreateMacro -kU_PositionalArgs -kU_DefaultArg -kU_FilePaths -kU_IfNotExists -kU_CreateNodeTable -kU_CreateRelTable -kU_FromToConnections -kU_FromToConnection -kU_CreateSequence -kU_CreateType -kU_SequenceOptions -kU_WithPasswd -kU_CreateUser -kU_CreateRole -kU_IncrementBy -kU_MinValue -kU_MaxValue -kU_StartWith -kU_Cycle -kU_IfExists -kU_Drop -kU_AlterTable -kU_AlterOptions -kU_AddProperty -kU_Default -kU_DropProperty -kU_RenameTable -kU_RenameProperty -kU_AddFromToConnection -kU_DropFromToConnection -kU_ColumnDefinitions -kU_ColumnDefinition -kU_PropertyDefinitions -kU_PropertyDefinition -kU_CreateNodeConstraint -kU_UnionType -kU_StructType -kU_MapType -kU_DecimalType -kU_DataType -kU_ListIdentifiers -kU_ListIdentifier +iC_CopyFrom +iC_ColumnNames +iC_ScanSource +iC_CopyFromByColumn +iC_CopyTO +iC_ExportDatabase +iC_ImportDatabase +iC_AttachDatabase +iC_Option +iC_OptionQualifier +iC_Options +iC_DetachDatabase +iC_UseDatabase +iC_CreateGraph +iC_UseGraph +iC_Analyze +iC_StandaloneCall +iC_CommentOn +iC_CreateMacro +iC_PositionalArgs +iC_DefaultArg +iC_FilePaths +iC_IfNotExists +iC_CreateNodeTable +iC_CreateRelTable +iC_CreateIndex +iC_IndexPattern +iC_IndexNodePattern +iC_IndexRelationshipPattern +iC_IndexPropertyPattern +iC_CreateFromToConnections +iC_CreateFromToConnection +iC_FromToConnections +iC_FromToConnection +iC_CreateSequence +iC_CreateType +iC_SequenceOptions +iC_WithPasswd +iC_CreateUser +iC_CreateRole +iC_IncrementBy +iC_MinValue +iC_MaxValue +iC_StartWith +iC_Cycle +iC_IfExists +iC_Drop +iC_DropIndexName +iC_AlterTable +iC_AlterOptions +iC_AddProperty +iC_Default +iC_DropProperty +iC_RenameTable +iC_RenameProperty +iC_AddFromToConnection +iC_DropFromToConnection +iC_SetSortedBy +iC_SortedByItem +iC_ColumnDefinitions +iC_ColumnDefinition +iC_PropertyDefinitions +iC_PropertyDefinition +iC_CreateNodeConstraint +iC_UnionType +iC_StructType +iC_MapType +iC_DecimalType +iC_DataType +iC_ListIdentifiers +iC_ListIdentifier oC_AnyCypherOption oC_Explain oC_Profile -kU_Transaction -kU_Extension -kU_LoadExtension -kU_InstallExtension -kU_UninstallExtension -kU_UpdateExtension +iC_Transaction +iC_Extension +iC_LoadExtension +iC_InstallExtension +iC_UninstallExtension +iC_UpdateExtension oC_Query oC_RegularQuery oC_Union oC_SingleQuery oC_SinglePartQuery oC_MultiPartQuery -kU_QueryPart +iC_QueryPart oC_UpdatingClause oC_ReadingClause -kU_LoadFrom +iC_LoadFrom oC_YieldItem oC_YieldItems -kU_InQueryCall +iC_InQueryCall oC_Match -kU_Hint -kU_JoinNode +iC_Hint +iC_JoinNode oC_Unwind oC_Create oC_Merge @@ -487,14 +511,14 @@ oC_NodePattern oC_PatternElementChain oC_RelationshipPattern oC_RelationshipDetail -kU_Properties +iC_Properties oC_RelationshipTypes oC_NodeLabels -kU_RecursiveDetail -kU_RecursiveType +iC_RecursiveDetail +iC_RecursiveType oC_RangeLiteral -kU_RecursiveComprehension -kU_RecursiveProjectionItems +iC_RecursiveComprehension +iC_RecursiveProjectionItems oC_LowerBound oC_UpperBound oC_LabelName @@ -505,15 +529,15 @@ oC_XorExpression oC_AndExpression oC_NotExpression oC_ComparisonExpression -kU_ComparisonOperator -kU_BitwiseOrOperatorExpression -kU_BitwiseAndOperatorExpression -kU_BitShiftOperatorExpression -kU_BitShiftOperator +iC_ComparisonOperator +iC_BitwiseOrOperatorExpression +iC_BitwiseAndOperatorExpression +iC_BitShiftOperatorExpression +iC_BitShiftOperator oC_AddOrSubtractExpression -kU_AddOrSubtractOperator +iC_AddOrSubtractOperator oC_MultiplyDivideModuloExpression -kU_MultiplyDivideModuloOperator +iC_MultiplyDivideModuloOperator oC_PowerOfExpression oC_StringListNullOperatorExpression oC_ListOperatorExpression @@ -529,15 +553,15 @@ oC_IdInColl oC_Literal oC_BooleanLiteral oC_ListLiteral -kU_ListEntry -kU_StructLiteral -kU_StructField +iC_ListEntry +iC_StructLiteral +iC_StructField oC_ParenthesizedExpression oC_FunctionInvocation oC_FunctionName -kU_FunctionParameter -kU_LambdaParameter -kU_LambdaVars +iC_FunctionParameter +iC_LambdaParameter +iC_LambdaVars oC_PathPatterns oC_ExistCountSubquery oC_PropertyLookup @@ -552,11 +576,11 @@ oC_IntegerLiteral oC_DoubleLiteral oC_SchemaName oC_SymbolicName -kU_NonReservedKeywords +iC_NonReservedKeywords oC_LeftArrowHead oC_RightArrowHead oC_Dash atn: -[4, 1, 186, 2909, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 1, 0, 1, 0, 3, 0, 361, 8, 0, 1, 0, 1, 0, 3, 0, 365, 8, 0, 1, 0, 5, 0, 368, 8, 0, 10, 0, 12, 0, 371, 9, 0, 1, 0, 3, 0, 374, 8, 0, 1, 0, 1, 0, 1, 1, 3, 1, 379, 8, 1, 1, 1, 3, 1, 382, 8, 1, 1, 1, 1, 1, 3, 1, 386, 8, 1, 1, 1, 3, 1, 389, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 413, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 419, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 426, 8, 3, 1, 3, 1, 3, 3, 3, 430, 8, 3, 1, 3, 1, 3, 3, 3, 434, 8, 3, 1, 3, 1, 3, 3, 3, 438, 8, 3, 1, 4, 3, 4, 441, 8, 4, 1, 4, 1, 4, 3, 4, 445, 8, 4, 1, 4, 1, 4, 3, 4, 449, 8, 4, 1, 4, 1, 4, 3, 4, 453, 8, 4, 1, 4, 5, 4, 456, 8, 4, 10, 4, 12, 4, 459, 9, 4, 1, 4, 3, 4, 462, 8, 4, 3, 4, 464, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 471, 8, 5, 1, 5, 1, 5, 3, 5, 475, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 484, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 489, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 499, 8, 6, 1, 6, 1, 6, 3, 6, 503, 8, 6, 1, 6, 1, 6, 3, 6, 507, 8, 6, 1, 6, 5, 6, 510, 8, 6, 10, 6, 12, 6, 513, 9, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 525, 8, 7, 1, 7, 1, 7, 3, 7, 529, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 537, 8, 7, 1, 7, 1, 7, 3, 7, 541, 8, 7, 1, 7, 1, 7, 3, 7, 545, 8, 7, 1, 7, 1, 7, 3, 7, 549, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 557, 8, 8, 1, 8, 1, 8, 3, 8, 561, 8, 8, 1, 8, 1, 8, 3, 8, 565, 8, 8, 1, 8, 1, 8, 3, 8, 569, 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, 3, 10, 584, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 589, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 595, 8, 10, 1, 10, 1, 10, 3, 10, 599, 8, 10, 1, 10, 3, 10, 602, 8, 10, 1, 10, 3, 10, 605, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 611, 8, 11, 1, 11, 1, 11, 3, 11, 615, 8, 11, 1, 11, 5, 11, 618, 8, 11, 10, 11, 12, 11, 621, 9, 11, 3, 11, 623, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 628, 8, 11, 1, 12, 1, 12, 3, 12, 632, 8, 12, 1, 12, 1, 12, 3, 12, 636, 8, 12, 1, 12, 5, 12, 639, 8, 12, 10, 12, 12, 12, 642, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 656, 8, 15, 1, 15, 1, 15, 3, 15, 660, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 667, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 687, 8, 17, 1, 17, 1, 17, 3, 17, 691, 8, 17, 1, 17, 3, 17, 694, 8, 17, 1, 17, 3, 17, 697, 8, 17, 1, 17, 3, 17, 700, 8, 17, 1, 17, 3, 17, 703, 8, 17, 1, 17, 1, 17, 3, 17, 707, 8, 17, 1, 17, 5, 17, 710, 8, 17, 10, 17, 12, 17, 713, 9, 17, 1, 17, 3, 17, 716, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 726, 8, 18, 1, 18, 1, 18, 3, 18, 730, 8, 18, 1, 18, 5, 18, 733, 8, 18, 10, 18, 12, 18, 736, 9, 18, 1, 19, 1, 19, 3, 19, 740, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 745, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 3, 20, 751, 8, 20, 1, 20, 1, 20, 3, 20, 755, 8, 20, 1, 20, 1, 20, 3, 20, 759, 8, 20, 1, 20, 5, 20, 762, 8, 20, 10, 20, 12, 20, 765, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 771, 8, 20, 1, 20, 1, 20, 3, 20, 775, 8, 20, 1, 20, 1, 20, 3, 20, 779, 8, 20, 1, 20, 3, 20, 782, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 799, 8, 22, 1, 22, 1, 22, 3, 22, 803, 8, 22, 1, 22, 1, 22, 3, 22, 807, 8, 22, 1, 22, 1, 22, 3, 22, 811, 8, 22, 1, 22, 1, 22, 3, 22, 815, 8, 22, 1, 22, 3, 22, 818, 8, 22, 1, 22, 3, 22, 821, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 829, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 838, 8, 23, 1, 23, 1, 23, 3, 23, 842, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 847, 8, 23, 1, 23, 1, 23, 3, 23, 851, 8, 23, 1, 23, 1, 23, 3, 23, 855, 8, 23, 1, 23, 1, 23, 3, 23, 859, 8, 23, 1, 23, 1, 23, 3, 23, 863, 8, 23, 3, 23, 865, 8, 23, 1, 23, 1, 23, 3, 23, 869, 8, 23, 1, 23, 1, 23, 3, 23, 873, 8, 23, 3, 23, 875, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 883, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 888, 8, 23, 1, 23, 1, 23, 3, 23, 892, 8, 23, 1, 23, 1, 23, 3, 23, 896, 8, 23, 1, 23, 1, 23, 3, 23, 900, 8, 23, 1, 24, 1, 24, 3, 24, 904, 8, 24, 1, 24, 1, 24, 3, 24, 908, 8, 24, 1, 24, 5, 24, 911, 8, 24, 10, 24, 12, 24, 914, 9, 24, 1, 25, 1, 25, 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, 3, 26, 931, 8, 26, 1, 26, 1, 26, 1, 26, 5, 26, 936, 8, 26, 10, 26, 12, 26, 939, 9, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 951, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 958, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 974, 8, 30, 1, 30, 1, 30, 3, 30, 978, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 987, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 995, 8, 32, 1, 32, 3, 32, 998, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1008, 8, 33, 1, 33, 3, 33, 1011, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1019, 8, 34, 1, 34, 3, 34, 1022, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1028, 8, 35, 1, 35, 3, 35, 1031, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 1037, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1052, 8, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1070, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1077, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1084, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1095, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1118, 8, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1127, 8, 47, 1, 47, 1, 47, 1, 48, 1, 48, 3, 48, 1133, 8, 48, 1, 48, 1, 48, 3, 48, 1137, 8, 48, 1, 48, 5, 48, 1140, 8, 48, 10, 48, 12, 48, 1143, 9, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 1151, 8, 50, 1, 50, 1, 50, 3, 50, 1155, 8, 50, 1, 50, 5, 50, 1158, 8, 50, 10, 50, 12, 50, 1161, 9, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1166, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1172, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1178, 8, 52, 1, 52, 1, 52, 3, 52, 1182, 8, 52, 1, 52, 1, 52, 3, 52, 1186, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 3, 53, 1192, 8, 53, 1, 53, 1, 53, 3, 53, 1196, 8, 53, 1, 53, 1, 53, 3, 53, 1200, 8, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 1206, 8, 54, 1, 54, 1, 54, 3, 54, 1210, 8, 54, 1, 54, 1, 54, 3, 54, 1214, 8, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1220, 8, 55, 1, 55, 1, 55, 3, 55, 1224, 8, 55, 1, 55, 1, 55, 3, 55, 1228, 8, 55, 1, 55, 1, 55, 3, 55, 1232, 8, 55, 1, 55, 1, 55, 3, 55, 1236, 8, 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1242, 8, 56, 1, 56, 1, 56, 3, 56, 1246, 8, 56, 1, 56, 1, 56, 3, 56, 1250, 8, 56, 1, 56, 1, 56, 3, 56, 1254, 8, 56, 1, 56, 1, 56, 3, 56, 1258, 8, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1268, 8, 57, 1, 57, 1, 57, 5, 57, 1272, 8, 57, 10, 57, 12, 57, 1275, 9, 57, 1, 58, 1, 58, 5, 58, 1279, 8, 58, 10, 58, 12, 58, 1282, 9, 58, 1, 59, 1, 59, 3, 59, 1286, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 1292, 8, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1297, 8, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1314, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1320, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1326, 8, 65, 1, 65, 1, 65, 3, 65, 1330, 8, 65, 1, 66, 1, 66, 3, 66, 1334, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1343, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 3, 70, 1357, 8, 70, 1, 70, 5, 70, 1360, 8, 70, 10, 70, 12, 70, 1363, 9, 70, 1, 70, 1, 70, 3, 70, 1367, 8, 70, 4, 70, 1369, 8, 70, 11, 70, 12, 70, 1370, 1, 70, 1, 70, 1, 70, 3, 70, 1376, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1382, 8, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1387, 8, 71, 1, 71, 3, 71, 1390, 8, 71, 1, 72, 1, 72, 3, 72, 1394, 8, 72, 1, 73, 1, 73, 3, 73, 1398, 8, 73, 5, 73, 1400, 8, 73, 10, 73, 12, 73, 1403, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1408, 8, 73, 5, 73, 1410, 8, 73, 10, 73, 12, 73, 1413, 9, 73, 1, 73, 1, 73, 3, 73, 1417, 8, 73, 1, 73, 5, 73, 1420, 8, 73, 10, 73, 12, 73, 1423, 9, 73, 1, 73, 3, 73, 1426, 8, 73, 1, 73, 3, 73, 1429, 8, 73, 3, 73, 1431, 8, 73, 1, 74, 1, 74, 3, 74, 1435, 8, 74, 4, 74, 1437, 8, 74, 11, 74, 12, 74, 1438, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1445, 8, 75, 5, 75, 1447, 8, 75, 10, 75, 12, 75, 1450, 9, 75, 1, 75, 1, 75, 3, 75, 1454, 8, 75, 5, 75, 1456, 8, 75, 10, 75, 12, 75, 1459, 9, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 1467, 8, 76, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1473, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1481, 8, 78, 1, 78, 1, 78, 3, 78, 1485, 8, 78, 1, 78, 1, 78, 3, 78, 1489, 8, 78, 1, 78, 1, 78, 3, 78, 1493, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1500, 8, 78, 1, 78, 1, 78, 3, 78, 1504, 8, 78, 1, 78, 1, 78, 3, 78, 1508, 8, 78, 1, 78, 1, 78, 3, 78, 1512, 8, 78, 1, 78, 3, 78, 1515, 8, 78, 1, 78, 3, 78, 1518, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1525, 8, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 1531, 8, 80, 1, 80, 1, 80, 3, 80, 1535, 8, 80, 1, 80, 5, 80, 1538, 8, 80, 10, 80, 12, 80, 1541, 9, 80, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1547, 8, 81, 1, 81, 3, 81, 1550, 8, 81, 1, 81, 3, 81, 1553, 8, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1558, 8, 81, 1, 82, 1, 82, 3, 82, 1562, 8, 82, 1, 82, 1, 82, 3, 82, 1566, 8, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1571, 8, 82, 1, 82, 1, 82, 3, 82, 1575, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 3, 84, 1584, 8, 84, 1, 84, 1, 84, 3, 84, 1588, 8, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1593, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 4, 84, 1605, 8, 84, 11, 84, 12, 84, 1606, 5, 84, 1609, 8, 84, 10, 84, 12, 84, 1612, 9, 84, 1, 85, 1, 85, 3, 85, 1616, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 3, 86, 1626, 8, 86, 1, 86, 1, 86, 1, 87, 1, 87, 3, 87, 1632, 8, 87, 1, 87, 1, 87, 1, 87, 5, 87, 1637, 8, 87, 10, 87, 12, 87, 1640, 9, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1652, 8, 88, 1, 89, 1, 89, 3, 89, 1656, 8, 89, 1, 89, 1, 89, 3, 89, 1660, 8, 89, 1, 89, 1, 89, 3, 89, 1664, 8, 89, 1, 89, 5, 89, 1667, 8, 89, 10, 89, 12, 89, 1670, 9, 89, 1, 89, 1, 89, 3, 89, 1674, 8, 89, 1, 89, 1, 89, 3, 89, 1678, 8, 89, 1, 89, 1, 89, 3, 89, 1682, 8, 89, 1, 89, 1, 89, 3, 89, 1686, 8, 89, 1, 90, 1, 90, 3, 90, 1690, 8, 90, 1, 90, 1, 90, 3, 90, 1694, 8, 90, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 1700, 8, 91, 1, 91, 1, 91, 3, 91, 1704, 8, 91, 1, 91, 1, 91, 3, 91, 1708, 8, 91, 1, 91, 1, 91, 3, 91, 1712, 8, 91, 1, 91, 5, 91, 1715, 8, 91, 10, 91, 12, 91, 1718, 9, 91, 1, 92, 1, 92, 1, 92, 3, 92, 1723, 8, 92, 1, 92, 3, 92, 1726, 8, 92, 1, 93, 1, 93, 1, 93, 1, 94, 3, 94, 1732, 8, 94, 1, 94, 3, 94, 1735, 8, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1741, 8, 94, 1, 94, 1, 94, 3, 94, 1745, 8, 94, 1, 94, 1, 94, 3, 94, 1749, 8, 94, 1, 95, 1, 95, 3, 95, 1753, 8, 95, 1, 95, 1, 95, 3, 95, 1757, 8, 95, 1, 95, 5, 95, 1760, 8, 95, 10, 95, 12, 95, 1763, 9, 95, 1, 95, 1, 95, 3, 95, 1767, 8, 95, 1, 95, 1, 95, 3, 95, 1771, 8, 95, 1, 95, 5, 95, 1774, 8, 95, 10, 95, 12, 95, 1777, 9, 95, 3, 95, 1779, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 1788, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1797, 8, 97, 1, 97, 5, 97, 1800, 8, 97, 10, 97, 12, 97, 1803, 9, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 3, 100, 1815, 8, 100, 1, 100, 3, 100, 1818, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 3, 102, 1826, 8, 102, 1, 102, 1, 102, 3, 102, 1830, 8, 102, 1, 102, 5, 102, 1833, 8, 102, 10, 102, 12, 102, 1836, 9, 102, 1, 103, 1, 103, 3, 103, 1840, 8, 103, 1, 103, 1, 103, 3, 103, 1844, 8, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1849, 8, 103, 1, 104, 1, 104, 1, 105, 1, 105, 3, 105, 1855, 8, 105, 1, 105, 5, 105, 1858, 8, 105, 10, 105, 12, 105, 1861, 9, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1867, 8, 105, 1, 106, 1, 106, 3, 106, 1871, 8, 106, 1, 106, 1, 106, 3, 106, 1875, 8, 106, 3, 106, 1877, 8, 106, 1, 106, 1, 106, 3, 106, 1881, 8, 106, 3, 106, 1883, 8, 106, 1, 106, 1, 106, 3, 106, 1887, 8, 106, 3, 106, 1889, 8, 106, 1, 106, 1, 106, 1, 107, 1, 107, 3, 107, 1895, 8, 107, 1, 107, 1, 107, 1, 108, 1, 108, 3, 108, 1901, 8, 108, 1, 108, 1, 108, 3, 108, 1905, 8, 108, 1, 108, 3, 108, 1908, 8, 108, 1, 108, 3, 108, 1911, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1917, 8, 108, 1, 108, 3, 108, 1920, 8, 108, 1, 108, 3, 108, 1923, 8, 108, 1, 108, 1, 108, 3, 108, 1927, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1933, 8, 108, 1, 108, 3, 108, 1936, 8, 108, 1, 108, 3, 108, 1939, 8, 108, 1, 108, 1, 108, 3, 108, 1943, 8, 108, 1, 109, 1, 109, 3, 109, 1947, 8, 109, 1, 109, 1, 109, 3, 109, 1951, 8, 109, 3, 109, 1953, 8, 109, 1, 109, 1, 109, 3, 109, 1957, 8, 109, 3, 109, 1959, 8, 109, 1, 109, 1, 109, 3, 109, 1963, 8, 109, 3, 109, 1965, 8, 109, 1, 109, 1, 109, 3, 109, 1969, 8, 109, 3, 109, 1971, 8, 109, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 1977, 8, 110, 1, 110, 1, 110, 3, 110, 1981, 8, 110, 1, 110, 1, 110, 3, 110, 1985, 8, 110, 1, 110, 1, 110, 3, 110, 1989, 8, 110, 1, 110, 1, 110, 3, 110, 1993, 8, 110, 1, 110, 1, 110, 3, 110, 1997, 8, 110, 1, 110, 1, 110, 3, 110, 2001, 8, 110, 1, 110, 1, 110, 3, 110, 2005, 8, 110, 5, 110, 2007, 8, 110, 10, 110, 12, 110, 2010, 9, 110, 3, 110, 2012, 8, 110, 1, 110, 1, 110, 1, 111, 1, 111, 3, 111, 2018, 8, 111, 1, 111, 1, 111, 3, 111, 2022, 8, 111, 1, 111, 1, 111, 3, 111, 2026, 8, 111, 1, 111, 3, 111, 2029, 8, 111, 1, 111, 5, 111, 2032, 8, 111, 10, 111, 12, 111, 2035, 9, 111, 1, 112, 1, 112, 3, 112, 2039, 8, 112, 1, 112, 1, 112, 3, 112, 2043, 8, 112, 1, 112, 1, 112, 3, 112, 2047, 8, 112, 1, 112, 3, 112, 2050, 8, 112, 1, 112, 3, 112, 2053, 8, 112, 1, 112, 5, 112, 2056, 8, 112, 10, 112, 12, 112, 2059, 9, 112, 1, 113, 1, 113, 3, 113, 2063, 8, 113, 1, 113, 3, 113, 2066, 8, 113, 1, 113, 3, 113, 2069, 8, 113, 1, 113, 3, 113, 2072, 8, 113, 1, 113, 3, 113, 2075, 8, 113, 1, 113, 3, 113, 2078, 8, 113, 1, 114, 1, 114, 3, 114, 2082, 8, 114, 1, 114, 1, 114, 3, 114, 2086, 8, 114, 1, 114, 1, 114, 3, 114, 2090, 8, 114, 1, 114, 1, 114, 3, 114, 2094, 8, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2104, 8, 114, 1, 115, 3, 115, 2107, 8, 115, 1, 115, 3, 115, 2110, 8, 115, 1, 115, 1, 115, 3, 115, 2114, 8, 115, 1, 115, 3, 115, 2117, 8, 115, 1, 115, 3, 115, 2120, 8, 115, 1, 116, 1, 116, 3, 116, 2124, 8, 116, 1, 116, 1, 116, 3, 116, 2128, 8, 116, 1, 116, 1, 116, 3, 116, 2132, 8, 116, 1, 116, 1, 116, 3, 116, 2136, 8, 116, 1, 116, 1, 116, 3, 116, 2140, 8, 116, 1, 116, 1, 116, 3, 116, 2144, 8, 116, 3, 116, 2146, 8, 116, 1, 116, 3, 116, 2149, 8, 116, 1, 116, 1, 116, 3, 116, 2153, 8, 116, 1, 116, 1, 116, 3, 116, 2157, 8, 116, 1, 116, 1, 116, 3, 116, 2161, 8, 116, 1, 116, 1, 116, 3, 116, 2165, 8, 116, 3, 116, 2167, 8, 116, 1, 116, 1, 116, 1, 117, 1, 117, 3, 117, 2173, 8, 117, 1, 117, 3, 117, 2176, 8, 117, 1, 117, 3, 117, 2179, 8, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 2198, 8, 123, 10, 123, 12, 123, 2201, 9, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 2208, 8, 124, 10, 124, 12, 124, 2211, 9, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 2218, 8, 125, 10, 125, 12, 125, 2221, 9, 125, 1, 126, 1, 126, 3, 126, 2225, 8, 126, 5, 126, 2227, 8, 126, 10, 126, 12, 126, 2230, 9, 126, 1, 126, 1, 126, 1, 127, 1, 127, 3, 127, 2236, 8, 127, 1, 127, 1, 127, 3, 127, 2240, 8, 127, 1, 127, 1, 127, 3, 127, 2244, 8, 127, 1, 127, 1, 127, 3, 127, 2248, 8, 127, 1, 127, 1, 127, 3, 127, 2252, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 2260, 8, 127, 1, 127, 1, 127, 3, 127, 2264, 8, 127, 1, 127, 1, 127, 3, 127, 2268, 8, 127, 1, 127, 1, 127, 3, 127, 2272, 8, 127, 1, 127, 1, 127, 4, 127, 2276, 8, 127, 11, 127, 12, 127, 2277, 1, 127, 1, 127, 3, 127, 2282, 8, 127, 1, 128, 1, 128, 1, 129, 1, 129, 3, 129, 2288, 8, 129, 1, 129, 1, 129, 3, 129, 2292, 8, 129, 1, 129, 5, 129, 2295, 8, 129, 10, 129, 12, 129, 2298, 9, 129, 1, 130, 1, 130, 3, 130, 2302, 8, 130, 1, 130, 1, 130, 3, 130, 2306, 8, 130, 1, 130, 5, 130, 2309, 8, 130, 10, 130, 12, 130, 2312, 9, 130, 1, 131, 1, 131, 3, 131, 2316, 8, 131, 1, 131, 1, 131, 3, 131, 2320, 8, 131, 1, 131, 1, 131, 5, 131, 2324, 8, 131, 10, 131, 12, 131, 2327, 9, 131, 1, 132, 1, 132, 1, 133, 1, 133, 3, 133, 2333, 8, 133, 1, 133, 1, 133, 3, 133, 2337, 8, 133, 1, 133, 1, 133, 5, 133, 2341, 8, 133, 10, 133, 12, 133, 2344, 9, 133, 1, 134, 1, 134, 1, 135, 1, 135, 3, 135, 2350, 8, 135, 1, 135, 1, 135, 3, 135, 2354, 8, 135, 1, 135, 1, 135, 5, 135, 2358, 8, 135, 10, 135, 12, 135, 2361, 9, 135, 1, 136, 1, 136, 1, 137, 1, 137, 3, 137, 2367, 8, 137, 1, 137, 1, 137, 3, 137, 2371, 8, 137, 1, 137, 5, 137, 2374, 8, 137, 10, 137, 12, 137, 2377, 9, 137, 1, 138, 1, 138, 1, 138, 4, 138, 2382, 8, 138, 11, 138, 12, 138, 2383, 1, 138, 3, 138, 2387, 8, 138, 1, 139, 1, 139, 1, 139, 3, 139, 2392, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2401, 8, 139, 1, 139, 1, 139, 3, 139, 2405, 8, 139, 1, 139, 3, 139, 2408, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2421, 8, 140, 1, 140, 3, 140, 2424, 8, 140, 1, 140, 1, 140, 1, 141, 3, 141, 2429, 8, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 2443, 8, 142, 1, 143, 1, 143, 3, 143, 2447, 8, 143, 5, 143, 2449, 8, 143, 10, 143, 12, 143, 2452, 9, 143, 1, 143, 1, 143, 3, 143, 2456, 8, 143, 1, 143, 3, 143, 2459, 8, 143, 1, 144, 1, 144, 3, 144, 2463, 8, 144, 1, 144, 5, 144, 2466, 8, 144, 10, 144, 12, 144, 2469, 9, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 2480, 8, 145, 1, 146, 1, 146, 3, 146, 2484, 8, 146, 1, 146, 1, 146, 3, 146, 2488, 8, 146, 1, 146, 1, 146, 3, 146, 2492, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 2498, 8, 146, 1, 146, 1, 146, 3, 146, 2502, 8, 146, 1, 146, 1, 146, 3, 146, 2506, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 2512, 8, 146, 1, 146, 1, 146, 3, 146, 2516, 8, 146, 1, 146, 1, 146, 3, 146, 2520, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 2526, 8, 146, 1, 146, 1, 146, 3, 146, 2530, 8, 146, 1, 146, 1, 146, 3, 146, 2534, 8, 146, 1, 146, 1, 146, 3, 146, 2538, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2556, 8, 149, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 2562, 8, 151, 1, 151, 1, 151, 3, 151, 2566, 8, 151, 1, 151, 1, 151, 3, 151, 2570, 8, 151, 5, 151, 2572, 8, 151, 10, 151, 12, 151, 2575, 9, 151, 3, 151, 2577, 8, 151, 1, 151, 1, 151, 1, 152, 1, 152, 3, 152, 2583, 8, 152, 1, 152, 3, 152, 2586, 8, 152, 1, 153, 1, 153, 3, 153, 2590, 8, 153, 1, 153, 1, 153, 3, 153, 2594, 8, 153, 1, 153, 1, 153, 3, 153, 2598, 8, 153, 1, 153, 1, 153, 3, 153, 2602, 8, 153, 5, 153, 2604, 8, 153, 10, 153, 12, 153, 2607, 9, 153, 1, 153, 1, 153, 1, 154, 1, 154, 3, 154, 2613, 8, 154, 1, 154, 3, 154, 2616, 8, 154, 1, 154, 1, 154, 3, 154, 2620, 8, 154, 1, 154, 1, 154, 1, 155, 1, 155, 3, 155, 2626, 8, 155, 1, 155, 1, 155, 3, 155, 2630, 8, 155, 1, 155, 1, 155, 1, 156, 1, 156, 3, 156, 2636, 8, 156, 1, 156, 1, 156, 3, 156, 2640, 8, 156, 1, 156, 1, 156, 3, 156, 2644, 8, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2649, 8, 156, 1, 156, 1, 156, 3, 156, 2653, 8, 156, 1, 156, 1, 156, 3, 156, 2657, 8, 156, 1, 156, 1, 156, 3, 156, 2661, 8, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2666, 8, 156, 1, 156, 3, 156, 2669, 8, 156, 1, 156, 3, 156, 2672, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2678, 8, 156, 1, 156, 1, 156, 3, 156, 2682, 8, 156, 1, 156, 1, 156, 3, 156, 2686, 8, 156, 3, 156, 2688, 8, 156, 1, 156, 1, 156, 3, 156, 2692, 8, 156, 1, 156, 1, 156, 3, 156, 2696, 8, 156, 1, 156, 1, 156, 3, 156, 2700, 8, 156, 5, 156, 2702, 8, 156, 10, 156, 12, 156, 2705, 9, 156, 3, 156, 2707, 8, 156, 1, 156, 1, 156, 3, 156, 2711, 8, 156, 1, 157, 1, 157, 1, 158, 1, 158, 3, 158, 2717, 8, 158, 1, 158, 1, 158, 1, 158, 3, 158, 2722, 8, 158, 3, 158, 2724, 8, 158, 1, 158, 1, 158, 3, 158, 2728, 8, 158, 1, 159, 1, 159, 3, 159, 2732, 8, 159, 1, 159, 1, 159, 1, 159, 3, 159, 2737, 8, 159, 1, 159, 1, 159, 3, 159, 2741, 8, 159, 1, 160, 1, 160, 1, 160, 3, 160, 2746, 8, 160, 1, 160, 1, 160, 3, 160, 2750, 8, 160, 1, 160, 1, 160, 3, 160, 2754, 8, 160, 1, 160, 1, 160, 3, 160, 2758, 8, 160, 5, 160, 2760, 8, 160, 10, 160, 12, 160, 2763, 9, 160, 1, 160, 1, 160, 3, 160, 2767, 8, 160, 1, 161, 1, 161, 3, 161, 2771, 8, 161, 1, 161, 4, 161, 2774, 8, 161, 11, 161, 12, 161, 2775, 1, 162, 1, 162, 3, 162, 2780, 8, 162, 1, 162, 1, 162, 3, 162, 2784, 8, 162, 1, 162, 1, 162, 3, 162, 2788, 8, 162, 1, 162, 1, 162, 3, 162, 2792, 8, 162, 1, 162, 3, 162, 2795, 8, 162, 1, 162, 3, 162, 2798, 8, 162, 1, 162, 3, 162, 2801, 8, 162, 1, 162, 3, 162, 2804, 8, 162, 1, 162, 1, 162, 1, 163, 1, 163, 3, 163, 2810, 8, 163, 1, 163, 1, 163, 3, 163, 2814, 8, 163, 1, 164, 1, 164, 3, 164, 2818, 8, 164, 1, 164, 4, 164, 2821, 8, 164, 11, 164, 12, 164, 2822, 1, 164, 1, 164, 3, 164, 2827, 8, 164, 1, 164, 1, 164, 3, 164, 2831, 8, 164, 1, 164, 4, 164, 2834, 8, 164, 11, 164, 12, 164, 2835, 3, 164, 2838, 8, 164, 1, 164, 3, 164, 2841, 8, 164, 1, 164, 1, 164, 3, 164, 2845, 8, 164, 1, 164, 3, 164, 2848, 8, 164, 1, 164, 3, 164, 2851, 8, 164, 1, 164, 1, 164, 1, 165, 1, 165, 3, 165, 2857, 8, 165, 1, 165, 1, 165, 3, 165, 2861, 8, 165, 1, 165, 1, 165, 3, 165, 2865, 8, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 3, 167, 2873, 8, 167, 1, 168, 1, 168, 1, 168, 3, 168, 2878, 8, 168, 1, 169, 1, 169, 3, 169, 2882, 8, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2899, 8, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 0, 2, 114, 168, 179, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 0, 14, 3, 0, 105, 105, 130, 130, 136, 136, 2, 0, 52, 53, 74, 75, 2, 0, 6, 6, 12, 16, 1, 0, 18, 19, 2, 0, 20, 20, 166, 166, 2, 0, 21, 22, 161, 161, 1, 0, 164, 165, 2, 0, 86, 86, 141, 141, 2, 0, 67, 67, 82, 82, 1, 0, 177, 178, 31, 0, 47, 47, 49, 49, 51, 51, 54, 57, 60, 60, 62, 63, 65, 67, 69, 70, 73, 73, 76, 76, 78, 78, 83, 85, 87, 88, 90, 90, 94, 95, 97, 97, 99, 99, 101, 104, 106, 109, 111, 112, 123, 128, 130, 131, 133, 133, 135, 135, 138, 138, 140, 140, 142, 142, 145, 147, 151, 151, 155, 160, 162, 162, 2, 0, 13, 13, 26, 29, 2, 0, 15, 15, 30, 33, 2, 0, 34, 44, 166, 166, 3294, 0, 358, 1, 0, 0, 0, 2, 378, 1, 0, 0, 0, 4, 412, 1, 0, 0, 0, 6, 414, 1, 0, 0, 0, 8, 440, 1, 0, 0, 0, 10, 488, 1, 0, 0, 0, 12, 490, 1, 0, 0, 0, 14, 520, 1, 0, 0, 0, 16, 550, 1, 0, 0, 0, 18, 570, 1, 0, 0, 0, 20, 576, 1, 0, 0, 0, 22, 627, 1, 0, 0, 0, 24, 629, 1, 0, 0, 0, 26, 643, 1, 0, 0, 0, 28, 647, 1, 0, 0, 0, 30, 666, 1, 0, 0, 0, 32, 668, 1, 0, 0, 0, 34, 680, 1, 0, 0, 0, 36, 723, 1, 0, 0, 0, 38, 737, 1, 0, 0, 0, 40, 781, 1, 0, 0, 0, 42, 783, 1, 0, 0, 0, 44, 789, 1, 0, 0, 0, 46, 830, 1, 0, 0, 0, 48, 901, 1, 0, 0, 0, 50, 915, 1, 0, 0, 0, 52, 923, 1, 0, 0, 0, 54, 940, 1, 0, 0, 0, 56, 957, 1, 0, 0, 0, 58, 959, 1, 0, 0, 0, 60, 966, 1, 0, 0, 0, 62, 979, 1, 0, 0, 0, 64, 990, 1, 0, 0, 0, 66, 1010, 1, 0, 0, 0, 68, 1021, 1, 0, 0, 0, 70, 1023, 1, 0, 0, 0, 72, 1036, 1, 0, 0, 0, 74, 1040, 1, 0, 0, 0, 76, 1044, 1, 0, 0, 0, 78, 1055, 1, 0, 0, 0, 80, 1069, 1, 0, 0, 0, 82, 1071, 1, 0, 0, 0, 84, 1085, 1, 0, 0, 0, 86, 1089, 1, 0, 0, 0, 88, 1098, 1, 0, 0, 0, 90, 1104, 1, 0, 0, 0, 92, 1112, 1, 0, 0, 0, 94, 1121, 1, 0, 0, 0, 96, 1130, 1, 0, 0, 0, 98, 1144, 1, 0, 0, 0, 100, 1148, 1, 0, 0, 0, 102, 1162, 1, 0, 0, 0, 104, 1173, 1, 0, 0, 0, 106, 1189, 1, 0, 0, 0, 108, 1203, 1, 0, 0, 0, 110, 1217, 1, 0, 0, 0, 112, 1239, 1, 0, 0, 0, 114, 1267, 1, 0, 0, 0, 116, 1276, 1, 0, 0, 0, 118, 1283, 1, 0, 0, 0, 120, 1291, 1, 0, 0, 0, 122, 1293, 1, 0, 0, 0, 124, 1298, 1, 0, 0, 0, 126, 1313, 1, 0, 0, 0, 128, 1319, 1, 0, 0, 0, 130, 1321, 1, 0, 0, 0, 132, 1333, 1, 0, 0, 0, 134, 1344, 1, 0, 0, 0, 136, 1348, 1, 0, 0, 0, 138, 1352, 1, 0, 0, 0, 140, 1375, 1, 0, 0, 0, 142, 1389, 1, 0, 0, 0, 144, 1393, 1, 0, 0, 0, 146, 1430, 1, 0, 0, 0, 148, 1436, 1, 0, 0, 0, 150, 1448, 1, 0, 0, 0, 152, 1466, 1, 0, 0, 0, 154, 1472, 1, 0, 0, 0, 156, 1474, 1, 0, 0, 0, 158, 1524, 1, 0, 0, 0, 160, 1528, 1, 0, 0, 0, 162, 1542, 1, 0, 0, 0, 164, 1561, 1, 0, 0, 0, 166, 1576, 1, 0, 0, 0, 168, 1592, 1, 0, 0, 0, 170, 1613, 1, 0, 0, 0, 172, 1623, 1, 0, 0, 0, 174, 1629, 1, 0, 0, 0, 176, 1651, 1, 0, 0, 0, 178, 1685, 1, 0, 0, 0, 180, 1687, 1, 0, 0, 0, 182, 1699, 1, 0, 0, 0, 184, 1719, 1, 0, 0, 0, 186, 1727, 1, 0, 0, 0, 188, 1734, 1, 0, 0, 0, 190, 1778, 1, 0, 0, 0, 192, 1787, 1, 0, 0, 0, 194, 1789, 1, 0, 0, 0, 196, 1804, 1, 0, 0, 0, 198, 1808, 1, 0, 0, 0, 200, 1812, 1, 0, 0, 0, 202, 1819, 1, 0, 0, 0, 204, 1823, 1, 0, 0, 0, 206, 1848, 1, 0, 0, 0, 208, 1850, 1, 0, 0, 0, 210, 1866, 1, 0, 0, 0, 212, 1868, 1, 0, 0, 0, 214, 1892, 1, 0, 0, 0, 216, 1942, 1, 0, 0, 0, 218, 1944, 1, 0, 0, 0, 220, 1974, 1, 0, 0, 0, 222, 2015, 1, 0, 0, 0, 224, 2036, 1, 0, 0, 0, 226, 2060, 1, 0, 0, 0, 228, 2103, 1, 0, 0, 0, 230, 2119, 1, 0, 0, 0, 232, 2121, 1, 0, 0, 0, 234, 2170, 1, 0, 0, 0, 236, 2182, 1, 0, 0, 0, 238, 2184, 1, 0, 0, 0, 240, 2186, 1, 0, 0, 0, 242, 2188, 1, 0, 0, 0, 244, 2190, 1, 0, 0, 0, 246, 2192, 1, 0, 0, 0, 248, 2202, 1, 0, 0, 0, 250, 2212, 1, 0, 0, 0, 252, 2228, 1, 0, 0, 0, 254, 2281, 1, 0, 0, 0, 256, 2283, 1, 0, 0, 0, 258, 2285, 1, 0, 0, 0, 260, 2299, 1, 0, 0, 0, 262, 2313, 1, 0, 0, 0, 264, 2328, 1, 0, 0, 0, 266, 2330, 1, 0, 0, 0, 268, 2345, 1, 0, 0, 0, 270, 2347, 1, 0, 0, 0, 272, 2362, 1, 0, 0, 0, 274, 2364, 1, 0, 0, 0, 276, 2378, 1, 0, 0, 0, 278, 2407, 1, 0, 0, 0, 280, 2420, 1, 0, 0, 0, 282, 2428, 1, 0, 0, 0, 284, 2442, 1, 0, 0, 0, 286, 2450, 1, 0, 0, 0, 288, 2460, 1, 0, 0, 0, 290, 2479, 1, 0, 0, 0, 292, 2537, 1, 0, 0, 0, 294, 2539, 1, 0, 0, 0, 296, 2543, 1, 0, 0, 0, 298, 2555, 1, 0, 0, 0, 300, 2557, 1, 0, 0, 0, 302, 2559, 1, 0, 0, 0, 304, 2580, 1, 0, 0, 0, 306, 2587, 1, 0, 0, 0, 308, 2612, 1, 0, 0, 0, 310, 2623, 1, 0, 0, 0, 312, 2710, 1, 0, 0, 0, 314, 2712, 1, 0, 0, 0, 316, 2727, 1, 0, 0, 0, 318, 2729, 1, 0, 0, 0, 320, 2766, 1, 0, 0, 0, 322, 2768, 1, 0, 0, 0, 324, 2777, 1, 0, 0, 0, 326, 2807, 1, 0, 0, 0, 328, 2837, 1, 0, 0, 0, 330, 2854, 1, 0, 0, 0, 332, 2868, 1, 0, 0, 0, 334, 2872, 1, 0, 0, 0, 336, 2874, 1, 0, 0, 0, 338, 2879, 1, 0, 0, 0, 340, 2885, 1, 0, 0, 0, 342, 2887, 1, 0, 0, 0, 344, 2889, 1, 0, 0, 0, 346, 2891, 1, 0, 0, 0, 348, 2898, 1, 0, 0, 0, 350, 2900, 1, 0, 0, 0, 352, 2902, 1, 0, 0, 0, 354, 2904, 1, 0, 0, 0, 356, 2906, 1, 0, 0, 0, 358, 369, 3, 2, 1, 0, 359, 361, 5, 183, 0, 0, 360, 359, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 364, 5, 1, 0, 0, 363, 365, 5, 183, 0, 0, 364, 363, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 368, 3, 2, 1, 0, 367, 360, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 373, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 372, 374, 5, 183, 0, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 376, 5, 0, 0, 1, 376, 1, 1, 0, 0, 0, 377, 379, 3, 120, 60, 0, 378, 377, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 381, 1, 0, 0, 0, 380, 382, 5, 183, 0, 0, 381, 380, 1, 0, 0, 0, 381, 382, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 388, 3, 4, 2, 0, 384, 386, 5, 183, 0, 0, 385, 384, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 5, 1, 0, 0, 388, 385, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 3, 1, 0, 0, 0, 390, 413, 3, 138, 69, 0, 391, 413, 3, 60, 30, 0, 392, 413, 3, 62, 31, 0, 393, 413, 3, 44, 22, 0, 394, 413, 3, 46, 23, 0, 395, 413, 3, 52, 26, 0, 396, 413, 3, 54, 27, 0, 397, 413, 3, 76, 38, 0, 398, 413, 3, 78, 39, 0, 399, 413, 3, 6, 3, 0, 400, 413, 3, 12, 6, 0, 401, 413, 3, 14, 7, 0, 402, 413, 3, 30, 15, 0, 403, 413, 3, 34, 17, 0, 404, 413, 3, 32, 16, 0, 405, 413, 3, 126, 63, 0, 406, 413, 3, 128, 64, 0, 407, 413, 3, 16, 8, 0, 408, 413, 3, 18, 9, 0, 409, 413, 3, 20, 10, 0, 410, 413, 3, 26, 13, 0, 411, 413, 3, 28, 14, 0, 412, 390, 1, 0, 0, 0, 412, 391, 1, 0, 0, 0, 412, 392, 1, 0, 0, 0, 412, 393, 1, 0, 0, 0, 412, 394, 1, 0, 0, 0, 412, 395, 1, 0, 0, 0, 412, 396, 1, 0, 0, 0, 412, 397, 1, 0, 0, 0, 412, 398, 1, 0, 0, 0, 412, 399, 1, 0, 0, 0, 412, 400, 1, 0, 0, 0, 412, 401, 1, 0, 0, 0, 412, 402, 1, 0, 0, 0, 412, 403, 1, 0, 0, 0, 412, 404, 1, 0, 0, 0, 412, 405, 1, 0, 0, 0, 412, 406, 1, 0, 0, 0, 412, 407, 1, 0, 0, 0, 412, 408, 1, 0, 0, 0, 412, 409, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 411, 1, 0, 0, 0, 413, 5, 1, 0, 0, 0, 414, 415, 5, 66, 0, 0, 415, 416, 5, 183, 0, 0, 416, 418, 3, 346, 173, 0, 417, 419, 3, 8, 4, 0, 418, 417, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 421, 5, 183, 0, 0, 421, 422, 5, 87, 0, 0, 422, 423, 5, 183, 0, 0, 423, 437, 3, 10, 5, 0, 424, 426, 5, 183, 0, 0, 425, 424, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 429, 5, 2, 0, 0, 428, 430, 5, 183, 0, 0, 429, 428, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 433, 3, 24, 12, 0, 432, 434, 5, 183, 0, 0, 433, 432, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 436, 5, 3, 0, 0, 436, 438, 1, 0, 0, 0, 437, 425, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 7, 1, 0, 0, 0, 439, 441, 5, 183, 0, 0, 440, 439, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 444, 5, 2, 0, 0, 443, 445, 5, 183, 0, 0, 444, 443, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 463, 1, 0, 0, 0, 446, 457, 3, 346, 173, 0, 447, 449, 5, 183, 0, 0, 448, 447, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 452, 5, 4, 0, 0, 451, 453, 5, 183, 0, 0, 452, 451, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 456, 3, 346, 173, 0, 455, 448, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 461, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 460, 462, 5, 183, 0, 0, 461, 460, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 464, 1, 0, 0, 0, 463, 446, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 466, 5, 3, 0, 0, 466, 9, 1, 0, 0, 0, 467, 489, 3, 40, 20, 0, 468, 470, 5, 2, 0, 0, 469, 471, 5, 183, 0, 0, 470, 469, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474, 3, 138, 69, 0, 473, 475, 5, 183, 0, 0, 474, 473, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 477, 5, 3, 0, 0, 477, 489, 1, 0, 0, 0, 478, 489, 3, 336, 168, 0, 479, 489, 3, 332, 166, 0, 480, 481, 3, 332, 166, 0, 481, 483, 5, 5, 0, 0, 482, 484, 5, 183, 0, 0, 483, 482, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 486, 3, 346, 173, 0, 486, 489, 1, 0, 0, 0, 487, 489, 3, 312, 156, 0, 488, 467, 1, 0, 0, 0, 488, 468, 1, 0, 0, 0, 488, 478, 1, 0, 0, 0, 488, 479, 1, 0, 0, 0, 488, 480, 1, 0, 0, 0, 488, 487, 1, 0, 0, 0, 489, 11, 1, 0, 0, 0, 490, 491, 5, 66, 0, 0, 491, 492, 5, 183, 0, 0, 492, 493, 3, 346, 173, 0, 493, 494, 5, 183, 0, 0, 494, 495, 5, 87, 0, 0, 495, 496, 5, 183, 0, 0, 496, 498, 5, 2, 0, 0, 497, 499, 5, 183, 0, 0, 498, 497, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 511, 5, 168, 0, 0, 501, 503, 5, 183, 0, 0, 502, 501, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 506, 5, 4, 0, 0, 505, 507, 5, 183, 0, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 5, 168, 0, 0, 509, 502, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 509, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 514, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 514, 515, 5, 3, 0, 0, 515, 516, 5, 183, 0, 0, 516, 517, 5, 56, 0, 0, 517, 518, 5, 183, 0, 0, 518, 519, 5, 61, 0, 0, 519, 13, 1, 0, 0, 0, 520, 521, 5, 66, 0, 0, 521, 522, 5, 183, 0, 0, 522, 524, 5, 2, 0, 0, 523, 525, 5, 183, 0, 0, 524, 523, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 528, 3, 138, 69, 0, 527, 529, 5, 183, 0, 0, 528, 527, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 531, 5, 3, 0, 0, 531, 532, 5, 183, 0, 0, 532, 533, 5, 138, 0, 0, 533, 534, 5, 183, 0, 0, 534, 548, 5, 168, 0, 0, 535, 537, 5, 183, 0, 0, 536, 535, 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 538, 1, 0, 0, 0, 538, 540, 5, 2, 0, 0, 539, 541, 5, 183, 0, 0, 540, 539, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 544, 3, 24, 12, 0, 543, 545, 5, 183, 0, 0, 544, 543, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 5, 3, 0, 0, 547, 549, 1, 0, 0, 0, 548, 536, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 15, 1, 0, 0, 0, 550, 551, 5, 84, 0, 0, 551, 552, 5, 183, 0, 0, 552, 553, 5, 70, 0, 0, 553, 554, 5, 183, 0, 0, 554, 568, 5, 168, 0, 0, 555, 557, 5, 183, 0, 0, 556, 555, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 560, 5, 2, 0, 0, 559, 561, 5, 183, 0, 0, 560, 559, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 564, 3, 24, 12, 0, 563, 565, 5, 183, 0, 0, 564, 563, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566, 567, 5, 3, 0, 0, 567, 569, 1, 0, 0, 0, 568, 556, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 17, 1, 0, 0, 0, 570, 571, 5, 94, 0, 0, 571, 572, 5, 183, 0, 0, 572, 573, 5, 70, 0, 0, 573, 574, 5, 183, 0, 0, 574, 575, 5, 168, 0, 0, 575, 19, 1, 0, 0, 0, 576, 577, 5, 54, 0, 0, 577, 578, 5, 183, 0, 0, 578, 583, 5, 168, 0, 0, 579, 580, 5, 183, 0, 0, 580, 581, 5, 51, 0, 0, 581, 582, 5, 183, 0, 0, 582, 584, 3, 346, 173, 0, 583, 579, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 586, 5, 183, 0, 0, 586, 588, 5, 2, 0, 0, 587, 589, 5, 183, 0, 0, 588, 587, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 5, 71, 0, 0, 591, 592, 5, 183, 0, 0, 592, 601, 3, 348, 174, 0, 593, 595, 5, 183, 0, 0, 594, 593, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 598, 5, 4, 0, 0, 597, 599, 5, 183, 0, 0, 598, 597, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 602, 3, 24, 12, 0, 601, 594, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 604, 1, 0, 0, 0, 603, 605, 5, 183, 0, 0, 604, 603, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 607, 5, 3, 0, 0, 607, 21, 1, 0, 0, 0, 608, 622, 3, 348, 174, 0, 609, 611, 5, 183, 0, 0, 610, 609, 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 614, 5, 6, 0, 0, 613, 615, 5, 183, 0, 0, 614, 613, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 623, 1, 0, 0, 0, 616, 618, 5, 183, 0, 0, 617, 616, 1, 0, 0, 0, 618, 621, 1, 0, 0, 0, 619, 617, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 623, 1, 0, 0, 0, 621, 619, 1, 0, 0, 0, 622, 610, 1, 0, 0, 0, 622, 619, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 625, 3, 298, 149, 0, 625, 628, 1, 0, 0, 0, 626, 628, 3, 348, 174, 0, 627, 608, 1, 0, 0, 0, 627, 626, 1, 0, 0, 0, 628, 23, 1, 0, 0, 0, 629, 640, 3, 22, 11, 0, 630, 632, 5, 183, 0, 0, 631, 630, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 635, 5, 4, 0, 0, 634, 636, 5, 183, 0, 0, 635, 634, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 639, 3, 22, 11, 0, 638, 631, 1, 0, 0, 0, 639, 642, 1, 0, 0, 0, 640, 638, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 25, 1, 0, 0, 0, 642, 640, 1, 0, 0, 0, 643, 644, 5, 76, 0, 0, 644, 645, 5, 183, 0, 0, 645, 646, 3, 346, 173, 0, 646, 27, 1, 0, 0, 0, 647, 648, 5, 147, 0, 0, 648, 649, 5, 183, 0, 0, 649, 650, 3, 346, 173, 0, 650, 29, 1, 0, 0, 0, 651, 652, 5, 57, 0, 0, 652, 653, 5, 183, 0, 0, 653, 655, 3, 348, 174, 0, 654, 656, 5, 183, 0, 0, 655, 654, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 659, 5, 6, 0, 0, 658, 660, 5, 183, 0, 0, 659, 658, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 662, 3, 244, 122, 0, 662, 667, 1, 0, 0, 0, 663, 664, 5, 57, 0, 0, 664, 665, 5, 183, 0, 0, 665, 667, 3, 312, 156, 0, 666, 651, 1, 0, 0, 0, 666, 663, 1, 0, 0, 0, 667, 31, 1, 0, 0, 0, 668, 669, 5, 62, 0, 0, 669, 670, 5, 183, 0, 0, 670, 671, 5, 116, 0, 0, 671, 672, 5, 183, 0, 0, 672, 673, 5, 136, 0, 0, 673, 674, 5, 183, 0, 0, 674, 675, 3, 346, 173, 0, 675, 676, 5, 183, 0, 0, 676, 677, 5, 99, 0, 0, 677, 678, 5, 183, 0, 0, 678, 679, 5, 168, 0, 0, 679, 33, 1, 0, 0, 0, 680, 681, 5, 68, 0, 0, 681, 682, 5, 183, 0, 0, 682, 683, 5, 105, 0, 0, 683, 684, 5, 183, 0, 0, 684, 686, 3, 314, 157, 0, 685, 687, 5, 183, 0, 0, 686, 685, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 690, 5, 2, 0, 0, 689, 691, 5, 183, 0, 0, 690, 689, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 693, 1, 0, 0, 0, 692, 694, 3, 36, 18, 0, 693, 692, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 696, 1, 0, 0, 0, 695, 697, 5, 183, 0, 0, 696, 695, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 699, 1, 0, 0, 0, 698, 700, 3, 38, 19, 0, 699, 698, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 711, 1, 0, 0, 0, 701, 703, 5, 183, 0, 0, 702, 701, 1, 0, 0, 0, 702, 703, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 706, 5, 4, 0, 0, 705, 707, 5, 183, 0, 0, 706, 705, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 710, 3, 38, 19, 0, 709, 702, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 709, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 715, 1, 0, 0, 0, 713, 711, 1, 0, 0, 0, 714, 716, 5, 183, 0, 0, 715, 714, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 718, 5, 3, 0, 0, 718, 719, 5, 183, 0, 0, 719, 720, 5, 51, 0, 0, 720, 721, 5, 183, 0, 0, 721, 722, 3, 244, 122, 0, 722, 35, 1, 0, 0, 0, 723, 734, 3, 348, 174, 0, 724, 726, 5, 183, 0, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 729, 5, 4, 0, 0, 728, 730, 5, 183, 0, 0, 729, 728, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 733, 3, 348, 174, 0, 732, 725, 1, 0, 0, 0, 733, 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 37, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 737, 739, 3, 348, 174, 0, 738, 740, 5, 183, 0, 0, 739, 738, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 5, 164, 0, 0, 742, 744, 5, 6, 0, 0, 743, 745, 5, 183, 0, 0, 744, 743, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 747, 3, 298, 149, 0, 747, 39, 1, 0, 0, 0, 748, 750, 5, 7, 0, 0, 749, 751, 5, 183, 0, 0, 750, 749, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 763, 5, 168, 0, 0, 753, 755, 5, 183, 0, 0, 754, 753, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 758, 5, 4, 0, 0, 757, 759, 5, 183, 0, 0, 758, 757, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 5, 168, 0, 0, 761, 754, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 766, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 766, 782, 5, 8, 0, 0, 767, 782, 5, 168, 0, 0, 768, 770, 5, 89, 0, 0, 769, 771, 5, 183, 0, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 774, 5, 2, 0, 0, 773, 775, 5, 183, 0, 0, 774, 773, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 776, 1, 0, 0, 0, 776, 778, 5, 168, 0, 0, 777, 779, 5, 183, 0, 0, 778, 777, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 782, 5, 3, 0, 0, 781, 748, 1, 0, 0, 0, 781, 767, 1, 0, 0, 0, 781, 768, 1, 0, 0, 0, 782, 41, 1, 0, 0, 0, 783, 784, 5, 95, 0, 0, 784, 785, 5, 183, 0, 0, 785, 786, 5, 113, 0, 0, 786, 787, 5, 183, 0, 0, 787, 788, 5, 82, 0, 0, 788, 43, 1, 0, 0, 0, 789, 790, 5, 68, 0, 0, 790, 791, 5, 183, 0, 0, 791, 792, 5, 112, 0, 0, 792, 793, 5, 183, 0, 0, 793, 794, 5, 136, 0, 0, 794, 798, 5, 183, 0, 0, 795, 796, 3, 42, 21, 0, 796, 797, 5, 183, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 828, 3, 346, 173, 0, 801, 803, 5, 183, 0, 0, 802, 801, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 5, 2, 0, 0, 805, 807, 5, 183, 0, 0, 806, 805, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 810, 3, 100, 50, 0, 809, 811, 5, 183, 0, 0, 810, 809, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 817, 1, 0, 0, 0, 812, 814, 5, 4, 0, 0, 813, 815, 5, 183, 0, 0, 814, 813, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 818, 3, 104, 52, 0, 817, 812, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 820, 1, 0, 0, 0, 819, 821, 5, 183, 0, 0, 820, 819, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, 823, 5, 3, 0, 0, 823, 829, 1, 0, 0, 0, 824, 825, 5, 183, 0, 0, 825, 826, 5, 51, 0, 0, 826, 827, 5, 183, 0, 0, 827, 829, 3, 138, 69, 0, 828, 802, 1, 0, 0, 0, 828, 824, 1, 0, 0, 0, 829, 45, 1, 0, 0, 0, 830, 831, 5, 68, 0, 0, 831, 832, 5, 183, 0, 0, 832, 833, 5, 125, 0, 0, 833, 834, 5, 183, 0, 0, 834, 837, 5, 136, 0, 0, 835, 836, 5, 183, 0, 0, 836, 838, 5, 91, 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 841, 1, 0, 0, 0, 839, 840, 5, 183, 0, 0, 840, 842, 3, 42, 21, 0, 841, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 844, 5, 183, 0, 0, 844, 846, 3, 346, 173, 0, 845, 847, 5, 183, 0, 0, 846, 845, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 850, 5, 2, 0, 0, 849, 851, 5, 183, 0, 0, 850, 849, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 852, 1, 0, 0, 0, 852, 854, 3, 48, 24, 0, 853, 855, 5, 183, 0, 0, 854, 853, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 882, 1, 0, 0, 0, 856, 858, 5, 4, 0, 0, 857, 859, 5, 183, 0, 0, 858, 857, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 862, 3, 100, 50, 0, 861, 863, 5, 183, 0, 0, 862, 861, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 865, 1, 0, 0, 0, 864, 856, 1, 0, 0, 0, 864, 865, 1, 0, 0, 0, 865, 874, 1, 0, 0, 0, 866, 868, 5, 4, 0, 0, 867, 869, 5, 183, 0, 0, 868, 867, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 872, 3, 348, 174, 0, 871, 873, 5, 183, 0, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 875, 1, 0, 0, 0, 874, 866, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 883, 5, 3, 0, 0, 877, 878, 5, 3, 0, 0, 878, 879, 5, 183, 0, 0, 879, 880, 5, 51, 0, 0, 880, 881, 5, 183, 0, 0, 881, 883, 3, 138, 69, 0, 882, 864, 1, 0, 0, 0, 882, 877, 1, 0, 0, 0, 883, 899, 1, 0, 0, 0, 884, 885, 5, 183, 0, 0, 885, 887, 5, 150, 0, 0, 886, 888, 5, 183, 0, 0, 887, 886, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 891, 5, 2, 0, 0, 890, 892, 5, 183, 0, 0, 891, 890, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 895, 3, 24, 12, 0, 894, 896, 5, 183, 0, 0, 895, 894, 1, 0, 0, 0, 895, 896, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 898, 5, 3, 0, 0, 898, 900, 1, 0, 0, 0, 899, 884, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 47, 1, 0, 0, 0, 901, 912, 3, 50, 25, 0, 902, 904, 5, 183, 0, 0, 903, 902, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 907, 5, 4, 0, 0, 906, 908, 5, 183, 0, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 911, 3, 50, 25, 0, 910, 903, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 49, 1, 0, 0, 0, 914, 912, 1, 0, 0, 0, 915, 916, 5, 87, 0, 0, 916, 917, 5, 183, 0, 0, 917, 918, 3, 346, 173, 0, 918, 919, 5, 183, 0, 0, 919, 920, 5, 138, 0, 0, 920, 921, 5, 183, 0, 0, 921, 922, 3, 346, 173, 0, 922, 51, 1, 0, 0, 0, 923, 924, 5, 68, 0, 0, 924, 925, 5, 183, 0, 0, 925, 926, 5, 130, 0, 0, 926, 930, 5, 183, 0, 0, 927, 928, 3, 42, 21, 0, 928, 929, 5, 183, 0, 0, 929, 931, 1, 0, 0, 0, 930, 927, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 932, 1, 0, 0, 0, 932, 937, 3, 346, 173, 0, 933, 934, 5, 183, 0, 0, 934, 936, 3, 56, 28, 0, 935, 933, 1, 0, 0, 0, 936, 939, 1, 0, 0, 0, 937, 935, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 53, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 940, 941, 5, 68, 0, 0, 941, 942, 5, 183, 0, 0, 942, 943, 5, 142, 0, 0, 943, 944, 5, 183, 0, 0, 944, 945, 3, 346, 173, 0, 945, 946, 5, 183, 0, 0, 946, 947, 5, 51, 0, 0, 947, 948, 5, 183, 0, 0, 948, 950, 3, 114, 57, 0, 949, 951, 5, 183, 0, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 55, 1, 0, 0, 0, 952, 958, 3, 64, 32, 0, 953, 958, 3, 66, 33, 0, 954, 958, 3, 68, 34, 0, 955, 958, 3, 70, 35, 0, 956, 958, 3, 72, 36, 0, 957, 952, 1, 0, 0, 0, 957, 953, 1, 0, 0, 0, 957, 954, 1, 0, 0, 0, 957, 955, 1, 0, 0, 0, 957, 956, 1, 0, 0, 0, 958, 57, 1, 0, 0, 0, 959, 960, 5, 183, 0, 0, 960, 961, 5, 150, 0, 0, 961, 962, 5, 183, 0, 0, 962, 963, 5, 157, 0, 0, 963, 964, 5, 183, 0, 0, 964, 965, 5, 168, 0, 0, 965, 59, 1, 0, 0, 0, 966, 967, 5, 68, 0, 0, 967, 968, 5, 183, 0, 0, 968, 969, 5, 156, 0, 0, 969, 973, 5, 183, 0, 0, 970, 971, 3, 42, 21, 0, 971, 972, 5, 183, 0, 0, 972, 974, 1, 0, 0, 0, 973, 970, 1, 0, 0, 0, 973, 974, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 977, 3, 332, 166, 0, 976, 978, 3, 58, 29, 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 61, 1, 0, 0, 0, 979, 980, 5, 68, 0, 0, 980, 981, 5, 183, 0, 0, 981, 982, 5, 158, 0, 0, 982, 986, 5, 183, 0, 0, 983, 984, 3, 42, 21, 0, 984, 985, 5, 183, 0, 0, 985, 987, 1, 0, 0, 0, 986, 983, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 989, 3, 332, 166, 0, 989, 63, 1, 0, 0, 0, 990, 991, 5, 97, 0, 0, 991, 994, 5, 183, 0, 0, 992, 993, 5, 56, 0, 0, 993, 995, 5, 183, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 997, 1, 0, 0, 0, 996, 998, 5, 166, 0, 0, 997, 996, 1, 0, 0, 0, 997, 998, 1, 0, 0, 0, 998, 999, 1, 0, 0, 0, 999, 1000, 3, 342, 171, 0, 1000, 65, 1, 0, 0, 0, 1001, 1002, 5, 111, 0, 0, 1002, 1003, 5, 183, 0, 0, 1003, 1011, 5, 109, 0, 0, 1004, 1005, 5, 109, 0, 0, 1005, 1007, 5, 183, 0, 0, 1006, 1008, 5, 166, 0, 0, 1007, 1006, 1, 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1011, 3, 342, 171, 0, 1010, 1001, 1, 0, 0, 0, 1010, 1004, 1, 0, 0, 0, 1011, 67, 1, 0, 0, 0, 1012, 1013, 5, 111, 0, 0, 1013, 1014, 5, 183, 0, 0, 1014, 1022, 5, 107, 0, 0, 1015, 1016, 5, 107, 0, 0, 1016, 1018, 5, 183, 0, 0, 1017, 1019, 5, 166, 0, 0, 1018, 1017, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1020, 1, 0, 0, 0, 1020, 1022, 3, 342, 171, 0, 1021, 1012, 1, 0, 0, 0, 1021, 1015, 1, 0, 0, 0, 1022, 69, 1, 0, 0, 0, 1023, 1024, 5, 133, 0, 0, 1024, 1027, 5, 183, 0, 0, 1025, 1026, 5, 150, 0, 0, 1026, 1028, 5, 183, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1030, 1, 0, 0, 0, 1029, 1031, 5, 166, 0, 0, 1030, 1029, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1033, 3, 342, 171, 0, 1033, 71, 1, 0, 0, 0, 1034, 1035, 5, 111, 0, 0, 1035, 1037, 5, 183, 0, 0, 1036, 1034, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1039, 5, 69, 0, 0, 1039, 73, 1, 0, 0, 0, 1040, 1041, 5, 95, 0, 0, 1041, 1042, 5, 183, 0, 0, 1042, 1043, 5, 82, 0, 0, 1043, 75, 1, 0, 0, 0, 1044, 1045, 5, 78, 0, 0, 1045, 1046, 5, 183, 0, 0, 1046, 1047, 7, 0, 0, 0, 1047, 1051, 5, 183, 0, 0, 1048, 1049, 3, 74, 37, 0, 1049, 1050, 5, 183, 0, 0, 1050, 1052, 1, 0, 0, 0, 1051, 1048, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1054, 3, 346, 173, 0, 1054, 77, 1, 0, 0, 0, 1055, 1056, 5, 49, 0, 0, 1056, 1057, 5, 183, 0, 0, 1057, 1058, 5, 136, 0, 0, 1058, 1059, 5, 183, 0, 0, 1059, 1060, 3, 346, 173, 0, 1060, 1061, 5, 183, 0, 0, 1061, 1062, 3, 80, 40, 0, 1062, 79, 1, 0, 0, 0, 1063, 1070, 3, 82, 41, 0, 1064, 1070, 3, 86, 43, 0, 1065, 1070, 3, 88, 44, 0, 1066, 1070, 3, 90, 45, 0, 1067, 1070, 3, 92, 46, 0, 1068, 1070, 3, 94, 47, 0, 1069, 1063, 1, 0, 0, 0, 1069, 1064, 1, 0, 0, 0, 1069, 1065, 1, 0, 0, 0, 1069, 1066, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1069, 1068, 1, 0, 0, 0, 1070, 81, 1, 0, 0, 0, 1071, 1072, 5, 47, 0, 0, 1072, 1076, 5, 183, 0, 0, 1073, 1074, 3, 42, 21, 0, 1074, 1075, 5, 183, 0, 0, 1075, 1077, 1, 0, 0, 0, 1076, 1073, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, 3, 340, 170, 0, 1079, 1080, 5, 183, 0, 0, 1080, 1083, 3, 114, 57, 0, 1081, 1082, 5, 183, 0, 0, 1082, 1084, 3, 84, 42, 0, 1083, 1081, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 83, 1, 0, 0, 0, 1085, 1086, 5, 72, 0, 0, 1086, 1087, 5, 183, 0, 0, 1087, 1088, 3, 244, 122, 0, 1088, 85, 1, 0, 0, 0, 1089, 1090, 5, 78, 0, 0, 1090, 1094, 5, 183, 0, 0, 1091, 1092, 3, 74, 37, 0, 1092, 1093, 5, 183, 0, 0, 1093, 1095, 1, 0, 0, 0, 1094, 1091, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1097, 3, 340, 170, 0, 1097, 87, 1, 0, 0, 0, 1098, 1099, 5, 126, 0, 0, 1099, 1100, 5, 183, 0, 0, 1100, 1101, 5, 138, 0, 0, 1101, 1102, 5, 183, 0, 0, 1102, 1103, 3, 346, 173, 0, 1103, 89, 1, 0, 0, 0, 1104, 1105, 5, 126, 0, 0, 1105, 1106, 5, 183, 0, 0, 1106, 1107, 3, 340, 170, 0, 1107, 1108, 5, 183, 0, 0, 1108, 1109, 5, 138, 0, 0, 1109, 1110, 5, 183, 0, 0, 1110, 1111, 3, 340, 170, 0, 1111, 91, 1, 0, 0, 0, 1112, 1113, 5, 47, 0, 0, 1113, 1117, 5, 183, 0, 0, 1114, 1115, 3, 42, 21, 0, 1115, 1116, 5, 183, 0, 0, 1116, 1118, 1, 0, 0, 0, 1117, 1114, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1120, 3, 50, 25, 0, 1120, 93, 1, 0, 0, 0, 1121, 1122, 5, 78, 0, 0, 1122, 1126, 5, 183, 0, 0, 1123, 1124, 3, 74, 37, 0, 1124, 1125, 5, 183, 0, 0, 1125, 1127, 1, 0, 0, 0, 1126, 1123, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1128, 1, 0, 0, 0, 1128, 1129, 3, 50, 25, 0, 1129, 95, 1, 0, 0, 0, 1130, 1141, 3, 98, 49, 0, 1131, 1133, 5, 183, 0, 0, 1132, 1131, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1136, 5, 4, 0, 0, 1135, 1137, 5, 183, 0, 0, 1136, 1135, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1140, 3, 98, 49, 0, 1139, 1132, 1, 0, 0, 0, 1140, 1143, 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 97, 1, 0, 0, 0, 1143, 1141, 1, 0, 0, 0, 1144, 1145, 3, 340, 170, 0, 1145, 1146, 5, 183, 0, 0, 1146, 1147, 3, 114, 57, 0, 1147, 99, 1, 0, 0, 0, 1148, 1159, 3, 102, 51, 0, 1149, 1151, 5, 183, 0, 0, 1150, 1149, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1154, 5, 4, 0, 0, 1153, 1155, 5, 183, 0, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1158, 3, 102, 51, 0, 1157, 1150, 1, 0, 0, 0, 1158, 1161, 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 101, 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1162, 1165, 3, 98, 49, 0, 1163, 1164, 5, 183, 0, 0, 1164, 1166, 3, 84, 42, 0, 1165, 1163, 1, 0, 0, 0, 1165, 1166, 1, 0, 0, 0, 1166, 1171, 1, 0, 0, 0, 1167, 1168, 5, 183, 0, 0, 1168, 1169, 5, 121, 0, 0, 1169, 1170, 5, 183, 0, 0, 1170, 1172, 5, 101, 0, 0, 1171, 1167, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 103, 1, 0, 0, 0, 1173, 1174, 5, 121, 0, 0, 1174, 1175, 5, 183, 0, 0, 1175, 1177, 5, 101, 0, 0, 1176, 1178, 5, 183, 0, 0, 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1181, 5, 2, 0, 0, 1180, 1182, 5, 183, 0, 0, 1181, 1180, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1183, 1, 0, 0, 0, 1183, 1185, 3, 340, 170, 0, 1184, 1186, 5, 183, 0, 0, 1185, 1184, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1188, 5, 3, 0, 0, 1188, 105, 1, 0, 0, 0, 1189, 1191, 5, 143, 0, 0, 1190, 1192, 5, 183, 0, 0, 1191, 1190, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1195, 5, 2, 0, 0, 1194, 1196, 5, 183, 0, 0, 1195, 1194, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1199, 3, 96, 48, 0, 1198, 1200, 5, 183, 0, 0, 1199, 1198, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 5, 3, 0, 0, 1202, 107, 1, 0, 0, 0, 1203, 1205, 5, 135, 0, 0, 1204, 1206, 5, 183, 0, 0, 1205, 1204, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1209, 5, 2, 0, 0, 1208, 1210, 5, 183, 0, 0, 1209, 1208, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1213, 3, 96, 48, 0, 1212, 1214, 5, 183, 0, 0, 1213, 1212, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1216, 5, 3, 0, 0, 1216, 109, 1, 0, 0, 0, 1217, 1219, 5, 159, 0, 0, 1218, 1220, 5, 183, 0, 0, 1219, 1218, 1, 0, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 1223, 5, 2, 0, 0, 1222, 1224, 5, 183, 0, 0, 1223, 1222, 1, 0, 0, 0, 1223, 1224, 1, 0, 0, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1227, 3, 114, 57, 0, 1226, 1228, 5, 183, 0, 0, 1227, 1226, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1231, 5, 4, 0, 0, 1230, 1232, 5, 183, 0, 0, 1231, 1230, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1235, 3, 114, 57, 0, 1234, 1236, 5, 183, 0, 0, 1235, 1234, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1238, 5, 3, 0, 0, 1238, 111, 1, 0, 0, 0, 1239, 1241, 5, 160, 0, 0, 1240, 1242, 5, 183, 0, 0, 1241, 1240, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, 1243, 1245, 5, 2, 0, 0, 1244, 1246, 5, 183, 0, 0, 1245, 1244, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1249, 3, 342, 171, 0, 1248, 1250, 5, 183, 0, 0, 1249, 1248, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1253, 5, 4, 0, 0, 1252, 1254, 5, 183, 0, 0, 1253, 1252, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1255, 1, 0, 0, 0, 1255, 1257, 3, 342, 171, 0, 1256, 1258, 5, 183, 0, 0, 1257, 1256, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 5, 3, 0, 0, 1260, 113, 1, 0, 0, 0, 1261, 1262, 6, 57, -1, 0, 1262, 1268, 3, 348, 174, 0, 1263, 1268, 3, 106, 53, 0, 1264, 1268, 3, 108, 54, 0, 1265, 1268, 3, 110, 55, 0, 1266, 1268, 3, 112, 56, 0, 1267, 1261, 1, 0, 0, 0, 1267, 1263, 1, 0, 0, 0, 1267, 1264, 1, 0, 0, 0, 1267, 1265, 1, 0, 0, 0, 1267, 1266, 1, 0, 0, 0, 1268, 1273, 1, 0, 0, 0, 1269, 1270, 10, 5, 0, 0, 1270, 1272, 3, 116, 58, 0, 1271, 1269, 1, 0, 0, 0, 1272, 1275, 1, 0, 0, 0, 1273, 1271, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 115, 1, 0, 0, 0, 1275, 1273, 1, 0, 0, 0, 1276, 1280, 3, 118, 59, 0, 1277, 1279, 3, 118, 59, 0, 1278, 1277, 1, 0, 0, 0, 1279, 1282, 1, 0, 0, 0, 1280, 1278, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 117, 1, 0, 0, 0, 1282, 1280, 1, 0, 0, 0, 1283, 1285, 5, 7, 0, 0, 1284, 1286, 3, 342, 171, 0, 1285, 1284, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1288, 5, 8, 0, 0, 1288, 119, 1, 0, 0, 0, 1289, 1292, 3, 122, 61, 0, 1290, 1292, 3, 124, 62, 0, 1291, 1289, 1, 0, 0, 0, 1291, 1290, 1, 0, 0, 0, 1292, 121, 1, 0, 0, 0, 1293, 1296, 5, 83, 0, 0, 1294, 1295, 5, 183, 0, 0, 1295, 1297, 5, 104, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 123, 1, 0, 0, 0, 1298, 1299, 5, 122, 0, 0, 1299, 125, 1, 0, 0, 0, 1300, 1301, 5, 55, 0, 0, 1301, 1302, 5, 183, 0, 0, 1302, 1314, 5, 140, 0, 0, 1303, 1304, 5, 55, 0, 0, 1304, 1305, 5, 183, 0, 0, 1305, 1306, 5, 140, 0, 0, 1306, 1307, 5, 183, 0, 0, 1307, 1308, 5, 124, 0, 0, 1308, 1309, 5, 183, 0, 0, 1309, 1314, 5, 117, 0, 0, 1310, 1314, 5, 63, 0, 0, 1311, 1314, 5, 128, 0, 0, 1312, 1314, 5, 60, 0, 0, 1313, 1300, 1, 0, 0, 0, 1313, 1303, 1, 0, 0, 0, 1313, 1310, 1, 0, 0, 0, 1313, 1311, 1, 0, 0, 0, 1313, 1312, 1, 0, 0, 0, 1314, 127, 1, 0, 0, 0, 1315, 1320, 3, 130, 65, 0, 1316, 1320, 3, 132, 66, 0, 1317, 1320, 3, 134, 67, 0, 1318, 1320, 3, 136, 68, 0, 1319, 1315, 1, 0, 0, 0, 1319, 1316, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1319, 1318, 1, 0, 0, 0, 1320, 129, 1, 0, 0, 0, 1321, 1322, 5, 103, 0, 0, 1322, 1325, 5, 183, 0, 0, 1323, 1324, 5, 85, 0, 0, 1324, 1326, 5, 183, 0, 0, 1325, 1323, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1329, 1, 0, 0, 0, 1327, 1330, 5, 168, 0, 0, 1328, 1330, 3, 332, 166, 0, 1329, 1327, 1, 0, 0, 0, 1329, 1328, 1, 0, 0, 0, 1330, 131, 1, 0, 0, 0, 1331, 1332, 5, 88, 0, 0, 1332, 1334, 5, 183, 0, 0, 1333, 1331, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 1336, 5, 98, 0, 0, 1336, 1337, 5, 183, 0, 0, 1337, 1342, 3, 332, 166, 0, 1338, 1339, 5, 183, 0, 0, 1339, 1340, 5, 87, 0, 0, 1340, 1341, 5, 183, 0, 0, 1341, 1343, 5, 168, 0, 0, 1342, 1338, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 133, 1, 0, 0, 0, 1344, 1345, 5, 145, 0, 0, 1345, 1346, 5, 183, 0, 0, 1346, 1347, 3, 332, 166, 0, 1347, 135, 1, 0, 0, 0, 1348, 1349, 5, 146, 0, 0, 1349, 1350, 5, 183, 0, 0, 1350, 1351, 3, 332, 166, 0, 1351, 137, 1, 0, 0, 0, 1352, 1353, 3, 140, 70, 0, 1353, 139, 1, 0, 0, 0, 1354, 1361, 3, 144, 72, 0, 1355, 1357, 5, 183, 0, 0, 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1358, 1, 0, 0, 0, 1358, 1360, 3, 142, 71, 0, 1359, 1356, 1, 0, 0, 0, 1360, 1363, 1, 0, 0, 0, 1361, 1359, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1376, 1, 0, 0, 0, 1363, 1361, 1, 0, 0, 0, 1364, 1366, 3, 186, 93, 0, 1365, 1367, 5, 183, 0, 0, 1366, 1365, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1369, 1, 0, 0, 0, 1368, 1364, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 3, 144, 72, 0, 1373, 1374, 6, 70, -1, 0, 1374, 1376, 1, 0, 0, 0, 1375, 1354, 1, 0, 0, 0, 1375, 1368, 1, 0, 0, 0, 1376, 141, 1, 0, 0, 0, 1377, 1378, 5, 143, 0, 0, 1378, 1379, 5, 183, 0, 0, 1379, 1381, 5, 48, 0, 0, 1380, 1382, 5, 183, 0, 0, 1381, 1380, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1390, 3, 144, 72, 0, 1384, 1386, 5, 143, 0, 0, 1385, 1387, 5, 183, 0, 0, 1386, 1385, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1390, 3, 144, 72, 0, 1389, 1377, 1, 0, 0, 0, 1389, 1384, 1, 0, 0, 0, 1390, 143, 1, 0, 0, 0, 1391, 1394, 3, 146, 73, 0, 1392, 1394, 3, 148, 74, 0, 1393, 1391, 1, 0, 0, 0, 1393, 1392, 1, 0, 0, 0, 1394, 145, 1, 0, 0, 0, 1395, 1397, 3, 154, 77, 0, 1396, 1398, 5, 183, 0, 0, 1397, 1396, 1, 0, 0, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1400, 1, 0, 0, 0, 1399, 1395, 1, 0, 0, 0, 1400, 1403, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1404, 1, 0, 0, 0, 1403, 1401, 1, 0, 0, 0, 1404, 1431, 3, 186, 93, 0, 1405, 1407, 3, 154, 77, 0, 1406, 1408, 5, 183, 0, 0, 1407, 1406, 1, 0, 0, 0, 1407, 1408, 1, 0, 0, 0, 1408, 1410, 1, 0, 0, 0, 1409, 1405, 1, 0, 0, 0, 1410, 1413, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1411, 1412, 1, 0, 0, 0, 1412, 1414, 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1421, 3, 152, 76, 0, 1415, 1417, 5, 183, 0, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1420, 3, 152, 76, 0, 1419, 1416, 1, 0, 0, 0, 1420, 1423, 1, 0, 0, 0, 1421, 1419, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1428, 1, 0, 0, 0, 1423, 1421, 1, 0, 0, 0, 1424, 1426, 5, 183, 0, 0, 1425, 1424, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1429, 3, 186, 93, 0, 1428, 1425, 1, 0, 0, 0, 1428, 1429, 1, 0, 0, 0, 1429, 1431, 1, 0, 0, 0, 1430, 1401, 1, 0, 0, 0, 1430, 1411, 1, 0, 0, 0, 1431, 147, 1, 0, 0, 0, 1432, 1434, 3, 150, 75, 0, 1433, 1435, 5, 183, 0, 0, 1434, 1433, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1437, 1, 0, 0, 0, 1436, 1432, 1, 0, 0, 0, 1437, 1438, 1, 0, 0, 0, 1438, 1436, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 3, 146, 73, 0, 1441, 149, 1, 0, 0, 0, 1442, 1444, 3, 154, 77, 0, 1443, 1445, 5, 183, 0, 0, 1444, 1443, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1447, 1, 0, 0, 0, 1446, 1442, 1, 0, 0, 0, 1447, 1450, 1, 0, 0, 0, 1448, 1446, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1457, 1, 0, 0, 0, 1450, 1448, 1, 0, 0, 0, 1451, 1453, 3, 152, 76, 0, 1452, 1454, 5, 183, 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, 1456, 1459, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1460, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1460, 1461, 3, 184, 92, 0, 1461, 151, 1, 0, 0, 0, 1462, 1467, 3, 172, 86, 0, 1463, 1467, 3, 174, 87, 0, 1464, 1467, 3, 178, 89, 0, 1465, 1467, 3, 182, 91, 0, 1466, 1462, 1, 0, 0, 0, 1466, 1463, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1466, 1465, 1, 0, 0, 0, 1467, 153, 1, 0, 0, 0, 1468, 1473, 3, 164, 82, 0, 1469, 1473, 3, 170, 85, 0, 1470, 1473, 3, 162, 81, 0, 1471, 1473, 3, 156, 78, 0, 1472, 1468, 1, 0, 0, 0, 1472, 1469, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1472, 1471, 1, 0, 0, 0, 1473, 155, 1, 0, 0, 0, 1474, 1492, 5, 103, 0, 0, 1475, 1476, 5, 183, 0, 0, 1476, 1477, 5, 150, 0, 0, 1477, 1478, 5, 183, 0, 0, 1478, 1480, 5, 92, 0, 0, 1479, 1481, 5, 183, 0, 0, 1480, 1479, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1484, 5, 2, 0, 0, 1483, 1485, 5, 183, 0, 0, 1484, 1483, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1488, 3, 96, 48, 0, 1487, 1489, 5, 183, 0, 0, 1488, 1487, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1491, 5, 3, 0, 0, 1491, 1493, 1, 0, 0, 0, 1492, 1475, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 5, 183, 0, 0, 1495, 1496, 5, 87, 0, 0, 1496, 1497, 5, 183, 0, 0, 1497, 1511, 3, 10, 5, 0, 1498, 1500, 5, 183, 0, 0, 1499, 1498, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1503, 5, 2, 0, 0, 1502, 1504, 5, 183, 0, 0, 1503, 1502, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1507, 3, 24, 12, 0, 1506, 1508, 5, 183, 0, 0, 1507, 1506, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 5, 3, 0, 0, 1510, 1512, 1, 0, 0, 0, 1511, 1499, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1517, 1, 0, 0, 0, 1513, 1515, 5, 183, 0, 0, 1514, 1513, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1518, 3, 202, 101, 0, 1517, 1514, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 157, 1, 0, 0, 0, 1519, 1520, 3, 332, 166, 0, 1520, 1521, 5, 183, 0, 0, 1521, 1522, 5, 51, 0, 0, 1522, 1523, 5, 183, 0, 0, 1523, 1525, 1, 0, 0, 0, 1524, 1519, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1527, 3, 332, 166, 0, 1527, 159, 1, 0, 0, 0, 1528, 1539, 3, 158, 79, 0, 1529, 1531, 5, 183, 0, 0, 1530, 1529, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1534, 5, 4, 0, 0, 1533, 1535, 5, 183, 0, 0, 1534, 1533, 1, 0, 0, 0, 1534, 1535, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1538, 3, 158, 79, 0, 1537, 1530, 1, 0, 0, 0, 1538, 1541, 1, 0, 0, 0, 1539, 1537, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 161, 1, 0, 0, 0, 1541, 1539, 1, 0, 0, 0, 1542, 1543, 5, 57, 0, 0, 1543, 1544, 5, 183, 0, 0, 1544, 1549, 3, 312, 156, 0, 1545, 1547, 5, 183, 0, 0, 1546, 1545, 1, 0, 0, 0, 1546, 1547, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1550, 3, 202, 101, 0, 1549, 1546, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1557, 1, 0, 0, 0, 1551, 1553, 5, 183, 0, 0, 1552, 1551, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 5, 155, 0, 0, 1555, 1556, 5, 183, 0, 0, 1556, 1558, 3, 160, 80, 0, 1557, 1552, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 163, 1, 0, 0, 0, 1559, 1560, 5, 118, 0, 0, 1560, 1562, 5, 183, 0, 0, 1561, 1559, 1, 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1563, 1, 0, 0, 0, 1563, 1565, 5, 106, 0, 0, 1564, 1566, 5, 183, 0, 0, 1565, 1564, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1570, 3, 204, 102, 0, 1568, 1569, 5, 183, 0, 0, 1569, 1571, 3, 202, 101, 0, 1570, 1568, 1, 0, 0, 0, 1570, 1571, 1, 0, 0, 0, 1571, 1574, 1, 0, 0, 0, 1572, 1573, 5, 183, 0, 0, 1573, 1575, 3, 166, 83, 0, 1574, 1572, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 165, 1, 0, 0, 0, 1576, 1577, 5, 93, 0, 0, 1577, 1578, 5, 183, 0, 0, 1578, 1579, 3, 168, 84, 0, 1579, 167, 1, 0, 0, 0, 1580, 1581, 6, 84, -1, 0, 1581, 1583, 5, 2, 0, 0, 1582, 1584, 5, 183, 0, 0, 1583, 1582, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1587, 3, 168, 84, 0, 1586, 1588, 5, 183, 0, 0, 1587, 1586, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 1, 0, 0, 0, 1589, 1590, 5, 3, 0, 0, 1590, 1593, 1, 0, 0, 0, 1591, 1593, 3, 346, 173, 0, 1592, 1580, 1, 0, 0, 0, 1592, 1591, 1, 0, 0, 0, 1593, 1610, 1, 0, 0, 0, 1594, 1595, 10, 4, 0, 0, 1595, 1596, 5, 183, 0, 0, 1596, 1597, 5, 100, 0, 0, 1597, 1598, 5, 183, 0, 0, 1598, 1609, 3, 168, 84, 5, 1599, 1604, 10, 3, 0, 0, 1600, 1601, 5, 183, 0, 0, 1601, 1602, 5, 110, 0, 0, 1602, 1603, 5, 183, 0, 0, 1603, 1605, 3, 346, 173, 0, 1604, 1600, 1, 0, 0, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1604, 1, 0, 0, 0, 1606, 1607, 1, 0, 0, 0, 1607, 1609, 1, 0, 0, 0, 1608, 1594, 1, 0, 0, 0, 1608, 1599, 1, 0, 0, 0, 1609, 1612, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 169, 1, 0, 0, 0, 1612, 1610, 1, 0, 0, 0, 1613, 1615, 5, 144, 0, 0, 1614, 1616, 5, 183, 0, 0, 1615, 1614, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1617, 1, 0, 0, 0, 1617, 1618, 3, 244, 122, 0, 1618, 1619, 5, 183, 0, 0, 1619, 1620, 5, 51, 0, 0, 1620, 1621, 5, 183, 0, 0, 1621, 1622, 3, 332, 166, 0, 1622, 171, 1, 0, 0, 0, 1623, 1625, 5, 68, 0, 0, 1624, 1626, 5, 183, 0, 0, 1625, 1624, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1627, 1, 0, 0, 0, 1627, 1628, 3, 204, 102, 0, 1628, 173, 1, 0, 0, 0, 1629, 1631, 5, 108, 0, 0, 1630, 1632, 5, 183, 0, 0, 1631, 1630, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1638, 3, 204, 102, 0, 1634, 1635, 5, 183, 0, 0, 1635, 1637, 3, 176, 88, 0, 1636, 1634, 1, 0, 0, 0, 1637, 1640, 1, 0, 0, 0, 1638, 1636, 1, 0, 0, 0, 1638, 1639, 1, 0, 0, 0, 1639, 175, 1, 0, 0, 0, 1640, 1638, 1, 0, 0, 0, 1641, 1642, 5, 116, 0, 0, 1642, 1643, 5, 183, 0, 0, 1643, 1644, 5, 106, 0, 0, 1644, 1645, 5, 183, 0, 0, 1645, 1652, 3, 178, 89, 0, 1646, 1647, 5, 116, 0, 0, 1647, 1648, 5, 183, 0, 0, 1648, 1649, 5, 68, 0, 0, 1649, 1650, 5, 183, 0, 0, 1650, 1652, 3, 178, 89, 0, 1651, 1641, 1, 0, 0, 0, 1651, 1646, 1, 0, 0, 0, 1652, 177, 1, 0, 0, 0, 1653, 1655, 5, 131, 0, 0, 1654, 1656, 5, 183, 0, 0, 1655, 1654, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 1668, 3, 180, 90, 0, 1658, 1660, 5, 183, 0, 0, 1659, 1658, 1, 0, 0, 0, 1659, 1660, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1663, 5, 4, 0, 0, 1662, 1664, 5, 183, 0, 0, 1663, 1662, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1667, 3, 180, 90, 0, 1666, 1659, 1, 0, 0, 0, 1667, 1670, 1, 0, 0, 0, 1668, 1666, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1686, 1, 0, 0, 0, 1670, 1668, 1, 0, 0, 0, 1671, 1673, 5, 131, 0, 0, 1672, 1674, 5, 183, 0, 0, 1673, 1672, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1677, 3, 290, 145, 0, 1676, 1678, 5, 183, 0, 0, 1677, 1676, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1681, 5, 6, 0, 0, 1680, 1682, 5, 183, 0, 0, 1681, 1680, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1684, 3, 220, 110, 0, 1684, 1686, 1, 0, 0, 0, 1685, 1653, 1, 0, 0, 0, 1685, 1671, 1, 0, 0, 0, 1686, 179, 1, 0, 0, 0, 1687, 1689, 3, 338, 169, 0, 1688, 1690, 5, 183, 0, 0, 1689, 1688, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, 5, 6, 0, 0, 1692, 1694, 5, 183, 0, 0, 1693, 1692, 1, 0, 0, 0, 1693, 1694, 1, 0, 0, 0, 1694, 1695, 1, 0, 0, 0, 1695, 1696, 3, 244, 122, 0, 1696, 181, 1, 0, 0, 0, 1697, 1698, 5, 76, 0, 0, 1698, 1700, 5, 183, 0, 0, 1699, 1697, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1703, 5, 73, 0, 0, 1702, 1704, 5, 183, 0, 0, 1703, 1702, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1716, 3, 244, 122, 0, 1706, 1708, 5, 183, 0, 0, 1707, 1706, 1, 0, 0, 0, 1707, 1708, 1, 0, 0, 0, 1708, 1709, 1, 0, 0, 0, 1709, 1711, 5, 4, 0, 0, 1710, 1712, 5, 183, 0, 0, 1711, 1710, 1, 0, 0, 0, 1711, 1712, 1, 0, 0, 0, 1712, 1713, 1, 0, 0, 0, 1713, 1715, 3, 244, 122, 0, 1714, 1707, 1, 0, 0, 0, 1715, 1718, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 183, 1, 0, 0, 0, 1718, 1716, 1, 0, 0, 0, 1719, 1720, 5, 150, 0, 0, 1720, 1725, 3, 188, 94, 0, 1721, 1723, 5, 183, 0, 0, 1722, 1721, 1, 0, 0, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1726, 3, 202, 101, 0, 1725, 1722, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 185, 1, 0, 0, 0, 1727, 1728, 5, 127, 0, 0, 1728, 1729, 3, 188, 94, 0, 1729, 187, 1, 0, 0, 0, 1730, 1732, 5, 183, 0, 0, 1731, 1730, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1735, 5, 77, 0, 0, 1734, 1731, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1737, 5, 183, 0, 0, 1737, 1740, 3, 190, 95, 0, 1738, 1739, 5, 183, 0, 0, 1739, 1741, 3, 194, 97, 0, 1740, 1738, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1744, 1, 0, 0, 0, 1742, 1743, 5, 183, 0, 0, 1743, 1745, 3, 196, 98, 0, 1744, 1742, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1748, 1, 0, 0, 0, 1746, 1747, 5, 183, 0, 0, 1747, 1749, 3, 198, 99, 0, 1748, 1746, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 189, 1, 0, 0, 0, 1750, 1761, 5, 161, 0, 0, 1751, 1753, 5, 183, 0, 0, 1752, 1751, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 1756, 5, 4, 0, 0, 1755, 1757, 5, 183, 0, 0, 1756, 1755, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1760, 3, 192, 96, 0, 1759, 1752, 1, 0, 0, 0, 1760, 1763, 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1779, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1775, 3, 192, 96, 0, 1765, 1767, 5, 183, 0, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1770, 5, 4, 0, 0, 1769, 1771, 5, 183, 0, 0, 1770, 1769, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1774, 3, 192, 96, 0, 1773, 1766, 1, 0, 0, 0, 1774, 1777, 1, 0, 0, 0, 1775, 1773, 1, 0, 0, 0, 1775, 1776, 1, 0, 0, 0, 1776, 1779, 1, 0, 0, 0, 1777, 1775, 1, 0, 0, 0, 1778, 1750, 1, 0, 0, 0, 1778, 1764, 1, 0, 0, 0, 1779, 191, 1, 0, 0, 0, 1780, 1781, 3, 244, 122, 0, 1781, 1782, 5, 183, 0, 0, 1782, 1783, 5, 51, 0, 0, 1783, 1784, 5, 183, 0, 0, 1784, 1785, 3, 332, 166, 0, 1785, 1788, 1, 0, 0, 0, 1786, 1788, 3, 244, 122, 0, 1787, 1780, 1, 0, 0, 0, 1787, 1786, 1, 0, 0, 0, 1788, 193, 1, 0, 0, 0, 1789, 1790, 5, 120, 0, 0, 1790, 1791, 5, 183, 0, 0, 1791, 1792, 5, 56, 0, 0, 1792, 1793, 5, 183, 0, 0, 1793, 1801, 3, 200, 100, 0, 1794, 1796, 5, 4, 0, 0, 1795, 1797, 5, 183, 0, 0, 1796, 1795, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1800, 3, 200, 100, 0, 1799, 1794, 1, 0, 0, 0, 1800, 1803, 1, 0, 0, 0, 1801, 1799, 1, 0, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 195, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1804, 1805, 5, 162, 0, 0, 1805, 1806, 5, 183, 0, 0, 1806, 1807, 3, 244, 122, 0, 1807, 197, 1, 0, 0, 0, 1808, 1809, 5, 102, 0, 0, 1809, 1810, 5, 183, 0, 0, 1810, 1811, 3, 244, 122, 0, 1811, 199, 1, 0, 0, 0, 1812, 1817, 3, 244, 122, 0, 1813, 1815, 5, 183, 0, 0, 1814, 1813, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1818, 7, 1, 0, 0, 1817, 1814, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 201, 1, 0, 0, 0, 1819, 1820, 5, 149, 0, 0, 1820, 1821, 5, 183, 0, 0, 1821, 1822, 3, 244, 122, 0, 1822, 203, 1, 0, 0, 0, 1823, 1834, 3, 206, 103, 0, 1824, 1826, 5, 183, 0, 0, 1825, 1824, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1829, 5, 4, 0, 0, 1828, 1830, 5, 183, 0, 0, 1829, 1828, 1, 0, 0, 0, 1829, 1830, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1833, 3, 206, 103, 0, 1832, 1825, 1, 0, 0, 0, 1833, 1836, 1, 0, 0, 0, 1834, 1832, 1, 0, 0, 0, 1834, 1835, 1, 0, 0, 0, 1835, 205, 1, 0, 0, 0, 1836, 1834, 1, 0, 0, 0, 1837, 1839, 3, 332, 166, 0, 1838, 1840, 5, 183, 0, 0, 1839, 1838, 1, 0, 0, 0, 1839, 1840, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1843, 5, 6, 0, 0, 1842, 1844, 5, 183, 0, 0, 1843, 1842, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1845, 1, 0, 0, 0, 1845, 1846, 3, 208, 104, 0, 1846, 1849, 1, 0, 0, 0, 1847, 1849, 3, 208, 104, 0, 1848, 1837, 1, 0, 0, 0, 1848, 1847, 1, 0, 0, 0, 1849, 207, 1, 0, 0, 0, 1850, 1851, 3, 210, 105, 0, 1851, 209, 1, 0, 0, 0, 1852, 1859, 3, 212, 106, 0, 1853, 1855, 5, 183, 0, 0, 1854, 1853, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 1858, 3, 214, 107, 0, 1857, 1854, 1, 0, 0, 0, 1858, 1861, 1, 0, 0, 0, 1859, 1857, 1, 0, 0, 0, 1859, 1860, 1, 0, 0, 0, 1860, 1867, 1, 0, 0, 0, 1861, 1859, 1, 0, 0, 0, 1862, 1863, 5, 2, 0, 0, 1863, 1864, 3, 210, 105, 0, 1864, 1865, 5, 3, 0, 0, 1865, 1867, 1, 0, 0, 0, 1866, 1852, 1, 0, 0, 0, 1866, 1862, 1, 0, 0, 0, 1867, 211, 1, 0, 0, 0, 1868, 1870, 5, 2, 0, 0, 1869, 1871, 5, 183, 0, 0, 1870, 1869, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1876, 1, 0, 0, 0, 1872, 1874, 3, 332, 166, 0, 1873, 1875, 5, 183, 0, 0, 1874, 1873, 1, 0, 0, 0, 1874, 1875, 1, 0, 0, 0, 1875, 1877, 1, 0, 0, 0, 1876, 1872, 1, 0, 0, 0, 1876, 1877, 1, 0, 0, 0, 1877, 1882, 1, 0, 0, 0, 1878, 1880, 3, 224, 112, 0, 1879, 1881, 5, 183, 0, 0, 1880, 1879, 1, 0, 0, 0, 1880, 1881, 1, 0, 0, 0, 1881, 1883, 1, 0, 0, 0, 1882, 1878, 1, 0, 0, 0, 1882, 1883, 1, 0, 0, 0, 1883, 1888, 1, 0, 0, 0, 1884, 1886, 3, 220, 110, 0, 1885, 1887, 5, 183, 0, 0, 1886, 1885, 1, 0, 0, 0, 1886, 1887, 1, 0, 0, 0, 1887, 1889, 1, 0, 0, 0, 1888, 1884, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 1890, 1, 0, 0, 0, 1890, 1891, 5, 3, 0, 0, 1891, 213, 1, 0, 0, 0, 1892, 1894, 3, 216, 108, 0, 1893, 1895, 5, 183, 0, 0, 1894, 1893, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1896, 1, 0, 0, 0, 1896, 1897, 3, 212, 106, 0, 1897, 215, 1, 0, 0, 0, 1898, 1900, 3, 352, 176, 0, 1899, 1901, 5, 183, 0, 0, 1900, 1899, 1, 0, 0, 0, 1900, 1901, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1904, 3, 356, 178, 0, 1903, 1905, 5, 183, 0, 0, 1904, 1903, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1907, 1, 0, 0, 0, 1906, 1908, 3, 218, 109, 0, 1907, 1906, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 1910, 1, 0, 0, 0, 1909, 1911, 5, 183, 0, 0, 1910, 1909, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1913, 3, 356, 178, 0, 1913, 1943, 1, 0, 0, 0, 1914, 1916, 3, 356, 178, 0, 1915, 1917, 5, 183, 0, 0, 1916, 1915, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1919, 1, 0, 0, 0, 1918, 1920, 3, 218, 109, 0, 1919, 1918, 1, 0, 0, 0, 1919, 1920, 1, 0, 0, 0, 1920, 1922, 1, 0, 0, 0, 1921, 1923, 5, 183, 0, 0, 1922, 1921, 1, 0, 0, 0, 1922, 1923, 1, 0, 0, 0, 1923, 1924, 1, 0, 0, 0, 1924, 1926, 3, 356, 178, 0, 1925, 1927, 5, 183, 0, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1929, 3, 354, 177, 0, 1929, 1943, 1, 0, 0, 0, 1930, 1932, 3, 356, 178, 0, 1931, 1933, 5, 183, 0, 0, 1932, 1931, 1, 0, 0, 0, 1932, 1933, 1, 0, 0, 0, 1933, 1935, 1, 0, 0, 0, 1934, 1936, 3, 218, 109, 0, 1935, 1934, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1938, 1, 0, 0, 0, 1937, 1939, 5, 183, 0, 0, 1938, 1937, 1, 0, 0, 0, 1938, 1939, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1941, 3, 356, 178, 0, 1941, 1943, 1, 0, 0, 0, 1942, 1898, 1, 0, 0, 0, 1942, 1914, 1, 0, 0, 0, 1942, 1930, 1, 0, 0, 0, 1943, 217, 1, 0, 0, 0, 1944, 1946, 5, 7, 0, 0, 1945, 1947, 5, 183, 0, 0, 1946, 1945, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 1952, 1, 0, 0, 0, 1948, 1950, 3, 332, 166, 0, 1949, 1951, 5, 183, 0, 0, 1950, 1949, 1, 0, 0, 0, 1950, 1951, 1, 0, 0, 0, 1951, 1953, 1, 0, 0, 0, 1952, 1948, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 1958, 1, 0, 0, 0, 1954, 1956, 3, 222, 111, 0, 1955, 1957, 5, 183, 0, 0, 1956, 1955, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1959, 1, 0, 0, 0, 1958, 1954, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 1964, 1, 0, 0, 0, 1960, 1962, 3, 226, 113, 0, 1961, 1963, 5, 183, 0, 0, 1962, 1961, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1965, 1, 0, 0, 0, 1964, 1960, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 1970, 1, 0, 0, 0, 1966, 1968, 3, 220, 110, 0, 1967, 1969, 5, 183, 0, 0, 1968, 1967, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 1971, 1, 0, 0, 0, 1970, 1966, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 5, 8, 0, 0, 1973, 219, 1, 0, 0, 0, 1974, 1976, 5, 9, 0, 0, 1975, 1977, 5, 183, 0, 0, 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 2011, 1, 0, 0, 0, 1978, 1980, 3, 340, 170, 0, 1979, 1981, 5, 183, 0, 0, 1980, 1979, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 1982, 1, 0, 0, 0, 1982, 1984, 5, 164, 0, 0, 1983, 1985, 5, 183, 0, 0, 1984, 1983, 1, 0, 0, 0, 1984, 1985, 1, 0, 0, 0, 1985, 1986, 1, 0, 0, 0, 1986, 1988, 3, 244, 122, 0, 1987, 1989, 5, 183, 0, 0, 1988, 1987, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 2008, 1, 0, 0, 0, 1990, 1992, 5, 4, 0, 0, 1991, 1993, 5, 183, 0, 0, 1992, 1991, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 1996, 3, 340, 170, 0, 1995, 1997, 5, 183, 0, 0, 1996, 1995, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 2000, 5, 164, 0, 0, 1999, 2001, 5, 183, 0, 0, 2000, 1999, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2004, 3, 244, 122, 0, 2003, 2005, 5, 183, 0, 0, 2004, 2003, 1, 0, 0, 0, 2004, 2005, 1, 0, 0, 0, 2005, 2007, 1, 0, 0, 0, 2006, 1990, 1, 0, 0, 0, 2007, 2010, 1, 0, 0, 0, 2008, 2006, 1, 0, 0, 0, 2008, 2009, 1, 0, 0, 0, 2009, 2012, 1, 0, 0, 0, 2010, 2008, 1, 0, 0, 0, 2011, 1978, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2014, 5, 10, 0, 0, 2014, 221, 1, 0, 0, 0, 2015, 2017, 5, 164, 0, 0, 2016, 2018, 5, 183, 0, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2033, 3, 242, 121, 0, 2020, 2022, 5, 183, 0, 0, 2021, 2020, 1, 0, 0, 0, 2021, 2022, 1, 0, 0, 0, 2022, 2023, 1, 0, 0, 0, 2023, 2025, 5, 11, 0, 0, 2024, 2026, 5, 164, 0, 0, 2025, 2024, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2028, 1, 0, 0, 0, 2027, 2029, 5, 183, 0, 0, 2028, 2027, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2030, 1, 0, 0, 0, 2030, 2032, 3, 242, 121, 0, 2031, 2021, 1, 0, 0, 0, 2032, 2035, 1, 0, 0, 0, 2033, 2031, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 223, 1, 0, 0, 0, 2035, 2033, 1, 0, 0, 0, 2036, 2038, 5, 164, 0, 0, 2037, 2039, 5, 183, 0, 0, 2038, 2037, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 2057, 3, 240, 120, 0, 2041, 2043, 5, 183, 0, 0, 2042, 2041, 1, 0, 0, 0, 2042, 2043, 1, 0, 0, 0, 2043, 2049, 1, 0, 0, 0, 2044, 2046, 5, 11, 0, 0, 2045, 2047, 5, 164, 0, 0, 2046, 2045, 1, 0, 0, 0, 2046, 2047, 1, 0, 0, 0, 2047, 2050, 1, 0, 0, 0, 2048, 2050, 5, 164, 0, 0, 2049, 2044, 1, 0, 0, 0, 2049, 2048, 1, 0, 0, 0, 2050, 2052, 1, 0, 0, 0, 2051, 2053, 5, 183, 0, 0, 2052, 2051, 1, 0, 0, 0, 2052, 2053, 1, 0, 0, 0, 2053, 2054, 1, 0, 0, 0, 2054, 2056, 3, 240, 120, 0, 2055, 2042, 1, 0, 0, 0, 2056, 2059, 1, 0, 0, 0, 2057, 2055, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 225, 1, 0, 0, 0, 2059, 2057, 1, 0, 0, 0, 2060, 2065, 5, 161, 0, 0, 2061, 2063, 5, 183, 0, 0, 2062, 2061, 1, 0, 0, 0, 2062, 2063, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2066, 3, 228, 114, 0, 2065, 2062, 1, 0, 0, 0, 2065, 2066, 1, 0, 0, 0, 2066, 2071, 1, 0, 0, 0, 2067, 2069, 5, 183, 0, 0, 2068, 2067, 1, 0, 0, 0, 2068, 2069, 1, 0, 0, 0, 2069, 2070, 1, 0, 0, 0, 2070, 2072, 3, 230, 115, 0, 2071, 2068, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2077, 1, 0, 0, 0, 2073, 2075, 5, 183, 0, 0, 2074, 2073, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2076, 1, 0, 0, 0, 2076, 2078, 3, 232, 116, 0, 2077, 2074, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 227, 1, 0, 0, 0, 2079, 2080, 5, 48, 0, 0, 2080, 2082, 5, 183, 0, 0, 2081, 2079, 1, 0, 0, 0, 2081, 2082, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2085, 5, 152, 0, 0, 2084, 2086, 5, 183, 0, 0, 2085, 2084, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2089, 5, 2, 0, 0, 2088, 2090, 5, 183, 0, 0, 2089, 2088, 1, 0, 0, 0, 2089, 2090, 1, 0, 0, 0, 2090, 2091, 1, 0, 0, 0, 2091, 2093, 3, 340, 170, 0, 2092, 2094, 5, 183, 0, 0, 2093, 2092, 1, 0, 0, 0, 2093, 2094, 1, 0, 0, 0, 2094, 2095, 1, 0, 0, 0, 2095, 2096, 5, 3, 0, 0, 2096, 2104, 1, 0, 0, 0, 2097, 2104, 5, 132, 0, 0, 2098, 2099, 5, 48, 0, 0, 2099, 2100, 5, 183, 0, 0, 2100, 2104, 5, 132, 0, 0, 2101, 2104, 5, 139, 0, 0, 2102, 2104, 5, 45, 0, 0, 2103, 2081, 1, 0, 0, 0, 2103, 2097, 1, 0, 0, 0, 2103, 2098, 1, 0, 0, 0, 2103, 2101, 1, 0, 0, 0, 2103, 2102, 1, 0, 0, 0, 2104, 229, 1, 0, 0, 0, 2105, 2107, 3, 236, 118, 0, 2106, 2105, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 2109, 1, 0, 0, 0, 2108, 2110, 5, 183, 0, 0, 2109, 2108, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2111, 1, 0, 0, 0, 2111, 2113, 5, 165, 0, 0, 2112, 2114, 5, 183, 0, 0, 2113, 2112, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2116, 1, 0, 0, 0, 2115, 2117, 3, 238, 119, 0, 2116, 2115, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 2120, 1, 0, 0, 0, 2118, 2120, 3, 342, 171, 0, 2119, 2106, 1, 0, 0, 0, 2119, 2118, 1, 0, 0, 0, 2120, 231, 1, 0, 0, 0, 2121, 2123, 5, 2, 0, 0, 2122, 2124, 5, 183, 0, 0, 2123, 2122, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 2127, 3, 332, 166, 0, 2126, 2128, 5, 183, 0, 0, 2127, 2126, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2129, 1, 0, 0, 0, 2129, 2131, 5, 4, 0, 0, 2130, 2132, 5, 183, 0, 0, 2131, 2130, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2145, 3, 332, 166, 0, 2134, 2136, 5, 183, 0, 0, 2135, 2134, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2137, 1, 0, 0, 0, 2137, 2139, 5, 11, 0, 0, 2138, 2140, 5, 183, 0, 0, 2139, 2138, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2143, 3, 202, 101, 0, 2142, 2144, 5, 183, 0, 0, 2143, 2142, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2146, 1, 0, 0, 0, 2145, 2135, 1, 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2166, 1, 0, 0, 0, 2147, 2149, 5, 183, 0, 0, 2148, 2147, 1, 0, 0, 0, 2148, 2149, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2152, 5, 11, 0, 0, 2151, 2153, 5, 183, 0, 0, 2152, 2151, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2156, 3, 234, 117, 0, 2155, 2157, 5, 183, 0, 0, 2156, 2155, 1, 0, 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 5, 4, 0, 0, 2159, 2161, 5, 183, 0, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2164, 3, 234, 117, 0, 2163, 2165, 5, 183, 0, 0, 2164, 2163, 1, 0, 0, 0, 2164, 2165, 1, 0, 0, 0, 2165, 2167, 1, 0, 0, 0, 2166, 2148, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2169, 5, 3, 0, 0, 2169, 233, 1, 0, 0, 0, 2170, 2172, 5, 9, 0, 0, 2171, 2173, 5, 183, 0, 0, 2172, 2171, 1, 0, 0, 0, 2172, 2173, 1, 0, 0, 0, 2173, 2175, 1, 0, 0, 0, 2174, 2176, 3, 190, 95, 0, 2175, 2174, 1, 0, 0, 0, 2175, 2176, 1, 0, 0, 0, 2176, 2178, 1, 0, 0, 0, 2177, 2179, 5, 183, 0, 0, 2178, 2177, 1, 0, 0, 0, 2178, 2179, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2181, 5, 10, 0, 0, 2181, 235, 1, 0, 0, 0, 2182, 2183, 5, 170, 0, 0, 2183, 237, 1, 0, 0, 0, 2184, 2185, 5, 170, 0, 0, 2185, 239, 1, 0, 0, 0, 2186, 2187, 3, 346, 173, 0, 2187, 241, 1, 0, 0, 0, 2188, 2189, 3, 346, 173, 0, 2189, 243, 1, 0, 0, 0, 2190, 2191, 3, 246, 123, 0, 2191, 245, 1, 0, 0, 0, 2192, 2199, 3, 248, 124, 0, 2193, 2194, 5, 183, 0, 0, 2194, 2195, 5, 119, 0, 0, 2195, 2196, 5, 183, 0, 0, 2196, 2198, 3, 248, 124, 0, 2197, 2193, 1, 0, 0, 0, 2198, 2201, 1, 0, 0, 0, 2199, 2197, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 247, 1, 0, 0, 0, 2201, 2199, 1, 0, 0, 0, 2202, 2209, 3, 250, 125, 0, 2203, 2204, 5, 183, 0, 0, 2204, 2205, 5, 153, 0, 0, 2205, 2206, 5, 183, 0, 0, 2206, 2208, 3, 250, 125, 0, 2207, 2203, 1, 0, 0, 0, 2208, 2211, 1, 0, 0, 0, 2209, 2207, 1, 0, 0, 0, 2209, 2210, 1, 0, 0, 0, 2210, 249, 1, 0, 0, 0, 2211, 2209, 1, 0, 0, 0, 2212, 2219, 3, 252, 126, 0, 2213, 2214, 5, 183, 0, 0, 2214, 2215, 5, 50, 0, 0, 2215, 2216, 5, 183, 0, 0, 2216, 2218, 3, 252, 126, 0, 2217, 2213, 1, 0, 0, 0, 2218, 2221, 1, 0, 0, 0, 2219, 2217, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 251, 1, 0, 0, 0, 2221, 2219, 1, 0, 0, 0, 2222, 2224, 5, 113, 0, 0, 2223, 2225, 5, 183, 0, 0, 2224, 2223, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2227, 1, 0, 0, 0, 2226, 2222, 1, 0, 0, 0, 2227, 2230, 1, 0, 0, 0, 2228, 2226, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2231, 1, 0, 0, 0, 2230, 2228, 1, 0, 0, 0, 2231, 2232, 3, 254, 127, 0, 2232, 253, 1, 0, 0, 0, 2233, 2243, 3, 258, 129, 0, 2234, 2236, 5, 183, 0, 0, 2235, 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2239, 3, 256, 128, 0, 2238, 2240, 5, 183, 0, 0, 2239, 2238, 1, 0, 0, 0, 2239, 2240, 1, 0, 0, 0, 2240, 2241, 1, 0, 0, 0, 2241, 2242, 3, 258, 129, 0, 2242, 2244, 1, 0, 0, 0, 2243, 2235, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2282, 1, 0, 0, 0, 2245, 2247, 3, 258, 129, 0, 2246, 2248, 5, 183, 0, 0, 2247, 2246, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2251, 5, 163, 0, 0, 2250, 2252, 5, 183, 0, 0, 2251, 2250, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 2253, 1, 0, 0, 0, 2253, 2254, 3, 258, 129, 0, 2254, 2255, 1, 0, 0, 0, 2255, 2256, 6, 127, -1, 0, 2256, 2282, 1, 0, 0, 0, 2257, 2259, 3, 258, 129, 0, 2258, 2260, 5, 183, 0, 0, 2259, 2258, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2261, 1, 0, 0, 0, 2261, 2263, 3, 256, 128, 0, 2262, 2264, 5, 183, 0, 0, 2263, 2262, 1, 0, 0, 0, 2263, 2264, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2275, 3, 258, 129, 0, 2266, 2268, 5, 183, 0, 0, 2267, 2266, 1, 0, 0, 0, 2267, 2268, 1, 0, 0, 0, 2268, 2269, 1, 0, 0, 0, 2269, 2271, 3, 256, 128, 0, 2270, 2272, 5, 183, 0, 0, 2271, 2270, 1, 0, 0, 0, 2271, 2272, 1, 0, 0, 0, 2272, 2273, 1, 0, 0, 0, 2273, 2274, 3, 258, 129, 0, 2274, 2276, 1, 0, 0, 0, 2275, 2267, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2275, 1, 0, 0, 0, 2277, 2278, 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 2280, 6, 127, -1, 0, 2280, 2282, 1, 0, 0, 0, 2281, 2233, 1, 0, 0, 0, 2281, 2245, 1, 0, 0, 0, 2281, 2257, 1, 0, 0, 0, 2282, 255, 1, 0, 0, 0, 2283, 2284, 7, 2, 0, 0, 2284, 257, 1, 0, 0, 0, 2285, 2296, 3, 260, 130, 0, 2286, 2288, 5, 183, 0, 0, 2287, 2286, 1, 0, 0, 0, 2287, 2288, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, 0, 2289, 2291, 5, 11, 0, 0, 2290, 2292, 5, 183, 0, 0, 2291, 2290, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2293, 1, 0, 0, 0, 2293, 2295, 3, 260, 130, 0, 2294, 2287, 1, 0, 0, 0, 2295, 2298, 1, 0, 0, 0, 2296, 2294, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 259, 1, 0, 0, 0, 2298, 2296, 1, 0, 0, 0, 2299, 2310, 3, 262, 131, 0, 2300, 2302, 5, 183, 0, 0, 2301, 2300, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2303, 1, 0, 0, 0, 2303, 2305, 5, 17, 0, 0, 2304, 2306, 5, 183, 0, 0, 2305, 2304, 1, 0, 0, 0, 2305, 2306, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2309, 3, 262, 131, 0, 2308, 2301, 1, 0, 0, 0, 2309, 2312, 1, 0, 0, 0, 2310, 2308, 1, 0, 0, 0, 2310, 2311, 1, 0, 0, 0, 2311, 261, 1, 0, 0, 0, 2312, 2310, 1, 0, 0, 0, 2313, 2325, 3, 266, 133, 0, 2314, 2316, 5, 183, 0, 0, 2315, 2314, 1, 0, 0, 0, 2315, 2316, 1, 0, 0, 0, 2316, 2317, 1, 0, 0, 0, 2317, 2319, 3, 264, 132, 0, 2318, 2320, 5, 183, 0, 0, 2319, 2318, 1, 0, 0, 0, 2319, 2320, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2322, 3, 266, 133, 0, 2322, 2324, 1, 0, 0, 0, 2323, 2315, 1, 0, 0, 0, 2324, 2327, 1, 0, 0, 0, 2325, 2323, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 263, 1, 0, 0, 0, 2327, 2325, 1, 0, 0, 0, 2328, 2329, 7, 3, 0, 0, 2329, 265, 1, 0, 0, 0, 2330, 2342, 3, 270, 135, 0, 2331, 2333, 5, 183, 0, 0, 2332, 2331, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2336, 3, 268, 134, 0, 2335, 2337, 5, 183, 0, 0, 2336, 2335, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 2339, 3, 270, 135, 0, 2339, 2341, 1, 0, 0, 0, 2340, 2332, 1, 0, 0, 0, 2341, 2344, 1, 0, 0, 0, 2342, 2340, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 267, 1, 0, 0, 0, 2344, 2342, 1, 0, 0, 0, 2345, 2346, 7, 4, 0, 0, 2346, 269, 1, 0, 0, 0, 2347, 2359, 3, 274, 137, 0, 2348, 2350, 5, 183, 0, 0, 2349, 2348, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2351, 1, 0, 0, 0, 2351, 2353, 3, 272, 136, 0, 2352, 2354, 5, 183, 0, 0, 2353, 2352, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2356, 3, 274, 137, 0, 2356, 2358, 1, 0, 0, 0, 2357, 2349, 1, 0, 0, 0, 2358, 2361, 1, 0, 0, 0, 2359, 2357, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 271, 1, 0, 0, 0, 2361, 2359, 1, 0, 0, 0, 2362, 2363, 7, 5, 0, 0, 2363, 273, 1, 0, 0, 0, 2364, 2375, 3, 276, 138, 0, 2365, 2367, 5, 183, 0, 0, 2366, 2365, 1, 0, 0, 0, 2366, 2367, 1, 0, 0, 0, 2367, 2368, 1, 0, 0, 0, 2368, 2370, 5, 23, 0, 0, 2369, 2371, 5, 183, 0, 0, 2370, 2369, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2374, 3, 276, 138, 0, 2373, 2366, 1, 0, 0, 0, 2374, 2377, 1, 0, 0, 0, 2375, 2373, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 275, 1, 0, 0, 0, 2377, 2375, 1, 0, 0, 0, 2378, 2386, 3, 286, 143, 0, 2379, 2387, 3, 280, 140, 0, 2380, 2382, 3, 278, 139, 0, 2381, 2380, 1, 0, 0, 0, 2382, 2383, 1, 0, 0, 0, 2383, 2381, 1, 0, 0, 0, 2383, 2384, 1, 0, 0, 0, 2384, 2387, 1, 0, 0, 0, 2385, 2387, 3, 284, 142, 0, 2386, 2379, 1, 0, 0, 0, 2386, 2381, 1, 0, 0, 0, 2386, 2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 277, 1, 0, 0, 0, 2388, 2389, 5, 183, 0, 0, 2389, 2391, 5, 96, 0, 0, 2390, 2392, 5, 183, 0, 0, 2391, 2390, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2408, 3, 288, 144, 0, 2394, 2395, 5, 7, 0, 0, 2395, 2396, 3, 244, 122, 0, 2396, 2397, 5, 8, 0, 0, 2397, 2408, 1, 0, 0, 0, 2398, 2400, 5, 7, 0, 0, 2399, 2401, 3, 244, 122, 0, 2400, 2399, 1, 0, 0, 0, 2400, 2401, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2404, 7, 6, 0, 0, 2403, 2405, 3, 244, 122, 0, 2404, 2403, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2406, 1, 0, 0, 0, 2406, 2408, 5, 8, 0, 0, 2407, 2388, 1, 0, 0, 0, 2407, 2394, 1, 0, 0, 0, 2407, 2398, 1, 0, 0, 0, 2408, 279, 1, 0, 0, 0, 2409, 2421, 3, 282, 141, 0, 2410, 2411, 5, 183, 0, 0, 2411, 2412, 5, 134, 0, 0, 2412, 2413, 5, 183, 0, 0, 2413, 2421, 5, 150, 0, 0, 2414, 2415, 5, 183, 0, 0, 2415, 2416, 5, 81, 0, 0, 2416, 2417, 5, 183, 0, 0, 2417, 2421, 5, 150, 0, 0, 2418, 2419, 5, 183, 0, 0, 2419, 2421, 5, 65, 0, 0, 2420, 2409, 1, 0, 0, 0, 2420, 2410, 1, 0, 0, 0, 2420, 2414, 1, 0, 0, 0, 2420, 2418, 1, 0, 0, 0, 2421, 2423, 1, 0, 0, 0, 2422, 2424, 5, 183, 0, 0, 2423, 2422, 1, 0, 0, 0, 2423, 2424, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2426, 3, 288, 144, 0, 2426, 281, 1, 0, 0, 0, 2427, 2429, 5, 183, 0, 0, 2428, 2427, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2431, 5, 24, 0, 0, 2431, 283, 1, 0, 0, 0, 2432, 2433, 5, 183, 0, 0, 2433, 2434, 5, 99, 0, 0, 2434, 2435, 5, 183, 0, 0, 2435, 2443, 5, 115, 0, 0, 2436, 2437, 5, 183, 0, 0, 2437, 2438, 5, 99, 0, 0, 2438, 2439, 5, 183, 0, 0, 2439, 2440, 5, 113, 0, 0, 2440, 2441, 5, 183, 0, 0, 2441, 2443, 5, 115, 0, 0, 2442, 2432, 1, 0, 0, 0, 2442, 2436, 1, 0, 0, 0, 2443, 285, 1, 0, 0, 0, 2444, 2446, 5, 166, 0, 0, 2445, 2447, 5, 183, 0, 0, 2446, 2445, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2449, 1, 0, 0, 0, 2448, 2444, 1, 0, 0, 0, 2449, 2452, 1, 0, 0, 0, 2450, 2448, 1, 0, 0, 0, 2450, 2451, 1, 0, 0, 0, 2451, 2453, 1, 0, 0, 0, 2452, 2450, 1, 0, 0, 0, 2453, 2458, 3, 288, 144, 0, 2454, 2456, 5, 183, 0, 0, 2455, 2454, 1, 0, 0, 0, 2455, 2456, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 2459, 5, 167, 0, 0, 2458, 2455, 1, 0, 0, 0, 2458, 2459, 1, 0, 0, 0, 2459, 287, 1, 0, 0, 0, 2460, 2467, 3, 290, 145, 0, 2461, 2463, 5, 183, 0, 0, 2462, 2461, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2464, 1, 0, 0, 0, 2464, 2466, 3, 326, 163, 0, 2465, 2462, 1, 0, 0, 0, 2466, 2469, 1, 0, 0, 0, 2467, 2465, 1, 0, 0, 0, 2467, 2468, 1, 0, 0, 0, 2468, 289, 1, 0, 0, 0, 2469, 2467, 1, 0, 0, 0, 2470, 2480, 3, 298, 149, 0, 2471, 2480, 3, 336, 168, 0, 2472, 2480, 3, 328, 164, 0, 2473, 2480, 3, 310, 155, 0, 2474, 2480, 3, 312, 156, 0, 2475, 2480, 3, 322, 161, 0, 2476, 2480, 3, 324, 162, 0, 2477, 2480, 3, 332, 166, 0, 2478, 2480, 3, 292, 146, 0, 2479, 2470, 1, 0, 0, 0, 2479, 2471, 1, 0, 0, 0, 2479, 2472, 1, 0, 0, 0, 2479, 2473, 1, 0, 0, 0, 2479, 2474, 1, 0, 0, 0, 2479, 2475, 1, 0, 0, 0, 2479, 2476, 1, 0, 0, 0, 2479, 2477, 1, 0, 0, 0, 2479, 2478, 1, 0, 0, 0, 2480, 291, 1, 0, 0, 0, 2481, 2483, 5, 48, 0, 0, 2482, 2484, 5, 183, 0, 0, 2483, 2482, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2487, 5, 2, 0, 0, 2486, 2488, 5, 183, 0, 0, 2487, 2486, 1, 0, 0, 0, 2487, 2488, 1, 0, 0, 0, 2488, 2489, 1, 0, 0, 0, 2489, 2491, 3, 294, 147, 0, 2490, 2492, 5, 183, 0, 0, 2491, 2490, 1, 0, 0, 0, 2491, 2492, 1, 0, 0, 0, 2492, 2493, 1, 0, 0, 0, 2493, 2494, 5, 3, 0, 0, 2494, 2538, 1, 0, 0, 0, 2495, 2497, 5, 46, 0, 0, 2496, 2498, 5, 183, 0, 0, 2497, 2496, 1, 0, 0, 0, 2497, 2498, 1, 0, 0, 0, 2498, 2499, 1, 0, 0, 0, 2499, 2501, 5, 2, 0, 0, 2500, 2502, 5, 183, 0, 0, 2501, 2500, 1, 0, 0, 0, 2501, 2502, 1, 0, 0, 0, 2502, 2503, 1, 0, 0, 0, 2503, 2505, 3, 294, 147, 0, 2504, 2506, 5, 183, 0, 0, 2505, 2504, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2507, 1, 0, 0, 0, 2507, 2508, 5, 3, 0, 0, 2508, 2538, 1, 0, 0, 0, 2509, 2511, 5, 114, 0, 0, 2510, 2512, 5, 183, 0, 0, 2511, 2510, 1, 0, 0, 0, 2511, 2512, 1, 0, 0, 0, 2512, 2513, 1, 0, 0, 0, 2513, 2515, 5, 2, 0, 0, 2514, 2516, 5, 183, 0, 0, 2515, 2514, 1, 0, 0, 0, 2515, 2516, 1, 0, 0, 0, 2516, 2517, 1, 0, 0, 0, 2517, 2519, 3, 294, 147, 0, 2518, 2520, 5, 183, 0, 0, 2519, 2518, 1, 0, 0, 0, 2519, 2520, 1, 0, 0, 0, 2520, 2521, 1, 0, 0, 0, 2521, 2522, 5, 3, 0, 0, 2522, 2538, 1, 0, 0, 0, 2523, 2525, 5, 154, 0, 0, 2524, 2526, 5, 183, 0, 0, 2525, 2524, 1, 0, 0, 0, 2525, 2526, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2529, 5, 2, 0, 0, 2528, 2530, 5, 183, 0, 0, 2529, 2528, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2531, 1, 0, 0, 0, 2531, 2533, 3, 294, 147, 0, 2532, 2534, 5, 183, 0, 0, 2533, 2532, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2535, 1, 0, 0, 0, 2535, 2536, 5, 3, 0, 0, 2536, 2538, 1, 0, 0, 0, 2537, 2481, 1, 0, 0, 0, 2537, 2495, 1, 0, 0, 0, 2537, 2509, 1, 0, 0, 0, 2537, 2523, 1, 0, 0, 0, 2538, 293, 1, 0, 0, 0, 2539, 2540, 3, 296, 148, 0, 2540, 2541, 5, 183, 0, 0, 2541, 2542, 3, 202, 101, 0, 2542, 295, 1, 0, 0, 0, 2543, 2544, 3, 332, 166, 0, 2544, 2545, 5, 183, 0, 0, 2545, 2546, 5, 96, 0, 0, 2546, 2547, 5, 183, 0, 0, 2547, 2548, 3, 244, 122, 0, 2548, 297, 1, 0, 0, 0, 2549, 2556, 3, 334, 167, 0, 2550, 2556, 5, 168, 0, 0, 2551, 2556, 3, 300, 150, 0, 2552, 2556, 5, 115, 0, 0, 2553, 2556, 3, 302, 151, 0, 2554, 2556, 3, 306, 153, 0, 2555, 2549, 1, 0, 0, 0, 2555, 2550, 1, 0, 0, 0, 2555, 2551, 1, 0, 0, 0, 2555, 2552, 1, 0, 0, 0, 2555, 2553, 1, 0, 0, 0, 2555, 2554, 1, 0, 0, 0, 2556, 299, 1, 0, 0, 0, 2557, 2558, 7, 7, 0, 0, 2558, 301, 1, 0, 0, 0, 2559, 2561, 5, 7, 0, 0, 2560, 2562, 5, 183, 0, 0, 2561, 2560, 1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2576, 1, 0, 0, 0, 2563, 2565, 3, 244, 122, 0, 2564, 2566, 5, 183, 0, 0, 2565, 2564, 1, 0, 0, 0, 2565, 2566, 1, 0, 0, 0, 2566, 2573, 1, 0, 0, 0, 2567, 2569, 3, 304, 152, 0, 2568, 2570, 5, 183, 0, 0, 2569, 2568, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 2572, 1, 0, 0, 0, 2571, 2567, 1, 0, 0, 0, 2572, 2575, 1, 0, 0, 0, 2573, 2571, 1, 0, 0, 0, 2573, 2574, 1, 0, 0, 0, 2574, 2577, 1, 0, 0, 0, 2575, 2573, 1, 0, 0, 0, 2576, 2563, 1, 0, 0, 0, 2576, 2577, 1, 0, 0, 0, 2577, 2578, 1, 0, 0, 0, 2578, 2579, 5, 8, 0, 0, 2579, 303, 1, 0, 0, 0, 2580, 2582, 5, 4, 0, 0, 2581, 2583, 5, 183, 0, 0, 2582, 2581, 1, 0, 0, 0, 2582, 2583, 1, 0, 0, 0, 2583, 2585, 1, 0, 0, 0, 2584, 2586, 3, 244, 122, 0, 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 305, 1, 0, 0, 0, 2587, 2589, 5, 9, 0, 0, 2588, 2590, 5, 183, 0, 0, 2589, 2588, 1, 0, 0, 0, 2589, 2590, 1, 0, 0, 0, 2590, 2591, 1, 0, 0, 0, 2591, 2593, 3, 308, 154, 0, 2592, 2594, 5, 183, 0, 0, 2593, 2592, 1, 0, 0, 0, 2593, 2594, 1, 0, 0, 0, 2594, 2605, 1, 0, 0, 0, 2595, 2597, 5, 4, 0, 0, 2596, 2598, 5, 183, 0, 0, 2597, 2596, 1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2601, 3, 308, 154, 0, 2600, 2602, 5, 183, 0, 0, 2601, 2600, 1, 0, 0, 0, 2601, 2602, 1, 0, 0, 0, 2602, 2604, 1, 0, 0, 0, 2603, 2595, 1, 0, 0, 0, 2604, 2607, 1, 0, 0, 0, 2605, 2603, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 2608, 1, 0, 0, 0, 2607, 2605, 1, 0, 0, 0, 2608, 2609, 5, 10, 0, 0, 2609, 307, 1, 0, 0, 0, 2610, 2613, 3, 348, 174, 0, 2611, 2613, 5, 168, 0, 0, 2612, 2610, 1, 0, 0, 0, 2612, 2611, 1, 0, 0, 0, 2613, 2615, 1, 0, 0, 0, 2614, 2616, 5, 183, 0, 0, 2615, 2614, 1, 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 2617, 1, 0, 0, 0, 2617, 2619, 5, 164, 0, 0, 2618, 2620, 5, 183, 0, 0, 2619, 2618, 1, 0, 0, 0, 2619, 2620, 1, 0, 0, 0, 2620, 2621, 1, 0, 0, 0, 2621, 2622, 3, 244, 122, 0, 2622, 309, 1, 0, 0, 0, 2623, 2625, 5, 2, 0, 0, 2624, 2626, 5, 183, 0, 0, 2625, 2624, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 2627, 1, 0, 0, 0, 2627, 2629, 3, 244, 122, 0, 2628, 2630, 5, 183, 0, 0, 2629, 2628, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 2632, 5, 3, 0, 0, 2632, 311, 1, 0, 0, 0, 2633, 2635, 5, 67, 0, 0, 2634, 2636, 5, 183, 0, 0, 2635, 2634, 1, 0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2639, 5, 2, 0, 0, 2638, 2640, 5, 183, 0, 0, 2639, 2638, 1, 0, 0, 0, 2639, 2640, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2643, 5, 161, 0, 0, 2642, 2644, 5, 183, 0, 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2645, 1, 0, 0, 0, 2645, 2711, 5, 3, 0, 0, 2646, 2648, 5, 59, 0, 0, 2647, 2649, 5, 183, 0, 0, 2648, 2647, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2650, 1, 0, 0, 0, 2650, 2652, 5, 2, 0, 0, 2651, 2653, 5, 183, 0, 0, 2652, 2651, 1, 0, 0, 0, 2652, 2653, 1, 0, 0, 0, 2653, 2654, 1, 0, 0, 0, 2654, 2656, 3, 316, 158, 0, 2655, 2657, 5, 183, 0, 0, 2656, 2655, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2668, 1, 0, 0, 0, 2658, 2660, 5, 51, 0, 0, 2659, 2661, 5, 183, 0, 0, 2660, 2659, 1, 0, 0, 0, 2660, 2661, 1, 0, 0, 0, 2661, 2662, 1, 0, 0, 0, 2662, 2669, 3, 114, 57, 0, 2663, 2665, 5, 4, 0, 0, 2664, 2666, 5, 183, 0, 0, 2665, 2664, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2667, 1, 0, 0, 0, 2667, 2669, 3, 316, 158, 0, 2668, 2658, 1, 0, 0, 0, 2668, 2663, 1, 0, 0, 0, 2669, 2671, 1, 0, 0, 0, 2670, 2672, 5, 183, 0, 0, 2671, 2670, 1, 0, 0, 0, 2671, 2672, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2674, 5, 3, 0, 0, 2674, 2711, 1, 0, 0, 0, 2675, 2677, 3, 314, 157, 0, 2676, 2678, 5, 183, 0, 0, 2677, 2676, 1, 0, 0, 0, 2677, 2678, 1, 0, 0, 0, 2678, 2679, 1, 0, 0, 0, 2679, 2681, 5, 2, 0, 0, 2680, 2682, 5, 183, 0, 0, 2681, 2680, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2687, 1, 0, 0, 0, 2683, 2685, 5, 77, 0, 0, 2684, 2686, 5, 183, 0, 0, 2685, 2684, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 2688, 1, 0, 0, 0, 2687, 2683, 1, 0, 0, 0, 2687, 2688, 1, 0, 0, 0, 2688, 2706, 1, 0, 0, 0, 2689, 2691, 3, 316, 158, 0, 2690, 2692, 5, 183, 0, 0, 2691, 2690, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2703, 1, 0, 0, 0, 2693, 2695, 5, 4, 0, 0, 2694, 2696, 5, 183, 0, 0, 2695, 2694, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 2697, 1, 0, 0, 0, 2697, 2699, 3, 316, 158, 0, 2698, 2700, 5, 183, 0, 0, 2699, 2698, 1, 0, 0, 0, 2699, 2700, 1, 0, 0, 0, 2700, 2702, 1, 0, 0, 0, 2701, 2693, 1, 0, 0, 0, 2702, 2705, 1, 0, 0, 0, 2703, 2701, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 2707, 1, 0, 0, 0, 2705, 2703, 1, 0, 0, 0, 2706, 2689, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 2708, 1, 0, 0, 0, 2708, 2709, 5, 3, 0, 0, 2709, 2711, 1, 0, 0, 0, 2710, 2633, 1, 0, 0, 0, 2710, 2646, 1, 0, 0, 0, 2710, 2675, 1, 0, 0, 0, 2711, 313, 1, 0, 0, 0, 2712, 2713, 3, 348, 174, 0, 2713, 315, 1, 0, 0, 0, 2714, 2716, 3, 348, 174, 0, 2715, 2717, 5, 183, 0, 0, 2716, 2715, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2719, 5, 164, 0, 0, 2719, 2721, 5, 6, 0, 0, 2720, 2722, 5, 183, 0, 0, 2721, 2720, 1, 0, 0, 0, 2721, 2722, 1, 0, 0, 0, 2722, 2724, 1, 0, 0, 0, 2723, 2714, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2725, 1, 0, 0, 0, 2725, 2728, 3, 244, 122, 0, 2726, 2728, 3, 318, 159, 0, 2727, 2723, 1, 0, 0, 0, 2727, 2726, 1, 0, 0, 0, 2728, 317, 1, 0, 0, 0, 2729, 2731, 3, 320, 160, 0, 2730, 2732, 5, 183, 0, 0, 2731, 2730, 1, 0, 0, 0, 2731, 2732, 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 2734, 5, 166, 0, 0, 2734, 2736, 5, 15, 0, 0, 2735, 2737, 5, 183, 0, 0, 2736, 2735, 1, 0, 0, 0, 2736, 2737, 1, 0, 0, 0, 2737, 2738, 1, 0, 0, 0, 2738, 2740, 3, 244, 122, 0, 2739, 2741, 5, 183, 0, 0, 2740, 2739, 1, 0, 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 319, 1, 0, 0, 0, 2742, 2767, 3, 348, 174, 0, 2743, 2745, 5, 2, 0, 0, 2744, 2746, 5, 183, 0, 0, 2745, 2744, 1, 0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 2747, 1, 0, 0, 0, 2747, 2749, 3, 348, 174, 0, 2748, 2750, 5, 183, 0, 0, 2749, 2748, 1, 0, 0, 0, 2749, 2750, 1, 0, 0, 0, 2750, 2761, 1, 0, 0, 0, 2751, 2753, 5, 4, 0, 0, 2752, 2754, 5, 183, 0, 0, 2753, 2752, 1, 0, 0, 0, 2753, 2754, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, 2755, 2757, 3, 348, 174, 0, 2756, 2758, 5, 183, 0, 0, 2757, 2756, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2760, 1, 0, 0, 0, 2759, 2751, 1, 0, 0, 0, 2760, 2763, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 2764, 1, 0, 0, 0, 2763, 2761, 1, 0, 0, 0, 2764, 2765, 5, 3, 0, 0, 2765, 2767, 1, 0, 0, 0, 2766, 2742, 1, 0, 0, 0, 2766, 2743, 1, 0, 0, 0, 2767, 321, 1, 0, 0, 0, 2768, 2773, 3, 212, 106, 0, 2769, 2771, 5, 183, 0, 0, 2770, 2769, 1, 0, 0, 0, 2770, 2771, 1, 0, 0, 0, 2771, 2772, 1, 0, 0, 0, 2772, 2774, 3, 214, 107, 0, 2773, 2770, 1, 0, 0, 0, 2774, 2775, 1, 0, 0, 0, 2775, 2773, 1, 0, 0, 0, 2775, 2776, 1, 0, 0, 0, 2776, 323, 1, 0, 0, 0, 2777, 2779, 7, 8, 0, 0, 2778, 2780, 5, 183, 0, 0, 2779, 2778, 1, 0, 0, 0, 2779, 2780, 1, 0, 0, 0, 2780, 2781, 1, 0, 0, 0, 2781, 2783, 5, 9, 0, 0, 2782, 2784, 5, 183, 0, 0, 2783, 2782, 1, 0, 0, 0, 2783, 2784, 1, 0, 0, 0, 2784, 2785, 1, 0, 0, 0, 2785, 2787, 5, 106, 0, 0, 2786, 2788, 5, 183, 0, 0, 2787, 2786, 1, 0, 0, 0, 2787, 2788, 1, 0, 0, 0, 2788, 2789, 1, 0, 0, 0, 2789, 2794, 3, 204, 102, 0, 2790, 2792, 5, 183, 0, 0, 2791, 2790, 1, 0, 0, 0, 2791, 2792, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 2795, 3, 202, 101, 0, 2794, 2791, 1, 0, 0, 0, 2794, 2795, 1, 0, 0, 0, 2795, 2800, 1, 0, 0, 0, 2796, 2798, 5, 183, 0, 0, 2797, 2796, 1, 0, 0, 0, 2797, 2798, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 2801, 3, 166, 83, 0, 2800, 2797, 1, 0, 0, 0, 2800, 2801, 1, 0, 0, 0, 2801, 2803, 1, 0, 0, 0, 2802, 2804, 5, 183, 0, 0, 2803, 2802, 1, 0, 0, 0, 2803, 2804, 1, 0, 0, 0, 2804, 2805, 1, 0, 0, 0, 2805, 2806, 5, 10, 0, 0, 2806, 325, 1, 0, 0, 0, 2807, 2809, 5, 5, 0, 0, 2808, 2810, 5, 183, 0, 0, 2809, 2808, 1, 0, 0, 0, 2809, 2810, 1, 0, 0, 0, 2810, 2813, 1, 0, 0, 0, 2811, 2814, 3, 340, 170, 0, 2812, 2814, 5, 161, 0, 0, 2813, 2811, 1, 0, 0, 0, 2813, 2812, 1, 0, 0, 0, 2814, 327, 1, 0, 0, 0, 2815, 2820, 5, 58, 0, 0, 2816, 2818, 5, 183, 0, 0, 2817, 2816, 1, 0, 0, 0, 2817, 2818, 1, 0, 0, 0, 2818, 2819, 1, 0, 0, 0, 2819, 2821, 3, 330, 165, 0, 2820, 2817, 1, 0, 0, 0, 2821, 2822, 1, 0, 0, 0, 2822, 2820, 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2838, 1, 0, 0, 0, 2824, 2826, 5, 58, 0, 0, 2825, 2827, 5, 183, 0, 0, 2826, 2825, 1, 0, 0, 0, 2826, 2827, 1, 0, 0, 0, 2827, 2828, 1, 0, 0, 0, 2828, 2833, 3, 244, 122, 0, 2829, 2831, 5, 183, 0, 0, 2830, 2829, 1, 0, 0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 2834, 3, 330, 165, 0, 2833, 2830, 1, 0, 0, 0, 2834, 2835, 1, 0, 0, 0, 2835, 2833, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2838, 1, 0, 0, 0, 2837, 2815, 1, 0, 0, 0, 2837, 2824, 1, 0, 0, 0, 2838, 2847, 1, 0, 0, 0, 2839, 2841, 5, 183, 0, 0, 2840, 2839, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 2842, 1, 0, 0, 0, 2842, 2844, 5, 79, 0, 0, 2843, 2845, 5, 183, 0, 0, 2844, 2843, 1, 0, 0, 0, 2844, 2845, 1, 0, 0, 0, 2845, 2846, 1, 0, 0, 0, 2846, 2848, 3, 244, 122, 0, 2847, 2840, 1, 0, 0, 0, 2847, 2848, 1, 0, 0, 0, 2848, 2850, 1, 0, 0, 0, 2849, 2851, 5, 183, 0, 0, 2850, 2849, 1, 0, 0, 0, 2850, 2851, 1, 0, 0, 0, 2851, 2852, 1, 0, 0, 0, 2852, 2853, 5, 80, 0, 0, 2853, 329, 1, 0, 0, 0, 2854, 2856, 5, 148, 0, 0, 2855, 2857, 5, 183, 0, 0, 2856, 2855, 1, 0, 0, 0, 2856, 2857, 1, 0, 0, 0, 2857, 2858, 1, 0, 0, 0, 2858, 2860, 3, 244, 122, 0, 2859, 2861, 5, 183, 0, 0, 2860, 2859, 1, 0, 0, 0, 2860, 2861, 1, 0, 0, 0, 2861, 2862, 1, 0, 0, 0, 2862, 2864, 5, 137, 0, 0, 2863, 2865, 5, 183, 0, 0, 2864, 2863, 1, 0, 0, 0, 2864, 2865, 1, 0, 0, 0, 2865, 2866, 1, 0, 0, 0, 2866, 2867, 3, 244, 122, 0, 2867, 331, 1, 0, 0, 0, 2868, 2869, 3, 348, 174, 0, 2869, 333, 1, 0, 0, 0, 2870, 2873, 3, 344, 172, 0, 2871, 2873, 3, 342, 171, 0, 2872, 2870, 1, 0, 0, 0, 2872, 2871, 1, 0, 0, 0, 2873, 335, 1, 0, 0, 0, 2874, 2877, 5, 25, 0, 0, 2875, 2878, 3, 348, 174, 0, 2876, 2878, 5, 170, 0, 0, 2877, 2875, 1, 0, 0, 0, 2877, 2876, 1, 0, 0, 0, 2878, 337, 1, 0, 0, 0, 2879, 2881, 3, 290, 145, 0, 2880, 2882, 5, 183, 0, 0, 2881, 2880, 1, 0, 0, 0, 2881, 2882, 1, 0, 0, 0, 2882, 2883, 1, 0, 0, 0, 2883, 2884, 3, 326, 163, 0, 2884, 339, 1, 0, 0, 0, 2885, 2886, 3, 346, 173, 0, 2886, 341, 1, 0, 0, 0, 2887, 2888, 5, 170, 0, 0, 2888, 343, 1, 0, 0, 0, 2889, 2890, 7, 9, 0, 0, 2890, 345, 1, 0, 0, 0, 2891, 2892, 3, 348, 174, 0, 2892, 347, 1, 0, 0, 0, 2893, 2899, 5, 179, 0, 0, 2894, 2895, 5, 182, 0, 0, 2895, 2899, 6, 174, -1, 0, 2896, 2899, 5, 171, 0, 0, 2897, 2899, 3, 350, 175, 0, 2898, 2893, 1, 0, 0, 0, 2898, 2894, 1, 0, 0, 0, 2898, 2896, 1, 0, 0, 0, 2898, 2897, 1, 0, 0, 0, 2899, 349, 1, 0, 0, 0, 2900, 2901, 7, 10, 0, 0, 2901, 351, 1, 0, 0, 0, 2902, 2903, 7, 11, 0, 0, 2903, 353, 1, 0, 0, 0, 2904, 2905, 7, 12, 0, 0, 2905, 355, 1, 0, 0, 0, 2906, 2907, 7, 13, 0, 0, 2907, 357, 1, 0, 0, 0, 495, 360, 364, 369, 373, 378, 381, 385, 388, 412, 418, 425, 429, 433, 437, 440, 444, 448, 452, 457, 461, 463, 470, 474, 483, 488, 498, 502, 506, 511, 524, 528, 536, 540, 544, 548, 556, 560, 564, 568, 583, 588, 594, 598, 601, 604, 610, 614, 619, 622, 627, 631, 635, 640, 655, 659, 666, 686, 690, 693, 696, 699, 702, 706, 711, 715, 725, 729, 734, 739, 744, 750, 754, 758, 763, 770, 774, 778, 781, 798, 802, 806, 810, 814, 817, 820, 828, 837, 841, 846, 850, 854, 858, 862, 864, 868, 872, 874, 882, 887, 891, 895, 899, 903, 907, 912, 930, 937, 950, 957, 973, 977, 986, 994, 997, 1007, 1010, 1018, 1021, 1027, 1030, 1036, 1051, 1069, 1076, 1083, 1094, 1117, 1126, 1132, 1136, 1141, 1150, 1154, 1159, 1165, 1171, 1177, 1181, 1185, 1191, 1195, 1199, 1205, 1209, 1213, 1219, 1223, 1227, 1231, 1235, 1241, 1245, 1249, 1253, 1257, 1267, 1273, 1280, 1285, 1291, 1296, 1313, 1319, 1325, 1329, 1333, 1342, 1356, 1361, 1366, 1370, 1375, 1381, 1386, 1389, 1393, 1397, 1401, 1407, 1411, 1416, 1421, 1425, 1428, 1430, 1434, 1438, 1444, 1448, 1453, 1457, 1466, 1472, 1480, 1484, 1488, 1492, 1499, 1503, 1507, 1511, 1514, 1517, 1524, 1530, 1534, 1539, 1546, 1549, 1552, 1557, 1561, 1565, 1570, 1574, 1583, 1587, 1592, 1606, 1608, 1610, 1615, 1625, 1631, 1638, 1651, 1655, 1659, 1663, 1668, 1673, 1677, 1681, 1685, 1689, 1693, 1699, 1703, 1707, 1711, 1716, 1722, 1725, 1731, 1734, 1740, 1744, 1748, 1752, 1756, 1761, 1766, 1770, 1775, 1778, 1787, 1796, 1801, 1814, 1817, 1825, 1829, 1834, 1839, 1843, 1848, 1854, 1859, 1866, 1870, 1874, 1876, 1880, 1882, 1886, 1888, 1894, 1900, 1904, 1907, 1910, 1916, 1919, 1922, 1926, 1932, 1935, 1938, 1942, 1946, 1950, 1952, 1956, 1958, 1962, 1964, 1968, 1970, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004, 2008, 2011, 2017, 2021, 2025, 2028, 2033, 2038, 2042, 2046, 2049, 2052, 2057, 2062, 2065, 2068, 2071, 2074, 2077, 2081, 2085, 2089, 2093, 2103, 2106, 2109, 2113, 2116, 2119, 2123, 2127, 2131, 2135, 2139, 2143, 2145, 2148, 2152, 2156, 2160, 2164, 2166, 2172, 2175, 2178, 2199, 2209, 2219, 2224, 2228, 2235, 2239, 2243, 2247, 2251, 2259, 2263, 2267, 2271, 2277, 2281, 2287, 2291, 2296, 2301, 2305, 2310, 2315, 2319, 2325, 2332, 2336, 2342, 2349, 2353, 2359, 2366, 2370, 2375, 2383, 2386, 2391, 2400, 2404, 2407, 2420, 2423, 2428, 2442, 2446, 2450, 2455, 2458, 2462, 2467, 2479, 2483, 2487, 2491, 2497, 2501, 2505, 2511, 2515, 2519, 2525, 2529, 2533, 2537, 2555, 2561, 2565, 2569, 2573, 2576, 2582, 2585, 2589, 2593, 2597, 2601, 2605, 2612, 2615, 2619, 2625, 2629, 2635, 2639, 2643, 2648, 2652, 2656, 2660, 2665, 2668, 2671, 2677, 2681, 2685, 2687, 2691, 2695, 2699, 2703, 2706, 2710, 2716, 2721, 2723, 2727, 2731, 2736, 2740, 2745, 2749, 2753, 2757, 2761, 2766, 2770, 2775, 2779, 2783, 2787, 2791, 2794, 2797, 2800, 2803, 2809, 2813, 2817, 2822, 2826, 2830, 2835, 2837, 2840, 2844, 2847, 2850, 2856, 2860, 2864, 2872, 2877, 2881, 2898] \ No newline at end of file +[4, 1, 191, 3182, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 1, 0, 1, 0, 3, 0, 389, 8, 0, 1, 0, 1, 0, 3, 0, 393, 8, 0, 1, 0, 5, 0, 396, 8, 0, 10, 0, 12, 0, 399, 9, 0, 1, 0, 3, 0, 402, 8, 0, 1, 0, 1, 0, 1, 1, 3, 1, 407, 8, 1, 1, 1, 3, 1, 410, 8, 1, 1, 1, 1, 1, 3, 1, 414, 8, 1, 1, 1, 3, 1, 417, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 445, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 451, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 458, 8, 3, 1, 3, 1, 3, 3, 3, 462, 8, 3, 1, 3, 1, 3, 3, 3, 466, 8, 3, 1, 3, 1, 3, 3, 3, 470, 8, 3, 1, 4, 3, 4, 473, 8, 4, 1, 4, 1, 4, 3, 4, 477, 8, 4, 1, 4, 1, 4, 3, 4, 481, 8, 4, 1, 4, 1, 4, 3, 4, 485, 8, 4, 1, 4, 5, 4, 488, 8, 4, 10, 4, 12, 4, 491, 9, 4, 1, 4, 3, 4, 494, 8, 4, 3, 4, 496, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 503, 8, 5, 1, 5, 1, 5, 3, 5, 507, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 516, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 521, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 531, 8, 6, 1, 6, 1, 6, 3, 6, 535, 8, 6, 1, 6, 1, 6, 3, 6, 539, 8, 6, 1, 6, 5, 6, 542, 8, 6, 10, 6, 12, 6, 545, 9, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 557, 8, 7, 1, 7, 1, 7, 3, 7, 561, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 569, 8, 7, 1, 7, 1, 7, 3, 7, 573, 8, 7, 1, 7, 1, 7, 3, 7, 577, 8, 7, 1, 7, 1, 7, 3, 7, 581, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 589, 8, 8, 1, 8, 1, 8, 3, 8, 593, 8, 8, 1, 8, 1, 8, 3, 8, 597, 8, 8, 1, 8, 1, 8, 3, 8, 601, 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, 3, 10, 616, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 621, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 627, 8, 10, 1, 10, 1, 10, 3, 10, 631, 8, 10, 1, 10, 3, 10, 634, 8, 10, 1, 10, 3, 10, 637, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 643, 8, 11, 1, 11, 1, 11, 3, 11, 647, 8, 11, 1, 11, 5, 11, 650, 8, 11, 10, 11, 12, 11, 653, 9, 11, 3, 11, 655, 8, 11, 1, 11, 1, 11, 3, 11, 659, 8, 11, 1, 11, 3, 11, 662, 8, 11, 1, 11, 3, 11, 665, 8, 11, 1, 12, 1, 12, 3, 12, 669, 8, 12, 1, 12, 1, 12, 3, 12, 673, 8, 12, 1, 12, 1, 12, 1, 13, 1, 13, 3, 13, 679, 8, 13, 1, 13, 1, 13, 3, 13, 683, 8, 13, 1, 13, 5, 13, 686, 8, 13, 10, 13, 12, 13, 689, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 706, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 3, 18, 717, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 723, 8, 19, 1, 19, 1, 19, 3, 19, 727, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 734, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 754, 8, 21, 1, 21, 1, 21, 3, 21, 758, 8, 21, 1, 21, 3, 21, 761, 8, 21, 1, 21, 3, 21, 764, 8, 21, 1, 21, 3, 21, 767, 8, 21, 1, 21, 3, 21, 770, 8, 21, 1, 21, 1, 21, 3, 21, 774, 8, 21, 1, 21, 5, 21, 777, 8, 21, 10, 21, 12, 21, 780, 9, 21, 1, 21, 3, 21, 783, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 3, 22, 793, 8, 22, 1, 22, 1, 22, 3, 22, 797, 8, 22, 1, 22, 5, 22, 800, 8, 22, 10, 22, 12, 22, 803, 9, 22, 1, 23, 1, 23, 3, 23, 807, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 812, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 3, 24, 818, 8, 24, 1, 24, 1, 24, 3, 24, 822, 8, 24, 1, 24, 1, 24, 3, 24, 826, 8, 24, 1, 24, 5, 24, 829, 8, 24, 10, 24, 12, 24, 832, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 838, 8, 24, 1, 24, 1, 24, 3, 24, 842, 8, 24, 1, 24, 1, 24, 3, 24, 846, 8, 24, 1, 24, 3, 24, 849, 8, 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, 26, 3, 26, 866, 8, 26, 1, 26, 1, 26, 3, 26, 870, 8, 26, 1, 26, 1, 26, 3, 26, 874, 8, 26, 1, 26, 1, 26, 3, 26, 878, 8, 26, 1, 26, 1, 26, 3, 26, 882, 8, 26, 1, 26, 3, 26, 885, 8, 26, 1, 26, 3, 26, 888, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 896, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 901, 8, 26, 1, 26, 1, 26, 3, 26, 905, 8, 26, 1, 26, 1, 26, 3, 26, 909, 8, 26, 1, 26, 1, 26, 3, 26, 913, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 922, 8, 27, 1, 27, 1, 27, 3, 27, 926, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 931, 8, 27, 1, 27, 1, 27, 3, 27, 935, 8, 27, 1, 27, 1, 27, 3, 27, 939, 8, 27, 1, 27, 1, 27, 3, 27, 943, 8, 27, 1, 27, 1, 27, 3, 27, 947, 8, 27, 3, 27, 949, 8, 27, 1, 27, 1, 27, 3, 27, 953, 8, 27, 1, 27, 1, 27, 3, 27, 957, 8, 27, 3, 27, 959, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 967, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 972, 8, 27, 1, 27, 1, 27, 3, 27, 976, 8, 27, 1, 27, 1, 27, 3, 27, 980, 8, 27, 1, 27, 1, 27, 3, 27, 984, 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 989, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 995, 8, 28, 1, 28, 1, 28, 3, 28, 999, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1012, 8, 28, 1, 28, 1, 28, 3, 28, 1016, 8, 28, 1, 28, 3, 28, 1019, 8, 28, 1, 28, 3, 28, 1022, 8, 28, 1, 28, 3, 28, 1025, 8, 28, 1, 29, 1, 29, 3, 29, 1029, 8, 29, 1, 30, 1, 30, 3, 30, 1033, 8, 30, 1, 30, 3, 30, 1036, 8, 30, 1, 30, 3, 30, 1039, 8, 30, 1, 30, 1, 30, 3, 30, 1043, 8, 30, 1, 30, 1, 30, 3, 30, 1047, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 1053, 8, 31, 1, 31, 1, 31, 3, 31, 1057, 8, 31, 1, 31, 1, 31, 3, 31, 1061, 8, 31, 1, 31, 1, 31, 3, 31, 1065, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 1071, 8, 32, 1, 32, 1, 32, 3, 32, 1075, 8, 32, 1, 32, 1, 32, 3, 32, 1079, 8, 32, 1, 32, 1, 32, 3, 32, 1083, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 1089, 8, 33, 1, 33, 1, 33, 3, 33, 1093, 8, 33, 1, 33, 5, 33, 1096, 8, 33, 10, 33, 12, 33, 1099, 9, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1110, 8, 34, 1, 35, 1, 35, 3, 35, 1114, 8, 35, 1, 35, 1, 35, 3, 35, 1118, 8, 35, 1, 35, 5, 35, 1121, 8, 35, 10, 35, 12, 35, 1124, 9, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1141, 8, 37, 1, 37, 1, 37, 1, 37, 5, 37, 1146, 8, 37, 10, 37, 12, 37, 1149, 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1161, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1168, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1184, 8, 41, 1, 41, 1, 41, 3, 41, 1188, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1197, 8, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1205, 8, 43, 1, 43, 3, 43, 1208, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1218, 8, 44, 1, 44, 3, 44, 1221, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1229, 8, 45, 1, 45, 3, 45, 1232, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1238, 8, 46, 1, 46, 3, 46, 1241, 8, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1247, 8, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1262, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1272, 8, 49, 1, 49, 3, 49, 1275, 8, 49, 1, 50, 1, 50, 3, 50, 1279, 8, 50, 1, 50, 1, 50, 3, 50, 1283, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1302, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1309, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1316, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1327, 8, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1350, 8, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1359, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1369, 8, 60, 1, 60, 1, 60, 3, 60, 1373, 8, 60, 1, 60, 1, 60, 3, 60, 1377, 8, 60, 1, 60, 1, 60, 3, 60, 1381, 8, 60, 1, 60, 5, 60, 1384, 8, 60, 10, 60, 12, 60, 1387, 9, 60, 1, 60, 3, 60, 1390, 8, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 3, 62, 1400, 8, 62, 1, 62, 1, 62, 3, 62, 1404, 8, 62, 1, 62, 5, 62, 1407, 8, 62, 10, 62, 12, 62, 1410, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 1418, 8, 64, 1, 64, 1, 64, 3, 64, 1422, 8, 64, 1, 64, 5, 64, 1425, 8, 64, 10, 64, 12, 64, 1428, 9, 64, 1, 65, 1, 65, 1, 65, 3, 65, 1433, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1439, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1445, 8, 66, 1, 66, 1, 66, 3, 66, 1449, 8, 66, 1, 66, 1, 66, 3, 66, 1453, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 3, 67, 1459, 8, 67, 1, 67, 1, 67, 3, 67, 1463, 8, 67, 1, 67, 1, 67, 3, 67, 1467, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 3, 68, 1473, 8, 68, 1, 68, 1, 68, 3, 68, 1477, 8, 68, 1, 68, 1, 68, 3, 68, 1481, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 1487, 8, 69, 1, 69, 1, 69, 3, 69, 1491, 8, 69, 1, 69, 1, 69, 3, 69, 1495, 8, 69, 1, 69, 1, 69, 3, 69, 1499, 8, 69, 1, 69, 1, 69, 3, 69, 1503, 8, 69, 1, 69, 1, 69, 1, 70, 1, 70, 3, 70, 1509, 8, 70, 1, 70, 1, 70, 3, 70, 1513, 8, 70, 1, 70, 1, 70, 3, 70, 1517, 8, 70, 1, 70, 1, 70, 3, 70, 1521, 8, 70, 1, 70, 1, 70, 3, 70, 1525, 8, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1535, 8, 71, 1, 71, 1, 71, 5, 71, 1539, 8, 71, 10, 71, 12, 71, 1542, 9, 71, 1, 72, 1, 72, 5, 72, 1546, 8, 72, 10, 72, 12, 72, 1549, 9, 72, 1, 73, 1, 73, 3, 73, 1553, 8, 73, 1, 73, 1, 73, 1, 74, 1, 74, 3, 74, 1559, 8, 74, 1, 75, 1, 75, 1, 75, 3, 75, 1564, 8, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1581, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1587, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1593, 8, 79, 1, 79, 1, 79, 3, 79, 1597, 8, 79, 1, 80, 1, 80, 3, 80, 1601, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1610, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 3, 84, 1624, 8, 84, 1, 84, 5, 84, 1627, 8, 84, 10, 84, 12, 84, 1630, 9, 84, 1, 84, 1, 84, 3, 84, 1634, 8, 84, 4, 84, 1636, 8, 84, 11, 84, 12, 84, 1637, 1, 84, 1, 84, 1, 84, 3, 84, 1643, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1649, 8, 85, 1, 85, 1, 85, 1, 85, 3, 85, 1654, 8, 85, 1, 85, 3, 85, 1657, 8, 85, 1, 86, 1, 86, 3, 86, 1661, 8, 86, 1, 87, 1, 87, 3, 87, 1665, 8, 87, 5, 87, 1667, 8, 87, 10, 87, 12, 87, 1670, 9, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1675, 8, 87, 5, 87, 1677, 8, 87, 10, 87, 12, 87, 1680, 9, 87, 1, 87, 1, 87, 3, 87, 1684, 8, 87, 1, 87, 5, 87, 1687, 8, 87, 10, 87, 12, 87, 1690, 9, 87, 1, 87, 3, 87, 1693, 8, 87, 1, 87, 3, 87, 1696, 8, 87, 3, 87, 1698, 8, 87, 1, 88, 1, 88, 3, 88, 1702, 8, 88, 4, 88, 1704, 8, 88, 11, 88, 12, 88, 1705, 1, 88, 1, 88, 1, 89, 1, 89, 3, 89, 1712, 8, 89, 5, 89, 1714, 8, 89, 10, 89, 12, 89, 1717, 9, 89, 1, 89, 1, 89, 3, 89, 1721, 8, 89, 5, 89, 1723, 8, 89, 10, 89, 12, 89, 1726, 9, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1734, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1740, 8, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1748, 8, 92, 1, 92, 1, 92, 3, 92, 1752, 8, 92, 1, 92, 1, 92, 3, 92, 1756, 8, 92, 1, 92, 1, 92, 3, 92, 1760, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1767, 8, 92, 1, 92, 1, 92, 3, 92, 1771, 8, 92, 1, 92, 1, 92, 3, 92, 1775, 8, 92, 1, 92, 1, 92, 3, 92, 1779, 8, 92, 1, 92, 3, 92, 1782, 8, 92, 1, 92, 3, 92, 1785, 8, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1792, 8, 93, 1, 93, 1, 93, 1, 94, 1, 94, 3, 94, 1798, 8, 94, 1, 94, 1, 94, 3, 94, 1802, 8, 94, 1, 94, 5, 94, 1805, 8, 94, 10, 94, 12, 94, 1808, 9, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1814, 8, 95, 1, 95, 3, 95, 1817, 8, 95, 1, 95, 3, 95, 1820, 8, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1825, 8, 95, 1, 96, 1, 96, 3, 96, 1829, 8, 96, 1, 96, 1, 96, 3, 96, 1833, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 1838, 8, 96, 1, 96, 1, 96, 3, 96, 1842, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 3, 98, 1851, 8, 98, 1, 98, 1, 98, 3, 98, 1855, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1860, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 4, 98, 1872, 8, 98, 11, 98, 12, 98, 1873, 5, 98, 1876, 8, 98, 10, 98, 12, 98, 1879, 9, 98, 1, 99, 1, 99, 3, 99, 1883, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 3, 100, 1893, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 3, 101, 1899, 8, 101, 1, 101, 1, 101, 1, 101, 5, 101, 1904, 8, 101, 10, 101, 12, 101, 1907, 9, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1919, 8, 102, 1, 103, 1, 103, 3, 103, 1923, 8, 103, 1, 103, 1, 103, 3, 103, 1927, 8, 103, 1, 103, 1, 103, 3, 103, 1931, 8, 103, 1, 103, 5, 103, 1934, 8, 103, 10, 103, 12, 103, 1937, 9, 103, 1, 103, 1, 103, 3, 103, 1941, 8, 103, 1, 103, 1, 103, 3, 103, 1945, 8, 103, 1, 103, 1, 103, 3, 103, 1949, 8, 103, 1, 103, 1, 103, 3, 103, 1953, 8, 103, 1, 104, 1, 104, 3, 104, 1957, 8, 104, 1, 104, 1, 104, 3, 104, 1961, 8, 104, 1, 104, 1, 104, 1, 105, 1, 105, 3, 105, 1967, 8, 105, 1, 105, 1, 105, 3, 105, 1971, 8, 105, 1, 105, 1, 105, 3, 105, 1975, 8, 105, 1, 105, 1, 105, 3, 105, 1979, 8, 105, 1, 105, 5, 105, 1982, 8, 105, 10, 105, 12, 105, 1985, 9, 105, 1, 106, 1, 106, 1, 106, 3, 106, 1990, 8, 106, 1, 106, 3, 106, 1993, 8, 106, 1, 107, 1, 107, 1, 107, 1, 108, 3, 108, 1999, 8, 108, 1, 108, 3, 108, 2002, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 2008, 8, 108, 1, 108, 1, 108, 3, 108, 2012, 8, 108, 1, 108, 1, 108, 3, 108, 2016, 8, 108, 1, 109, 1, 109, 3, 109, 2020, 8, 109, 1, 109, 1, 109, 3, 109, 2024, 8, 109, 1, 109, 5, 109, 2027, 8, 109, 10, 109, 12, 109, 2030, 9, 109, 1, 109, 1, 109, 3, 109, 2034, 8, 109, 1, 109, 1, 109, 3, 109, 2038, 8, 109, 1, 109, 5, 109, 2041, 8, 109, 10, 109, 12, 109, 2044, 9, 109, 3, 109, 2046, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 2055, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 2064, 8, 111, 1, 111, 5, 111, 2067, 8, 111, 10, 111, 12, 111, 2070, 9, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 3, 114, 2082, 8, 114, 1, 114, 3, 114, 2085, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 3, 116, 2093, 8, 116, 1, 116, 1, 116, 3, 116, 2097, 8, 116, 1, 116, 5, 116, 2100, 8, 116, 10, 116, 12, 116, 2103, 9, 116, 1, 117, 1, 117, 3, 117, 2107, 8, 117, 1, 117, 1, 117, 3, 117, 2111, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2116, 8, 117, 1, 118, 1, 118, 1, 119, 1, 119, 3, 119, 2122, 8, 119, 1, 119, 5, 119, 2125, 8, 119, 10, 119, 12, 119, 2128, 9, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 2134, 8, 119, 1, 120, 1, 120, 3, 120, 2138, 8, 120, 1, 120, 1, 120, 3, 120, 2142, 8, 120, 3, 120, 2144, 8, 120, 1, 120, 1, 120, 3, 120, 2148, 8, 120, 3, 120, 2150, 8, 120, 1, 120, 1, 120, 3, 120, 2154, 8, 120, 3, 120, 2156, 8, 120, 1, 120, 1, 120, 1, 121, 1, 121, 3, 121, 2162, 8, 121, 1, 121, 1, 121, 1, 122, 1, 122, 3, 122, 2168, 8, 122, 1, 122, 1, 122, 3, 122, 2172, 8, 122, 1, 122, 3, 122, 2175, 8, 122, 1, 122, 3, 122, 2178, 8, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 2184, 8, 122, 1, 122, 3, 122, 2187, 8, 122, 1, 122, 3, 122, 2190, 8, 122, 1, 122, 1, 122, 3, 122, 2194, 8, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 2200, 8, 122, 1, 122, 3, 122, 2203, 8, 122, 1, 122, 3, 122, 2206, 8, 122, 1, 122, 1, 122, 3, 122, 2210, 8, 122, 1, 123, 1, 123, 3, 123, 2214, 8, 123, 1, 123, 1, 123, 3, 123, 2218, 8, 123, 3, 123, 2220, 8, 123, 1, 123, 1, 123, 3, 123, 2224, 8, 123, 3, 123, 2226, 8, 123, 1, 123, 1, 123, 3, 123, 2230, 8, 123, 3, 123, 2232, 8, 123, 1, 123, 1, 123, 3, 123, 2236, 8, 123, 3, 123, 2238, 8, 123, 1, 123, 1, 123, 1, 124, 1, 124, 3, 124, 2244, 8, 124, 1, 124, 1, 124, 3, 124, 2248, 8, 124, 1, 124, 1, 124, 3, 124, 2252, 8, 124, 1, 124, 1, 124, 3, 124, 2256, 8, 124, 1, 124, 1, 124, 3, 124, 2260, 8, 124, 1, 124, 1, 124, 3, 124, 2264, 8, 124, 1, 124, 1, 124, 3, 124, 2268, 8, 124, 1, 124, 1, 124, 3, 124, 2272, 8, 124, 5, 124, 2274, 8, 124, 10, 124, 12, 124, 2277, 9, 124, 3, 124, 2279, 8, 124, 1, 124, 1, 124, 1, 125, 1, 125, 3, 125, 2285, 8, 125, 1, 125, 1, 125, 3, 125, 2289, 8, 125, 1, 125, 1, 125, 3, 125, 2293, 8, 125, 1, 125, 3, 125, 2296, 8, 125, 1, 125, 5, 125, 2299, 8, 125, 10, 125, 12, 125, 2302, 9, 125, 1, 126, 1, 126, 3, 126, 2306, 8, 126, 1, 126, 1, 126, 3, 126, 2310, 8, 126, 1, 126, 1, 126, 3, 126, 2314, 8, 126, 1, 126, 3, 126, 2317, 8, 126, 1, 126, 3, 126, 2320, 8, 126, 1, 126, 5, 126, 2323, 8, 126, 10, 126, 12, 126, 2326, 9, 126, 1, 127, 1, 127, 3, 127, 2330, 8, 127, 1, 127, 3, 127, 2333, 8, 127, 1, 127, 3, 127, 2336, 8, 127, 1, 127, 3, 127, 2339, 8, 127, 1, 127, 3, 127, 2342, 8, 127, 1, 127, 3, 127, 2345, 8, 127, 1, 128, 1, 128, 3, 128, 2349, 8, 128, 1, 128, 1, 128, 3, 128, 2353, 8, 128, 1, 128, 1, 128, 3, 128, 2357, 8, 128, 1, 128, 1, 128, 3, 128, 2361, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 2371, 8, 128, 1, 129, 3, 129, 2374, 8, 129, 1, 129, 3, 129, 2377, 8, 129, 1, 129, 1, 129, 3, 129, 2381, 8, 129, 1, 129, 3, 129, 2384, 8, 129, 1, 129, 3, 129, 2387, 8, 129, 1, 130, 1, 130, 3, 130, 2391, 8, 130, 1, 130, 1, 130, 3, 130, 2395, 8, 130, 1, 130, 1, 130, 3, 130, 2399, 8, 130, 1, 130, 1, 130, 3, 130, 2403, 8, 130, 1, 130, 1, 130, 3, 130, 2407, 8, 130, 1, 130, 1, 130, 3, 130, 2411, 8, 130, 3, 130, 2413, 8, 130, 1, 130, 3, 130, 2416, 8, 130, 1, 130, 1, 130, 3, 130, 2420, 8, 130, 1, 130, 1, 130, 3, 130, 2424, 8, 130, 1, 130, 1, 130, 3, 130, 2428, 8, 130, 1, 130, 1, 130, 3, 130, 2432, 8, 130, 3, 130, 2434, 8, 130, 1, 130, 1, 130, 1, 131, 1, 131, 3, 131, 2440, 8, 131, 1, 131, 3, 131, 2443, 8, 131, 1, 131, 3, 131, 2446, 8, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 3, 134, 2457, 8, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 5, 137, 2468, 8, 137, 10, 137, 12, 137, 2471, 9, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 5, 138, 2478, 8, 138, 10, 138, 12, 138, 2481, 9, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 5, 139, 2488, 8, 139, 10, 139, 12, 139, 2491, 9, 139, 1, 140, 1, 140, 3, 140, 2495, 8, 140, 5, 140, 2497, 8, 140, 10, 140, 12, 140, 2500, 9, 140, 1, 140, 1, 140, 1, 141, 1, 141, 3, 141, 2506, 8, 141, 1, 141, 1, 141, 3, 141, 2510, 8, 141, 1, 141, 1, 141, 3, 141, 2514, 8, 141, 1, 141, 1, 141, 3, 141, 2518, 8, 141, 1, 141, 1, 141, 3, 141, 2522, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2530, 8, 141, 1, 141, 1, 141, 3, 141, 2534, 8, 141, 1, 141, 1, 141, 3, 141, 2538, 8, 141, 1, 141, 1, 141, 3, 141, 2542, 8, 141, 1, 141, 1, 141, 4, 141, 2546, 8, 141, 11, 141, 12, 141, 2547, 1, 141, 1, 141, 3, 141, 2552, 8, 141, 1, 142, 1, 142, 1, 143, 1, 143, 3, 143, 2558, 8, 143, 1, 143, 1, 143, 3, 143, 2562, 8, 143, 1, 143, 5, 143, 2565, 8, 143, 10, 143, 12, 143, 2568, 9, 143, 1, 144, 1, 144, 3, 144, 2572, 8, 144, 1, 144, 1, 144, 3, 144, 2576, 8, 144, 1, 144, 5, 144, 2579, 8, 144, 10, 144, 12, 144, 2582, 9, 144, 1, 145, 1, 145, 3, 145, 2586, 8, 145, 1, 145, 1, 145, 3, 145, 2590, 8, 145, 1, 145, 1, 145, 5, 145, 2594, 8, 145, 10, 145, 12, 145, 2597, 9, 145, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2603, 8, 147, 1, 147, 1, 147, 3, 147, 2607, 8, 147, 1, 147, 1, 147, 5, 147, 2611, 8, 147, 10, 147, 12, 147, 2614, 9, 147, 1, 148, 1, 148, 1, 149, 1, 149, 3, 149, 2620, 8, 149, 1, 149, 1, 149, 3, 149, 2624, 8, 149, 1, 149, 1, 149, 5, 149, 2628, 8, 149, 10, 149, 12, 149, 2631, 9, 149, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 2637, 8, 151, 1, 151, 1, 151, 3, 151, 2641, 8, 151, 1, 151, 5, 151, 2644, 8, 151, 10, 151, 12, 151, 2647, 9, 151, 1, 152, 1, 152, 1, 152, 4, 152, 2652, 8, 152, 11, 152, 12, 152, 2653, 1, 152, 3, 152, 2657, 8, 152, 1, 153, 1, 153, 1, 153, 3, 153, 2662, 8, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 2671, 8, 153, 1, 153, 1, 153, 3, 153, 2675, 8, 153, 1, 153, 3, 153, 2678, 8, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2691, 8, 154, 1, 154, 3, 154, 2694, 8, 154, 1, 154, 1, 154, 1, 155, 3, 155, 2699, 8, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2713, 8, 156, 1, 157, 1, 157, 3, 157, 2717, 8, 157, 5, 157, 2719, 8, 157, 10, 157, 12, 157, 2722, 9, 157, 1, 157, 1, 157, 3, 157, 2726, 8, 157, 1, 157, 3, 157, 2729, 8, 157, 1, 158, 1, 158, 3, 158, 2733, 8, 158, 1, 158, 5, 158, 2736, 8, 158, 10, 158, 12, 158, 2739, 9, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 2750, 8, 159, 1, 160, 1, 160, 3, 160, 2754, 8, 160, 1, 160, 1, 160, 3, 160, 2758, 8, 160, 1, 160, 1, 160, 3, 160, 2762, 8, 160, 1, 160, 1, 160, 1, 160, 1, 160, 3, 160, 2768, 8, 160, 1, 160, 1, 160, 3, 160, 2772, 8, 160, 1, 160, 1, 160, 3, 160, 2776, 8, 160, 1, 160, 1, 160, 1, 160, 1, 160, 3, 160, 2782, 8, 160, 1, 160, 1, 160, 3, 160, 2786, 8, 160, 1, 160, 1, 160, 3, 160, 2790, 8, 160, 1, 160, 1, 160, 1, 160, 1, 160, 3, 160, 2796, 8, 160, 1, 160, 1, 160, 3, 160, 2800, 8, 160, 1, 160, 1, 160, 3, 160, 2804, 8, 160, 1, 160, 1, 160, 3, 160, 2808, 8, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 2826, 8, 163, 1, 164, 1, 164, 1, 165, 1, 165, 3, 165, 2832, 8, 165, 1, 165, 1, 165, 3, 165, 2836, 8, 165, 1, 165, 1, 165, 3, 165, 2840, 8, 165, 5, 165, 2842, 8, 165, 10, 165, 12, 165, 2845, 9, 165, 3, 165, 2847, 8, 165, 1, 165, 1, 165, 1, 166, 1, 166, 3, 166, 2853, 8, 166, 1, 166, 3, 166, 2856, 8, 166, 1, 167, 1, 167, 3, 167, 2860, 8, 167, 1, 167, 1, 167, 3, 167, 2864, 8, 167, 1, 167, 1, 167, 3, 167, 2868, 8, 167, 1, 167, 1, 167, 3, 167, 2872, 8, 167, 5, 167, 2874, 8, 167, 10, 167, 12, 167, 2877, 9, 167, 1, 167, 1, 167, 1, 168, 1, 168, 3, 168, 2883, 8, 168, 1, 168, 3, 168, 2886, 8, 168, 1, 168, 1, 168, 3, 168, 2890, 8, 168, 1, 168, 1, 168, 1, 169, 1, 169, 3, 169, 2896, 8, 169, 1, 169, 1, 169, 3, 169, 2900, 8, 169, 1, 169, 1, 169, 1, 170, 1, 170, 3, 170, 2906, 8, 170, 1, 170, 1, 170, 3, 170, 2910, 8, 170, 1, 170, 1, 170, 3, 170, 2914, 8, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2919, 8, 170, 1, 170, 1, 170, 3, 170, 2923, 8, 170, 1, 170, 1, 170, 3, 170, 2927, 8, 170, 1, 170, 1, 170, 3, 170, 2931, 8, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2936, 8, 170, 1, 170, 3, 170, 2939, 8, 170, 1, 170, 3, 170, 2942, 8, 170, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2948, 8, 170, 1, 170, 1, 170, 3, 170, 2952, 8, 170, 1, 170, 1, 170, 3, 170, 2956, 8, 170, 3, 170, 2958, 8, 170, 1, 170, 1, 170, 3, 170, 2962, 8, 170, 1, 170, 1, 170, 3, 170, 2966, 8, 170, 1, 170, 1, 170, 3, 170, 2970, 8, 170, 5, 170, 2972, 8, 170, 10, 170, 12, 170, 2975, 9, 170, 3, 170, 2977, 8, 170, 1, 170, 1, 170, 3, 170, 2981, 8, 170, 1, 171, 1, 171, 1, 172, 1, 172, 3, 172, 2987, 8, 172, 1, 172, 1, 172, 1, 172, 3, 172, 2992, 8, 172, 3, 172, 2994, 8, 172, 1, 172, 1, 172, 3, 172, 2998, 8, 172, 1, 173, 1, 173, 3, 173, 3002, 8, 173, 1, 173, 1, 173, 1, 173, 3, 173, 3007, 8, 173, 1, 173, 1, 173, 3, 173, 3011, 8, 173, 1, 174, 1, 174, 1, 174, 3, 174, 3016, 8, 174, 1, 174, 1, 174, 3, 174, 3020, 8, 174, 1, 174, 1, 174, 3, 174, 3024, 8, 174, 1, 174, 1, 174, 3, 174, 3028, 8, 174, 5, 174, 3030, 8, 174, 10, 174, 12, 174, 3033, 9, 174, 1, 174, 1, 174, 3, 174, 3037, 8, 174, 1, 175, 1, 175, 3, 175, 3041, 8, 175, 1, 175, 4, 175, 3044, 8, 175, 11, 175, 12, 175, 3045, 1, 176, 1, 176, 3, 176, 3050, 8, 176, 1, 176, 1, 176, 3, 176, 3054, 8, 176, 1, 176, 1, 176, 3, 176, 3058, 8, 176, 1, 176, 1, 176, 3, 176, 3062, 8, 176, 1, 176, 3, 176, 3065, 8, 176, 1, 176, 3, 176, 3068, 8, 176, 1, 176, 3, 176, 3071, 8, 176, 1, 176, 3, 176, 3074, 8, 176, 1, 176, 1, 176, 1, 177, 1, 177, 3, 177, 3080, 8, 177, 1, 177, 1, 177, 3, 177, 3084, 8, 177, 1, 178, 1, 178, 3, 178, 3088, 8, 178, 1, 178, 4, 178, 3091, 8, 178, 11, 178, 12, 178, 3092, 1, 178, 1, 178, 3, 178, 3097, 8, 178, 1, 178, 1, 178, 3, 178, 3101, 8, 178, 1, 178, 4, 178, 3104, 8, 178, 11, 178, 12, 178, 3105, 3, 178, 3108, 8, 178, 1, 178, 3, 178, 3111, 8, 178, 1, 178, 1, 178, 3, 178, 3115, 8, 178, 1, 178, 3, 178, 3118, 8, 178, 1, 178, 3, 178, 3121, 8, 178, 1, 178, 1, 178, 1, 179, 1, 179, 3, 179, 3127, 8, 179, 1, 179, 1, 179, 3, 179, 3131, 8, 179, 1, 179, 1, 179, 3, 179, 3135, 8, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 3, 181, 3143, 8, 181, 1, 182, 1, 182, 1, 182, 3, 182, 3148, 8, 182, 1, 183, 1, 183, 3, 183, 3152, 8, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 3, 187, 3165, 8, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 3172, 8, 188, 1, 189, 1, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 0, 2, 142, 196, 193, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 0, 15, 4, 0, 92, 92, 108, 108, 134, 134, 141, 141, 2, 0, 53, 53, 75, 75, 2, 0, 53, 54, 75, 76, 2, 0, 6, 6, 12, 16, 1, 0, 18, 19, 2, 0, 20, 20, 171, 171, 2, 0, 21, 22, 166, 166, 1, 0, 169, 170, 2, 0, 87, 87, 146, 146, 2, 0, 68, 68, 83, 83, 1, 0, 182, 183, 32, 0, 47, 47, 49, 50, 52, 52, 55, 58, 61, 61, 63, 64, 66, 68, 70, 71, 74, 74, 77, 77, 79, 79, 84, 86, 88, 89, 92, 92, 96, 96, 98, 98, 100, 100, 102, 102, 104, 107, 109, 112, 114, 115, 127, 132, 134, 135, 138, 138, 140, 140, 143, 143, 145, 145, 147, 147, 150, 152, 156, 156, 160, 165, 167, 167, 2, 0, 13, 13, 26, 29, 2, 0, 15, 15, 30, 33, 2, 0, 34, 44, 171, 171, 3606, 0, 386, 1, 0, 0, 0, 2, 406, 1, 0, 0, 0, 4, 444, 1, 0, 0, 0, 6, 446, 1, 0, 0, 0, 8, 472, 1, 0, 0, 0, 10, 520, 1, 0, 0, 0, 12, 522, 1, 0, 0, 0, 14, 552, 1, 0, 0, 0, 16, 582, 1, 0, 0, 0, 18, 602, 1, 0, 0, 0, 20, 608, 1, 0, 0, 0, 22, 664, 1, 0, 0, 0, 24, 666, 1, 0, 0, 0, 26, 676, 1, 0, 0, 0, 28, 690, 1, 0, 0, 0, 30, 694, 1, 0, 0, 0, 32, 698, 1, 0, 0, 0, 34, 707, 1, 0, 0, 0, 36, 713, 1, 0, 0, 0, 38, 733, 1, 0, 0, 0, 40, 735, 1, 0, 0, 0, 42, 747, 1, 0, 0, 0, 44, 790, 1, 0, 0, 0, 46, 804, 1, 0, 0, 0, 48, 848, 1, 0, 0, 0, 50, 850, 1, 0, 0, 0, 52, 856, 1, 0, 0, 0, 54, 914, 1, 0, 0, 0, 56, 985, 1, 0, 0, 0, 58, 1028, 1, 0, 0, 0, 60, 1030, 1, 0, 0, 0, 62, 1050, 1, 0, 0, 0, 64, 1068, 1, 0, 0, 0, 66, 1086, 1, 0, 0, 0, 68, 1100, 1, 0, 0, 0, 70, 1111, 1, 0, 0, 0, 72, 1125, 1, 0, 0, 0, 74, 1133, 1, 0, 0, 0, 76, 1150, 1, 0, 0, 0, 78, 1167, 1, 0, 0, 0, 80, 1169, 1, 0, 0, 0, 82, 1176, 1, 0, 0, 0, 84, 1189, 1, 0, 0, 0, 86, 1200, 1, 0, 0, 0, 88, 1220, 1, 0, 0, 0, 90, 1231, 1, 0, 0, 0, 92, 1233, 1, 0, 0, 0, 94, 1246, 1, 0, 0, 0, 96, 1250, 1, 0, 0, 0, 98, 1274, 1, 0, 0, 0, 100, 1276, 1, 0, 0, 0, 102, 1286, 1, 0, 0, 0, 104, 1301, 1, 0, 0, 0, 106, 1303, 1, 0, 0, 0, 108, 1317, 1, 0, 0, 0, 110, 1321, 1, 0, 0, 0, 112, 1330, 1, 0, 0, 0, 114, 1336, 1, 0, 0, 0, 116, 1344, 1, 0, 0, 0, 118, 1353, 1, 0, 0, 0, 120, 1362, 1, 0, 0, 0, 122, 1393, 1, 0, 0, 0, 124, 1397, 1, 0, 0, 0, 126, 1411, 1, 0, 0, 0, 128, 1415, 1, 0, 0, 0, 130, 1429, 1, 0, 0, 0, 132, 1440, 1, 0, 0, 0, 134, 1456, 1, 0, 0, 0, 136, 1470, 1, 0, 0, 0, 138, 1484, 1, 0, 0, 0, 140, 1506, 1, 0, 0, 0, 142, 1534, 1, 0, 0, 0, 144, 1543, 1, 0, 0, 0, 146, 1550, 1, 0, 0, 0, 148, 1558, 1, 0, 0, 0, 150, 1560, 1, 0, 0, 0, 152, 1565, 1, 0, 0, 0, 154, 1580, 1, 0, 0, 0, 156, 1586, 1, 0, 0, 0, 158, 1588, 1, 0, 0, 0, 160, 1600, 1, 0, 0, 0, 162, 1611, 1, 0, 0, 0, 164, 1615, 1, 0, 0, 0, 166, 1619, 1, 0, 0, 0, 168, 1642, 1, 0, 0, 0, 170, 1656, 1, 0, 0, 0, 172, 1660, 1, 0, 0, 0, 174, 1697, 1, 0, 0, 0, 176, 1703, 1, 0, 0, 0, 178, 1715, 1, 0, 0, 0, 180, 1733, 1, 0, 0, 0, 182, 1739, 1, 0, 0, 0, 184, 1741, 1, 0, 0, 0, 186, 1791, 1, 0, 0, 0, 188, 1795, 1, 0, 0, 0, 190, 1809, 1, 0, 0, 0, 192, 1828, 1, 0, 0, 0, 194, 1843, 1, 0, 0, 0, 196, 1859, 1, 0, 0, 0, 198, 1880, 1, 0, 0, 0, 200, 1890, 1, 0, 0, 0, 202, 1896, 1, 0, 0, 0, 204, 1918, 1, 0, 0, 0, 206, 1952, 1, 0, 0, 0, 208, 1954, 1, 0, 0, 0, 210, 1966, 1, 0, 0, 0, 212, 1986, 1, 0, 0, 0, 214, 1994, 1, 0, 0, 0, 216, 2001, 1, 0, 0, 0, 218, 2045, 1, 0, 0, 0, 220, 2054, 1, 0, 0, 0, 222, 2056, 1, 0, 0, 0, 224, 2071, 1, 0, 0, 0, 226, 2075, 1, 0, 0, 0, 228, 2079, 1, 0, 0, 0, 230, 2086, 1, 0, 0, 0, 232, 2090, 1, 0, 0, 0, 234, 2115, 1, 0, 0, 0, 236, 2117, 1, 0, 0, 0, 238, 2133, 1, 0, 0, 0, 240, 2135, 1, 0, 0, 0, 242, 2159, 1, 0, 0, 0, 244, 2209, 1, 0, 0, 0, 246, 2211, 1, 0, 0, 0, 248, 2241, 1, 0, 0, 0, 250, 2282, 1, 0, 0, 0, 252, 2303, 1, 0, 0, 0, 254, 2327, 1, 0, 0, 0, 256, 2370, 1, 0, 0, 0, 258, 2386, 1, 0, 0, 0, 260, 2388, 1, 0, 0, 0, 262, 2437, 1, 0, 0, 0, 264, 2449, 1, 0, 0, 0, 266, 2451, 1, 0, 0, 0, 268, 2453, 1, 0, 0, 0, 270, 2458, 1, 0, 0, 0, 272, 2460, 1, 0, 0, 0, 274, 2462, 1, 0, 0, 0, 276, 2472, 1, 0, 0, 0, 278, 2482, 1, 0, 0, 0, 280, 2498, 1, 0, 0, 0, 282, 2551, 1, 0, 0, 0, 284, 2553, 1, 0, 0, 0, 286, 2555, 1, 0, 0, 0, 288, 2569, 1, 0, 0, 0, 290, 2583, 1, 0, 0, 0, 292, 2598, 1, 0, 0, 0, 294, 2600, 1, 0, 0, 0, 296, 2615, 1, 0, 0, 0, 298, 2617, 1, 0, 0, 0, 300, 2632, 1, 0, 0, 0, 302, 2634, 1, 0, 0, 0, 304, 2648, 1, 0, 0, 0, 306, 2677, 1, 0, 0, 0, 308, 2690, 1, 0, 0, 0, 310, 2698, 1, 0, 0, 0, 312, 2712, 1, 0, 0, 0, 314, 2720, 1, 0, 0, 0, 316, 2730, 1, 0, 0, 0, 318, 2749, 1, 0, 0, 0, 320, 2807, 1, 0, 0, 0, 322, 2809, 1, 0, 0, 0, 324, 2813, 1, 0, 0, 0, 326, 2825, 1, 0, 0, 0, 328, 2827, 1, 0, 0, 0, 330, 2829, 1, 0, 0, 0, 332, 2850, 1, 0, 0, 0, 334, 2857, 1, 0, 0, 0, 336, 2882, 1, 0, 0, 0, 338, 2893, 1, 0, 0, 0, 340, 2980, 1, 0, 0, 0, 342, 2982, 1, 0, 0, 0, 344, 2997, 1, 0, 0, 0, 346, 2999, 1, 0, 0, 0, 348, 3036, 1, 0, 0, 0, 350, 3038, 1, 0, 0, 0, 352, 3047, 1, 0, 0, 0, 354, 3077, 1, 0, 0, 0, 356, 3107, 1, 0, 0, 0, 358, 3124, 1, 0, 0, 0, 360, 3138, 1, 0, 0, 0, 362, 3142, 1, 0, 0, 0, 364, 3144, 1, 0, 0, 0, 366, 3149, 1, 0, 0, 0, 368, 3155, 1, 0, 0, 0, 370, 3157, 1, 0, 0, 0, 372, 3159, 1, 0, 0, 0, 374, 3161, 1, 0, 0, 0, 376, 3171, 1, 0, 0, 0, 378, 3173, 1, 0, 0, 0, 380, 3175, 1, 0, 0, 0, 382, 3177, 1, 0, 0, 0, 384, 3179, 1, 0, 0, 0, 386, 397, 3, 2, 1, 0, 387, 389, 5, 188, 0, 0, 388, 387, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 392, 5, 1, 0, 0, 391, 393, 5, 188, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 396, 3, 2, 1, 0, 395, 388, 1, 0, 0, 0, 396, 399, 1, 0, 0, 0, 397, 395, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 400, 402, 5, 188, 0, 0, 401, 400, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 404, 5, 0, 0, 1, 404, 1, 1, 0, 0, 0, 405, 407, 3, 148, 74, 0, 406, 405, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 409, 1, 0, 0, 0, 408, 410, 5, 188, 0, 0, 409, 408, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 416, 3, 4, 2, 0, 412, 414, 5, 188, 0, 0, 413, 412, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 5, 1, 0, 0, 416, 413, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 3, 1, 0, 0, 0, 418, 445, 3, 166, 83, 0, 419, 445, 3, 36, 18, 0, 420, 445, 3, 82, 41, 0, 421, 445, 3, 84, 42, 0, 422, 445, 3, 52, 26, 0, 423, 445, 3, 54, 27, 0, 424, 445, 3, 56, 28, 0, 425, 445, 3, 74, 37, 0, 426, 445, 3, 76, 38, 0, 427, 445, 3, 98, 49, 0, 428, 445, 3, 102, 51, 0, 429, 445, 3, 6, 3, 0, 430, 445, 3, 12, 6, 0, 431, 445, 3, 14, 7, 0, 432, 445, 3, 38, 19, 0, 433, 445, 3, 42, 21, 0, 434, 445, 3, 40, 20, 0, 435, 445, 3, 154, 77, 0, 436, 445, 3, 156, 78, 0, 437, 445, 3, 16, 8, 0, 438, 445, 3, 18, 9, 0, 439, 445, 3, 20, 10, 0, 440, 445, 3, 28, 14, 0, 441, 445, 3, 30, 15, 0, 442, 445, 3, 32, 16, 0, 443, 445, 3, 34, 17, 0, 444, 418, 1, 0, 0, 0, 444, 419, 1, 0, 0, 0, 444, 420, 1, 0, 0, 0, 444, 421, 1, 0, 0, 0, 444, 422, 1, 0, 0, 0, 444, 423, 1, 0, 0, 0, 444, 424, 1, 0, 0, 0, 444, 425, 1, 0, 0, 0, 444, 426, 1, 0, 0, 0, 444, 427, 1, 0, 0, 0, 444, 428, 1, 0, 0, 0, 444, 429, 1, 0, 0, 0, 444, 430, 1, 0, 0, 0, 444, 431, 1, 0, 0, 0, 444, 432, 1, 0, 0, 0, 444, 433, 1, 0, 0, 0, 444, 434, 1, 0, 0, 0, 444, 435, 1, 0, 0, 0, 444, 436, 1, 0, 0, 0, 444, 437, 1, 0, 0, 0, 444, 438, 1, 0, 0, 0, 444, 439, 1, 0, 0, 0, 444, 440, 1, 0, 0, 0, 444, 441, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 444, 443, 1, 0, 0, 0, 445, 5, 1, 0, 0, 0, 446, 447, 5, 67, 0, 0, 447, 448, 5, 188, 0, 0, 448, 450, 3, 374, 187, 0, 449, 451, 3, 8, 4, 0, 450, 449, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 453, 5, 188, 0, 0, 453, 454, 5, 88, 0, 0, 454, 455, 5, 188, 0, 0, 455, 469, 3, 10, 5, 0, 456, 458, 5, 188, 0, 0, 457, 456, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 461, 5, 2, 0, 0, 460, 462, 5, 188, 0, 0, 461, 460, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 465, 3, 26, 13, 0, 464, 466, 5, 188, 0, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 468, 5, 3, 0, 0, 468, 470, 1, 0, 0, 0, 469, 457, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 7, 1, 0, 0, 0, 471, 473, 5, 188, 0, 0, 472, 471, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 476, 5, 2, 0, 0, 475, 477, 5, 188, 0, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 495, 1, 0, 0, 0, 478, 489, 3, 374, 187, 0, 479, 481, 5, 188, 0, 0, 480, 479, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 484, 5, 4, 0, 0, 483, 485, 5, 188, 0, 0, 484, 483, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 488, 3, 374, 187, 0, 487, 480, 1, 0, 0, 0, 488, 491, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 492, 494, 5, 188, 0, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 496, 1, 0, 0, 0, 495, 478, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 498, 5, 3, 0, 0, 498, 9, 1, 0, 0, 0, 499, 521, 3, 48, 24, 0, 500, 502, 5, 2, 0, 0, 501, 503, 5, 188, 0, 0, 502, 501, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 506, 3, 166, 83, 0, 505, 507, 5, 188, 0, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 5, 3, 0, 0, 509, 521, 1, 0, 0, 0, 510, 521, 3, 364, 182, 0, 511, 521, 3, 360, 180, 0, 512, 513, 3, 360, 180, 0, 513, 515, 5, 5, 0, 0, 514, 516, 5, 188, 0, 0, 515, 514, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 518, 3, 374, 187, 0, 518, 521, 1, 0, 0, 0, 519, 521, 3, 340, 170, 0, 520, 499, 1, 0, 0, 0, 520, 500, 1, 0, 0, 0, 520, 510, 1, 0, 0, 0, 520, 511, 1, 0, 0, 0, 520, 512, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 11, 1, 0, 0, 0, 522, 523, 5, 67, 0, 0, 523, 524, 5, 188, 0, 0, 524, 525, 3, 374, 187, 0, 525, 526, 5, 188, 0, 0, 526, 527, 5, 88, 0, 0, 527, 528, 5, 188, 0, 0, 528, 530, 5, 2, 0, 0, 529, 531, 5, 188, 0, 0, 530, 529, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 543, 5, 173, 0, 0, 533, 535, 5, 188, 0, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 538, 5, 4, 0, 0, 537, 539, 5, 188, 0, 0, 538, 537, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 542, 5, 173, 0, 0, 541, 534, 1, 0, 0, 0, 542, 545, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 546, 1, 0, 0, 0, 545, 543, 1, 0, 0, 0, 546, 547, 5, 3, 0, 0, 547, 548, 5, 188, 0, 0, 548, 549, 5, 57, 0, 0, 549, 550, 5, 188, 0, 0, 550, 551, 5, 62, 0, 0, 551, 13, 1, 0, 0, 0, 552, 553, 5, 67, 0, 0, 553, 554, 5, 188, 0, 0, 554, 556, 5, 2, 0, 0, 555, 557, 5, 188, 0, 0, 556, 555, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 560, 3, 166, 83, 0, 559, 561, 5, 188, 0, 0, 560, 559, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 5, 3, 0, 0, 563, 564, 5, 188, 0, 0, 564, 565, 5, 143, 0, 0, 565, 566, 5, 188, 0, 0, 566, 580, 5, 173, 0, 0, 567, 569, 5, 188, 0, 0, 568, 567, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 572, 5, 2, 0, 0, 571, 573, 5, 188, 0, 0, 572, 571, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 576, 3, 26, 13, 0, 575, 577, 5, 188, 0, 0, 576, 575, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 579, 5, 3, 0, 0, 579, 581, 1, 0, 0, 0, 580, 568, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 15, 1, 0, 0, 0, 582, 583, 5, 85, 0, 0, 583, 584, 5, 188, 0, 0, 584, 585, 5, 71, 0, 0, 585, 586, 5, 188, 0, 0, 586, 600, 5, 173, 0, 0, 587, 589, 5, 188, 0, 0, 588, 587, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 592, 5, 2, 0, 0, 591, 593, 5, 188, 0, 0, 592, 591, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 596, 3, 26, 13, 0, 595, 597, 5, 188, 0, 0, 596, 595, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 5, 3, 0, 0, 599, 601, 1, 0, 0, 0, 600, 588, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 17, 1, 0, 0, 0, 602, 603, 5, 96, 0, 0, 603, 604, 5, 188, 0, 0, 604, 605, 5, 71, 0, 0, 605, 606, 5, 188, 0, 0, 606, 607, 5, 173, 0, 0, 607, 19, 1, 0, 0, 0, 608, 609, 5, 55, 0, 0, 609, 610, 5, 188, 0, 0, 610, 615, 5, 173, 0, 0, 611, 612, 5, 188, 0, 0, 612, 613, 5, 52, 0, 0, 613, 614, 5, 188, 0, 0, 614, 616, 3, 374, 187, 0, 615, 611, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 5, 188, 0, 0, 618, 620, 5, 2, 0, 0, 619, 621, 5, 188, 0, 0, 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 623, 5, 72, 0, 0, 623, 624, 5, 188, 0, 0, 624, 633, 3, 376, 188, 0, 625, 627, 5, 188, 0, 0, 626, 625, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 628, 1, 0, 0, 0, 628, 630, 5, 4, 0, 0, 629, 631, 5, 188, 0, 0, 630, 629, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 634, 3, 26, 13, 0, 633, 626, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 636, 1, 0, 0, 0, 635, 637, 5, 188, 0, 0, 636, 635, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 639, 5, 3, 0, 0, 639, 21, 1, 0, 0, 0, 640, 654, 3, 376, 188, 0, 641, 643, 5, 188, 0, 0, 642, 641, 1, 0, 0, 0, 642, 643, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 646, 5, 6, 0, 0, 645, 647, 5, 188, 0, 0, 646, 645, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 655, 1, 0, 0, 0, 648, 650, 5, 188, 0, 0, 649, 648, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 651, 652, 1, 0, 0, 0, 652, 655, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 654, 642, 1, 0, 0, 0, 654, 651, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 661, 3, 326, 163, 0, 657, 659, 5, 188, 0, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 662, 3, 24, 12, 0, 661, 658, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 665, 1, 0, 0, 0, 663, 665, 3, 376, 188, 0, 664, 640, 1, 0, 0, 0, 664, 663, 1, 0, 0, 0, 665, 23, 1, 0, 0, 0, 666, 668, 5, 2, 0, 0, 667, 669, 5, 188, 0, 0, 668, 667, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 670, 1, 0, 0, 0, 670, 672, 3, 376, 188, 0, 671, 673, 5, 188, 0, 0, 672, 671, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 5, 3, 0, 0, 675, 25, 1, 0, 0, 0, 676, 687, 3, 22, 11, 0, 677, 679, 5, 188, 0, 0, 678, 677, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 682, 5, 4, 0, 0, 681, 683, 5, 188, 0, 0, 682, 681, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 686, 3, 22, 11, 0, 685, 678, 1, 0, 0, 0, 686, 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 27, 1, 0, 0, 0, 689, 687, 1, 0, 0, 0, 690, 691, 5, 77, 0, 0, 691, 692, 5, 188, 0, 0, 692, 693, 3, 374, 187, 0, 693, 29, 1, 0, 0, 0, 694, 695, 5, 152, 0, 0, 695, 696, 5, 188, 0, 0, 696, 697, 3, 374, 187, 0, 697, 31, 1, 0, 0, 0, 698, 699, 5, 69, 0, 0, 699, 700, 5, 188, 0, 0, 700, 701, 5, 92, 0, 0, 701, 702, 5, 188, 0, 0, 702, 705, 3, 374, 187, 0, 703, 704, 5, 188, 0, 0, 704, 706, 5, 46, 0, 0, 705, 703, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 33, 1, 0, 0, 0, 707, 708, 5, 152, 0, 0, 708, 709, 5, 188, 0, 0, 709, 710, 5, 92, 0, 0, 710, 711, 5, 188, 0, 0, 711, 712, 3, 374, 187, 0, 712, 35, 1, 0, 0, 0, 713, 716, 5, 50, 0, 0, 714, 715, 5, 188, 0, 0, 715, 717, 3, 374, 187, 0, 716, 714, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 37, 1, 0, 0, 0, 718, 719, 5, 58, 0, 0, 719, 720, 5, 188, 0, 0, 720, 722, 3, 376, 188, 0, 721, 723, 5, 188, 0, 0, 722, 721, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 724, 726, 5, 6, 0, 0, 725, 727, 5, 188, 0, 0, 726, 725, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 3, 272, 136, 0, 729, 734, 1, 0, 0, 0, 730, 731, 5, 58, 0, 0, 731, 732, 5, 188, 0, 0, 732, 734, 3, 340, 170, 0, 733, 718, 1, 0, 0, 0, 733, 730, 1, 0, 0, 0, 734, 39, 1, 0, 0, 0, 735, 736, 5, 63, 0, 0, 736, 737, 5, 188, 0, 0, 737, 738, 5, 119, 0, 0, 738, 739, 5, 188, 0, 0, 739, 740, 5, 141, 0, 0, 740, 741, 5, 188, 0, 0, 741, 742, 3, 374, 187, 0, 742, 743, 5, 188, 0, 0, 743, 744, 5, 102, 0, 0, 744, 745, 5, 188, 0, 0, 745, 746, 5, 173, 0, 0, 746, 41, 1, 0, 0, 0, 747, 748, 5, 69, 0, 0, 748, 749, 5, 188, 0, 0, 749, 750, 5, 108, 0, 0, 750, 751, 5, 188, 0, 0, 751, 753, 3, 342, 171, 0, 752, 754, 5, 188, 0, 0, 753, 752, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 757, 5, 2, 0, 0, 756, 758, 5, 188, 0, 0, 757, 756, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 760, 1, 0, 0, 0, 759, 761, 3, 44, 22, 0, 760, 759, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 763, 1, 0, 0, 0, 762, 764, 5, 188, 0, 0, 763, 762, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 766, 1, 0, 0, 0, 765, 767, 3, 46, 23, 0, 766, 765, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 778, 1, 0, 0, 0, 768, 770, 5, 188, 0, 0, 769, 768, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 773, 5, 4, 0, 0, 772, 774, 5, 188, 0, 0, 773, 772, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 777, 3, 46, 23, 0, 776, 769, 1, 0, 0, 0, 777, 780, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 782, 1, 0, 0, 0, 780, 778, 1, 0, 0, 0, 781, 783, 5, 188, 0, 0, 782, 781, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 5, 3, 0, 0, 785, 786, 5, 188, 0, 0, 786, 787, 5, 52, 0, 0, 787, 788, 5, 188, 0, 0, 788, 789, 3, 272, 136, 0, 789, 43, 1, 0, 0, 0, 790, 801, 3, 376, 188, 0, 791, 793, 5, 188, 0, 0, 792, 791, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 796, 5, 4, 0, 0, 795, 797, 5, 188, 0, 0, 796, 795, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 800, 3, 376, 188, 0, 799, 792, 1, 0, 0, 0, 800, 803, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 45, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 804, 806, 3, 376, 188, 0, 805, 807, 5, 188, 0, 0, 806, 805, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 809, 5, 169, 0, 0, 809, 811, 5, 6, 0, 0, 810, 812, 5, 188, 0, 0, 811, 810, 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 814, 3, 326, 163, 0, 814, 47, 1, 0, 0, 0, 815, 817, 5, 7, 0, 0, 816, 818, 5, 188, 0, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 830, 5, 173, 0, 0, 820, 822, 5, 188, 0, 0, 821, 820, 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 825, 5, 4, 0, 0, 824, 826, 5, 188, 0, 0, 825, 824, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 829, 5, 173, 0, 0, 828, 821, 1, 0, 0, 0, 829, 832, 1, 0, 0, 0, 830, 828, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 833, 1, 0, 0, 0, 832, 830, 1, 0, 0, 0, 833, 849, 5, 8, 0, 0, 834, 849, 5, 173, 0, 0, 835, 837, 5, 91, 0, 0, 836, 838, 5, 188, 0, 0, 837, 836, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 5, 2, 0, 0, 840, 842, 5, 188, 0, 0, 841, 840, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 845, 5, 173, 0, 0, 844, 846, 5, 188, 0, 0, 845, 844, 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 849, 5, 3, 0, 0, 848, 815, 1, 0, 0, 0, 848, 834, 1, 0, 0, 0, 848, 835, 1, 0, 0, 0, 849, 49, 1, 0, 0, 0, 850, 851, 5, 98, 0, 0, 851, 852, 5, 188, 0, 0, 852, 853, 5, 116, 0, 0, 853, 854, 5, 188, 0, 0, 854, 855, 5, 83, 0, 0, 855, 51, 1, 0, 0, 0, 856, 857, 5, 69, 0, 0, 857, 858, 5, 188, 0, 0, 858, 859, 5, 115, 0, 0, 859, 860, 5, 188, 0, 0, 860, 861, 5, 141, 0, 0, 861, 865, 5, 188, 0, 0, 862, 863, 3, 50, 25, 0, 863, 864, 5, 188, 0, 0, 864, 866, 1, 0, 0, 0, 865, 862, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 895, 3, 374, 187, 0, 868, 870, 5, 188, 0, 0, 869, 868, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 873, 5, 2, 0, 0, 872, 874, 5, 188, 0, 0, 873, 872, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 877, 3, 128, 64, 0, 876, 878, 5, 188, 0, 0, 877, 876, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 884, 1, 0, 0, 0, 879, 881, 5, 4, 0, 0, 880, 882, 5, 188, 0, 0, 881, 880, 1, 0, 0, 0, 881, 882, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 885, 3, 132, 66, 0, 884, 879, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 887, 1, 0, 0, 0, 886, 888, 5, 188, 0, 0, 887, 886, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 890, 5, 3, 0, 0, 890, 896, 1, 0, 0, 0, 891, 892, 5, 188, 0, 0, 892, 893, 5, 52, 0, 0, 893, 894, 5, 188, 0, 0, 894, 896, 3, 166, 83, 0, 895, 869, 1, 0, 0, 0, 895, 891, 1, 0, 0, 0, 896, 912, 1, 0, 0, 0, 897, 898, 5, 188, 0, 0, 898, 900, 5, 155, 0, 0, 899, 901, 5, 188, 0, 0, 900, 899, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 904, 5, 2, 0, 0, 903, 905, 5, 188, 0, 0, 904, 903, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, 906, 908, 3, 26, 13, 0, 907, 909, 5, 188, 0, 0, 908, 907, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 911, 5, 3, 0, 0, 911, 913, 1, 0, 0, 0, 912, 897, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 53, 1, 0, 0, 0, 914, 915, 5, 69, 0, 0, 915, 916, 5, 188, 0, 0, 916, 917, 5, 129, 0, 0, 917, 918, 5, 188, 0, 0, 918, 921, 5, 141, 0, 0, 919, 920, 5, 188, 0, 0, 920, 922, 5, 93, 0, 0, 921, 919, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 925, 1, 0, 0, 0, 923, 924, 5, 188, 0, 0, 924, 926, 3, 50, 25, 0, 925, 923, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 928, 5, 188, 0, 0, 928, 930, 3, 374, 187, 0, 929, 931, 5, 188, 0, 0, 930, 929, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 932, 1, 0, 0, 0, 932, 934, 5, 2, 0, 0, 933, 935, 5, 188, 0, 0, 934, 933, 1, 0, 0, 0, 934, 935, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 938, 3, 66, 33, 0, 937, 939, 5, 188, 0, 0, 938, 937, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 966, 1, 0, 0, 0, 940, 942, 5, 4, 0, 0, 941, 943, 5, 188, 0, 0, 942, 941, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 944, 1, 0, 0, 0, 944, 946, 3, 128, 64, 0, 945, 947, 5, 188, 0, 0, 946, 945, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 949, 1, 0, 0, 0, 948, 940, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 958, 1, 0, 0, 0, 950, 952, 5, 4, 0, 0, 951, 953, 5, 188, 0, 0, 952, 951, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 954, 1, 0, 0, 0, 954, 956, 3, 376, 188, 0, 955, 957, 5, 188, 0, 0, 956, 955, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 959, 1, 0, 0, 0, 958, 950, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 967, 5, 3, 0, 0, 961, 962, 5, 3, 0, 0, 962, 963, 5, 188, 0, 0, 963, 964, 5, 52, 0, 0, 964, 965, 5, 188, 0, 0, 965, 967, 3, 166, 83, 0, 966, 948, 1, 0, 0, 0, 966, 961, 1, 0, 0, 0, 967, 983, 1, 0, 0, 0, 968, 969, 5, 188, 0, 0, 969, 971, 5, 155, 0, 0, 970, 972, 5, 188, 0, 0, 971, 970, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 975, 5, 2, 0, 0, 974, 976, 5, 188, 0, 0, 975, 974, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 979, 3, 26, 13, 0, 978, 980, 5, 188, 0, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 982, 5, 3, 0, 0, 982, 984, 1, 0, 0, 0, 983, 968, 1, 0, 0, 0, 983, 984, 1, 0, 0, 0, 984, 55, 1, 0, 0, 0, 985, 988, 5, 69, 0, 0, 986, 987, 5, 188, 0, 0, 987, 989, 3, 376, 188, 0, 988, 986, 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 989, 990, 1, 0, 0, 0, 990, 991, 5, 188, 0, 0, 991, 994, 5, 97, 0, 0, 992, 993, 5, 188, 0, 0, 993, 995, 3, 374, 187, 0, 994, 992, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 997, 5, 188, 0, 0, 997, 999, 3, 50, 25, 0, 998, 996, 1, 0, 0, 0, 998, 999, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, 1000, 1001, 5, 188, 0, 0, 1001, 1002, 5, 90, 0, 0, 1002, 1003, 5, 188, 0, 0, 1003, 1004, 3, 58, 29, 0, 1004, 1005, 5, 188, 0, 0, 1005, 1006, 5, 119, 0, 0, 1006, 1007, 5, 188, 0, 0, 1007, 1024, 3, 64, 32, 0, 1008, 1009, 5, 188, 0, 0, 1009, 1011, 5, 121, 0, 0, 1010, 1012, 5, 188, 0, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1015, 5, 9, 0, 0, 1014, 1016, 5, 188, 0, 0, 1015, 1014, 1, 0, 0, 0, 1015, 1016, 1, 0, 0, 0, 1016, 1018, 1, 0, 0, 0, 1017, 1019, 3, 26, 13, 0, 1018, 1017, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1021, 1, 0, 0, 0, 1020, 1022, 5, 188, 0, 0, 1021, 1020, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1025, 5, 10, 0, 0, 1024, 1008, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 57, 1, 0, 0, 0, 1026, 1029, 3, 60, 30, 0, 1027, 1029, 3, 62, 31, 0, 1028, 1026, 1, 0, 0, 0, 1028, 1027, 1, 0, 0, 0, 1029, 59, 1, 0, 0, 0, 1030, 1032, 5, 2, 0, 0, 1031, 1033, 5, 188, 0, 0, 1032, 1031, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 1035, 1, 0, 0, 0, 1034, 1036, 3, 360, 180, 0, 1035, 1034, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1038, 1, 0, 0, 0, 1037, 1039, 5, 188, 0, 0, 1038, 1037, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1042, 5, 169, 0, 0, 1041, 1043, 5, 188, 0, 0, 1042, 1041, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1046, 3, 268, 134, 0, 1045, 1047, 5, 188, 0, 0, 1046, 1045, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, 1049, 5, 3, 0, 0, 1049, 61, 1, 0, 0, 0, 1050, 1052, 5, 2, 0, 0, 1051, 1053, 5, 188, 0, 0, 1052, 1051, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1056, 5, 3, 0, 0, 1055, 1057, 5, 188, 0, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1060, 3, 244, 122, 0, 1059, 1061, 5, 188, 0, 0, 1060, 1059, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1064, 5, 2, 0, 0, 1063, 1065, 5, 188, 0, 0, 1064, 1063, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 5, 3, 0, 0, 1067, 63, 1, 0, 0, 0, 1068, 1070, 5, 2, 0, 0, 1069, 1071, 5, 188, 0, 0, 1070, 1069, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1074, 3, 360, 180, 0, 1073, 1075, 5, 188, 0, 0, 1074, 1073, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1078, 5, 5, 0, 0, 1077, 1079, 5, 188, 0, 0, 1078, 1077, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1082, 3, 368, 184, 0, 1081, 1083, 5, 188, 0, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 5, 3, 0, 0, 1085, 65, 1, 0, 0, 0, 1086, 1097, 3, 68, 34, 0, 1087, 1089, 5, 188, 0, 0, 1088, 1087, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 5, 4, 0, 0, 1091, 1093, 5, 188, 0, 0, 1092, 1091, 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1096, 3, 68, 34, 0, 1095, 1088, 1, 0, 0, 0, 1096, 1099, 1, 0, 0, 0, 1097, 1095, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 67, 1, 0, 0, 0, 1099, 1097, 1, 0, 0, 0, 1100, 1101, 5, 88, 0, 0, 1101, 1102, 5, 188, 0, 0, 1102, 1103, 3, 374, 187, 0, 1103, 1104, 5, 188, 0, 0, 1104, 1105, 5, 143, 0, 0, 1105, 1106, 5, 188, 0, 0, 1106, 1109, 3, 374, 187, 0, 1107, 1108, 5, 188, 0, 0, 1108, 1110, 3, 376, 188, 0, 1109, 1107, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 69, 1, 0, 0, 0, 1111, 1122, 3, 72, 36, 0, 1112, 1114, 5, 188, 0, 0, 1113, 1112, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1115, 1, 0, 0, 0, 1115, 1117, 5, 4, 0, 0, 1116, 1118, 5, 188, 0, 0, 1117, 1116, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1121, 3, 72, 36, 0, 1120, 1113, 1, 0, 0, 0, 1121, 1124, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 71, 1, 0, 0, 0, 1124, 1122, 1, 0, 0, 0, 1125, 1126, 5, 88, 0, 0, 1126, 1127, 5, 188, 0, 0, 1127, 1128, 3, 374, 187, 0, 1128, 1129, 5, 188, 0, 0, 1129, 1130, 5, 143, 0, 0, 1130, 1131, 5, 188, 0, 0, 1131, 1132, 3, 374, 187, 0, 1132, 73, 1, 0, 0, 0, 1133, 1134, 5, 69, 0, 0, 1134, 1135, 5, 188, 0, 0, 1135, 1136, 5, 134, 0, 0, 1136, 1140, 5, 188, 0, 0, 1137, 1138, 3, 50, 25, 0, 1138, 1139, 5, 188, 0, 0, 1139, 1141, 1, 0, 0, 0, 1140, 1137, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1147, 3, 374, 187, 0, 1143, 1144, 5, 188, 0, 0, 1144, 1146, 3, 78, 39, 0, 1145, 1143, 1, 0, 0, 0, 1146, 1149, 1, 0, 0, 0, 1147, 1145, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 75, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1150, 1151, 5, 69, 0, 0, 1151, 1152, 5, 188, 0, 0, 1152, 1153, 5, 147, 0, 0, 1153, 1154, 5, 188, 0, 0, 1154, 1155, 3, 374, 187, 0, 1155, 1156, 5, 188, 0, 0, 1156, 1157, 5, 52, 0, 0, 1157, 1158, 5, 188, 0, 0, 1158, 1160, 3, 142, 71, 0, 1159, 1161, 5, 188, 0, 0, 1160, 1159, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 77, 1, 0, 0, 0, 1162, 1168, 3, 86, 43, 0, 1163, 1168, 3, 88, 44, 0, 1164, 1168, 3, 90, 45, 0, 1165, 1168, 3, 92, 46, 0, 1166, 1168, 3, 94, 47, 0, 1167, 1162, 1, 0, 0, 0, 1167, 1163, 1, 0, 0, 0, 1167, 1164, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1166, 1, 0, 0, 0, 1168, 79, 1, 0, 0, 0, 1169, 1170, 5, 188, 0, 0, 1170, 1171, 5, 155, 0, 0, 1171, 1172, 5, 188, 0, 0, 1172, 1173, 5, 162, 0, 0, 1173, 1174, 5, 188, 0, 0, 1174, 1175, 5, 173, 0, 0, 1175, 81, 1, 0, 0, 0, 1176, 1177, 5, 69, 0, 0, 1177, 1178, 5, 188, 0, 0, 1178, 1179, 5, 161, 0, 0, 1179, 1183, 5, 188, 0, 0, 1180, 1181, 3, 50, 25, 0, 1181, 1182, 5, 188, 0, 0, 1182, 1184, 1, 0, 0, 0, 1183, 1180, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1187, 3, 360, 180, 0, 1186, 1188, 3, 80, 40, 0, 1187, 1186, 1, 0, 0, 0, 1187, 1188, 1, 0, 0, 0, 1188, 83, 1, 0, 0, 0, 1189, 1190, 5, 69, 0, 0, 1190, 1191, 5, 188, 0, 0, 1191, 1192, 5, 163, 0, 0, 1192, 1196, 5, 188, 0, 0, 1193, 1194, 3, 50, 25, 0, 1194, 1195, 5, 188, 0, 0, 1195, 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 3, 360, 180, 0, 1199, 85, 1, 0, 0, 0, 1200, 1201, 5, 100, 0, 0, 1201, 1204, 5, 188, 0, 0, 1202, 1203, 5, 57, 0, 0, 1203, 1205, 5, 188, 0, 0, 1204, 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1207, 1, 0, 0, 0, 1206, 1208, 5, 171, 0, 0, 1207, 1206, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1210, 3, 370, 185, 0, 1210, 87, 1, 0, 0, 0, 1211, 1212, 5, 114, 0, 0, 1212, 1213, 5, 188, 0, 0, 1213, 1221, 5, 112, 0, 0, 1214, 1215, 5, 112, 0, 0, 1215, 1217, 5, 188, 0, 0, 1216, 1218, 5, 171, 0, 0, 1217, 1216, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1221, 3, 370, 185, 0, 1220, 1211, 1, 0, 0, 0, 1220, 1214, 1, 0, 0, 0, 1221, 89, 1, 0, 0, 0, 1222, 1223, 5, 114, 0, 0, 1223, 1224, 5, 188, 0, 0, 1224, 1232, 5, 110, 0, 0, 1225, 1226, 5, 110, 0, 0, 1226, 1228, 5, 188, 0, 0, 1227, 1229, 5, 171, 0, 0, 1228, 1227, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1230, 1, 0, 0, 0, 1230, 1232, 3, 370, 185, 0, 1231, 1222, 1, 0, 0, 0, 1231, 1225, 1, 0, 0, 0, 1232, 91, 1, 0, 0, 0, 1233, 1234, 5, 138, 0, 0, 1234, 1237, 5, 188, 0, 0, 1235, 1236, 5, 155, 0, 0, 1236, 1238, 5, 188, 0, 0, 1237, 1235, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1240, 1, 0, 0, 0, 1239, 1241, 5, 171, 0, 0, 1240, 1239, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 3, 370, 185, 0, 1243, 93, 1, 0, 0, 0, 1244, 1245, 5, 114, 0, 0, 1245, 1247, 5, 188, 0, 0, 1246, 1244, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1249, 5, 70, 0, 0, 1249, 95, 1, 0, 0, 0, 1250, 1251, 5, 98, 0, 0, 1251, 1252, 5, 188, 0, 0, 1252, 1253, 5, 83, 0, 0, 1253, 97, 1, 0, 0, 0, 1254, 1255, 5, 79, 0, 0, 1255, 1256, 5, 188, 0, 0, 1256, 1257, 7, 0, 0, 0, 1257, 1261, 5, 188, 0, 0, 1258, 1259, 3, 96, 48, 0, 1259, 1260, 5, 188, 0, 0, 1260, 1262, 1, 0, 0, 0, 1261, 1258, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1275, 3, 374, 187, 0, 1264, 1265, 5, 79, 0, 0, 1265, 1266, 5, 188, 0, 0, 1266, 1267, 5, 97, 0, 0, 1267, 1271, 5, 188, 0, 0, 1268, 1269, 3, 96, 48, 0, 1269, 1270, 5, 188, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1268, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1275, 3, 100, 50, 0, 1274, 1254, 1, 0, 0, 0, 1274, 1264, 1, 0, 0, 0, 1275, 99, 1, 0, 0, 0, 1276, 1278, 3, 374, 187, 0, 1277, 1279, 5, 188, 0, 0, 1278, 1277, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1282, 5, 5, 0, 0, 1281, 1283, 5, 188, 0, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1285, 3, 374, 187, 0, 1285, 101, 1, 0, 0, 0, 1286, 1287, 5, 49, 0, 0, 1287, 1288, 5, 188, 0, 0, 1288, 1289, 5, 141, 0, 0, 1289, 1290, 5, 188, 0, 0, 1290, 1291, 3, 374, 187, 0, 1291, 1292, 5, 188, 0, 0, 1292, 1293, 3, 104, 52, 0, 1293, 103, 1, 0, 0, 0, 1294, 1302, 3, 106, 53, 0, 1295, 1302, 3, 110, 55, 0, 1296, 1302, 3, 112, 56, 0, 1297, 1302, 3, 114, 57, 0, 1298, 1302, 3, 116, 58, 0, 1299, 1302, 3, 118, 59, 0, 1300, 1302, 3, 120, 60, 0, 1301, 1294, 1, 0, 0, 0, 1301, 1295, 1, 0, 0, 0, 1301, 1296, 1, 0, 0, 0, 1301, 1297, 1, 0, 0, 0, 1301, 1298, 1, 0, 0, 0, 1301, 1299, 1, 0, 0, 0, 1301, 1300, 1, 0, 0, 0, 1302, 105, 1, 0, 0, 0, 1303, 1304, 5, 47, 0, 0, 1304, 1308, 5, 188, 0, 0, 1305, 1306, 3, 50, 25, 0, 1306, 1307, 5, 188, 0, 0, 1307, 1309, 1, 0, 0, 0, 1308, 1305, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1311, 3, 368, 184, 0, 1311, 1312, 5, 188, 0, 0, 1312, 1315, 3, 142, 71, 0, 1313, 1314, 5, 188, 0, 0, 1314, 1316, 3, 108, 54, 0, 1315, 1313, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 107, 1, 0, 0, 0, 1317, 1318, 5, 73, 0, 0, 1318, 1319, 5, 188, 0, 0, 1319, 1320, 3, 272, 136, 0, 1320, 109, 1, 0, 0, 0, 1321, 1322, 5, 79, 0, 0, 1322, 1326, 5, 188, 0, 0, 1323, 1324, 3, 96, 48, 0, 1324, 1325, 5, 188, 0, 0, 1325, 1327, 1, 0, 0, 0, 1326, 1323, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1328, 1, 0, 0, 0, 1328, 1329, 3, 368, 184, 0, 1329, 111, 1, 0, 0, 0, 1330, 1331, 5, 130, 0, 0, 1331, 1332, 5, 188, 0, 0, 1332, 1333, 5, 143, 0, 0, 1333, 1334, 5, 188, 0, 0, 1334, 1335, 3, 374, 187, 0, 1335, 113, 1, 0, 0, 0, 1336, 1337, 5, 130, 0, 0, 1337, 1338, 5, 188, 0, 0, 1338, 1339, 3, 368, 184, 0, 1339, 1340, 5, 188, 0, 0, 1340, 1341, 5, 143, 0, 0, 1341, 1342, 5, 188, 0, 0, 1342, 1343, 3, 368, 184, 0, 1343, 115, 1, 0, 0, 0, 1344, 1345, 5, 47, 0, 0, 1345, 1349, 5, 188, 0, 0, 1346, 1347, 3, 50, 25, 0, 1347, 1348, 5, 188, 0, 0, 1348, 1350, 1, 0, 0, 0, 1349, 1346, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1352, 3, 72, 36, 0, 1352, 117, 1, 0, 0, 0, 1353, 1354, 5, 79, 0, 0, 1354, 1358, 5, 188, 0, 0, 1355, 1356, 3, 96, 48, 0, 1356, 1357, 5, 188, 0, 0, 1357, 1359, 1, 0, 0, 0, 1358, 1355, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1361, 3, 72, 36, 0, 1361, 119, 1, 0, 0, 0, 1362, 1363, 5, 135, 0, 0, 1363, 1364, 5, 188, 0, 0, 1364, 1365, 5, 136, 0, 0, 1365, 1366, 5, 188, 0, 0, 1366, 1368, 5, 57, 0, 0, 1367, 1369, 5, 188, 0, 0, 1368, 1367, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1372, 5, 2, 0, 0, 1371, 1373, 5, 188, 0, 0, 1372, 1371, 1, 0, 0, 0, 1372, 1373, 1, 0, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1385, 3, 122, 61, 0, 1375, 1377, 5, 188, 0, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1380, 5, 4, 0, 0, 1379, 1381, 5, 188, 0, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1384, 3, 122, 61, 0, 1383, 1376, 1, 0, 0, 0, 1384, 1387, 1, 0, 0, 0, 1385, 1383, 1, 0, 0, 0, 1385, 1386, 1, 0, 0, 0, 1386, 1389, 1, 0, 0, 0, 1387, 1385, 1, 0, 0, 0, 1388, 1390, 5, 188, 0, 0, 1389, 1388, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1392, 5, 3, 0, 0, 1392, 121, 1, 0, 0, 0, 1393, 1394, 3, 368, 184, 0, 1394, 1395, 5, 188, 0, 0, 1395, 1396, 7, 1, 0, 0, 1396, 123, 1, 0, 0, 0, 1397, 1408, 3, 126, 63, 0, 1398, 1400, 5, 188, 0, 0, 1399, 1398, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1403, 5, 4, 0, 0, 1402, 1404, 5, 188, 0, 0, 1403, 1402, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1407, 3, 126, 63, 0, 1406, 1399, 1, 0, 0, 0, 1407, 1410, 1, 0, 0, 0, 1408, 1406, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 125, 1, 0, 0, 0, 1410, 1408, 1, 0, 0, 0, 1411, 1412, 3, 368, 184, 0, 1412, 1413, 5, 188, 0, 0, 1413, 1414, 3, 142, 71, 0, 1414, 127, 1, 0, 0, 0, 1415, 1426, 3, 130, 65, 0, 1416, 1418, 5, 188, 0, 0, 1417, 1416, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1419, 1, 0, 0, 0, 1419, 1421, 5, 4, 0, 0, 1420, 1422, 5, 188, 0, 0, 1421, 1420, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 1425, 3, 130, 65, 0, 1424, 1417, 1, 0, 0, 0, 1425, 1428, 1, 0, 0, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 129, 1, 0, 0, 0, 1428, 1426, 1, 0, 0, 0, 1429, 1432, 3, 126, 63, 0, 1430, 1431, 5, 188, 0, 0, 1431, 1433, 3, 108, 54, 0, 1432, 1430, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1438, 1, 0, 0, 0, 1434, 1435, 5, 188, 0, 0, 1435, 1436, 5, 125, 0, 0, 1436, 1437, 5, 188, 0, 0, 1437, 1439, 5, 104, 0, 0, 1438, 1434, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 131, 1, 0, 0, 0, 1440, 1441, 5, 125, 0, 0, 1441, 1442, 5, 188, 0, 0, 1442, 1444, 5, 104, 0, 0, 1443, 1445, 5, 188, 0, 0, 1444, 1443, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1448, 5, 2, 0, 0, 1447, 1449, 5, 188, 0, 0, 1448, 1447, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1452, 3, 368, 184, 0, 1451, 1453, 5, 188, 0, 0, 1452, 1451, 1, 0, 0, 0, 1452, 1453, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 5, 3, 0, 0, 1455, 133, 1, 0, 0, 0, 1456, 1458, 5, 148, 0, 0, 1457, 1459, 5, 188, 0, 0, 1458, 1457, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1462, 5, 2, 0, 0, 1461, 1463, 5, 188, 0, 0, 1462, 1461, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1466, 3, 124, 62, 0, 1465, 1467, 5, 188, 0, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1469, 5, 3, 0, 0, 1469, 135, 1, 0, 0, 0, 1470, 1472, 5, 140, 0, 0, 1471, 1473, 5, 188, 0, 0, 1472, 1471, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1476, 5, 2, 0, 0, 1475, 1477, 5, 188, 0, 0, 1476, 1475, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1480, 3, 124, 62, 0, 1479, 1481, 5, 188, 0, 0, 1480, 1479, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1483, 5, 3, 0, 0, 1483, 137, 1, 0, 0, 0, 1484, 1486, 5, 164, 0, 0, 1485, 1487, 5, 188, 0, 0, 1486, 1485, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1490, 5, 2, 0, 0, 1489, 1491, 5, 188, 0, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1494, 3, 142, 71, 0, 1493, 1495, 5, 188, 0, 0, 1494, 1493, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1498, 5, 4, 0, 0, 1497, 1499, 5, 188, 0, 0, 1498, 1497, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1502, 3, 142, 71, 0, 1501, 1503, 5, 188, 0, 0, 1502, 1501, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1505, 5, 3, 0, 0, 1505, 139, 1, 0, 0, 0, 1506, 1508, 5, 165, 0, 0, 1507, 1509, 5, 188, 0, 0, 1508, 1507, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1512, 5, 2, 0, 0, 1511, 1513, 5, 188, 0, 0, 1512, 1511, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1516, 3, 370, 185, 0, 1515, 1517, 5, 188, 0, 0, 1516, 1515, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1520, 5, 4, 0, 0, 1519, 1521, 5, 188, 0, 0, 1520, 1519, 1, 0, 0, 0, 1520, 1521, 1, 0, 0, 0, 1521, 1522, 1, 0, 0, 0, 1522, 1524, 3, 370, 185, 0, 1523, 1525, 5, 188, 0, 0, 1524, 1523, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1527, 5, 3, 0, 0, 1527, 141, 1, 0, 0, 0, 1528, 1529, 6, 71, -1, 0, 1529, 1535, 3, 376, 188, 0, 1530, 1535, 3, 134, 67, 0, 1531, 1535, 3, 136, 68, 0, 1532, 1535, 3, 138, 69, 0, 1533, 1535, 3, 140, 70, 0, 1534, 1528, 1, 0, 0, 0, 1534, 1530, 1, 0, 0, 0, 1534, 1531, 1, 0, 0, 0, 1534, 1532, 1, 0, 0, 0, 1534, 1533, 1, 0, 0, 0, 1535, 1540, 1, 0, 0, 0, 1536, 1537, 10, 5, 0, 0, 1537, 1539, 3, 144, 72, 0, 1538, 1536, 1, 0, 0, 0, 1539, 1542, 1, 0, 0, 0, 1540, 1538, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 143, 1, 0, 0, 0, 1542, 1540, 1, 0, 0, 0, 1543, 1547, 3, 146, 73, 0, 1544, 1546, 3, 146, 73, 0, 1545, 1544, 1, 0, 0, 0, 1546, 1549, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 145, 1, 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1550, 1552, 5, 7, 0, 0, 1551, 1553, 3, 370, 185, 0, 1552, 1551, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 5, 8, 0, 0, 1555, 147, 1, 0, 0, 0, 1556, 1559, 3, 150, 75, 0, 1557, 1559, 3, 152, 76, 0, 1558, 1556, 1, 0, 0, 0, 1558, 1557, 1, 0, 0, 0, 1559, 149, 1, 0, 0, 0, 1560, 1563, 5, 84, 0, 0, 1561, 1562, 5, 188, 0, 0, 1562, 1564, 5, 107, 0, 0, 1563, 1561, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 151, 1, 0, 0, 0, 1565, 1566, 5, 126, 0, 0, 1566, 153, 1, 0, 0, 0, 1567, 1568, 5, 56, 0, 0, 1568, 1569, 5, 188, 0, 0, 1569, 1581, 5, 145, 0, 0, 1570, 1571, 5, 56, 0, 0, 1571, 1572, 5, 188, 0, 0, 1572, 1573, 5, 145, 0, 0, 1573, 1574, 5, 188, 0, 0, 1574, 1575, 5, 128, 0, 0, 1575, 1576, 5, 188, 0, 0, 1576, 1581, 5, 120, 0, 0, 1577, 1581, 5, 64, 0, 0, 1578, 1581, 5, 132, 0, 0, 1579, 1581, 5, 61, 0, 0, 1580, 1567, 1, 0, 0, 0, 1580, 1570, 1, 0, 0, 0, 1580, 1577, 1, 0, 0, 0, 1580, 1578, 1, 0, 0, 0, 1580, 1579, 1, 0, 0, 0, 1581, 155, 1, 0, 0, 0, 1582, 1587, 3, 158, 79, 0, 1583, 1587, 3, 160, 80, 0, 1584, 1587, 3, 162, 81, 0, 1585, 1587, 3, 164, 82, 0, 1586, 1582, 1, 0, 0, 0, 1586, 1583, 1, 0, 0, 0, 1586, 1584, 1, 0, 0, 0, 1586, 1585, 1, 0, 0, 0, 1587, 157, 1, 0, 0, 0, 1588, 1589, 5, 106, 0, 0, 1589, 1592, 5, 188, 0, 0, 1590, 1591, 5, 86, 0, 0, 1591, 1593, 5, 188, 0, 0, 1592, 1590, 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 1596, 1, 0, 0, 0, 1594, 1597, 5, 173, 0, 0, 1595, 1597, 3, 360, 180, 0, 1596, 1594, 1, 0, 0, 0, 1596, 1595, 1, 0, 0, 0, 1597, 159, 1, 0, 0, 0, 1598, 1599, 5, 89, 0, 0, 1599, 1601, 5, 188, 0, 0, 1600, 1598, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1603, 5, 101, 0, 0, 1603, 1604, 5, 188, 0, 0, 1604, 1609, 3, 360, 180, 0, 1605, 1606, 5, 188, 0, 0, 1606, 1607, 5, 88, 0, 0, 1607, 1608, 5, 188, 0, 0, 1608, 1610, 5, 173, 0, 0, 1609, 1605, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 161, 1, 0, 0, 0, 1611, 1612, 5, 150, 0, 0, 1612, 1613, 5, 188, 0, 0, 1613, 1614, 3, 360, 180, 0, 1614, 163, 1, 0, 0, 0, 1615, 1616, 5, 151, 0, 0, 1616, 1617, 5, 188, 0, 0, 1617, 1618, 3, 360, 180, 0, 1618, 165, 1, 0, 0, 0, 1619, 1620, 3, 168, 84, 0, 1620, 167, 1, 0, 0, 0, 1621, 1628, 3, 172, 86, 0, 1622, 1624, 5, 188, 0, 0, 1623, 1622, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1627, 3, 170, 85, 0, 1626, 1623, 1, 0, 0, 0, 1627, 1630, 1, 0, 0, 0, 1628, 1626, 1, 0, 0, 0, 1628, 1629, 1, 0, 0, 0, 1629, 1643, 1, 0, 0, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1633, 3, 214, 107, 0, 1632, 1634, 5, 188, 0, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1631, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 1639, 1, 0, 0, 0, 1639, 1640, 3, 172, 86, 0, 1640, 1641, 6, 84, -1, 0, 1641, 1643, 1, 0, 0, 0, 1642, 1621, 1, 0, 0, 0, 1642, 1635, 1, 0, 0, 0, 1643, 169, 1, 0, 0, 0, 1644, 1645, 5, 148, 0, 0, 1645, 1646, 5, 188, 0, 0, 1646, 1648, 5, 48, 0, 0, 1647, 1649, 5, 188, 0, 0, 1648, 1647, 1, 0, 0, 0, 1648, 1649, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1657, 3, 172, 86, 0, 1651, 1653, 5, 148, 0, 0, 1652, 1654, 5, 188, 0, 0, 1653, 1652, 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1657, 3, 172, 86, 0, 1656, 1644, 1, 0, 0, 0, 1656, 1651, 1, 0, 0, 0, 1657, 171, 1, 0, 0, 0, 1658, 1661, 3, 174, 87, 0, 1659, 1661, 3, 176, 88, 0, 1660, 1658, 1, 0, 0, 0, 1660, 1659, 1, 0, 0, 0, 1661, 173, 1, 0, 0, 0, 1662, 1664, 3, 182, 91, 0, 1663, 1665, 5, 188, 0, 0, 1664, 1663, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1667, 1, 0, 0, 0, 1666, 1662, 1, 0, 0, 0, 1667, 1670, 1, 0, 0, 0, 1668, 1666, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1671, 1, 0, 0, 0, 1670, 1668, 1, 0, 0, 0, 1671, 1698, 3, 214, 107, 0, 1672, 1674, 3, 182, 91, 0, 1673, 1675, 5, 188, 0, 0, 1674, 1673, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1677, 1, 0, 0, 0, 1676, 1672, 1, 0, 0, 0, 1677, 1680, 1, 0, 0, 0, 1678, 1676, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1681, 1, 0, 0, 0, 1680, 1678, 1, 0, 0, 0, 1681, 1688, 3, 180, 90, 0, 1682, 1684, 5, 188, 0, 0, 1683, 1682, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1687, 3, 180, 90, 0, 1686, 1683, 1, 0, 0, 0, 1687, 1690, 1, 0, 0, 0, 1688, 1686, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1695, 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1691, 1693, 5, 188, 0, 0, 1692, 1691, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1694, 1, 0, 0, 0, 1694, 1696, 3, 214, 107, 0, 1695, 1692, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1698, 1, 0, 0, 0, 1697, 1668, 1, 0, 0, 0, 1697, 1678, 1, 0, 0, 0, 1698, 175, 1, 0, 0, 0, 1699, 1701, 3, 178, 89, 0, 1700, 1702, 5, 188, 0, 0, 1701, 1700, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1704, 1, 0, 0, 0, 1703, 1699, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1703, 1, 0, 0, 0, 1705, 1706, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1708, 3, 174, 87, 0, 1708, 177, 1, 0, 0, 0, 1709, 1711, 3, 182, 91, 0, 1710, 1712, 5, 188, 0, 0, 1711, 1710, 1, 0, 0, 0, 1711, 1712, 1, 0, 0, 0, 1712, 1714, 1, 0, 0, 0, 1713, 1709, 1, 0, 0, 0, 1714, 1717, 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1724, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 180, 90, 0, 1719, 1721, 5, 188, 0, 0, 1720, 1719, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1723, 1, 0, 0, 0, 1722, 1718, 1, 0, 0, 0, 1723, 1726, 1, 0, 0, 0, 1724, 1722, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 1727, 1, 0, 0, 0, 1726, 1724, 1, 0, 0, 0, 1727, 1728, 3, 212, 106, 0, 1728, 179, 1, 0, 0, 0, 1729, 1734, 3, 200, 100, 0, 1730, 1734, 3, 202, 101, 0, 1731, 1734, 3, 206, 103, 0, 1732, 1734, 3, 210, 105, 0, 1733, 1729, 1, 0, 0, 0, 1733, 1730, 1, 0, 0, 0, 1733, 1731, 1, 0, 0, 0, 1733, 1732, 1, 0, 0, 0, 1734, 181, 1, 0, 0, 0, 1735, 1740, 3, 192, 96, 0, 1736, 1740, 3, 198, 99, 0, 1737, 1740, 3, 190, 95, 0, 1738, 1740, 3, 184, 92, 0, 1739, 1735, 1, 0, 0, 0, 1739, 1736, 1, 0, 0, 0, 1739, 1737, 1, 0, 0, 0, 1739, 1738, 1, 0, 0, 0, 1740, 183, 1, 0, 0, 0, 1741, 1759, 5, 106, 0, 0, 1742, 1743, 5, 188, 0, 0, 1743, 1744, 5, 155, 0, 0, 1744, 1745, 5, 188, 0, 0, 1745, 1747, 5, 94, 0, 0, 1746, 1748, 5, 188, 0, 0, 1747, 1746, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1751, 5, 2, 0, 0, 1750, 1752, 5, 188, 0, 0, 1751, 1750, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1755, 3, 124, 62, 0, 1754, 1756, 5, 188, 0, 0, 1755, 1754, 1, 0, 0, 0, 1755, 1756, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 5, 3, 0, 0, 1758, 1760, 1, 0, 0, 0, 1759, 1742, 1, 0, 0, 0, 1759, 1760, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 5, 188, 0, 0, 1762, 1763, 5, 88, 0, 0, 1763, 1764, 5, 188, 0, 0, 1764, 1778, 3, 10, 5, 0, 1765, 1767, 5, 188, 0, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1770, 5, 2, 0, 0, 1769, 1771, 5, 188, 0, 0, 1770, 1769, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1774, 3, 26, 13, 0, 1773, 1775, 5, 188, 0, 0, 1774, 1773, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1776, 1, 0, 0, 0, 1776, 1777, 5, 3, 0, 0, 1777, 1779, 1, 0, 0, 0, 1778, 1766, 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1784, 1, 0, 0, 0, 1780, 1782, 5, 188, 0, 0, 1781, 1780, 1, 0, 0, 0, 1781, 1782, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1785, 3, 230, 115, 0, 1784, 1781, 1, 0, 0, 0, 1784, 1785, 1, 0, 0, 0, 1785, 185, 1, 0, 0, 0, 1786, 1787, 3, 360, 180, 0, 1787, 1788, 5, 188, 0, 0, 1788, 1789, 5, 52, 0, 0, 1789, 1790, 5, 188, 0, 0, 1790, 1792, 1, 0, 0, 0, 1791, 1786, 1, 0, 0, 0, 1791, 1792, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 1794, 3, 360, 180, 0, 1794, 187, 1, 0, 0, 0, 1795, 1806, 3, 186, 93, 0, 1796, 1798, 5, 188, 0, 0, 1797, 1796, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1799, 1, 0, 0, 0, 1799, 1801, 5, 4, 0, 0, 1800, 1802, 5, 188, 0, 0, 1801, 1800, 1, 0, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 1803, 1, 0, 0, 0, 1803, 1805, 3, 186, 93, 0, 1804, 1797, 1, 0, 0, 0, 1805, 1808, 1, 0, 0, 0, 1806, 1804, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 189, 1, 0, 0, 0, 1808, 1806, 1, 0, 0, 0, 1809, 1810, 5, 58, 0, 0, 1810, 1811, 5, 188, 0, 0, 1811, 1816, 3, 340, 170, 0, 1812, 1814, 5, 188, 0, 0, 1813, 1812, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1817, 3, 230, 115, 0, 1816, 1813, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1824, 1, 0, 0, 0, 1818, 1820, 5, 188, 0, 0, 1819, 1818, 1, 0, 0, 0, 1819, 1820, 1, 0, 0, 0, 1820, 1821, 1, 0, 0, 0, 1821, 1822, 5, 160, 0, 0, 1822, 1823, 5, 188, 0, 0, 1823, 1825, 3, 188, 94, 0, 1824, 1819, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 191, 1, 0, 0, 0, 1826, 1827, 5, 122, 0, 0, 1827, 1829, 5, 188, 0, 0, 1828, 1826, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1829, 1830, 1, 0, 0, 0, 1830, 1832, 5, 109, 0, 0, 1831, 1833, 5, 188, 0, 0, 1832, 1831, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 1837, 3, 232, 116, 0, 1835, 1836, 5, 188, 0, 0, 1836, 1838, 3, 230, 115, 0, 1837, 1835, 1, 0, 0, 0, 1837, 1838, 1, 0, 0, 0, 1838, 1841, 1, 0, 0, 0, 1839, 1840, 5, 188, 0, 0, 1840, 1842, 3, 194, 97, 0, 1841, 1839, 1, 0, 0, 0, 1841, 1842, 1, 0, 0, 0, 1842, 193, 1, 0, 0, 0, 1843, 1844, 5, 95, 0, 0, 1844, 1845, 5, 188, 0, 0, 1845, 1846, 3, 196, 98, 0, 1846, 195, 1, 0, 0, 0, 1847, 1848, 6, 98, -1, 0, 1848, 1850, 5, 2, 0, 0, 1849, 1851, 5, 188, 0, 0, 1850, 1849, 1, 0, 0, 0, 1850, 1851, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1854, 3, 196, 98, 0, 1853, 1855, 5, 188, 0, 0, 1854, 1853, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 1857, 5, 3, 0, 0, 1857, 1860, 1, 0, 0, 0, 1858, 1860, 3, 374, 187, 0, 1859, 1847, 1, 0, 0, 0, 1859, 1858, 1, 0, 0, 0, 1860, 1877, 1, 0, 0, 0, 1861, 1862, 10, 4, 0, 0, 1862, 1863, 5, 188, 0, 0, 1863, 1864, 5, 103, 0, 0, 1864, 1865, 5, 188, 0, 0, 1865, 1876, 3, 196, 98, 5, 1866, 1871, 10, 3, 0, 0, 1867, 1868, 5, 188, 0, 0, 1868, 1869, 5, 113, 0, 0, 1869, 1870, 5, 188, 0, 0, 1870, 1872, 3, 374, 187, 0, 1871, 1867, 1, 0, 0, 0, 1872, 1873, 1, 0, 0, 0, 1873, 1871, 1, 0, 0, 0, 1873, 1874, 1, 0, 0, 0, 1874, 1876, 1, 0, 0, 0, 1875, 1861, 1, 0, 0, 0, 1875, 1866, 1, 0, 0, 0, 1876, 1879, 1, 0, 0, 0, 1877, 1875, 1, 0, 0, 0, 1877, 1878, 1, 0, 0, 0, 1878, 197, 1, 0, 0, 0, 1879, 1877, 1, 0, 0, 0, 1880, 1882, 5, 149, 0, 0, 1881, 1883, 5, 188, 0, 0, 1882, 1881, 1, 0, 0, 0, 1882, 1883, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1885, 3, 272, 136, 0, 1885, 1886, 5, 188, 0, 0, 1886, 1887, 5, 52, 0, 0, 1887, 1888, 5, 188, 0, 0, 1888, 1889, 3, 360, 180, 0, 1889, 199, 1, 0, 0, 0, 1890, 1892, 5, 69, 0, 0, 1891, 1893, 5, 188, 0, 0, 1892, 1891, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 3, 232, 116, 0, 1895, 201, 1, 0, 0, 0, 1896, 1898, 5, 111, 0, 0, 1897, 1899, 5, 188, 0, 0, 1898, 1897, 1, 0, 0, 0, 1898, 1899, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 1905, 3, 232, 116, 0, 1901, 1902, 5, 188, 0, 0, 1902, 1904, 3, 204, 102, 0, 1903, 1901, 1, 0, 0, 0, 1904, 1907, 1, 0, 0, 0, 1905, 1903, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 203, 1, 0, 0, 0, 1907, 1905, 1, 0, 0, 0, 1908, 1909, 5, 119, 0, 0, 1909, 1910, 5, 188, 0, 0, 1910, 1911, 5, 109, 0, 0, 1911, 1912, 5, 188, 0, 0, 1912, 1919, 3, 206, 103, 0, 1913, 1914, 5, 119, 0, 0, 1914, 1915, 5, 188, 0, 0, 1915, 1916, 5, 69, 0, 0, 1916, 1917, 5, 188, 0, 0, 1917, 1919, 3, 206, 103, 0, 1918, 1908, 1, 0, 0, 0, 1918, 1913, 1, 0, 0, 0, 1919, 205, 1, 0, 0, 0, 1920, 1922, 5, 135, 0, 0, 1921, 1923, 5, 188, 0, 0, 1922, 1921, 1, 0, 0, 0, 1922, 1923, 1, 0, 0, 0, 1923, 1924, 1, 0, 0, 0, 1924, 1935, 3, 208, 104, 0, 1925, 1927, 5, 188, 0, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1930, 5, 4, 0, 0, 1929, 1931, 5, 188, 0, 0, 1930, 1929, 1, 0, 0, 0, 1930, 1931, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1934, 3, 208, 104, 0, 1933, 1926, 1, 0, 0, 0, 1934, 1937, 1, 0, 0, 0, 1935, 1933, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1953, 1, 0, 0, 0, 1937, 1935, 1, 0, 0, 0, 1938, 1940, 5, 135, 0, 0, 1939, 1941, 5, 188, 0, 0, 1940, 1939, 1, 0, 0, 0, 1940, 1941, 1, 0, 0, 0, 1941, 1942, 1, 0, 0, 0, 1942, 1944, 3, 318, 159, 0, 1943, 1945, 5, 188, 0, 0, 1944, 1943, 1, 0, 0, 0, 1944, 1945, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1948, 5, 6, 0, 0, 1947, 1949, 5, 188, 0, 0, 1948, 1947, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 1950, 1, 0, 0, 0, 1950, 1951, 3, 248, 124, 0, 1951, 1953, 1, 0, 0, 0, 1952, 1920, 1, 0, 0, 0, 1952, 1938, 1, 0, 0, 0, 1953, 207, 1, 0, 0, 0, 1954, 1956, 3, 366, 183, 0, 1955, 1957, 5, 188, 0, 0, 1956, 1955, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 1960, 5, 6, 0, 0, 1959, 1961, 5, 188, 0, 0, 1960, 1959, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1963, 3, 272, 136, 0, 1963, 209, 1, 0, 0, 0, 1964, 1965, 5, 77, 0, 0, 1965, 1967, 5, 188, 0, 0, 1966, 1964, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 1970, 5, 74, 0, 0, 1969, 1971, 5, 188, 0, 0, 1970, 1969, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1983, 3, 272, 136, 0, 1973, 1975, 5, 188, 0, 0, 1974, 1973, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975, 1976, 1, 0, 0, 0, 1976, 1978, 5, 4, 0, 0, 1977, 1979, 5, 188, 0, 0, 1978, 1977, 1, 0, 0, 0, 1978, 1979, 1, 0, 0, 0, 1979, 1980, 1, 0, 0, 0, 1980, 1982, 3, 272, 136, 0, 1981, 1974, 1, 0, 0, 0, 1982, 1985, 1, 0, 0, 0, 1983, 1981, 1, 0, 0, 0, 1983, 1984, 1, 0, 0, 0, 1984, 211, 1, 0, 0, 0, 1985, 1983, 1, 0, 0, 0, 1986, 1987, 5, 155, 0, 0, 1987, 1992, 3, 216, 108, 0, 1988, 1990, 5, 188, 0, 0, 1989, 1988, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1993, 3, 230, 115, 0, 1992, 1989, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 213, 1, 0, 0, 0, 1994, 1995, 5, 131, 0, 0, 1995, 1996, 3, 216, 108, 0, 1996, 215, 1, 0, 0, 0, 1997, 1999, 5, 188, 0, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2000, 1, 0, 0, 0, 2000, 2002, 5, 78, 0, 0, 2001, 1998, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2004, 5, 188, 0, 0, 2004, 2007, 3, 218, 109, 0, 2005, 2006, 5, 188, 0, 0, 2006, 2008, 3, 222, 111, 0, 2007, 2005, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2011, 1, 0, 0, 0, 2009, 2010, 5, 188, 0, 0, 2010, 2012, 3, 224, 112, 0, 2011, 2009, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2015, 1, 0, 0, 0, 2013, 2014, 5, 188, 0, 0, 2014, 2016, 3, 226, 113, 0, 2015, 2013, 1, 0, 0, 0, 2015, 2016, 1, 0, 0, 0, 2016, 217, 1, 0, 0, 0, 2017, 2028, 5, 166, 0, 0, 2018, 2020, 5, 188, 0, 0, 2019, 2018, 1, 0, 0, 0, 2019, 2020, 1, 0, 0, 0, 2020, 2021, 1, 0, 0, 0, 2021, 2023, 5, 4, 0, 0, 2022, 2024, 5, 188, 0, 0, 2023, 2022, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2025, 1, 0, 0, 0, 2025, 2027, 3, 220, 110, 0, 2026, 2019, 1, 0, 0, 0, 2027, 2030, 1, 0, 0, 0, 2028, 2026, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2046, 1, 0, 0, 0, 2030, 2028, 1, 0, 0, 0, 2031, 2042, 3, 220, 110, 0, 2032, 2034, 5, 188, 0, 0, 2033, 2032, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 2037, 5, 4, 0, 0, 2036, 2038, 5, 188, 0, 0, 2037, 2036, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2041, 3, 220, 110, 0, 2040, 2033, 1, 0, 0, 0, 2041, 2044, 1, 0, 0, 0, 2042, 2040, 1, 0, 0, 0, 2042, 2043, 1, 0, 0, 0, 2043, 2046, 1, 0, 0, 0, 2044, 2042, 1, 0, 0, 0, 2045, 2017, 1, 0, 0, 0, 2045, 2031, 1, 0, 0, 0, 2046, 219, 1, 0, 0, 0, 2047, 2048, 3, 272, 136, 0, 2048, 2049, 5, 188, 0, 0, 2049, 2050, 5, 52, 0, 0, 2050, 2051, 5, 188, 0, 0, 2051, 2052, 3, 360, 180, 0, 2052, 2055, 1, 0, 0, 0, 2053, 2055, 3, 272, 136, 0, 2054, 2047, 1, 0, 0, 0, 2054, 2053, 1, 0, 0, 0, 2055, 221, 1, 0, 0, 0, 2056, 2057, 5, 124, 0, 0, 2057, 2058, 5, 188, 0, 0, 2058, 2059, 5, 57, 0, 0, 2059, 2060, 5, 188, 0, 0, 2060, 2068, 3, 228, 114, 0, 2061, 2063, 5, 4, 0, 0, 2062, 2064, 5, 188, 0, 0, 2063, 2062, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2067, 3, 228, 114, 0, 2066, 2061, 1, 0, 0, 0, 2067, 2070, 1, 0, 0, 0, 2068, 2066, 1, 0, 0, 0, 2068, 2069, 1, 0, 0, 0, 2069, 223, 1, 0, 0, 0, 2070, 2068, 1, 0, 0, 0, 2071, 2072, 5, 167, 0, 0, 2072, 2073, 5, 188, 0, 0, 2073, 2074, 3, 272, 136, 0, 2074, 225, 1, 0, 0, 0, 2075, 2076, 5, 105, 0, 0, 2076, 2077, 5, 188, 0, 0, 2077, 2078, 3, 272, 136, 0, 2078, 227, 1, 0, 0, 0, 2079, 2084, 3, 272, 136, 0, 2080, 2082, 5, 188, 0, 0, 2081, 2080, 1, 0, 0, 0, 2081, 2082, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2085, 7, 2, 0, 0, 2084, 2081, 1, 0, 0, 0, 2084, 2085, 1, 0, 0, 0, 2085, 229, 1, 0, 0, 0, 2086, 2087, 5, 154, 0, 0, 2087, 2088, 5, 188, 0, 0, 2088, 2089, 3, 272, 136, 0, 2089, 231, 1, 0, 0, 0, 2090, 2101, 3, 234, 117, 0, 2091, 2093, 5, 188, 0, 0, 2092, 2091, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2094, 1, 0, 0, 0, 2094, 2096, 5, 4, 0, 0, 2095, 2097, 5, 188, 0, 0, 2096, 2095, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 2100, 3, 234, 117, 0, 2099, 2092, 1, 0, 0, 0, 2100, 2103, 1, 0, 0, 0, 2101, 2099, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 233, 1, 0, 0, 0, 2103, 2101, 1, 0, 0, 0, 2104, 2106, 3, 360, 180, 0, 2105, 2107, 5, 188, 0, 0, 2106, 2105, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 2110, 5, 6, 0, 0, 2109, 2111, 5, 188, 0, 0, 2110, 2109, 1, 0, 0, 0, 2110, 2111, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2113, 3, 236, 118, 0, 2113, 2116, 1, 0, 0, 0, 2114, 2116, 3, 236, 118, 0, 2115, 2104, 1, 0, 0, 0, 2115, 2114, 1, 0, 0, 0, 2116, 235, 1, 0, 0, 0, 2117, 2118, 3, 238, 119, 0, 2118, 237, 1, 0, 0, 0, 2119, 2126, 3, 240, 120, 0, 2120, 2122, 5, 188, 0, 0, 2121, 2120, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2125, 3, 242, 121, 0, 2124, 2121, 1, 0, 0, 0, 2125, 2128, 1, 0, 0, 0, 2126, 2124, 1, 0, 0, 0, 2126, 2127, 1, 0, 0, 0, 2127, 2134, 1, 0, 0, 0, 2128, 2126, 1, 0, 0, 0, 2129, 2130, 5, 2, 0, 0, 2130, 2131, 3, 238, 119, 0, 2131, 2132, 5, 3, 0, 0, 2132, 2134, 1, 0, 0, 0, 2133, 2119, 1, 0, 0, 0, 2133, 2129, 1, 0, 0, 0, 2134, 239, 1, 0, 0, 0, 2135, 2137, 5, 2, 0, 0, 2136, 2138, 5, 188, 0, 0, 2137, 2136, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2143, 1, 0, 0, 0, 2139, 2141, 3, 360, 180, 0, 2140, 2142, 5, 188, 0, 0, 2141, 2140, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 2144, 1, 0, 0, 0, 2143, 2139, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2149, 1, 0, 0, 0, 2145, 2147, 3, 252, 126, 0, 2146, 2148, 5, 188, 0, 0, 2147, 2146, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2150, 1, 0, 0, 0, 2149, 2145, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2155, 1, 0, 0, 0, 2151, 2153, 3, 248, 124, 0, 2152, 2154, 5, 188, 0, 0, 2153, 2152, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2156, 1, 0, 0, 0, 2155, 2151, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2158, 5, 3, 0, 0, 2158, 241, 1, 0, 0, 0, 2159, 2161, 3, 244, 122, 0, 2160, 2162, 5, 188, 0, 0, 2161, 2160, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2164, 3, 240, 120, 0, 2164, 243, 1, 0, 0, 0, 2165, 2167, 3, 380, 190, 0, 2166, 2168, 5, 188, 0, 0, 2167, 2166, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2171, 3, 384, 192, 0, 2170, 2172, 5, 188, 0, 0, 2171, 2170, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2174, 1, 0, 0, 0, 2173, 2175, 3, 246, 123, 0, 2174, 2173, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2177, 1, 0, 0, 0, 2176, 2178, 5, 188, 0, 0, 2177, 2176, 1, 0, 0, 0, 2177, 2178, 1, 0, 0, 0, 2178, 2179, 1, 0, 0, 0, 2179, 2180, 3, 384, 192, 0, 2180, 2210, 1, 0, 0, 0, 2181, 2183, 3, 384, 192, 0, 2182, 2184, 5, 188, 0, 0, 2183, 2182, 1, 0, 0, 0, 2183, 2184, 1, 0, 0, 0, 2184, 2186, 1, 0, 0, 0, 2185, 2187, 3, 246, 123, 0, 2186, 2185, 1, 0, 0, 0, 2186, 2187, 1, 0, 0, 0, 2187, 2189, 1, 0, 0, 0, 2188, 2190, 5, 188, 0, 0, 2189, 2188, 1, 0, 0, 0, 2189, 2190, 1, 0, 0, 0, 2190, 2191, 1, 0, 0, 0, 2191, 2193, 3, 384, 192, 0, 2192, 2194, 5, 188, 0, 0, 2193, 2192, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 2196, 3, 382, 191, 0, 2196, 2210, 1, 0, 0, 0, 2197, 2199, 3, 384, 192, 0, 2198, 2200, 5, 188, 0, 0, 2199, 2198, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 2202, 1, 0, 0, 0, 2201, 2203, 3, 246, 123, 0, 2202, 2201, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2205, 1, 0, 0, 0, 2204, 2206, 5, 188, 0, 0, 2205, 2204, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, 2207, 1, 0, 0, 0, 2207, 2208, 3, 384, 192, 0, 2208, 2210, 1, 0, 0, 0, 2209, 2165, 1, 0, 0, 0, 2209, 2181, 1, 0, 0, 0, 2209, 2197, 1, 0, 0, 0, 2210, 245, 1, 0, 0, 0, 2211, 2213, 5, 7, 0, 0, 2212, 2214, 5, 188, 0, 0, 2213, 2212, 1, 0, 0, 0, 2213, 2214, 1, 0, 0, 0, 2214, 2219, 1, 0, 0, 0, 2215, 2217, 3, 360, 180, 0, 2216, 2218, 5, 188, 0, 0, 2217, 2216, 1, 0, 0, 0, 2217, 2218, 1, 0, 0, 0, 2218, 2220, 1, 0, 0, 0, 2219, 2215, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 2225, 1, 0, 0, 0, 2221, 2223, 3, 250, 125, 0, 2222, 2224, 5, 188, 0, 0, 2223, 2222, 1, 0, 0, 0, 2223, 2224, 1, 0, 0, 0, 2224, 2226, 1, 0, 0, 0, 2225, 2221, 1, 0, 0, 0, 2225, 2226, 1, 0, 0, 0, 2226, 2231, 1, 0, 0, 0, 2227, 2229, 3, 254, 127, 0, 2228, 2230, 5, 188, 0, 0, 2229, 2228, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2232, 1, 0, 0, 0, 2231, 2227, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2237, 1, 0, 0, 0, 2233, 2235, 3, 248, 124, 0, 2234, 2236, 5, 188, 0, 0, 2235, 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 2238, 1, 0, 0, 0, 2237, 2233, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 2240, 5, 8, 0, 0, 2240, 247, 1, 0, 0, 0, 2241, 2243, 5, 9, 0, 0, 2242, 2244, 5, 188, 0, 0, 2243, 2242, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2278, 1, 0, 0, 0, 2245, 2247, 3, 368, 184, 0, 2246, 2248, 5, 188, 0, 0, 2247, 2246, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2251, 5, 169, 0, 0, 2250, 2252, 5, 188, 0, 0, 2251, 2250, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 2253, 1, 0, 0, 0, 2253, 2255, 3, 272, 136, 0, 2254, 2256, 5, 188, 0, 0, 2255, 2254, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2275, 1, 0, 0, 0, 2257, 2259, 5, 4, 0, 0, 2258, 2260, 5, 188, 0, 0, 2259, 2258, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2261, 1, 0, 0, 0, 2261, 2263, 3, 368, 184, 0, 2262, 2264, 5, 188, 0, 0, 2263, 2262, 1, 0, 0, 0, 2263, 2264, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2267, 5, 169, 0, 0, 2266, 2268, 5, 188, 0, 0, 2267, 2266, 1, 0, 0, 0, 2267, 2268, 1, 0, 0, 0, 2268, 2269, 1, 0, 0, 0, 2269, 2271, 3, 272, 136, 0, 2270, 2272, 5, 188, 0, 0, 2271, 2270, 1, 0, 0, 0, 2271, 2272, 1, 0, 0, 0, 2272, 2274, 1, 0, 0, 0, 2273, 2257, 1, 0, 0, 0, 2274, 2277, 1, 0, 0, 0, 2275, 2273, 1, 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2279, 1, 0, 0, 0, 2277, 2275, 1, 0, 0, 0, 2278, 2245, 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2281, 5, 10, 0, 0, 2281, 249, 1, 0, 0, 0, 2282, 2284, 5, 169, 0, 0, 2283, 2285, 5, 188, 0, 0, 2284, 2283, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2286, 1, 0, 0, 0, 2286, 2300, 3, 270, 135, 0, 2287, 2289, 5, 188, 0, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2292, 5, 11, 0, 0, 2291, 2293, 5, 169, 0, 0, 2292, 2291, 1, 0, 0, 0, 2292, 2293, 1, 0, 0, 0, 2293, 2295, 1, 0, 0, 0, 2294, 2296, 5, 188, 0, 0, 2295, 2294, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 2299, 3, 270, 135, 0, 2298, 2288, 1, 0, 0, 0, 2299, 2302, 1, 0, 0, 0, 2300, 2298, 1, 0, 0, 0, 2300, 2301, 1, 0, 0, 0, 2301, 251, 1, 0, 0, 0, 2302, 2300, 1, 0, 0, 0, 2303, 2305, 5, 169, 0, 0, 2304, 2306, 5, 188, 0, 0, 2305, 2304, 1, 0, 0, 0, 2305, 2306, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2324, 3, 268, 134, 0, 2308, 2310, 5, 188, 0, 0, 2309, 2308, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2316, 1, 0, 0, 0, 2311, 2313, 5, 11, 0, 0, 2312, 2314, 5, 169, 0, 0, 2313, 2312, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 2317, 1, 0, 0, 0, 2315, 2317, 5, 169, 0, 0, 2316, 2311, 1, 0, 0, 0, 2316, 2315, 1, 0, 0, 0, 2317, 2319, 1, 0, 0, 0, 2318, 2320, 5, 188, 0, 0, 2319, 2318, 1, 0, 0, 0, 2319, 2320, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2323, 3, 268, 134, 0, 2322, 2309, 1, 0, 0, 0, 2323, 2326, 1, 0, 0, 0, 2324, 2322, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 253, 1, 0, 0, 0, 2326, 2324, 1, 0, 0, 0, 2327, 2332, 5, 166, 0, 0, 2328, 2330, 5, 188, 0, 0, 2329, 2328, 1, 0, 0, 0, 2329, 2330, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2333, 3, 256, 128, 0, 2332, 2329, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2338, 1, 0, 0, 0, 2334, 2336, 5, 188, 0, 0, 2335, 2334, 1, 0, 0, 0, 2335, 2336, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2339, 3, 258, 129, 0, 2338, 2335, 1, 0, 0, 0, 2338, 2339, 1, 0, 0, 0, 2339, 2344, 1, 0, 0, 0, 2340, 2342, 5, 188, 0, 0, 2341, 2340, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2345, 3, 260, 130, 0, 2344, 2341, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 255, 1, 0, 0, 0, 2346, 2347, 5, 48, 0, 0, 2347, 2349, 5, 188, 0, 0, 2348, 2346, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2352, 5, 157, 0, 0, 2351, 2353, 5, 188, 0, 0, 2352, 2351, 1, 0, 0, 0, 2352, 2353, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2356, 5, 2, 0, 0, 2355, 2357, 5, 188, 0, 0, 2356, 2355, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2360, 3, 368, 184, 0, 2359, 2361, 5, 188, 0, 0, 2360, 2359, 1, 0, 0, 0, 2360, 2361, 1, 0, 0, 0, 2361, 2362, 1, 0, 0, 0, 2362, 2363, 5, 3, 0, 0, 2363, 2371, 1, 0, 0, 0, 2364, 2371, 5, 137, 0, 0, 2365, 2366, 5, 48, 0, 0, 2366, 2367, 5, 188, 0, 0, 2367, 2371, 5, 137, 0, 0, 2368, 2371, 5, 144, 0, 0, 2369, 2371, 5, 45, 0, 0, 2370, 2348, 1, 0, 0, 0, 2370, 2364, 1, 0, 0, 0, 2370, 2365, 1, 0, 0, 0, 2370, 2368, 1, 0, 0, 0, 2370, 2369, 1, 0, 0, 0, 2371, 257, 1, 0, 0, 0, 2372, 2374, 3, 264, 132, 0, 2373, 2372, 1, 0, 0, 0, 2373, 2374, 1, 0, 0, 0, 2374, 2376, 1, 0, 0, 0, 2375, 2377, 5, 188, 0, 0, 2376, 2375, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2378, 1, 0, 0, 0, 2378, 2380, 5, 170, 0, 0, 2379, 2381, 5, 188, 0, 0, 2380, 2379, 1, 0, 0, 0, 2380, 2381, 1, 0, 0, 0, 2381, 2383, 1, 0, 0, 0, 2382, 2384, 3, 266, 133, 0, 2383, 2382, 1, 0, 0, 0, 2383, 2384, 1, 0, 0, 0, 2384, 2387, 1, 0, 0, 0, 2385, 2387, 3, 370, 185, 0, 2386, 2373, 1, 0, 0, 0, 2386, 2385, 1, 0, 0, 0, 2387, 259, 1, 0, 0, 0, 2388, 2390, 5, 2, 0, 0, 2389, 2391, 5, 188, 0, 0, 2390, 2389, 1, 0, 0, 0, 2390, 2391, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 3, 360, 180, 0, 2393, 2395, 5, 188, 0, 0, 2394, 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2398, 5, 4, 0, 0, 2397, 2399, 5, 188, 0, 0, 2398, 2397, 1, 0, 0, 0, 2398, 2399, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2412, 3, 360, 180, 0, 2401, 2403, 5, 188, 0, 0, 2402, 2401, 1, 0, 0, 0, 2402, 2403, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2406, 5, 11, 0, 0, 2405, 2407, 5, 188, 0, 0, 2406, 2405, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2410, 3, 230, 115, 0, 2409, 2411, 5, 188, 0, 0, 2410, 2409, 1, 0, 0, 0, 2410, 2411, 1, 0, 0, 0, 2411, 2413, 1, 0, 0, 0, 2412, 2402, 1, 0, 0, 0, 2412, 2413, 1, 0, 0, 0, 2413, 2433, 1, 0, 0, 0, 2414, 2416, 5, 188, 0, 0, 2415, 2414, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2419, 5, 11, 0, 0, 2418, 2420, 5, 188, 0, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2423, 3, 262, 131, 0, 2422, 2424, 5, 188, 0, 0, 2423, 2422, 1, 0, 0, 0, 2423, 2424, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2427, 5, 4, 0, 0, 2426, 2428, 5, 188, 0, 0, 2427, 2426, 1, 0, 0, 0, 2427, 2428, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2431, 3, 262, 131, 0, 2430, 2432, 5, 188, 0, 0, 2431, 2430, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2434, 1, 0, 0, 0, 2433, 2415, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2436, 5, 3, 0, 0, 2436, 261, 1, 0, 0, 0, 2437, 2439, 5, 9, 0, 0, 2438, 2440, 5, 188, 0, 0, 2439, 2438, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2442, 1, 0, 0, 0, 2441, 2443, 3, 218, 109, 0, 2442, 2441, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2445, 1, 0, 0, 0, 2444, 2446, 5, 188, 0, 0, 2445, 2444, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2448, 5, 10, 0, 0, 2448, 263, 1, 0, 0, 0, 2449, 2450, 5, 175, 0, 0, 2450, 265, 1, 0, 0, 0, 2451, 2452, 5, 175, 0, 0, 2452, 267, 1, 0, 0, 0, 2453, 2456, 3, 374, 187, 0, 2454, 2455, 5, 5, 0, 0, 2455, 2457, 3, 374, 187, 0, 2456, 2454, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 269, 1, 0, 0, 0, 2458, 2459, 3, 374, 187, 0, 2459, 271, 1, 0, 0, 0, 2460, 2461, 3, 274, 137, 0, 2461, 273, 1, 0, 0, 0, 2462, 2469, 3, 276, 138, 0, 2463, 2464, 5, 188, 0, 0, 2464, 2465, 5, 123, 0, 0, 2465, 2466, 5, 188, 0, 0, 2466, 2468, 3, 276, 138, 0, 2467, 2463, 1, 0, 0, 0, 2468, 2471, 1, 0, 0, 0, 2469, 2467, 1, 0, 0, 0, 2469, 2470, 1, 0, 0, 0, 2470, 275, 1, 0, 0, 0, 2471, 2469, 1, 0, 0, 0, 2472, 2479, 3, 278, 139, 0, 2473, 2474, 5, 188, 0, 0, 2474, 2475, 5, 158, 0, 0, 2475, 2476, 5, 188, 0, 0, 2476, 2478, 3, 278, 139, 0, 2477, 2473, 1, 0, 0, 0, 2478, 2481, 1, 0, 0, 0, 2479, 2477, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 277, 1, 0, 0, 0, 2481, 2479, 1, 0, 0, 0, 2482, 2489, 3, 280, 140, 0, 2483, 2484, 5, 188, 0, 0, 2484, 2485, 5, 51, 0, 0, 2485, 2486, 5, 188, 0, 0, 2486, 2488, 3, 280, 140, 0, 2487, 2483, 1, 0, 0, 0, 2488, 2491, 1, 0, 0, 0, 2489, 2487, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 279, 1, 0, 0, 0, 2491, 2489, 1, 0, 0, 0, 2492, 2494, 5, 116, 0, 0, 2493, 2495, 5, 188, 0, 0, 2494, 2493, 1, 0, 0, 0, 2494, 2495, 1, 0, 0, 0, 2495, 2497, 1, 0, 0, 0, 2496, 2492, 1, 0, 0, 0, 2497, 2500, 1, 0, 0, 0, 2498, 2496, 1, 0, 0, 0, 2498, 2499, 1, 0, 0, 0, 2499, 2501, 1, 0, 0, 0, 2500, 2498, 1, 0, 0, 0, 2501, 2502, 3, 282, 141, 0, 2502, 281, 1, 0, 0, 0, 2503, 2513, 3, 286, 143, 0, 2504, 2506, 5, 188, 0, 0, 2505, 2504, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2507, 1, 0, 0, 0, 2507, 2509, 3, 284, 142, 0, 2508, 2510, 5, 188, 0, 0, 2509, 2508, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2512, 3, 286, 143, 0, 2512, 2514, 1, 0, 0, 0, 2513, 2505, 1, 0, 0, 0, 2513, 2514, 1, 0, 0, 0, 2514, 2552, 1, 0, 0, 0, 2515, 2517, 3, 286, 143, 0, 2516, 2518, 5, 188, 0, 0, 2517, 2516, 1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 2519, 1, 0, 0, 0, 2519, 2521, 5, 168, 0, 0, 2520, 2522, 5, 188, 0, 0, 2521, 2520, 1, 0, 0, 0, 2521, 2522, 1, 0, 0, 0, 2522, 2523, 1, 0, 0, 0, 2523, 2524, 3, 286, 143, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2526, 6, 141, -1, 0, 2526, 2552, 1, 0, 0, 0, 2527, 2529, 3, 286, 143, 0, 2528, 2530, 5, 188, 0, 0, 2529, 2528, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2531, 1, 0, 0, 0, 2531, 2533, 3, 284, 142, 0, 2532, 2534, 5, 188, 0, 0, 2533, 2532, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2535, 1, 0, 0, 0, 2535, 2545, 3, 286, 143, 0, 2536, 2538, 5, 188, 0, 0, 2537, 2536, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2539, 1, 0, 0, 0, 2539, 2541, 3, 284, 142, 0, 2540, 2542, 5, 188, 0, 0, 2541, 2540, 1, 0, 0, 0, 2541, 2542, 1, 0, 0, 0, 2542, 2543, 1, 0, 0, 0, 2543, 2544, 3, 286, 143, 0, 2544, 2546, 1, 0, 0, 0, 2545, 2537, 1, 0, 0, 0, 2546, 2547, 1, 0, 0, 0, 2547, 2545, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2549, 1, 0, 0, 0, 2549, 2550, 6, 141, -1, 0, 2550, 2552, 1, 0, 0, 0, 2551, 2503, 1, 0, 0, 0, 2551, 2515, 1, 0, 0, 0, 2551, 2527, 1, 0, 0, 0, 2552, 283, 1, 0, 0, 0, 2553, 2554, 7, 3, 0, 0, 2554, 285, 1, 0, 0, 0, 2555, 2566, 3, 288, 144, 0, 2556, 2558, 5, 188, 0, 0, 2557, 2556, 1, 0, 0, 0, 2557, 2558, 1, 0, 0, 0, 2558, 2559, 1, 0, 0, 0, 2559, 2561, 5, 11, 0, 0, 2560, 2562, 5, 188, 0, 0, 2561, 2560, 1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2563, 1, 0, 0, 0, 2563, 2565, 3, 288, 144, 0, 2564, 2557, 1, 0, 0, 0, 2565, 2568, 1, 0, 0, 0, 2566, 2564, 1, 0, 0, 0, 2566, 2567, 1, 0, 0, 0, 2567, 287, 1, 0, 0, 0, 2568, 2566, 1, 0, 0, 0, 2569, 2580, 3, 290, 145, 0, 2570, 2572, 5, 188, 0, 0, 2571, 2570, 1, 0, 0, 0, 2571, 2572, 1, 0, 0, 0, 2572, 2573, 1, 0, 0, 0, 2573, 2575, 5, 17, 0, 0, 2574, 2576, 5, 188, 0, 0, 2575, 2574, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2577, 1, 0, 0, 0, 2577, 2579, 3, 290, 145, 0, 2578, 2571, 1, 0, 0, 0, 2579, 2582, 1, 0, 0, 0, 2580, 2578, 1, 0, 0, 0, 2580, 2581, 1, 0, 0, 0, 2581, 289, 1, 0, 0, 0, 2582, 2580, 1, 0, 0, 0, 2583, 2595, 3, 294, 147, 0, 2584, 2586, 5, 188, 0, 0, 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 2589, 3, 292, 146, 0, 2588, 2590, 5, 188, 0, 0, 2589, 2588, 1, 0, 0, 0, 2589, 2590, 1, 0, 0, 0, 2590, 2591, 1, 0, 0, 0, 2591, 2592, 3, 294, 147, 0, 2592, 2594, 1, 0, 0, 0, 2593, 2585, 1, 0, 0, 0, 2594, 2597, 1, 0, 0, 0, 2595, 2593, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 291, 1, 0, 0, 0, 2597, 2595, 1, 0, 0, 0, 2598, 2599, 7, 4, 0, 0, 2599, 293, 1, 0, 0, 0, 2600, 2612, 3, 298, 149, 0, 2601, 2603, 5, 188, 0, 0, 2602, 2601, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 3, 296, 148, 0, 2605, 2607, 5, 188, 0, 0, 2606, 2605, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2609, 3, 298, 149, 0, 2609, 2611, 1, 0, 0, 0, 2610, 2602, 1, 0, 0, 0, 2611, 2614, 1, 0, 0, 0, 2612, 2610, 1, 0, 0, 0, 2612, 2613, 1, 0, 0, 0, 2613, 295, 1, 0, 0, 0, 2614, 2612, 1, 0, 0, 0, 2615, 2616, 7, 5, 0, 0, 2616, 297, 1, 0, 0, 0, 2617, 2629, 3, 302, 151, 0, 2618, 2620, 5, 188, 0, 0, 2619, 2618, 1, 0, 0, 0, 2619, 2620, 1, 0, 0, 0, 2620, 2621, 1, 0, 0, 0, 2621, 2623, 3, 300, 150, 0, 2622, 2624, 5, 188, 0, 0, 2623, 2622, 1, 0, 0, 0, 2623, 2624, 1, 0, 0, 0, 2624, 2625, 1, 0, 0, 0, 2625, 2626, 3, 302, 151, 0, 2626, 2628, 1, 0, 0, 0, 2627, 2619, 1, 0, 0, 0, 2628, 2631, 1, 0, 0, 0, 2629, 2627, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 299, 1, 0, 0, 0, 2631, 2629, 1, 0, 0, 0, 2632, 2633, 7, 6, 0, 0, 2633, 301, 1, 0, 0, 0, 2634, 2645, 3, 304, 152, 0, 2635, 2637, 5, 188, 0, 0, 2636, 2635, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2638, 1, 0, 0, 0, 2638, 2640, 5, 23, 0, 0, 2639, 2641, 5, 188, 0, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2644, 3, 304, 152, 0, 2643, 2636, 1, 0, 0, 0, 2644, 2647, 1, 0, 0, 0, 2645, 2643, 1, 0, 0, 0, 2645, 2646, 1, 0, 0, 0, 2646, 303, 1, 0, 0, 0, 2647, 2645, 1, 0, 0, 0, 2648, 2656, 3, 314, 157, 0, 2649, 2657, 3, 308, 154, 0, 2650, 2652, 3, 306, 153, 0, 2651, 2650, 1, 0, 0, 0, 2652, 2653, 1, 0, 0, 0, 2653, 2651, 1, 0, 0, 0, 2653, 2654, 1, 0, 0, 0, 2654, 2657, 1, 0, 0, 0, 2655, 2657, 3, 312, 156, 0, 2656, 2649, 1, 0, 0, 0, 2656, 2651, 1, 0, 0, 0, 2656, 2655, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 305, 1, 0, 0, 0, 2658, 2659, 5, 188, 0, 0, 2659, 2661, 5, 99, 0, 0, 2660, 2662, 5, 188, 0, 0, 2661, 2660, 1, 0, 0, 0, 2661, 2662, 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 2678, 3, 316, 158, 0, 2664, 2665, 5, 7, 0, 0, 2665, 2666, 3, 272, 136, 0, 2666, 2667, 5, 8, 0, 0, 2667, 2678, 1, 0, 0, 0, 2668, 2670, 5, 7, 0, 0, 2669, 2671, 3, 272, 136, 0, 2670, 2669, 1, 0, 0, 0, 2670, 2671, 1, 0, 0, 0, 2671, 2672, 1, 0, 0, 0, 2672, 2674, 7, 7, 0, 0, 2673, 2675, 3, 272, 136, 0, 2674, 2673, 1, 0, 0, 0, 2674, 2675, 1, 0, 0, 0, 2675, 2676, 1, 0, 0, 0, 2676, 2678, 5, 8, 0, 0, 2677, 2658, 1, 0, 0, 0, 2677, 2664, 1, 0, 0, 0, 2677, 2668, 1, 0, 0, 0, 2678, 307, 1, 0, 0, 0, 2679, 2691, 3, 310, 155, 0, 2680, 2681, 5, 188, 0, 0, 2681, 2682, 5, 139, 0, 0, 2682, 2683, 5, 188, 0, 0, 2683, 2691, 5, 155, 0, 0, 2684, 2685, 5, 188, 0, 0, 2685, 2686, 5, 82, 0, 0, 2686, 2687, 5, 188, 0, 0, 2687, 2691, 5, 155, 0, 0, 2688, 2689, 5, 188, 0, 0, 2689, 2691, 5, 66, 0, 0, 2690, 2679, 1, 0, 0, 0, 2690, 2680, 1, 0, 0, 0, 2690, 2684, 1, 0, 0, 0, 2690, 2688, 1, 0, 0, 0, 2691, 2693, 1, 0, 0, 0, 2692, 2694, 5, 188, 0, 0, 2693, 2692, 1, 0, 0, 0, 2693, 2694, 1, 0, 0, 0, 2694, 2695, 1, 0, 0, 0, 2695, 2696, 3, 316, 158, 0, 2696, 309, 1, 0, 0, 0, 2697, 2699, 5, 188, 0, 0, 2698, 2697, 1, 0, 0, 0, 2698, 2699, 1, 0, 0, 0, 2699, 2700, 1, 0, 0, 0, 2700, 2701, 5, 24, 0, 0, 2701, 311, 1, 0, 0, 0, 2702, 2703, 5, 188, 0, 0, 2703, 2704, 5, 102, 0, 0, 2704, 2705, 5, 188, 0, 0, 2705, 2713, 5, 118, 0, 0, 2706, 2707, 5, 188, 0, 0, 2707, 2708, 5, 102, 0, 0, 2708, 2709, 5, 188, 0, 0, 2709, 2710, 5, 116, 0, 0, 2710, 2711, 5, 188, 0, 0, 2711, 2713, 5, 118, 0, 0, 2712, 2702, 1, 0, 0, 0, 2712, 2706, 1, 0, 0, 0, 2713, 313, 1, 0, 0, 0, 2714, 2716, 5, 171, 0, 0, 2715, 2717, 5, 188, 0, 0, 2716, 2715, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2719, 1, 0, 0, 0, 2718, 2714, 1, 0, 0, 0, 2719, 2722, 1, 0, 0, 0, 2720, 2718, 1, 0, 0, 0, 2720, 2721, 1, 0, 0, 0, 2721, 2723, 1, 0, 0, 0, 2722, 2720, 1, 0, 0, 0, 2723, 2728, 3, 316, 158, 0, 2724, 2726, 5, 188, 0, 0, 2725, 2724, 1, 0, 0, 0, 2725, 2726, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2729, 5, 172, 0, 0, 2728, 2725, 1, 0, 0, 0, 2728, 2729, 1, 0, 0, 0, 2729, 315, 1, 0, 0, 0, 2730, 2737, 3, 318, 159, 0, 2731, 2733, 5, 188, 0, 0, 2732, 2731, 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 2734, 1, 0, 0, 0, 2734, 2736, 3, 354, 177, 0, 2735, 2732, 1, 0, 0, 0, 2736, 2739, 1, 0, 0, 0, 2737, 2735, 1, 0, 0, 0, 2737, 2738, 1, 0, 0, 0, 2738, 317, 1, 0, 0, 0, 2739, 2737, 1, 0, 0, 0, 2740, 2750, 3, 326, 163, 0, 2741, 2750, 3, 364, 182, 0, 2742, 2750, 3, 356, 178, 0, 2743, 2750, 3, 338, 169, 0, 2744, 2750, 3, 340, 170, 0, 2745, 2750, 3, 350, 175, 0, 2746, 2750, 3, 352, 176, 0, 2747, 2750, 3, 360, 180, 0, 2748, 2750, 3, 320, 160, 0, 2749, 2740, 1, 0, 0, 0, 2749, 2741, 1, 0, 0, 0, 2749, 2742, 1, 0, 0, 0, 2749, 2743, 1, 0, 0, 0, 2749, 2744, 1, 0, 0, 0, 2749, 2745, 1, 0, 0, 0, 2749, 2746, 1, 0, 0, 0, 2749, 2747, 1, 0, 0, 0, 2749, 2748, 1, 0, 0, 0, 2750, 319, 1, 0, 0, 0, 2751, 2753, 5, 48, 0, 0, 2752, 2754, 5, 188, 0, 0, 2753, 2752, 1, 0, 0, 0, 2753, 2754, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, 2755, 2757, 5, 2, 0, 0, 2756, 2758, 5, 188, 0, 0, 2757, 2756, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2761, 3, 322, 161, 0, 2760, 2762, 5, 188, 0, 0, 2761, 2760, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 2763, 1, 0, 0, 0, 2763, 2764, 5, 3, 0, 0, 2764, 2808, 1, 0, 0, 0, 2765, 2767, 5, 46, 0, 0, 2766, 2768, 5, 188, 0, 0, 2767, 2766, 1, 0, 0, 0, 2767, 2768, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2771, 5, 2, 0, 0, 2770, 2772, 5, 188, 0, 0, 2771, 2770, 1, 0, 0, 0, 2771, 2772, 1, 0, 0, 0, 2772, 2773, 1, 0, 0, 0, 2773, 2775, 3, 322, 161, 0, 2774, 2776, 5, 188, 0, 0, 2775, 2774, 1, 0, 0, 0, 2775, 2776, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2778, 5, 3, 0, 0, 2778, 2808, 1, 0, 0, 0, 2779, 2781, 5, 117, 0, 0, 2780, 2782, 5, 188, 0, 0, 2781, 2780, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 2783, 1, 0, 0, 0, 2783, 2785, 5, 2, 0, 0, 2784, 2786, 5, 188, 0, 0, 2785, 2784, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 2787, 1, 0, 0, 0, 2787, 2789, 3, 322, 161, 0, 2788, 2790, 5, 188, 0, 0, 2789, 2788, 1, 0, 0, 0, 2789, 2790, 1, 0, 0, 0, 2790, 2791, 1, 0, 0, 0, 2791, 2792, 5, 3, 0, 0, 2792, 2808, 1, 0, 0, 0, 2793, 2795, 5, 159, 0, 0, 2794, 2796, 5, 188, 0, 0, 2795, 2794, 1, 0, 0, 0, 2795, 2796, 1, 0, 0, 0, 2796, 2797, 1, 0, 0, 0, 2797, 2799, 5, 2, 0, 0, 2798, 2800, 5, 188, 0, 0, 2799, 2798, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2801, 1, 0, 0, 0, 2801, 2803, 3, 322, 161, 0, 2802, 2804, 5, 188, 0, 0, 2803, 2802, 1, 0, 0, 0, 2803, 2804, 1, 0, 0, 0, 2804, 2805, 1, 0, 0, 0, 2805, 2806, 5, 3, 0, 0, 2806, 2808, 1, 0, 0, 0, 2807, 2751, 1, 0, 0, 0, 2807, 2765, 1, 0, 0, 0, 2807, 2779, 1, 0, 0, 0, 2807, 2793, 1, 0, 0, 0, 2808, 321, 1, 0, 0, 0, 2809, 2810, 3, 324, 162, 0, 2810, 2811, 5, 188, 0, 0, 2811, 2812, 3, 230, 115, 0, 2812, 323, 1, 0, 0, 0, 2813, 2814, 3, 360, 180, 0, 2814, 2815, 5, 188, 0, 0, 2815, 2816, 5, 99, 0, 0, 2816, 2817, 5, 188, 0, 0, 2817, 2818, 3, 272, 136, 0, 2818, 325, 1, 0, 0, 0, 2819, 2826, 3, 362, 181, 0, 2820, 2826, 5, 173, 0, 0, 2821, 2826, 3, 328, 164, 0, 2822, 2826, 5, 118, 0, 0, 2823, 2826, 3, 330, 165, 0, 2824, 2826, 3, 334, 167, 0, 2825, 2819, 1, 0, 0, 0, 2825, 2820, 1, 0, 0, 0, 2825, 2821, 1, 0, 0, 0, 2825, 2822, 1, 0, 0, 0, 2825, 2823, 1, 0, 0, 0, 2825, 2824, 1, 0, 0, 0, 2826, 327, 1, 0, 0, 0, 2827, 2828, 7, 8, 0, 0, 2828, 329, 1, 0, 0, 0, 2829, 2831, 5, 7, 0, 0, 2830, 2832, 5, 188, 0, 0, 2831, 2830, 1, 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 2846, 1, 0, 0, 0, 2833, 2835, 3, 272, 136, 0, 2834, 2836, 5, 188, 0, 0, 2835, 2834, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2843, 1, 0, 0, 0, 2837, 2839, 3, 332, 166, 0, 2838, 2840, 5, 188, 0, 0, 2839, 2838, 1, 0, 0, 0, 2839, 2840, 1, 0, 0, 0, 2840, 2842, 1, 0, 0, 0, 2841, 2837, 1, 0, 0, 0, 2842, 2845, 1, 0, 0, 0, 2843, 2841, 1, 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 2847, 1, 0, 0, 0, 2845, 2843, 1, 0, 0, 0, 2846, 2833, 1, 0, 0, 0, 2846, 2847, 1, 0, 0, 0, 2847, 2848, 1, 0, 0, 0, 2848, 2849, 5, 8, 0, 0, 2849, 331, 1, 0, 0, 0, 2850, 2852, 5, 4, 0, 0, 2851, 2853, 5, 188, 0, 0, 2852, 2851, 1, 0, 0, 0, 2852, 2853, 1, 0, 0, 0, 2853, 2855, 1, 0, 0, 0, 2854, 2856, 3, 272, 136, 0, 2855, 2854, 1, 0, 0, 0, 2855, 2856, 1, 0, 0, 0, 2856, 333, 1, 0, 0, 0, 2857, 2859, 5, 9, 0, 0, 2858, 2860, 5, 188, 0, 0, 2859, 2858, 1, 0, 0, 0, 2859, 2860, 1, 0, 0, 0, 2860, 2861, 1, 0, 0, 0, 2861, 2863, 3, 336, 168, 0, 2862, 2864, 5, 188, 0, 0, 2863, 2862, 1, 0, 0, 0, 2863, 2864, 1, 0, 0, 0, 2864, 2875, 1, 0, 0, 0, 2865, 2867, 5, 4, 0, 0, 2866, 2868, 5, 188, 0, 0, 2867, 2866, 1, 0, 0, 0, 2867, 2868, 1, 0, 0, 0, 2868, 2869, 1, 0, 0, 0, 2869, 2871, 3, 336, 168, 0, 2870, 2872, 5, 188, 0, 0, 2871, 2870, 1, 0, 0, 0, 2871, 2872, 1, 0, 0, 0, 2872, 2874, 1, 0, 0, 0, 2873, 2865, 1, 0, 0, 0, 2874, 2877, 1, 0, 0, 0, 2875, 2873, 1, 0, 0, 0, 2875, 2876, 1, 0, 0, 0, 2876, 2878, 1, 0, 0, 0, 2877, 2875, 1, 0, 0, 0, 2878, 2879, 5, 10, 0, 0, 2879, 335, 1, 0, 0, 0, 2880, 2883, 3, 376, 188, 0, 2881, 2883, 5, 173, 0, 0, 2882, 2880, 1, 0, 0, 0, 2882, 2881, 1, 0, 0, 0, 2883, 2885, 1, 0, 0, 0, 2884, 2886, 5, 188, 0, 0, 2885, 2884, 1, 0, 0, 0, 2885, 2886, 1, 0, 0, 0, 2886, 2887, 1, 0, 0, 0, 2887, 2889, 5, 169, 0, 0, 2888, 2890, 5, 188, 0, 0, 2889, 2888, 1, 0, 0, 0, 2889, 2890, 1, 0, 0, 0, 2890, 2891, 1, 0, 0, 0, 2891, 2892, 3, 272, 136, 0, 2892, 337, 1, 0, 0, 0, 2893, 2895, 5, 2, 0, 0, 2894, 2896, 5, 188, 0, 0, 2895, 2894, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2897, 1, 0, 0, 0, 2897, 2899, 3, 272, 136, 0, 2898, 2900, 5, 188, 0, 0, 2899, 2898, 1, 0, 0, 0, 2899, 2900, 1, 0, 0, 0, 2900, 2901, 1, 0, 0, 0, 2901, 2902, 5, 3, 0, 0, 2902, 339, 1, 0, 0, 0, 2903, 2905, 5, 68, 0, 0, 2904, 2906, 5, 188, 0, 0, 2905, 2904, 1, 0, 0, 0, 2905, 2906, 1, 0, 0, 0, 2906, 2907, 1, 0, 0, 0, 2907, 2909, 5, 2, 0, 0, 2908, 2910, 5, 188, 0, 0, 2909, 2908, 1, 0, 0, 0, 2909, 2910, 1, 0, 0, 0, 2910, 2911, 1, 0, 0, 0, 2911, 2913, 5, 166, 0, 0, 2912, 2914, 5, 188, 0, 0, 2913, 2912, 1, 0, 0, 0, 2913, 2914, 1, 0, 0, 0, 2914, 2915, 1, 0, 0, 0, 2915, 2981, 5, 3, 0, 0, 2916, 2918, 5, 60, 0, 0, 2917, 2919, 5, 188, 0, 0, 2918, 2917, 1, 0, 0, 0, 2918, 2919, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2922, 5, 2, 0, 0, 2921, 2923, 5, 188, 0, 0, 2922, 2921, 1, 0, 0, 0, 2922, 2923, 1, 0, 0, 0, 2923, 2924, 1, 0, 0, 0, 2924, 2926, 3, 344, 172, 0, 2925, 2927, 5, 188, 0, 0, 2926, 2925, 1, 0, 0, 0, 2926, 2927, 1, 0, 0, 0, 2927, 2938, 1, 0, 0, 0, 2928, 2930, 5, 52, 0, 0, 2929, 2931, 5, 188, 0, 0, 2930, 2929, 1, 0, 0, 0, 2930, 2931, 1, 0, 0, 0, 2931, 2932, 1, 0, 0, 0, 2932, 2939, 3, 142, 71, 0, 2933, 2935, 5, 4, 0, 0, 2934, 2936, 5, 188, 0, 0, 2935, 2934, 1, 0, 0, 0, 2935, 2936, 1, 0, 0, 0, 2936, 2937, 1, 0, 0, 0, 2937, 2939, 3, 344, 172, 0, 2938, 2928, 1, 0, 0, 0, 2938, 2933, 1, 0, 0, 0, 2939, 2941, 1, 0, 0, 0, 2940, 2942, 5, 188, 0, 0, 2941, 2940, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2943, 1, 0, 0, 0, 2943, 2944, 5, 3, 0, 0, 2944, 2981, 1, 0, 0, 0, 2945, 2947, 3, 342, 171, 0, 2946, 2948, 5, 188, 0, 0, 2947, 2946, 1, 0, 0, 0, 2947, 2948, 1, 0, 0, 0, 2948, 2949, 1, 0, 0, 0, 2949, 2951, 5, 2, 0, 0, 2950, 2952, 5, 188, 0, 0, 2951, 2950, 1, 0, 0, 0, 2951, 2952, 1, 0, 0, 0, 2952, 2957, 1, 0, 0, 0, 2953, 2955, 5, 78, 0, 0, 2954, 2956, 5, 188, 0, 0, 2955, 2954, 1, 0, 0, 0, 2955, 2956, 1, 0, 0, 0, 2956, 2958, 1, 0, 0, 0, 2957, 2953, 1, 0, 0, 0, 2957, 2958, 1, 0, 0, 0, 2958, 2976, 1, 0, 0, 0, 2959, 2961, 3, 344, 172, 0, 2960, 2962, 5, 188, 0, 0, 2961, 2960, 1, 0, 0, 0, 2961, 2962, 1, 0, 0, 0, 2962, 2973, 1, 0, 0, 0, 2963, 2965, 5, 4, 0, 0, 2964, 2966, 5, 188, 0, 0, 2965, 2964, 1, 0, 0, 0, 2965, 2966, 1, 0, 0, 0, 2966, 2967, 1, 0, 0, 0, 2967, 2969, 3, 344, 172, 0, 2968, 2970, 5, 188, 0, 0, 2969, 2968, 1, 0, 0, 0, 2969, 2970, 1, 0, 0, 0, 2970, 2972, 1, 0, 0, 0, 2971, 2963, 1, 0, 0, 0, 2972, 2975, 1, 0, 0, 0, 2973, 2971, 1, 0, 0, 0, 2973, 2974, 1, 0, 0, 0, 2974, 2977, 1, 0, 0, 0, 2975, 2973, 1, 0, 0, 0, 2976, 2959, 1, 0, 0, 0, 2976, 2977, 1, 0, 0, 0, 2977, 2978, 1, 0, 0, 0, 2978, 2979, 5, 3, 0, 0, 2979, 2981, 1, 0, 0, 0, 2980, 2903, 1, 0, 0, 0, 2980, 2916, 1, 0, 0, 0, 2980, 2945, 1, 0, 0, 0, 2981, 341, 1, 0, 0, 0, 2982, 2983, 3, 376, 188, 0, 2983, 343, 1, 0, 0, 0, 2984, 2986, 3, 376, 188, 0, 2985, 2987, 5, 188, 0, 0, 2986, 2985, 1, 0, 0, 0, 2986, 2987, 1, 0, 0, 0, 2987, 2988, 1, 0, 0, 0, 2988, 2989, 5, 169, 0, 0, 2989, 2991, 5, 6, 0, 0, 2990, 2992, 5, 188, 0, 0, 2991, 2990, 1, 0, 0, 0, 2991, 2992, 1, 0, 0, 0, 2992, 2994, 1, 0, 0, 0, 2993, 2984, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 2998, 3, 272, 136, 0, 2996, 2998, 3, 346, 173, 0, 2997, 2993, 1, 0, 0, 0, 2997, 2996, 1, 0, 0, 0, 2998, 345, 1, 0, 0, 0, 2999, 3001, 3, 348, 174, 0, 3000, 3002, 5, 188, 0, 0, 3001, 3000, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3004, 5, 171, 0, 0, 3004, 3006, 5, 15, 0, 0, 3005, 3007, 5, 188, 0, 0, 3006, 3005, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 3008, 1, 0, 0, 0, 3008, 3010, 3, 272, 136, 0, 3009, 3011, 5, 188, 0, 0, 3010, 3009, 1, 0, 0, 0, 3010, 3011, 1, 0, 0, 0, 3011, 347, 1, 0, 0, 0, 3012, 3037, 3, 376, 188, 0, 3013, 3015, 5, 2, 0, 0, 3014, 3016, 5, 188, 0, 0, 3015, 3014, 1, 0, 0, 0, 3015, 3016, 1, 0, 0, 0, 3016, 3017, 1, 0, 0, 0, 3017, 3019, 3, 376, 188, 0, 3018, 3020, 5, 188, 0, 0, 3019, 3018, 1, 0, 0, 0, 3019, 3020, 1, 0, 0, 0, 3020, 3031, 1, 0, 0, 0, 3021, 3023, 5, 4, 0, 0, 3022, 3024, 5, 188, 0, 0, 3023, 3022, 1, 0, 0, 0, 3023, 3024, 1, 0, 0, 0, 3024, 3025, 1, 0, 0, 0, 3025, 3027, 3, 376, 188, 0, 3026, 3028, 5, 188, 0, 0, 3027, 3026, 1, 0, 0, 0, 3027, 3028, 1, 0, 0, 0, 3028, 3030, 1, 0, 0, 0, 3029, 3021, 1, 0, 0, 0, 3030, 3033, 1, 0, 0, 0, 3031, 3029, 1, 0, 0, 0, 3031, 3032, 1, 0, 0, 0, 3032, 3034, 1, 0, 0, 0, 3033, 3031, 1, 0, 0, 0, 3034, 3035, 5, 3, 0, 0, 3035, 3037, 1, 0, 0, 0, 3036, 3012, 1, 0, 0, 0, 3036, 3013, 1, 0, 0, 0, 3037, 349, 1, 0, 0, 0, 3038, 3043, 3, 240, 120, 0, 3039, 3041, 5, 188, 0, 0, 3040, 3039, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 3042, 1, 0, 0, 0, 3042, 3044, 3, 242, 121, 0, 3043, 3040, 1, 0, 0, 0, 3044, 3045, 1, 0, 0, 0, 3045, 3043, 1, 0, 0, 0, 3045, 3046, 1, 0, 0, 0, 3046, 351, 1, 0, 0, 0, 3047, 3049, 7, 9, 0, 0, 3048, 3050, 5, 188, 0, 0, 3049, 3048, 1, 0, 0, 0, 3049, 3050, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3053, 5, 9, 0, 0, 3052, 3054, 5, 188, 0, 0, 3053, 3052, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, 3054, 3055, 1, 0, 0, 0, 3055, 3057, 5, 109, 0, 0, 3056, 3058, 5, 188, 0, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3064, 3, 232, 116, 0, 3060, 3062, 5, 188, 0, 0, 3061, 3060, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 3065, 3, 230, 115, 0, 3064, 3061, 1, 0, 0, 0, 3064, 3065, 1, 0, 0, 0, 3065, 3070, 1, 0, 0, 0, 3066, 3068, 5, 188, 0, 0, 3067, 3066, 1, 0, 0, 0, 3067, 3068, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3071, 3, 194, 97, 0, 3070, 3067, 1, 0, 0, 0, 3070, 3071, 1, 0, 0, 0, 3071, 3073, 1, 0, 0, 0, 3072, 3074, 5, 188, 0, 0, 3073, 3072, 1, 0, 0, 0, 3073, 3074, 1, 0, 0, 0, 3074, 3075, 1, 0, 0, 0, 3075, 3076, 5, 10, 0, 0, 3076, 353, 1, 0, 0, 0, 3077, 3079, 5, 5, 0, 0, 3078, 3080, 5, 188, 0, 0, 3079, 3078, 1, 0, 0, 0, 3079, 3080, 1, 0, 0, 0, 3080, 3083, 1, 0, 0, 0, 3081, 3084, 3, 368, 184, 0, 3082, 3084, 5, 166, 0, 0, 3083, 3081, 1, 0, 0, 0, 3083, 3082, 1, 0, 0, 0, 3084, 355, 1, 0, 0, 0, 3085, 3090, 5, 59, 0, 0, 3086, 3088, 5, 188, 0, 0, 3087, 3086, 1, 0, 0, 0, 3087, 3088, 1, 0, 0, 0, 3088, 3089, 1, 0, 0, 0, 3089, 3091, 3, 358, 179, 0, 3090, 3087, 1, 0, 0, 0, 3091, 3092, 1, 0, 0, 0, 3092, 3090, 1, 0, 0, 0, 3092, 3093, 1, 0, 0, 0, 3093, 3108, 1, 0, 0, 0, 3094, 3096, 5, 59, 0, 0, 3095, 3097, 5, 188, 0, 0, 3096, 3095, 1, 0, 0, 0, 3096, 3097, 1, 0, 0, 0, 3097, 3098, 1, 0, 0, 0, 3098, 3103, 3, 272, 136, 0, 3099, 3101, 5, 188, 0, 0, 3100, 3099, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3104, 3, 358, 179, 0, 3103, 3100, 1, 0, 0, 0, 3104, 3105, 1, 0, 0, 0, 3105, 3103, 1, 0, 0, 0, 3105, 3106, 1, 0, 0, 0, 3106, 3108, 1, 0, 0, 0, 3107, 3085, 1, 0, 0, 0, 3107, 3094, 1, 0, 0, 0, 3108, 3117, 1, 0, 0, 0, 3109, 3111, 5, 188, 0, 0, 3110, 3109, 1, 0, 0, 0, 3110, 3111, 1, 0, 0, 0, 3111, 3112, 1, 0, 0, 0, 3112, 3114, 5, 80, 0, 0, 3113, 3115, 5, 188, 0, 0, 3114, 3113, 1, 0, 0, 0, 3114, 3115, 1, 0, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3118, 3, 272, 136, 0, 3117, 3110, 1, 0, 0, 0, 3117, 3118, 1, 0, 0, 0, 3118, 3120, 1, 0, 0, 0, 3119, 3121, 5, 188, 0, 0, 3120, 3119, 1, 0, 0, 0, 3120, 3121, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 3123, 5, 81, 0, 0, 3123, 357, 1, 0, 0, 0, 3124, 3126, 5, 153, 0, 0, 3125, 3127, 5, 188, 0, 0, 3126, 3125, 1, 0, 0, 0, 3126, 3127, 1, 0, 0, 0, 3127, 3128, 1, 0, 0, 0, 3128, 3130, 3, 272, 136, 0, 3129, 3131, 5, 188, 0, 0, 3130, 3129, 1, 0, 0, 0, 3130, 3131, 1, 0, 0, 0, 3131, 3132, 1, 0, 0, 0, 3132, 3134, 5, 142, 0, 0, 3133, 3135, 5, 188, 0, 0, 3134, 3133, 1, 0, 0, 0, 3134, 3135, 1, 0, 0, 0, 3135, 3136, 1, 0, 0, 0, 3136, 3137, 3, 272, 136, 0, 3137, 359, 1, 0, 0, 0, 3138, 3139, 3, 376, 188, 0, 3139, 361, 1, 0, 0, 0, 3140, 3143, 3, 372, 186, 0, 3141, 3143, 3, 370, 185, 0, 3142, 3140, 1, 0, 0, 0, 3142, 3141, 1, 0, 0, 0, 3143, 363, 1, 0, 0, 0, 3144, 3147, 5, 25, 0, 0, 3145, 3148, 3, 376, 188, 0, 3146, 3148, 5, 175, 0, 0, 3147, 3145, 1, 0, 0, 0, 3147, 3146, 1, 0, 0, 0, 3148, 365, 1, 0, 0, 0, 3149, 3151, 3, 318, 159, 0, 3150, 3152, 5, 188, 0, 0, 3151, 3150, 1, 0, 0, 0, 3151, 3152, 1, 0, 0, 0, 3152, 3153, 1, 0, 0, 0, 3153, 3154, 3, 354, 177, 0, 3154, 367, 1, 0, 0, 0, 3155, 3156, 3, 376, 188, 0, 3156, 369, 1, 0, 0, 0, 3157, 3158, 5, 175, 0, 0, 3158, 371, 1, 0, 0, 0, 3159, 3160, 7, 10, 0, 0, 3160, 373, 1, 0, 0, 0, 3161, 3164, 3, 376, 188, 0, 3162, 3163, 5, 5, 0, 0, 3163, 3165, 3, 376, 188, 0, 3164, 3162, 1, 0, 0, 0, 3164, 3165, 1, 0, 0, 0, 3165, 375, 1, 0, 0, 0, 3166, 3172, 5, 184, 0, 0, 3167, 3168, 5, 187, 0, 0, 3168, 3172, 6, 188, -1, 0, 3169, 3172, 5, 176, 0, 0, 3170, 3172, 3, 378, 189, 0, 3171, 3166, 1, 0, 0, 0, 3171, 3167, 1, 0, 0, 0, 3171, 3169, 1, 0, 0, 0, 3171, 3170, 1, 0, 0, 0, 3172, 377, 1, 0, 0, 0, 3173, 3174, 7, 11, 0, 0, 3174, 379, 1, 0, 0, 0, 3175, 3176, 7, 12, 0, 0, 3176, 381, 1, 0, 0, 0, 3177, 3178, 7, 13, 0, 0, 3178, 383, 1, 0, 0, 0, 3179, 3180, 7, 14, 0, 0, 3180, 385, 1, 0, 0, 0, 543, 388, 392, 397, 401, 406, 409, 413, 416, 444, 450, 457, 461, 465, 469, 472, 476, 480, 484, 489, 493, 495, 502, 506, 515, 520, 530, 534, 538, 543, 556, 560, 568, 572, 576, 580, 588, 592, 596, 600, 615, 620, 626, 630, 633, 636, 642, 646, 651, 654, 658, 661, 664, 668, 672, 678, 682, 687, 705, 716, 722, 726, 733, 753, 757, 760, 763, 766, 769, 773, 778, 782, 792, 796, 801, 806, 811, 817, 821, 825, 830, 837, 841, 845, 848, 865, 869, 873, 877, 881, 884, 887, 895, 900, 904, 908, 912, 921, 925, 930, 934, 938, 942, 946, 948, 952, 956, 958, 966, 971, 975, 979, 983, 988, 994, 998, 1011, 1015, 1018, 1021, 1024, 1028, 1032, 1035, 1038, 1042, 1046, 1052, 1056, 1060, 1064, 1070, 1074, 1078, 1082, 1088, 1092, 1097, 1109, 1113, 1117, 1122, 1140, 1147, 1160, 1167, 1183, 1187, 1196, 1204, 1207, 1217, 1220, 1228, 1231, 1237, 1240, 1246, 1261, 1271, 1274, 1278, 1282, 1301, 1308, 1315, 1326, 1349, 1358, 1368, 1372, 1376, 1380, 1385, 1389, 1399, 1403, 1408, 1417, 1421, 1426, 1432, 1438, 1444, 1448, 1452, 1458, 1462, 1466, 1472, 1476, 1480, 1486, 1490, 1494, 1498, 1502, 1508, 1512, 1516, 1520, 1524, 1534, 1540, 1547, 1552, 1558, 1563, 1580, 1586, 1592, 1596, 1600, 1609, 1623, 1628, 1633, 1637, 1642, 1648, 1653, 1656, 1660, 1664, 1668, 1674, 1678, 1683, 1688, 1692, 1695, 1697, 1701, 1705, 1711, 1715, 1720, 1724, 1733, 1739, 1747, 1751, 1755, 1759, 1766, 1770, 1774, 1778, 1781, 1784, 1791, 1797, 1801, 1806, 1813, 1816, 1819, 1824, 1828, 1832, 1837, 1841, 1850, 1854, 1859, 1873, 1875, 1877, 1882, 1892, 1898, 1905, 1918, 1922, 1926, 1930, 1935, 1940, 1944, 1948, 1952, 1956, 1960, 1966, 1970, 1974, 1978, 1983, 1989, 1992, 1998, 2001, 2007, 2011, 2015, 2019, 2023, 2028, 2033, 2037, 2042, 2045, 2054, 2063, 2068, 2081, 2084, 2092, 2096, 2101, 2106, 2110, 2115, 2121, 2126, 2133, 2137, 2141, 2143, 2147, 2149, 2153, 2155, 2161, 2167, 2171, 2174, 2177, 2183, 2186, 2189, 2193, 2199, 2202, 2205, 2209, 2213, 2217, 2219, 2223, 2225, 2229, 2231, 2235, 2237, 2243, 2247, 2251, 2255, 2259, 2263, 2267, 2271, 2275, 2278, 2284, 2288, 2292, 2295, 2300, 2305, 2309, 2313, 2316, 2319, 2324, 2329, 2332, 2335, 2338, 2341, 2344, 2348, 2352, 2356, 2360, 2370, 2373, 2376, 2380, 2383, 2386, 2390, 2394, 2398, 2402, 2406, 2410, 2412, 2415, 2419, 2423, 2427, 2431, 2433, 2439, 2442, 2445, 2456, 2469, 2479, 2489, 2494, 2498, 2505, 2509, 2513, 2517, 2521, 2529, 2533, 2537, 2541, 2547, 2551, 2557, 2561, 2566, 2571, 2575, 2580, 2585, 2589, 2595, 2602, 2606, 2612, 2619, 2623, 2629, 2636, 2640, 2645, 2653, 2656, 2661, 2670, 2674, 2677, 2690, 2693, 2698, 2712, 2716, 2720, 2725, 2728, 2732, 2737, 2749, 2753, 2757, 2761, 2767, 2771, 2775, 2781, 2785, 2789, 2795, 2799, 2803, 2807, 2825, 2831, 2835, 2839, 2843, 2846, 2852, 2855, 2859, 2863, 2867, 2871, 2875, 2882, 2885, 2889, 2895, 2899, 2905, 2909, 2913, 2918, 2922, 2926, 2930, 2935, 2938, 2941, 2947, 2951, 2955, 2957, 2961, 2965, 2969, 2973, 2976, 2980, 2986, 2991, 2993, 2997, 3001, 3006, 3010, 3015, 3019, 3023, 3027, 3031, 3036, 3040, 3045, 3049, 3053, 3057, 3061, 3064, 3067, 3070, 3073, 3079, 3083, 3087, 3092, 3096, 3100, 3105, 3107, 3110, 3114, 3117, 3120, 3126, 3130, 3134, 3142, 3147, 3151, 3164, 3171] \ No newline at end of file diff --git a/src/utils/CypherParser/Cypher.tokens b/src/utils/CypherParser/Cypher.tokens index ccba5dc..c66011f 100644 --- a/src/utils/CypherParser/Cypher.tokens +++ b/src/utils/CypherParser/Cypher.tokens @@ -47,143 +47,148 @@ ANY=46 ADD=47 ALL=48 ALTER=49 -AND=50 -AS=51 -ASC=52 -ASCENDING=53 -ATTACH=54 -BEGIN=55 -BY=56 -CALL=57 -CASE=58 -CAST=59 -CHECKPOINT=60 -COLUMN=61 -COMMENT=62 -COMMIT=63 -COMMIT_SKIP_CHECKPOINT=64 -CONTAINS=65 -COPY=66 -COUNT=67 -CREATE=68 -CYCLE=69 -DATABASE=70 -DBTYPE=71 -DEFAULT=72 -DELETE=73 -DESC=74 -DESCENDING=75 -DETACH=76 -DISTINCT=77 -DROP=78 -ELSE=79 -END=80 -ENDS=81 -EXISTS=82 -EXPLAIN=83 -EXPORT=84 -EXTENSION=85 -FALSE=86 -FROM=87 -FORCE=88 -GLOB=89 -GRAPH=90 -GROUP=91 -HEADERS=92 -HINT=93 -IMPORT=94 -IF=95 -IN=96 -INCREMENT=97 -INSTALL=98 -IS=99 -JOIN=100 -KEY=101 -LIMIT=102 -LOAD=103 -LOGICAL=104 -MACRO=105 -MATCH=106 -MAXVALUE=107 -MERGE=108 -MINVALUE=109 -MULTI_JOIN=110 -NO=111 -NODE=112 -NOT=113 -NONE=114 -NULL=115 -ON=116 -ONLY=117 -OPTIONAL=118 -OR=119 -ORDER=120 -PRIMARY=121 -PROFILE=122 -PROJECT=123 -READ=124 -REL=125 -RENAME=126 -RETURN=127 -ROLLBACK=128 -ROLLBACK_SKIP_CHECKPOINT=129 -SEQUENCE=130 -SET=131 -SHORTEST=132 -START=133 -STARTS=134 -STRUCT=135 -TABLE=136 -THEN=137 -TO=138 -TRAIL=139 -TRANSACTION=140 -TRUE=141 -TYPE=142 -UNION=143 -UNWIND=144 -UNINSTALL=145 -UPDATE=146 -USE=147 -WHEN=148 -WHERE=149 -WITH=150 -WRITE=151 -WSHORTEST=152 -XOR=153 -SINGLE=154 -YIELD=155 -USER=156 -PASSWORD=157 -ROLE=158 -MAP=159 -DECIMAL=160 -STAR=161 -L_SKIP=162 -INVALID_NOT_EQUAL=163 -COLON=164 -DOTDOT=165 -MINUS=166 -FACTORIAL=167 -StringLiteral=168 -EscapedChar=169 -DecimalInteger=170 -HexLetter=171 -HexDigit=172 -Digit=173 -NonZeroDigit=174 -NonZeroOctDigit=175 -ZeroDigit=176 -ExponentDecimalReal=177 -RegularDecimalReal=178 -UnescapedSymbolicName=179 -IdentifierStart=180 -IdentifierPart=181 -EscapedSymbolicName=182 -SP=183 -WHITESPACE=184 -CypherComment=185 -Unknown=186 +ANALYZE=50 +AND=51 +AS=52 +ASC=53 +ASCENDING=54 +ATTACH=55 +BEGIN=56 +BY=57 +CALL=58 +CASE=59 +CAST=60 +CHECKPOINT=61 +COLUMN=62 +COMMENT=63 +COMMIT=64 +COMMIT_SKIP_CHECKPOINT=65 +CONTAINS=66 +COPY=67 +COUNT=68 +CREATE=69 +CYCLE=70 +DATABASE=71 +DBTYPE=72 +DEFAULT=73 +DELETE=74 +DESC=75 +DESCENDING=76 +DETACH=77 +DISTINCT=78 +DROP=79 +ELSE=80 +END=81 +ENDS=82 +EXISTS=83 +EXPLAIN=84 +EXPORT=85 +EXTENSION=86 +FALSE=87 +FROM=88 +FORCE=89 +FOR=90 +GLOB=91 +GRAPH=92 +GROUP=93 +HEADERS=94 +HINT=95 +IMPORT=96 +INDEX=97 +IF=98 +IN=99 +INCREMENT=100 +INSTALL=101 +IS=102 +JOIN=103 +KEY=104 +LIMIT=105 +LOAD=106 +LOGICAL=107 +MACRO=108 +MATCH=109 +MAXVALUE=110 +MERGE=111 +MINVALUE=112 +MULTI_JOIN=113 +NO=114 +NODE=115 +NOT=116 +NONE=117 +NULL=118 +ON=119 +ONLY=120 +OPTIONS=121 +OPTIONAL=122 +OR=123 +ORDER=124 +PRIMARY=125 +PROFILE=126 +PROJECT=127 +READ=128 +REL=129 +RENAME=130 +RETURN=131 +ROLLBACK=132 +ROLLBACK_SKIP_CHECKPOINT=133 +SEQUENCE=134 +SET=135 +SORTED=136 +SHORTEST=137 +START=138 +STARTS=139 +STRUCT=140 +TABLE=141 +THEN=142 +TO=143 +TRAIL=144 +TRANSACTION=145 +TRUE=146 +TYPE=147 +UNION=148 +UNWIND=149 +UNINSTALL=150 +UPDATE=151 +USE=152 +WHEN=153 +WHERE=154 +WITH=155 +WRITE=156 +WSHORTEST=157 +XOR=158 +SINGLE=159 +YIELD=160 +USER=161 +PASSWORD=162 +ROLE=163 +MAP=164 +DECIMAL=165 +STAR=166 +L_SKIP=167 +INVALID_NOT_EQUAL=168 +COLON=169 +DOTDOT=170 +MINUS=171 +FACTORIAL=172 +StringLiteral=173 +EscapedChar=174 +DecimalInteger=175 +HexLetter=176 +HexDigit=177 +Digit=178 +NonZeroDigit=179 +NonZeroOctDigit=180 +ZeroDigit=181 +ExponentDecimalReal=182 +RegularDecimalReal=183 +UnescapedSymbolicName=184 +IdentifierStart=185 +IdentifierPart=186 +EscapedSymbolicName=187 +SP=188 +WHITESPACE=189 +CypherComment=190 +Unknown=191 ';'=1 '('=2 ')'=3 @@ -228,10 +233,10 @@ Unknown=186 '\ufe58'=42 '\ufe63'=43 '\uff0d'=44 -'*'=161 -'!='=163 -':'=164 -'..'=165 -'-'=166 -'!'=167 -'0'=176 +'*'=166 +'!='=168 +':'=169 +'..'=170 +'-'=171 +'!'=172 +'0'=181 diff --git a/src/utils/CypherParser/CypherLexer.interp b/src/utils/CypherParser/CypherLexer.interp index 1bc91fa..2733227 100644 --- a/src/utils/CypherParser/CypherLexer.interp +++ b/src/utils/CypherParser/CypherLexer.interp @@ -160,6 +160,11 @@ null null null null +null +null +null +null +null '*' null '!=' @@ -238,6 +243,7 @@ ANY ADD ALL ALTER +ANALYZE AND AS ASC @@ -277,12 +283,14 @@ EXTENSION FALSE FROM FORCE +FOR GLOB GRAPH GROUP HEADERS HINT IMPORT +INDEX IF IN INCREMENT @@ -306,6 +314,7 @@ NONE NULL ON ONLY +OPTIONS OPTIONAL OR ORDER @@ -320,6 +329,7 @@ ROLLBACK ROLLBACK_SKIP_CHECKPOINT SEQUENCE SET +SORTED SHORTEST START STARTS @@ -426,6 +436,7 @@ ANY ADD ALL ALTER +ANALYZE AND AS ASC @@ -465,12 +476,14 @@ EXTENSION FALSE FROM FORCE +FOR GLOB GRAPH GROUP HEADERS HINT IMPORT +INDEX IF IN INCREMENT @@ -494,6 +507,7 @@ NONE NULL ON ONLY +OPTIONS OPTIONAL OR ORDER @@ -508,6 +522,7 @@ ROLLBACK ROLLBACK_SKIP_CHECKPOINT SEQUENCE SET +SORTED SHORTEST START STARTS @@ -592,4 +607,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 186, 1527, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 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, 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, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 5, 167, 1294, 8, 167, 10, 167, 12, 167, 1297, 9, 167, 1, 167, 1, 167, 1, 167, 1, 167, 5, 167, 1303, 8, 167, 10, 167, 12, 167, 1306, 9, 167, 1, 167, 3, 167, 1309, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 1333, 8, 168, 1, 169, 1, 169, 1, 169, 5, 169, 1338, 8, 169, 10, 169, 12, 169, 1341, 9, 169, 3, 169, 1343, 8, 169, 1, 170, 3, 170, 1346, 8, 170, 1, 171, 1, 171, 3, 171, 1350, 8, 171, 1, 172, 1, 172, 3, 172, 1354, 8, 172, 1, 173, 1, 173, 3, 173, 1358, 8, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 4, 176, 1365, 8, 176, 11, 176, 12, 176, 1366, 1, 176, 4, 176, 1370, 8, 176, 11, 176, 12, 176, 1371, 1, 176, 1, 176, 4, 176, 1376, 8, 176, 11, 176, 12, 176, 1377, 1, 176, 1, 176, 4, 176, 1382, 8, 176, 11, 176, 12, 176, 1383, 3, 176, 1386, 8, 176, 1, 176, 1, 176, 3, 176, 1390, 8, 176, 1, 176, 4, 176, 1393, 8, 176, 11, 176, 12, 176, 1394, 1, 177, 5, 177, 1398, 8, 177, 10, 177, 12, 177, 1401, 9, 177, 1, 177, 1, 177, 4, 177, 1405, 8, 177, 11, 177, 12, 177, 1406, 1, 178, 1, 178, 5, 178, 1411, 8, 178, 10, 178, 12, 178, 1414, 9, 178, 1, 179, 1, 179, 3, 179, 1418, 8, 179, 1, 180, 1, 180, 3, 180, 1422, 8, 180, 1, 181, 1, 181, 5, 181, 1426, 8, 181, 10, 181, 12, 181, 1429, 9, 181, 1, 181, 4, 181, 1432, 8, 181, 11, 181, 12, 181, 1433, 1, 182, 4, 182, 1437, 8, 182, 11, 182, 12, 182, 1438, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 1453, 8, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1461, 8, 184, 10, 184, 12, 184, 1464, 9, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1472, 8, 184, 10, 184, 12, 184, 1475, 9, 184, 1, 184, 3, 184, 1478, 8, 184, 1, 184, 1, 184, 3, 184, 1482, 8, 184, 3, 184, 1484, 8, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, 196, 1, 197, 1, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 200, 1, 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 203, 1, 203, 1, 204, 1, 204, 1, 205, 1, 205, 0, 0, 206, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 0, 373, 0, 375, 0, 377, 0, 379, 0, 381, 0, 383, 0, 385, 0, 387, 0, 389, 0, 391, 0, 393, 0, 395, 0, 397, 0, 399, 0, 401, 0, 403, 0, 405, 0, 407, 0, 409, 0, 411, 186, 1, 0, 48, 2, 0, 65, 65, 97, 97, 2, 0, 67, 67, 99, 99, 2, 0, 89, 89, 121, 121, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 78, 78, 110, 110, 2, 0, 68, 68, 100, 100, 2, 0, 84, 84, 116, 116, 2, 0, 69, 69, 101, 101, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 66, 66, 98, 98, 2, 0, 75, 75, 107, 107, 2, 0, 80, 80, 112, 112, 2, 0, 79, 79, 111, 111, 2, 0, 85, 85, 117, 117, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 74, 74, 106, 106, 2, 0, 86, 86, 118, 118, 2, 0, 81, 81, 113, 113, 2, 0, 87, 87, 119, 119, 13, 0, 34, 34, 39, 39, 66, 66, 70, 70, 78, 78, 82, 82, 84, 84, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 2, 0, 65, 70, 97, 102, 8, 0, 160, 160, 5760, 5760, 6158, 6158, 8192, 8202, 8232, 8233, 8239, 8239, 8287, 8287, 12288, 12288, 1, 0, 12, 12, 1, 0, 96, 96, 1, 0, 30, 30, 768, 0, 48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2160, 2183, 2185, 2190, 2200, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3293, 3294, 3296, 3299, 3302, 3311, 3313, 3315, 3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5909, 5919, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6847, 6862, 6912, 6988, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69248, 69289, 69291, 69292, 69296, 69297, 69373, 69404, 69415, 69415, 69424, 69456, 69488, 69509, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69749, 69759, 69818, 69826, 69826, 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70209, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71488, 71494, 71680, 71738, 71840, 71913, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73472, 73488, 73490, 73530, 73534, 73538, 73552, 73561, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777, 92784, 92862, 92864, 92873, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122624, 122654, 122661, 122666, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989, 123023, 123023, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, 123536, 123566, 123584, 123641, 124112, 124153, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 917760, 917999, 1, 0, 42, 42, 2, 0, 39, 39, 92, 92, 2, 0, 10, 10, 13, 13, 1, 0, 47, 47, 1, 0, 29, 29, 1, 0, 28, 28, 1, 0, 13, 13, 21, 0, 36, 36, 162, 165, 1423, 1423, 1547, 1547, 2046, 2047, 2546, 2547, 2555, 2555, 2801, 2801, 3065, 3065, 3647, 3647, 6107, 6107, 8352, 8384, 43064, 43064, 65020, 65020, 65129, 65129, 65284, 65284, 65504, 65505, 65509, 65510, 73693, 73696, 123647, 123647, 126128, 126128, 1, 0, 32, 32, 6, 0, 95, 95, 8255, 8256, 8276, 8276, 65075, 65076, 65101, 65103, 65343, 65343, 1, 0, 9, 9, 2, 0, 34, 34, 92, 92, 1, 0, 10, 10, 1, 0, 11, 11, 1, 0, 31, 31, 659, 0, 65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 1552, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 1, 413, 1, 0, 0, 0, 3, 415, 1, 0, 0, 0, 5, 417, 1, 0, 0, 0, 7, 419, 1, 0, 0, 0, 9, 421, 1, 0, 0, 0, 11, 423, 1, 0, 0, 0, 13, 425, 1, 0, 0, 0, 15, 427, 1, 0, 0, 0, 17, 429, 1, 0, 0, 0, 19, 431, 1, 0, 0, 0, 21, 433, 1, 0, 0, 0, 23, 435, 1, 0, 0, 0, 25, 438, 1, 0, 0, 0, 27, 440, 1, 0, 0, 0, 29, 443, 1, 0, 0, 0, 31, 445, 1, 0, 0, 0, 33, 448, 1, 0, 0, 0, 35, 450, 1, 0, 0, 0, 37, 453, 1, 0, 0, 0, 39, 456, 1, 0, 0, 0, 41, 458, 1, 0, 0, 0, 43, 460, 1, 0, 0, 0, 45, 462, 1, 0, 0, 0, 47, 464, 1, 0, 0, 0, 49, 467, 1, 0, 0, 0, 51, 469, 1, 0, 0, 0, 53, 471, 1, 0, 0, 0, 55, 473, 1, 0, 0, 0, 57, 475, 1, 0, 0, 0, 59, 477, 1, 0, 0, 0, 61, 479, 1, 0, 0, 0, 63, 481, 1, 0, 0, 0, 65, 483, 1, 0, 0, 0, 67, 485, 1, 0, 0, 0, 69, 487, 1, 0, 0, 0, 71, 489, 1, 0, 0, 0, 73, 491, 1, 0, 0, 0, 75, 493, 1, 0, 0, 0, 77, 495, 1, 0, 0, 0, 79, 497, 1, 0, 0, 0, 81, 499, 1, 0, 0, 0, 83, 501, 1, 0, 0, 0, 85, 503, 1, 0, 0, 0, 87, 505, 1, 0, 0, 0, 89, 507, 1, 0, 0, 0, 91, 515, 1, 0, 0, 0, 93, 519, 1, 0, 0, 0, 95, 523, 1, 0, 0, 0, 97, 527, 1, 0, 0, 0, 99, 533, 1, 0, 0, 0, 101, 537, 1, 0, 0, 0, 103, 540, 1, 0, 0, 0, 105, 544, 1, 0, 0, 0, 107, 554, 1, 0, 0, 0, 109, 561, 1, 0, 0, 0, 111, 567, 1, 0, 0, 0, 113, 570, 1, 0, 0, 0, 115, 575, 1, 0, 0, 0, 117, 580, 1, 0, 0, 0, 119, 585, 1, 0, 0, 0, 121, 596, 1, 0, 0, 0, 123, 603, 1, 0, 0, 0, 125, 611, 1, 0, 0, 0, 127, 618, 1, 0, 0, 0, 129, 641, 1, 0, 0, 0, 131, 650, 1, 0, 0, 0, 133, 655, 1, 0, 0, 0, 135, 661, 1, 0, 0, 0, 137, 668, 1, 0, 0, 0, 139, 674, 1, 0, 0, 0, 141, 683, 1, 0, 0, 0, 143, 690, 1, 0, 0, 0, 145, 698, 1, 0, 0, 0, 147, 705, 1, 0, 0, 0, 149, 710, 1, 0, 0, 0, 151, 721, 1, 0, 0, 0, 153, 728, 1, 0, 0, 0, 155, 737, 1, 0, 0, 0, 157, 742, 1, 0, 0, 0, 159, 747, 1, 0, 0, 0, 161, 751, 1, 0, 0, 0, 163, 756, 1, 0, 0, 0, 165, 763, 1, 0, 0, 0, 167, 771, 1, 0, 0, 0, 169, 778, 1, 0, 0, 0, 171, 788, 1, 0, 0, 0, 173, 794, 1, 0, 0, 0, 175, 799, 1, 0, 0, 0, 177, 805, 1, 0, 0, 0, 179, 810, 1, 0, 0, 0, 181, 816, 1, 0, 0, 0, 183, 822, 1, 0, 0, 0, 185, 830, 1, 0, 0, 0, 187, 835, 1, 0, 0, 0, 189, 842, 1, 0, 0, 0, 191, 845, 1, 0, 0, 0, 193, 848, 1, 0, 0, 0, 195, 858, 1, 0, 0, 0, 197, 866, 1, 0, 0, 0, 199, 869, 1, 0, 0, 0, 201, 874, 1, 0, 0, 0, 203, 878, 1, 0, 0, 0, 205, 884, 1, 0, 0, 0, 207, 889, 1, 0, 0, 0, 209, 897, 1, 0, 0, 0, 211, 903, 1, 0, 0, 0, 213, 909, 1, 0, 0, 0, 215, 918, 1, 0, 0, 0, 217, 924, 1, 0, 0, 0, 219, 933, 1, 0, 0, 0, 221, 944, 1, 0, 0, 0, 223, 947, 1, 0, 0, 0, 225, 952, 1, 0, 0, 0, 227, 956, 1, 0, 0, 0, 229, 961, 1, 0, 0, 0, 231, 966, 1, 0, 0, 0, 233, 969, 1, 0, 0, 0, 235, 974, 1, 0, 0, 0, 237, 983, 1, 0, 0, 0, 239, 986, 1, 0, 0, 0, 241, 992, 1, 0, 0, 0, 243, 1000, 1, 0, 0, 0, 245, 1008, 1, 0, 0, 0, 247, 1016, 1, 0, 0, 0, 249, 1021, 1, 0, 0, 0, 251, 1025, 1, 0, 0, 0, 253, 1032, 1, 0, 0, 0, 255, 1039, 1, 0, 0, 0, 257, 1048, 1, 0, 0, 0, 259, 1073, 1, 0, 0, 0, 261, 1082, 1, 0, 0, 0, 263, 1086, 1, 0, 0, 0, 265, 1095, 1, 0, 0, 0, 267, 1101, 1, 0, 0, 0, 269, 1108, 1, 0, 0, 0, 271, 1115, 1, 0, 0, 0, 273, 1121, 1, 0, 0, 0, 275, 1126, 1, 0, 0, 0, 277, 1129, 1, 0, 0, 0, 279, 1135, 1, 0, 0, 0, 281, 1147, 1, 0, 0, 0, 283, 1152, 1, 0, 0, 0, 285, 1157, 1, 0, 0, 0, 287, 1163, 1, 0, 0, 0, 289, 1170, 1, 0, 0, 0, 291, 1180, 1, 0, 0, 0, 293, 1187, 1, 0, 0, 0, 295, 1191, 1, 0, 0, 0, 297, 1196, 1, 0, 0, 0, 299, 1202, 1, 0, 0, 0, 301, 1207, 1, 0, 0, 0, 303, 1213, 1, 0, 0, 0, 305, 1223, 1, 0, 0, 0, 307, 1227, 1, 0, 0, 0, 309, 1234, 1, 0, 0, 0, 311, 1240, 1, 0, 0, 0, 313, 1245, 1, 0, 0, 0, 315, 1254, 1, 0, 0, 0, 317, 1259, 1, 0, 0, 0, 319, 1263, 1, 0, 0, 0, 321, 1271, 1, 0, 0, 0, 323, 1273, 1, 0, 0, 0, 325, 1278, 1, 0, 0, 0, 327, 1281, 1, 0, 0, 0, 329, 1283, 1, 0, 0, 0, 331, 1286, 1, 0, 0, 0, 333, 1288, 1, 0, 0, 0, 335, 1308, 1, 0, 0, 0, 337, 1310, 1, 0, 0, 0, 339, 1342, 1, 0, 0, 0, 341, 1345, 1, 0, 0, 0, 343, 1349, 1, 0, 0, 0, 345, 1353, 1, 0, 0, 0, 347, 1357, 1, 0, 0, 0, 349, 1359, 1, 0, 0, 0, 351, 1361, 1, 0, 0, 0, 353, 1385, 1, 0, 0, 0, 355, 1399, 1, 0, 0, 0, 357, 1408, 1, 0, 0, 0, 359, 1417, 1, 0, 0, 0, 361, 1421, 1, 0, 0, 0, 363, 1431, 1, 0, 0, 0, 365, 1436, 1, 0, 0, 0, 367, 1452, 1, 0, 0, 0, 369, 1483, 1, 0, 0, 0, 371, 1485, 1, 0, 0, 0, 373, 1487, 1, 0, 0, 0, 375, 1489, 1, 0, 0, 0, 377, 1491, 1, 0, 0, 0, 379, 1493, 1, 0, 0, 0, 381, 1495, 1, 0, 0, 0, 383, 1497, 1, 0, 0, 0, 385, 1499, 1, 0, 0, 0, 387, 1501, 1, 0, 0, 0, 389, 1503, 1, 0, 0, 0, 391, 1505, 1, 0, 0, 0, 393, 1507, 1, 0, 0, 0, 395, 1509, 1, 0, 0, 0, 397, 1511, 1, 0, 0, 0, 399, 1513, 1, 0, 0, 0, 401, 1515, 1, 0, 0, 0, 403, 1517, 1, 0, 0, 0, 405, 1519, 1, 0, 0, 0, 407, 1521, 1, 0, 0, 0, 409, 1523, 1, 0, 0, 0, 411, 1525, 1, 0, 0, 0, 413, 414, 5, 59, 0, 0, 414, 2, 1, 0, 0, 0, 415, 416, 5, 40, 0, 0, 416, 4, 1, 0, 0, 0, 417, 418, 5, 41, 0, 0, 418, 6, 1, 0, 0, 0, 419, 420, 5, 44, 0, 0, 420, 8, 1, 0, 0, 0, 421, 422, 5, 46, 0, 0, 422, 10, 1, 0, 0, 0, 423, 424, 5, 61, 0, 0, 424, 12, 1, 0, 0, 0, 425, 426, 5, 91, 0, 0, 426, 14, 1, 0, 0, 0, 427, 428, 5, 93, 0, 0, 428, 16, 1, 0, 0, 0, 429, 430, 5, 123, 0, 0, 430, 18, 1, 0, 0, 0, 431, 432, 5, 125, 0, 0, 432, 20, 1, 0, 0, 0, 433, 434, 5, 124, 0, 0, 434, 22, 1, 0, 0, 0, 435, 436, 5, 60, 0, 0, 436, 437, 5, 62, 0, 0, 437, 24, 1, 0, 0, 0, 438, 439, 5, 60, 0, 0, 439, 26, 1, 0, 0, 0, 440, 441, 5, 60, 0, 0, 441, 442, 5, 61, 0, 0, 442, 28, 1, 0, 0, 0, 443, 444, 5, 62, 0, 0, 444, 30, 1, 0, 0, 0, 445, 446, 5, 62, 0, 0, 446, 447, 5, 61, 0, 0, 447, 32, 1, 0, 0, 0, 448, 449, 5, 38, 0, 0, 449, 34, 1, 0, 0, 0, 450, 451, 5, 62, 0, 0, 451, 452, 5, 62, 0, 0, 452, 36, 1, 0, 0, 0, 453, 454, 5, 60, 0, 0, 454, 455, 5, 60, 0, 0, 455, 38, 1, 0, 0, 0, 456, 457, 5, 43, 0, 0, 457, 40, 1, 0, 0, 0, 458, 459, 5, 47, 0, 0, 459, 42, 1, 0, 0, 0, 460, 461, 5, 37, 0, 0, 461, 44, 1, 0, 0, 0, 462, 463, 5, 94, 0, 0, 463, 46, 1, 0, 0, 0, 464, 465, 5, 61, 0, 0, 465, 466, 5, 126, 0, 0, 466, 48, 1, 0, 0, 0, 467, 468, 5, 36, 0, 0, 468, 50, 1, 0, 0, 0, 469, 470, 5, 10216, 0, 0, 470, 52, 1, 0, 0, 0, 471, 472, 5, 12296, 0, 0, 472, 54, 1, 0, 0, 0, 473, 474, 5, 65124, 0, 0, 474, 56, 1, 0, 0, 0, 475, 476, 5, 65308, 0, 0, 476, 58, 1, 0, 0, 0, 477, 478, 5, 10217, 0, 0, 478, 60, 1, 0, 0, 0, 479, 480, 5, 12297, 0, 0, 480, 62, 1, 0, 0, 0, 481, 482, 5, 65125, 0, 0, 482, 64, 1, 0, 0, 0, 483, 484, 5, 65310, 0, 0, 484, 66, 1, 0, 0, 0, 485, 486, 5, 173, 0, 0, 486, 68, 1, 0, 0, 0, 487, 488, 5, 8208, 0, 0, 488, 70, 1, 0, 0, 0, 489, 490, 5, 8209, 0, 0, 490, 72, 1, 0, 0, 0, 491, 492, 5, 8210, 0, 0, 492, 74, 1, 0, 0, 0, 493, 494, 5, 8211, 0, 0, 494, 76, 1, 0, 0, 0, 495, 496, 5, 8212, 0, 0, 496, 78, 1, 0, 0, 0, 497, 498, 5, 8213, 0, 0, 498, 80, 1, 0, 0, 0, 499, 500, 5, 8722, 0, 0, 500, 82, 1, 0, 0, 0, 501, 502, 5, 65112, 0, 0, 502, 84, 1, 0, 0, 0, 503, 504, 5, 65123, 0, 0, 504, 86, 1, 0, 0, 0, 505, 506, 5, 65293, 0, 0, 506, 88, 1, 0, 0, 0, 507, 508, 7, 0, 0, 0, 508, 509, 7, 1, 0, 0, 509, 510, 7, 2, 0, 0, 510, 511, 7, 1, 0, 0, 511, 512, 7, 3, 0, 0, 512, 513, 7, 4, 0, 0, 513, 514, 7, 1, 0, 0, 514, 90, 1, 0, 0, 0, 515, 516, 7, 0, 0, 0, 516, 517, 7, 5, 0, 0, 517, 518, 7, 2, 0, 0, 518, 92, 1, 0, 0, 0, 519, 520, 7, 0, 0, 0, 520, 521, 7, 6, 0, 0, 521, 522, 7, 6, 0, 0, 522, 94, 1, 0, 0, 0, 523, 524, 7, 0, 0, 0, 524, 525, 7, 3, 0, 0, 525, 526, 7, 3, 0, 0, 526, 96, 1, 0, 0, 0, 527, 528, 7, 0, 0, 0, 528, 529, 7, 3, 0, 0, 529, 530, 7, 7, 0, 0, 530, 531, 7, 8, 0, 0, 531, 532, 7, 9, 0, 0, 532, 98, 1, 0, 0, 0, 533, 534, 7, 0, 0, 0, 534, 535, 7, 5, 0, 0, 535, 536, 7, 6, 0, 0, 536, 100, 1, 0, 0, 0, 537, 538, 7, 0, 0, 0, 538, 539, 7, 10, 0, 0, 539, 102, 1, 0, 0, 0, 540, 541, 7, 0, 0, 0, 541, 542, 7, 10, 0, 0, 542, 543, 7, 1, 0, 0, 543, 104, 1, 0, 0, 0, 544, 545, 7, 0, 0, 0, 545, 546, 7, 10, 0, 0, 546, 547, 7, 1, 0, 0, 547, 548, 7, 8, 0, 0, 548, 549, 7, 5, 0, 0, 549, 550, 7, 6, 0, 0, 550, 551, 7, 4, 0, 0, 551, 552, 7, 5, 0, 0, 552, 553, 7, 11, 0, 0, 553, 106, 1, 0, 0, 0, 554, 555, 7, 0, 0, 0, 555, 556, 7, 7, 0, 0, 556, 557, 7, 7, 0, 0, 557, 558, 7, 0, 0, 0, 558, 559, 7, 1, 0, 0, 559, 560, 7, 12, 0, 0, 560, 108, 1, 0, 0, 0, 561, 562, 7, 13, 0, 0, 562, 563, 7, 8, 0, 0, 563, 564, 7, 11, 0, 0, 564, 565, 7, 4, 0, 0, 565, 566, 7, 5, 0, 0, 566, 110, 1, 0, 0, 0, 567, 568, 7, 13, 0, 0, 568, 569, 7, 2, 0, 0, 569, 112, 1, 0, 0, 0, 570, 571, 7, 1, 0, 0, 571, 572, 7, 0, 0, 0, 572, 573, 7, 3, 0, 0, 573, 574, 7, 3, 0, 0, 574, 114, 1, 0, 0, 0, 575, 576, 7, 1, 0, 0, 576, 577, 7, 0, 0, 0, 577, 578, 7, 10, 0, 0, 578, 579, 7, 8, 0, 0, 579, 116, 1, 0, 0, 0, 580, 581, 7, 1, 0, 0, 581, 582, 7, 0, 0, 0, 582, 583, 7, 10, 0, 0, 583, 584, 7, 7, 0, 0, 584, 118, 1, 0, 0, 0, 585, 586, 7, 1, 0, 0, 586, 587, 7, 12, 0, 0, 587, 588, 7, 8, 0, 0, 588, 589, 7, 1, 0, 0, 589, 590, 7, 14, 0, 0, 590, 591, 7, 15, 0, 0, 591, 592, 7, 16, 0, 0, 592, 593, 7, 4, 0, 0, 593, 594, 7, 5, 0, 0, 594, 595, 7, 7, 0, 0, 595, 120, 1, 0, 0, 0, 596, 597, 7, 1, 0, 0, 597, 598, 7, 16, 0, 0, 598, 599, 7, 3, 0, 0, 599, 600, 7, 17, 0, 0, 600, 601, 7, 18, 0, 0, 601, 602, 7, 5, 0, 0, 602, 122, 1, 0, 0, 0, 603, 604, 7, 1, 0, 0, 604, 605, 7, 16, 0, 0, 605, 606, 7, 18, 0, 0, 606, 607, 7, 18, 0, 0, 607, 608, 7, 8, 0, 0, 608, 609, 7, 5, 0, 0, 609, 610, 7, 7, 0, 0, 610, 124, 1, 0, 0, 0, 611, 612, 7, 1, 0, 0, 612, 613, 7, 16, 0, 0, 613, 614, 7, 18, 0, 0, 614, 615, 7, 18, 0, 0, 615, 616, 7, 4, 0, 0, 616, 617, 7, 7, 0, 0, 617, 126, 1, 0, 0, 0, 618, 619, 7, 1, 0, 0, 619, 620, 7, 16, 0, 0, 620, 621, 7, 18, 0, 0, 621, 622, 7, 18, 0, 0, 622, 623, 7, 4, 0, 0, 623, 624, 7, 7, 0, 0, 624, 625, 5, 95, 0, 0, 625, 626, 7, 10, 0, 0, 626, 627, 7, 14, 0, 0, 627, 628, 7, 4, 0, 0, 628, 629, 7, 15, 0, 0, 629, 630, 5, 95, 0, 0, 630, 631, 7, 1, 0, 0, 631, 632, 7, 12, 0, 0, 632, 633, 7, 8, 0, 0, 633, 634, 7, 1, 0, 0, 634, 635, 7, 14, 0, 0, 635, 636, 7, 15, 0, 0, 636, 637, 7, 16, 0, 0, 637, 638, 7, 4, 0, 0, 638, 639, 7, 5, 0, 0, 639, 640, 7, 7, 0, 0, 640, 128, 1, 0, 0, 0, 641, 642, 7, 1, 0, 0, 642, 643, 7, 16, 0, 0, 643, 644, 7, 5, 0, 0, 644, 645, 7, 7, 0, 0, 645, 646, 7, 0, 0, 0, 646, 647, 7, 4, 0, 0, 647, 648, 7, 5, 0, 0, 648, 649, 7, 10, 0, 0, 649, 130, 1, 0, 0, 0, 650, 651, 7, 1, 0, 0, 651, 652, 7, 16, 0, 0, 652, 653, 7, 15, 0, 0, 653, 654, 7, 2, 0, 0, 654, 132, 1, 0, 0, 0, 655, 656, 7, 1, 0, 0, 656, 657, 7, 16, 0, 0, 657, 658, 7, 17, 0, 0, 658, 659, 7, 5, 0, 0, 659, 660, 7, 7, 0, 0, 660, 134, 1, 0, 0, 0, 661, 662, 7, 1, 0, 0, 662, 663, 7, 9, 0, 0, 663, 664, 7, 8, 0, 0, 664, 665, 7, 0, 0, 0, 665, 666, 7, 7, 0, 0, 666, 667, 7, 8, 0, 0, 667, 136, 1, 0, 0, 0, 668, 669, 7, 1, 0, 0, 669, 670, 7, 2, 0, 0, 670, 671, 7, 1, 0, 0, 671, 672, 7, 3, 0, 0, 672, 673, 7, 8, 0, 0, 673, 138, 1, 0, 0, 0, 674, 675, 7, 6, 0, 0, 675, 676, 7, 0, 0, 0, 676, 677, 7, 7, 0, 0, 677, 678, 7, 0, 0, 0, 678, 679, 7, 13, 0, 0, 679, 680, 7, 0, 0, 0, 680, 681, 7, 10, 0, 0, 681, 682, 7, 8, 0, 0, 682, 140, 1, 0, 0, 0, 683, 684, 7, 6, 0, 0, 684, 685, 7, 13, 0, 0, 685, 686, 7, 7, 0, 0, 686, 687, 7, 2, 0, 0, 687, 688, 7, 15, 0, 0, 688, 689, 7, 8, 0, 0, 689, 142, 1, 0, 0, 0, 690, 691, 7, 6, 0, 0, 691, 692, 7, 8, 0, 0, 692, 693, 7, 19, 0, 0, 693, 694, 7, 0, 0, 0, 694, 695, 7, 17, 0, 0, 695, 696, 7, 3, 0, 0, 696, 697, 7, 7, 0, 0, 697, 144, 1, 0, 0, 0, 698, 699, 7, 6, 0, 0, 699, 700, 7, 8, 0, 0, 700, 701, 7, 3, 0, 0, 701, 702, 7, 8, 0, 0, 702, 703, 7, 7, 0, 0, 703, 704, 7, 8, 0, 0, 704, 146, 1, 0, 0, 0, 705, 706, 7, 6, 0, 0, 706, 707, 7, 8, 0, 0, 707, 708, 7, 10, 0, 0, 708, 709, 7, 1, 0, 0, 709, 148, 1, 0, 0, 0, 710, 711, 7, 6, 0, 0, 711, 712, 7, 8, 0, 0, 712, 713, 7, 10, 0, 0, 713, 714, 7, 1, 0, 0, 714, 715, 7, 8, 0, 0, 715, 716, 7, 5, 0, 0, 716, 717, 7, 6, 0, 0, 717, 718, 7, 4, 0, 0, 718, 719, 7, 5, 0, 0, 719, 720, 7, 11, 0, 0, 720, 150, 1, 0, 0, 0, 721, 722, 7, 6, 0, 0, 722, 723, 7, 8, 0, 0, 723, 724, 7, 7, 0, 0, 724, 725, 7, 0, 0, 0, 725, 726, 7, 1, 0, 0, 726, 727, 7, 12, 0, 0, 727, 152, 1, 0, 0, 0, 728, 729, 7, 6, 0, 0, 729, 730, 7, 4, 0, 0, 730, 731, 7, 10, 0, 0, 731, 732, 7, 7, 0, 0, 732, 733, 7, 4, 0, 0, 733, 734, 7, 5, 0, 0, 734, 735, 7, 1, 0, 0, 735, 736, 7, 7, 0, 0, 736, 154, 1, 0, 0, 0, 737, 738, 7, 6, 0, 0, 738, 739, 7, 9, 0, 0, 739, 740, 7, 16, 0, 0, 740, 741, 7, 15, 0, 0, 741, 156, 1, 0, 0, 0, 742, 743, 7, 8, 0, 0, 743, 744, 7, 3, 0, 0, 744, 745, 7, 10, 0, 0, 745, 746, 7, 8, 0, 0, 746, 158, 1, 0, 0, 0, 747, 748, 7, 8, 0, 0, 748, 749, 7, 5, 0, 0, 749, 750, 7, 6, 0, 0, 750, 160, 1, 0, 0, 0, 751, 752, 7, 8, 0, 0, 752, 753, 7, 5, 0, 0, 753, 754, 7, 6, 0, 0, 754, 755, 7, 10, 0, 0, 755, 162, 1, 0, 0, 0, 756, 757, 7, 8, 0, 0, 757, 758, 7, 20, 0, 0, 758, 759, 7, 4, 0, 0, 759, 760, 7, 10, 0, 0, 760, 761, 7, 7, 0, 0, 761, 762, 7, 10, 0, 0, 762, 164, 1, 0, 0, 0, 763, 764, 7, 8, 0, 0, 764, 765, 7, 20, 0, 0, 765, 766, 7, 15, 0, 0, 766, 767, 7, 3, 0, 0, 767, 768, 7, 0, 0, 0, 768, 769, 7, 4, 0, 0, 769, 770, 7, 5, 0, 0, 770, 166, 1, 0, 0, 0, 771, 772, 7, 8, 0, 0, 772, 773, 7, 20, 0, 0, 773, 774, 7, 15, 0, 0, 774, 775, 7, 16, 0, 0, 775, 776, 7, 9, 0, 0, 776, 777, 7, 7, 0, 0, 777, 168, 1, 0, 0, 0, 778, 779, 7, 8, 0, 0, 779, 780, 7, 20, 0, 0, 780, 781, 7, 7, 0, 0, 781, 782, 7, 8, 0, 0, 782, 783, 7, 5, 0, 0, 783, 784, 7, 10, 0, 0, 784, 785, 7, 4, 0, 0, 785, 786, 7, 16, 0, 0, 786, 787, 7, 5, 0, 0, 787, 170, 1, 0, 0, 0, 788, 789, 7, 19, 0, 0, 789, 790, 7, 0, 0, 0, 790, 791, 7, 3, 0, 0, 791, 792, 7, 10, 0, 0, 792, 793, 7, 8, 0, 0, 793, 172, 1, 0, 0, 0, 794, 795, 7, 19, 0, 0, 795, 796, 7, 9, 0, 0, 796, 797, 7, 16, 0, 0, 797, 798, 7, 18, 0, 0, 798, 174, 1, 0, 0, 0, 799, 800, 7, 19, 0, 0, 800, 801, 7, 16, 0, 0, 801, 802, 7, 9, 0, 0, 802, 803, 7, 1, 0, 0, 803, 804, 7, 8, 0, 0, 804, 176, 1, 0, 0, 0, 805, 806, 7, 11, 0, 0, 806, 807, 7, 3, 0, 0, 807, 808, 7, 16, 0, 0, 808, 809, 7, 13, 0, 0, 809, 178, 1, 0, 0, 0, 810, 811, 7, 11, 0, 0, 811, 812, 7, 9, 0, 0, 812, 813, 7, 0, 0, 0, 813, 814, 7, 15, 0, 0, 814, 815, 7, 12, 0, 0, 815, 180, 1, 0, 0, 0, 816, 817, 7, 11, 0, 0, 817, 818, 7, 9, 0, 0, 818, 819, 7, 16, 0, 0, 819, 820, 7, 17, 0, 0, 820, 821, 7, 15, 0, 0, 821, 182, 1, 0, 0, 0, 822, 823, 7, 12, 0, 0, 823, 824, 7, 8, 0, 0, 824, 825, 7, 0, 0, 0, 825, 826, 7, 6, 0, 0, 826, 827, 7, 8, 0, 0, 827, 828, 7, 9, 0, 0, 828, 829, 7, 10, 0, 0, 829, 184, 1, 0, 0, 0, 830, 831, 7, 12, 0, 0, 831, 832, 7, 4, 0, 0, 832, 833, 7, 5, 0, 0, 833, 834, 7, 7, 0, 0, 834, 186, 1, 0, 0, 0, 835, 836, 7, 4, 0, 0, 836, 837, 7, 18, 0, 0, 837, 838, 7, 15, 0, 0, 838, 839, 7, 16, 0, 0, 839, 840, 7, 9, 0, 0, 840, 841, 7, 7, 0, 0, 841, 188, 1, 0, 0, 0, 842, 843, 7, 4, 0, 0, 843, 844, 7, 19, 0, 0, 844, 190, 1, 0, 0, 0, 845, 846, 7, 4, 0, 0, 846, 847, 7, 5, 0, 0, 847, 192, 1, 0, 0, 0, 848, 849, 7, 4, 0, 0, 849, 850, 7, 5, 0, 0, 850, 851, 7, 1, 0, 0, 851, 852, 7, 9, 0, 0, 852, 853, 7, 8, 0, 0, 853, 854, 7, 18, 0, 0, 854, 855, 7, 8, 0, 0, 855, 856, 7, 5, 0, 0, 856, 857, 7, 7, 0, 0, 857, 194, 1, 0, 0, 0, 858, 859, 7, 4, 0, 0, 859, 860, 7, 5, 0, 0, 860, 861, 7, 10, 0, 0, 861, 862, 7, 7, 0, 0, 862, 863, 7, 0, 0, 0, 863, 864, 7, 3, 0, 0, 864, 865, 7, 3, 0, 0, 865, 196, 1, 0, 0, 0, 866, 867, 7, 4, 0, 0, 867, 868, 7, 10, 0, 0, 868, 198, 1, 0, 0, 0, 869, 870, 7, 21, 0, 0, 870, 871, 7, 16, 0, 0, 871, 872, 7, 4, 0, 0, 872, 873, 7, 5, 0, 0, 873, 200, 1, 0, 0, 0, 874, 875, 7, 14, 0, 0, 875, 876, 7, 8, 0, 0, 876, 877, 7, 2, 0, 0, 877, 202, 1, 0, 0, 0, 878, 879, 7, 3, 0, 0, 879, 880, 7, 4, 0, 0, 880, 881, 7, 18, 0, 0, 881, 882, 7, 4, 0, 0, 882, 883, 7, 7, 0, 0, 883, 204, 1, 0, 0, 0, 884, 885, 7, 3, 0, 0, 885, 886, 7, 16, 0, 0, 886, 887, 7, 0, 0, 0, 887, 888, 7, 6, 0, 0, 888, 206, 1, 0, 0, 0, 889, 890, 7, 3, 0, 0, 890, 891, 7, 16, 0, 0, 891, 892, 7, 11, 0, 0, 892, 893, 7, 4, 0, 0, 893, 894, 7, 1, 0, 0, 894, 895, 7, 0, 0, 0, 895, 896, 7, 3, 0, 0, 896, 208, 1, 0, 0, 0, 897, 898, 7, 18, 0, 0, 898, 899, 7, 0, 0, 0, 899, 900, 7, 1, 0, 0, 900, 901, 7, 9, 0, 0, 901, 902, 7, 16, 0, 0, 902, 210, 1, 0, 0, 0, 903, 904, 7, 18, 0, 0, 904, 905, 7, 0, 0, 0, 905, 906, 7, 7, 0, 0, 906, 907, 7, 1, 0, 0, 907, 908, 7, 12, 0, 0, 908, 212, 1, 0, 0, 0, 909, 910, 7, 18, 0, 0, 910, 911, 7, 0, 0, 0, 911, 912, 7, 20, 0, 0, 912, 913, 7, 22, 0, 0, 913, 914, 7, 0, 0, 0, 914, 915, 7, 3, 0, 0, 915, 916, 7, 17, 0, 0, 916, 917, 7, 8, 0, 0, 917, 214, 1, 0, 0, 0, 918, 919, 7, 18, 0, 0, 919, 920, 7, 8, 0, 0, 920, 921, 7, 9, 0, 0, 921, 922, 7, 11, 0, 0, 922, 923, 7, 8, 0, 0, 923, 216, 1, 0, 0, 0, 924, 925, 7, 18, 0, 0, 925, 926, 7, 4, 0, 0, 926, 927, 7, 5, 0, 0, 927, 928, 7, 22, 0, 0, 928, 929, 7, 0, 0, 0, 929, 930, 7, 3, 0, 0, 930, 931, 7, 17, 0, 0, 931, 932, 7, 8, 0, 0, 932, 218, 1, 0, 0, 0, 933, 934, 7, 18, 0, 0, 934, 935, 7, 17, 0, 0, 935, 936, 7, 3, 0, 0, 936, 937, 7, 7, 0, 0, 937, 938, 7, 4, 0, 0, 938, 939, 5, 95, 0, 0, 939, 940, 7, 21, 0, 0, 940, 941, 7, 16, 0, 0, 941, 942, 7, 4, 0, 0, 942, 943, 7, 5, 0, 0, 943, 220, 1, 0, 0, 0, 944, 945, 7, 5, 0, 0, 945, 946, 7, 16, 0, 0, 946, 222, 1, 0, 0, 0, 947, 948, 7, 5, 0, 0, 948, 949, 7, 16, 0, 0, 949, 950, 7, 6, 0, 0, 950, 951, 7, 8, 0, 0, 951, 224, 1, 0, 0, 0, 952, 953, 7, 5, 0, 0, 953, 954, 7, 16, 0, 0, 954, 955, 7, 7, 0, 0, 955, 226, 1, 0, 0, 0, 956, 957, 7, 5, 0, 0, 957, 958, 7, 16, 0, 0, 958, 959, 7, 5, 0, 0, 959, 960, 7, 8, 0, 0, 960, 228, 1, 0, 0, 0, 961, 962, 7, 5, 0, 0, 962, 963, 7, 17, 0, 0, 963, 964, 7, 3, 0, 0, 964, 965, 7, 3, 0, 0, 965, 230, 1, 0, 0, 0, 966, 967, 7, 16, 0, 0, 967, 968, 7, 5, 0, 0, 968, 232, 1, 0, 0, 0, 969, 970, 7, 16, 0, 0, 970, 971, 7, 5, 0, 0, 971, 972, 7, 3, 0, 0, 972, 973, 7, 2, 0, 0, 973, 234, 1, 0, 0, 0, 974, 975, 7, 16, 0, 0, 975, 976, 7, 15, 0, 0, 976, 977, 7, 7, 0, 0, 977, 978, 7, 4, 0, 0, 978, 979, 7, 16, 0, 0, 979, 980, 7, 5, 0, 0, 980, 981, 7, 0, 0, 0, 981, 982, 7, 3, 0, 0, 982, 236, 1, 0, 0, 0, 983, 984, 7, 16, 0, 0, 984, 985, 7, 9, 0, 0, 985, 238, 1, 0, 0, 0, 986, 987, 7, 16, 0, 0, 987, 988, 7, 9, 0, 0, 988, 989, 7, 6, 0, 0, 989, 990, 7, 8, 0, 0, 990, 991, 7, 9, 0, 0, 991, 240, 1, 0, 0, 0, 992, 993, 7, 15, 0, 0, 993, 994, 7, 9, 0, 0, 994, 995, 7, 4, 0, 0, 995, 996, 7, 18, 0, 0, 996, 997, 7, 0, 0, 0, 997, 998, 7, 9, 0, 0, 998, 999, 7, 2, 0, 0, 999, 242, 1, 0, 0, 0, 1000, 1001, 7, 15, 0, 0, 1001, 1002, 7, 9, 0, 0, 1002, 1003, 7, 16, 0, 0, 1003, 1004, 7, 19, 0, 0, 1004, 1005, 7, 4, 0, 0, 1005, 1006, 7, 3, 0, 0, 1006, 1007, 7, 8, 0, 0, 1007, 244, 1, 0, 0, 0, 1008, 1009, 7, 15, 0, 0, 1009, 1010, 7, 9, 0, 0, 1010, 1011, 7, 16, 0, 0, 1011, 1012, 7, 21, 0, 0, 1012, 1013, 7, 8, 0, 0, 1013, 1014, 7, 1, 0, 0, 1014, 1015, 7, 7, 0, 0, 1015, 246, 1, 0, 0, 0, 1016, 1017, 7, 9, 0, 0, 1017, 1018, 7, 8, 0, 0, 1018, 1019, 7, 0, 0, 0, 1019, 1020, 7, 6, 0, 0, 1020, 248, 1, 0, 0, 0, 1021, 1022, 7, 9, 0, 0, 1022, 1023, 7, 8, 0, 0, 1023, 1024, 7, 3, 0, 0, 1024, 250, 1, 0, 0, 0, 1025, 1026, 7, 9, 0, 0, 1026, 1027, 7, 8, 0, 0, 1027, 1028, 7, 5, 0, 0, 1028, 1029, 7, 0, 0, 0, 1029, 1030, 7, 18, 0, 0, 1030, 1031, 7, 8, 0, 0, 1031, 252, 1, 0, 0, 0, 1032, 1033, 7, 9, 0, 0, 1033, 1034, 7, 8, 0, 0, 1034, 1035, 7, 7, 0, 0, 1035, 1036, 7, 17, 0, 0, 1036, 1037, 7, 9, 0, 0, 1037, 1038, 7, 5, 0, 0, 1038, 254, 1, 0, 0, 0, 1039, 1040, 7, 9, 0, 0, 1040, 1041, 7, 16, 0, 0, 1041, 1042, 7, 3, 0, 0, 1042, 1043, 7, 3, 0, 0, 1043, 1044, 7, 13, 0, 0, 1044, 1045, 7, 0, 0, 0, 1045, 1046, 7, 1, 0, 0, 1046, 1047, 7, 14, 0, 0, 1047, 256, 1, 0, 0, 0, 1048, 1049, 7, 9, 0, 0, 1049, 1050, 7, 16, 0, 0, 1050, 1051, 7, 3, 0, 0, 1051, 1052, 7, 3, 0, 0, 1052, 1053, 7, 13, 0, 0, 1053, 1054, 7, 0, 0, 0, 1054, 1055, 7, 1, 0, 0, 1055, 1056, 7, 14, 0, 0, 1056, 1057, 5, 95, 0, 0, 1057, 1058, 7, 10, 0, 0, 1058, 1059, 7, 14, 0, 0, 1059, 1060, 7, 4, 0, 0, 1060, 1061, 7, 15, 0, 0, 1061, 1062, 5, 95, 0, 0, 1062, 1063, 7, 1, 0, 0, 1063, 1064, 7, 12, 0, 0, 1064, 1065, 7, 8, 0, 0, 1065, 1066, 7, 1, 0, 0, 1066, 1067, 7, 14, 0, 0, 1067, 1068, 7, 15, 0, 0, 1068, 1069, 7, 16, 0, 0, 1069, 1070, 7, 4, 0, 0, 1070, 1071, 7, 5, 0, 0, 1071, 1072, 7, 7, 0, 0, 1072, 258, 1, 0, 0, 0, 1073, 1074, 7, 10, 0, 0, 1074, 1075, 7, 8, 0, 0, 1075, 1076, 7, 23, 0, 0, 1076, 1077, 7, 17, 0, 0, 1077, 1078, 7, 8, 0, 0, 1078, 1079, 7, 5, 0, 0, 1079, 1080, 7, 1, 0, 0, 1080, 1081, 7, 8, 0, 0, 1081, 260, 1, 0, 0, 0, 1082, 1083, 7, 10, 0, 0, 1083, 1084, 7, 8, 0, 0, 1084, 1085, 7, 7, 0, 0, 1085, 262, 1, 0, 0, 0, 1086, 1087, 7, 10, 0, 0, 1087, 1088, 7, 12, 0, 0, 1088, 1089, 7, 16, 0, 0, 1089, 1090, 7, 9, 0, 0, 1090, 1091, 7, 7, 0, 0, 1091, 1092, 7, 8, 0, 0, 1092, 1093, 7, 10, 0, 0, 1093, 1094, 7, 7, 0, 0, 1094, 264, 1, 0, 0, 0, 1095, 1096, 7, 10, 0, 0, 1096, 1097, 7, 7, 0, 0, 1097, 1098, 7, 0, 0, 0, 1098, 1099, 7, 9, 0, 0, 1099, 1100, 7, 7, 0, 0, 1100, 266, 1, 0, 0, 0, 1101, 1102, 7, 10, 0, 0, 1102, 1103, 7, 7, 0, 0, 1103, 1104, 7, 0, 0, 0, 1104, 1105, 7, 9, 0, 0, 1105, 1106, 7, 7, 0, 0, 1106, 1107, 7, 10, 0, 0, 1107, 268, 1, 0, 0, 0, 1108, 1109, 7, 10, 0, 0, 1109, 1110, 7, 7, 0, 0, 1110, 1111, 7, 9, 0, 0, 1111, 1112, 7, 17, 0, 0, 1112, 1113, 7, 1, 0, 0, 1113, 1114, 7, 7, 0, 0, 1114, 270, 1, 0, 0, 0, 1115, 1116, 7, 7, 0, 0, 1116, 1117, 7, 0, 0, 0, 1117, 1118, 7, 13, 0, 0, 1118, 1119, 7, 3, 0, 0, 1119, 1120, 7, 8, 0, 0, 1120, 272, 1, 0, 0, 0, 1121, 1122, 7, 7, 0, 0, 1122, 1123, 7, 12, 0, 0, 1123, 1124, 7, 8, 0, 0, 1124, 1125, 7, 5, 0, 0, 1125, 274, 1, 0, 0, 0, 1126, 1127, 7, 7, 0, 0, 1127, 1128, 7, 16, 0, 0, 1128, 276, 1, 0, 0, 0, 1129, 1130, 7, 7, 0, 0, 1130, 1131, 7, 9, 0, 0, 1131, 1132, 7, 0, 0, 0, 1132, 1133, 7, 4, 0, 0, 1133, 1134, 7, 3, 0, 0, 1134, 278, 1, 0, 0, 0, 1135, 1136, 7, 7, 0, 0, 1136, 1137, 7, 9, 0, 0, 1137, 1138, 7, 0, 0, 0, 1138, 1139, 7, 5, 0, 0, 1139, 1140, 7, 10, 0, 0, 1140, 1141, 7, 0, 0, 0, 1141, 1142, 7, 1, 0, 0, 1142, 1143, 7, 7, 0, 0, 1143, 1144, 7, 4, 0, 0, 1144, 1145, 7, 16, 0, 0, 1145, 1146, 7, 5, 0, 0, 1146, 280, 1, 0, 0, 0, 1147, 1148, 7, 7, 0, 0, 1148, 1149, 7, 9, 0, 0, 1149, 1150, 7, 17, 0, 0, 1150, 1151, 7, 8, 0, 0, 1151, 282, 1, 0, 0, 0, 1152, 1153, 7, 7, 0, 0, 1153, 1154, 7, 2, 0, 0, 1154, 1155, 7, 15, 0, 0, 1155, 1156, 7, 8, 0, 0, 1156, 284, 1, 0, 0, 0, 1157, 1158, 7, 17, 0, 0, 1158, 1159, 7, 5, 0, 0, 1159, 1160, 7, 4, 0, 0, 1160, 1161, 7, 16, 0, 0, 1161, 1162, 7, 5, 0, 0, 1162, 286, 1, 0, 0, 0, 1163, 1164, 7, 17, 0, 0, 1164, 1165, 7, 5, 0, 0, 1165, 1166, 7, 24, 0, 0, 1166, 1167, 7, 4, 0, 0, 1167, 1168, 7, 5, 0, 0, 1168, 1169, 7, 6, 0, 0, 1169, 288, 1, 0, 0, 0, 1170, 1171, 7, 17, 0, 0, 1171, 1172, 7, 5, 0, 0, 1172, 1173, 7, 4, 0, 0, 1173, 1174, 7, 5, 0, 0, 1174, 1175, 7, 10, 0, 0, 1175, 1176, 7, 7, 0, 0, 1176, 1177, 7, 0, 0, 0, 1177, 1178, 7, 3, 0, 0, 1178, 1179, 7, 3, 0, 0, 1179, 290, 1, 0, 0, 0, 1180, 1181, 7, 17, 0, 0, 1181, 1182, 7, 15, 0, 0, 1182, 1183, 7, 6, 0, 0, 1183, 1184, 7, 0, 0, 0, 1184, 1185, 7, 7, 0, 0, 1185, 1186, 7, 8, 0, 0, 1186, 292, 1, 0, 0, 0, 1187, 1188, 7, 17, 0, 0, 1188, 1189, 7, 10, 0, 0, 1189, 1190, 7, 8, 0, 0, 1190, 294, 1, 0, 0, 0, 1191, 1192, 7, 24, 0, 0, 1192, 1193, 7, 12, 0, 0, 1193, 1194, 7, 8, 0, 0, 1194, 1195, 7, 5, 0, 0, 1195, 296, 1, 0, 0, 0, 1196, 1197, 7, 24, 0, 0, 1197, 1198, 7, 12, 0, 0, 1198, 1199, 7, 8, 0, 0, 1199, 1200, 7, 9, 0, 0, 1200, 1201, 7, 8, 0, 0, 1201, 298, 1, 0, 0, 0, 1202, 1203, 7, 24, 0, 0, 1203, 1204, 7, 4, 0, 0, 1204, 1205, 7, 7, 0, 0, 1205, 1206, 7, 12, 0, 0, 1206, 300, 1, 0, 0, 0, 1207, 1208, 7, 24, 0, 0, 1208, 1209, 7, 9, 0, 0, 1209, 1210, 7, 4, 0, 0, 1210, 1211, 7, 7, 0, 0, 1211, 1212, 7, 8, 0, 0, 1212, 302, 1, 0, 0, 0, 1213, 1214, 7, 24, 0, 0, 1214, 1215, 7, 10, 0, 0, 1215, 1216, 7, 12, 0, 0, 1216, 1217, 7, 16, 0, 0, 1217, 1218, 7, 9, 0, 0, 1218, 1219, 7, 7, 0, 0, 1219, 1220, 7, 8, 0, 0, 1220, 1221, 7, 10, 0, 0, 1221, 1222, 7, 7, 0, 0, 1222, 304, 1, 0, 0, 0, 1223, 1224, 7, 20, 0, 0, 1224, 1225, 7, 16, 0, 0, 1225, 1226, 7, 9, 0, 0, 1226, 306, 1, 0, 0, 0, 1227, 1228, 7, 10, 0, 0, 1228, 1229, 7, 4, 0, 0, 1229, 1230, 7, 5, 0, 0, 1230, 1231, 7, 11, 0, 0, 1231, 1232, 7, 3, 0, 0, 1232, 1233, 7, 8, 0, 0, 1233, 308, 1, 0, 0, 0, 1234, 1235, 7, 2, 0, 0, 1235, 1236, 7, 4, 0, 0, 1236, 1237, 7, 8, 0, 0, 1237, 1238, 7, 3, 0, 0, 1238, 1239, 7, 6, 0, 0, 1239, 310, 1, 0, 0, 0, 1240, 1241, 7, 17, 0, 0, 1241, 1242, 7, 10, 0, 0, 1242, 1243, 7, 8, 0, 0, 1243, 1244, 7, 9, 0, 0, 1244, 312, 1, 0, 0, 0, 1245, 1246, 7, 15, 0, 0, 1246, 1247, 7, 0, 0, 0, 1247, 1248, 7, 10, 0, 0, 1248, 1249, 7, 10, 0, 0, 1249, 1250, 7, 24, 0, 0, 1250, 1251, 7, 16, 0, 0, 1251, 1252, 7, 9, 0, 0, 1252, 1253, 7, 6, 0, 0, 1253, 314, 1, 0, 0, 0, 1254, 1255, 7, 9, 0, 0, 1255, 1256, 7, 16, 0, 0, 1256, 1257, 7, 3, 0, 0, 1257, 1258, 7, 8, 0, 0, 1258, 316, 1, 0, 0, 0, 1259, 1260, 7, 18, 0, 0, 1260, 1261, 7, 0, 0, 0, 1261, 1262, 7, 15, 0, 0, 1262, 318, 1, 0, 0, 0, 1263, 1264, 7, 6, 0, 0, 1264, 1265, 7, 8, 0, 0, 1265, 1266, 7, 1, 0, 0, 1266, 1267, 7, 4, 0, 0, 1267, 1268, 7, 18, 0, 0, 1268, 1269, 7, 0, 0, 0, 1269, 1270, 7, 3, 0, 0, 1270, 320, 1, 0, 0, 0, 1271, 1272, 5, 42, 0, 0, 1272, 322, 1, 0, 0, 0, 1273, 1274, 7, 10, 0, 0, 1274, 1275, 7, 14, 0, 0, 1275, 1276, 7, 4, 0, 0, 1276, 1277, 7, 15, 0, 0, 1277, 324, 1, 0, 0, 0, 1278, 1279, 5, 33, 0, 0, 1279, 1280, 5, 61, 0, 0, 1280, 326, 1, 0, 0, 0, 1281, 1282, 5, 58, 0, 0, 1282, 328, 1, 0, 0, 0, 1283, 1284, 5, 46, 0, 0, 1284, 1285, 5, 46, 0, 0, 1285, 330, 1, 0, 0, 0, 1286, 1287, 5, 45, 0, 0, 1287, 332, 1, 0, 0, 0, 1288, 1289, 5, 33, 0, 0, 1289, 334, 1, 0, 0, 0, 1290, 1295, 5, 34, 0, 0, 1291, 1294, 3, 401, 200, 0, 1292, 1294, 3, 337, 168, 0, 1293, 1291, 1, 0, 0, 0, 1293, 1292, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1298, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1309, 5, 34, 0, 0, 1299, 1304, 5, 39, 0, 0, 1300, 1303, 3, 381, 190, 0, 1301, 1303, 3, 337, 168, 0, 1302, 1300, 1, 0, 0, 0, 1302, 1301, 1, 0, 0, 0, 1303, 1306, 1, 0, 0, 0, 1304, 1302, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1307, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1307, 1309, 5, 39, 0, 0, 1308, 1290, 1, 0, 0, 0, 1308, 1299, 1, 0, 0, 0, 1309, 336, 1, 0, 0, 0, 1310, 1332, 5, 92, 0, 0, 1311, 1333, 7, 25, 0, 0, 1312, 1313, 7, 20, 0, 0, 1313, 1314, 3, 343, 171, 0, 1314, 1315, 3, 343, 171, 0, 1315, 1333, 1, 0, 0, 0, 1316, 1317, 7, 17, 0, 0, 1317, 1318, 3, 343, 171, 0, 1318, 1319, 3, 343, 171, 0, 1319, 1320, 3, 343, 171, 0, 1320, 1321, 3, 343, 171, 0, 1321, 1333, 1, 0, 0, 0, 1322, 1323, 7, 17, 0, 0, 1323, 1324, 3, 343, 171, 0, 1324, 1325, 3, 343, 171, 0, 1325, 1326, 3, 343, 171, 0, 1326, 1327, 3, 343, 171, 0, 1327, 1328, 3, 343, 171, 0, 1328, 1329, 3, 343, 171, 0, 1329, 1330, 3, 343, 171, 0, 1330, 1331, 3, 343, 171, 0, 1331, 1333, 1, 0, 0, 0, 1332, 1311, 1, 0, 0, 0, 1332, 1312, 1, 0, 0, 0, 1332, 1316, 1, 0, 0, 0, 1332, 1322, 1, 0, 0, 0, 1333, 338, 1, 0, 0, 0, 1334, 1343, 3, 351, 175, 0, 1335, 1339, 3, 347, 173, 0, 1336, 1338, 3, 345, 172, 0, 1337, 1336, 1, 0, 0, 0, 1338, 1341, 1, 0, 0, 0, 1339, 1337, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1343, 1, 0, 0, 0, 1341, 1339, 1, 0, 0, 0, 1342, 1334, 1, 0, 0, 0, 1342, 1335, 1, 0, 0, 0, 1343, 340, 1, 0, 0, 0, 1344, 1346, 7, 26, 0, 0, 1345, 1344, 1, 0, 0, 0, 1346, 342, 1, 0, 0, 0, 1347, 1350, 3, 345, 172, 0, 1348, 1350, 3, 341, 170, 0, 1349, 1347, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, 1350, 344, 1, 0, 0, 0, 1351, 1354, 3, 351, 175, 0, 1352, 1354, 3, 347, 173, 0, 1353, 1351, 1, 0, 0, 0, 1353, 1352, 1, 0, 0, 0, 1354, 346, 1, 0, 0, 0, 1355, 1358, 3, 349, 174, 0, 1356, 1358, 2, 56, 57, 0, 1357, 1355, 1, 0, 0, 0, 1357, 1356, 1, 0, 0, 0, 1358, 348, 1, 0, 0, 0, 1359, 1360, 2, 49, 55, 0, 1360, 350, 1, 0, 0, 0, 1361, 1362, 5, 48, 0, 0, 1362, 352, 1, 0, 0, 0, 1363, 1365, 3, 345, 172, 0, 1364, 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1386, 1, 0, 0, 0, 1368, 1370, 3, 345, 172, 0, 1369, 1368, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1369, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 1, 0, 0, 0, 1373, 1375, 5, 46, 0, 0, 1374, 1376, 3, 345, 172, 0, 1375, 1374, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1386, 1, 0, 0, 0, 1379, 1381, 5, 46, 0, 0, 1380, 1382, 3, 345, 172, 0, 1381, 1380, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1381, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1386, 1, 0, 0, 0, 1385, 1364, 1, 0, 0, 0, 1385, 1369, 1, 0, 0, 0, 1385, 1379, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1389, 7, 8, 0, 0, 1388, 1390, 5, 45, 0, 0, 1389, 1388, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1392, 1, 0, 0, 0, 1391, 1393, 3, 345, 172, 0, 1392, 1391, 1, 0, 0, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1392, 1, 0, 0, 0, 1394, 1395, 1, 0, 0, 0, 1395, 354, 1, 0, 0, 0, 1396, 1398, 3, 345, 172, 0, 1397, 1396, 1, 0, 0, 0, 1398, 1401, 1, 0, 0, 0, 1399, 1397, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1402, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1404, 5, 46, 0, 0, 1403, 1405, 3, 345, 172, 0, 1404, 1403, 1, 0, 0, 0, 1405, 1406, 1, 0, 0, 0, 1406, 1404, 1, 0, 0, 0, 1406, 1407, 1, 0, 0, 0, 1407, 356, 1, 0, 0, 0, 1408, 1412, 3, 359, 179, 0, 1409, 1411, 3, 361, 180, 0, 1410, 1409, 1, 0, 0, 0, 1411, 1414, 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1412, 1413, 1, 0, 0, 0, 1413, 358, 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1415, 1418, 3, 409, 204, 0, 1416, 1418, 3, 397, 198, 0, 1417, 1415, 1, 0, 0, 0, 1417, 1416, 1, 0, 0, 0, 1418, 360, 1, 0, 0, 0, 1419, 1422, 3, 377, 188, 0, 1420, 1422, 3, 393, 196, 0, 1421, 1419, 1, 0, 0, 0, 1421, 1420, 1, 0, 0, 0, 1422, 362, 1, 0, 0, 0, 1423, 1427, 5, 96, 0, 0, 1424, 1426, 3, 373, 186, 0, 1425, 1424, 1, 0, 0, 0, 1426, 1429, 1, 0, 0, 0, 1427, 1425, 1, 0, 0, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1430, 1, 0, 0, 0, 1429, 1427, 1, 0, 0, 0, 1430, 1432, 5, 96, 0, 0, 1431, 1423, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1431, 1, 0, 0, 0, 1433, 1434, 1, 0, 0, 0, 1434, 364, 1, 0, 0, 0, 1435, 1437, 3, 367, 183, 0, 1436, 1435, 1, 0, 0, 0, 1437, 1438, 1, 0, 0, 0, 1438, 1436, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 366, 1, 0, 0, 0, 1440, 1453, 3, 395, 197, 0, 1441, 1453, 3, 399, 199, 0, 1442, 1453, 3, 403, 201, 0, 1443, 1453, 3, 405, 202, 0, 1444, 1453, 3, 371, 185, 0, 1445, 1453, 3, 391, 195, 0, 1446, 1453, 3, 389, 194, 0, 1447, 1453, 3, 387, 193, 0, 1448, 1453, 3, 375, 187, 0, 1449, 1453, 3, 407, 203, 0, 1450, 1453, 7, 27, 0, 0, 1451, 1453, 3, 369, 184, 0, 1452, 1440, 1, 0, 0, 0, 1452, 1441, 1, 0, 0, 0, 1452, 1442, 1, 0, 0, 0, 1452, 1443, 1, 0, 0, 0, 1452, 1444, 1, 0, 0, 0, 1452, 1445, 1, 0, 0, 0, 1452, 1446, 1, 0, 0, 0, 1452, 1447, 1, 0, 0, 0, 1452, 1448, 1, 0, 0, 0, 1452, 1449, 1, 0, 0, 0, 1452, 1450, 1, 0, 0, 0, 1452, 1451, 1, 0, 0, 0, 1453, 368, 1, 0, 0, 0, 1454, 1455, 5, 47, 0, 0, 1455, 1456, 5, 42, 0, 0, 1456, 1462, 1, 0, 0, 0, 1457, 1461, 3, 379, 189, 0, 1458, 1459, 5, 42, 0, 0, 1459, 1461, 3, 385, 192, 0, 1460, 1457, 1, 0, 0, 0, 1460, 1458, 1, 0, 0, 0, 1461, 1464, 1, 0, 0, 0, 1462, 1460, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1465, 1, 0, 0, 0, 1464, 1462, 1, 0, 0, 0, 1465, 1466, 5, 42, 0, 0, 1466, 1484, 5, 47, 0, 0, 1467, 1468, 5, 47, 0, 0, 1468, 1469, 5, 47, 0, 0, 1469, 1473, 1, 0, 0, 0, 1470, 1472, 3, 383, 191, 0, 1471, 1470, 1, 0, 0, 0, 1472, 1475, 1, 0, 0, 0, 1473, 1471, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1477, 1, 0, 0, 0, 1475, 1473, 1, 0, 0, 0, 1476, 1478, 3, 391, 195, 0, 1477, 1476, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1481, 1, 0, 0, 0, 1479, 1482, 3, 403, 201, 0, 1480, 1482, 5, 0, 0, 1, 1481, 1479, 1, 0, 0, 0, 1481, 1480, 1, 0, 0, 0, 1482, 1484, 1, 0, 0, 0, 1483, 1454, 1, 0, 0, 0, 1483, 1467, 1, 0, 0, 0, 1484, 370, 1, 0, 0, 0, 1485, 1486, 7, 28, 0, 0, 1486, 372, 1, 0, 0, 0, 1487, 1488, 8, 29, 0, 0, 1488, 374, 1, 0, 0, 0, 1489, 1490, 7, 30, 0, 0, 1490, 376, 1, 0, 0, 0, 1491, 1492, 7, 31, 0, 0, 1492, 378, 1, 0, 0, 0, 1493, 1494, 8, 32, 0, 0, 1494, 380, 1, 0, 0, 0, 1495, 1496, 8, 33, 0, 0, 1496, 382, 1, 0, 0, 0, 1497, 1498, 8, 34, 0, 0, 1498, 384, 1, 0, 0, 0, 1499, 1500, 8, 35, 0, 0, 1500, 386, 1, 0, 0, 0, 1501, 1502, 7, 36, 0, 0, 1502, 388, 1, 0, 0, 0, 1503, 1504, 7, 37, 0, 0, 1504, 390, 1, 0, 0, 0, 1505, 1506, 7, 38, 0, 0, 1506, 392, 1, 0, 0, 0, 1507, 1508, 7, 39, 0, 0, 1508, 394, 1, 0, 0, 0, 1509, 1510, 7, 40, 0, 0, 1510, 396, 1, 0, 0, 0, 1511, 1512, 7, 41, 0, 0, 1512, 398, 1, 0, 0, 0, 1513, 1514, 7, 42, 0, 0, 1514, 400, 1, 0, 0, 0, 1515, 1516, 8, 43, 0, 0, 1516, 402, 1, 0, 0, 0, 1517, 1518, 7, 44, 0, 0, 1518, 404, 1, 0, 0, 0, 1519, 1520, 7, 45, 0, 0, 1520, 406, 1, 0, 0, 0, 1521, 1522, 7, 46, 0, 0, 1522, 408, 1, 0, 0, 0, 1523, 1524, 7, 47, 0, 0, 1524, 410, 1, 0, 0, 0, 1525, 1526, 9, 0, 0, 0, 1526, 412, 1, 0, 0, 0, 35, 0, 1293, 1295, 1302, 1304, 1308, 1332, 1339, 1342, 1345, 1349, 1353, 1357, 1366, 1371, 1377, 1383, 1385, 1389, 1394, 1399, 1406, 1412, 1417, 1421, 1427, 1433, 1438, 1452, 1460, 1462, 1473, 1477, 1481, 1483, 0] \ No newline at end of file +[4, 0, 191, 1570, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 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, 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, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 5, 172, 1337, 8, 172, 10, 172, 12, 172, 1340, 9, 172, 1, 172, 1, 172, 1, 172, 1, 172, 5, 172, 1346, 8, 172, 10, 172, 12, 172, 1349, 9, 172, 1, 172, 3, 172, 1352, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 1376, 8, 173, 1, 174, 1, 174, 1, 174, 5, 174, 1381, 8, 174, 10, 174, 12, 174, 1384, 9, 174, 3, 174, 1386, 8, 174, 1, 175, 3, 175, 1389, 8, 175, 1, 176, 1, 176, 3, 176, 1393, 8, 176, 1, 177, 1, 177, 3, 177, 1397, 8, 177, 1, 178, 1, 178, 3, 178, 1401, 8, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 4, 181, 1408, 8, 181, 11, 181, 12, 181, 1409, 1, 181, 4, 181, 1413, 8, 181, 11, 181, 12, 181, 1414, 1, 181, 1, 181, 4, 181, 1419, 8, 181, 11, 181, 12, 181, 1420, 1, 181, 1, 181, 4, 181, 1425, 8, 181, 11, 181, 12, 181, 1426, 3, 181, 1429, 8, 181, 1, 181, 1, 181, 3, 181, 1433, 8, 181, 1, 181, 4, 181, 1436, 8, 181, 11, 181, 12, 181, 1437, 1, 182, 5, 182, 1441, 8, 182, 10, 182, 12, 182, 1444, 9, 182, 1, 182, 1, 182, 4, 182, 1448, 8, 182, 11, 182, 12, 182, 1449, 1, 183, 1, 183, 5, 183, 1454, 8, 183, 10, 183, 12, 183, 1457, 9, 183, 1, 184, 1, 184, 3, 184, 1461, 8, 184, 1, 185, 1, 185, 3, 185, 1465, 8, 185, 1, 186, 1, 186, 5, 186, 1469, 8, 186, 10, 186, 12, 186, 1472, 9, 186, 1, 186, 4, 186, 1475, 8, 186, 11, 186, 12, 186, 1476, 1, 187, 4, 187, 1480, 8, 187, 11, 187, 12, 187, 1481, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 1496, 8, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 5, 189, 1504, 8, 189, 10, 189, 12, 189, 1507, 9, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 5, 189, 1515, 8, 189, 10, 189, 12, 189, 1518, 9, 189, 1, 189, 3, 189, 1521, 8, 189, 1, 189, 1, 189, 3, 189, 1525, 8, 189, 3, 189, 1527, 8, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, 196, 1, 197, 1, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 200, 1, 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 203, 1, 203, 1, 204, 1, 204, 1, 205, 1, 205, 1, 206, 1, 206, 1, 207, 1, 207, 1, 208, 1, 208, 1, 209, 1, 209, 1, 210, 1, 210, 0, 0, 211, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 0, 383, 0, 385, 0, 387, 0, 389, 0, 391, 0, 393, 0, 395, 0, 397, 0, 399, 0, 401, 0, 403, 0, 405, 0, 407, 0, 409, 0, 411, 0, 413, 0, 415, 0, 417, 0, 419, 0, 421, 191, 1, 0, 49, 2, 0, 65, 65, 97, 97, 2, 0, 67, 67, 99, 99, 2, 0, 89, 89, 121, 121, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 78, 78, 110, 110, 2, 0, 68, 68, 100, 100, 2, 0, 84, 84, 116, 116, 2, 0, 69, 69, 101, 101, 2, 0, 82, 82, 114, 114, 2, 0, 90, 90, 122, 122, 2, 0, 83, 83, 115, 115, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 66, 66, 98, 98, 2, 0, 75, 75, 107, 107, 2, 0, 80, 80, 112, 112, 2, 0, 79, 79, 111, 111, 2, 0, 85, 85, 117, 117, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 74, 74, 106, 106, 2, 0, 86, 86, 118, 118, 2, 0, 81, 81, 113, 113, 2, 0, 87, 87, 119, 119, 13, 0, 34, 34, 39, 39, 66, 66, 70, 70, 78, 78, 82, 82, 84, 84, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 2, 0, 65, 70, 97, 102, 8, 0, 160, 160, 5760, 5760, 6158, 6158, 8192, 8202, 8232, 8233, 8239, 8239, 8287, 8287, 12288, 12288, 1, 0, 12, 12, 1, 0, 96, 96, 1, 0, 30, 30, 768, 0, 48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2160, 2183, 2185, 2190, 2200, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3293, 3294, 3296, 3299, 3302, 3311, 3313, 3315, 3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5909, 5919, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6847, 6862, 6912, 6988, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69248, 69289, 69291, 69292, 69296, 69297, 69373, 69404, 69415, 69415, 69424, 69456, 69488, 69509, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69749, 69759, 69818, 69826, 69826, 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70209, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71488, 71494, 71680, 71738, 71840, 71913, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73472, 73488, 73490, 73530, 73534, 73538, 73552, 73561, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777, 92784, 92862, 92864, 92873, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122624, 122654, 122661, 122666, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989, 123023, 123023, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, 123536, 123566, 123584, 123641, 124112, 124153, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 917760, 917999, 1, 0, 42, 42, 2, 0, 39, 39, 92, 92, 2, 0, 10, 10, 13, 13, 1, 0, 47, 47, 1, 0, 29, 29, 1, 0, 28, 28, 1, 0, 13, 13, 21, 0, 36, 36, 162, 165, 1423, 1423, 1547, 1547, 2046, 2047, 2546, 2547, 2555, 2555, 2801, 2801, 3065, 3065, 3647, 3647, 6107, 6107, 8352, 8384, 43064, 43064, 65020, 65020, 65129, 65129, 65284, 65284, 65504, 65505, 65509, 65510, 73693, 73696, 123647, 123647, 126128, 126128, 1, 0, 32, 32, 6, 0, 95, 95, 8255, 8256, 8276, 8276, 65075, 65076, 65101, 65103, 65343, 65343, 1, 0, 9, 9, 2, 0, 34, 34, 92, 92, 1, 0, 10, 10, 1, 0, 11, 11, 1, 0, 31, 31, 659, 0, 65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 1595, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 1, 423, 1, 0, 0, 0, 3, 425, 1, 0, 0, 0, 5, 427, 1, 0, 0, 0, 7, 429, 1, 0, 0, 0, 9, 431, 1, 0, 0, 0, 11, 433, 1, 0, 0, 0, 13, 435, 1, 0, 0, 0, 15, 437, 1, 0, 0, 0, 17, 439, 1, 0, 0, 0, 19, 441, 1, 0, 0, 0, 21, 443, 1, 0, 0, 0, 23, 445, 1, 0, 0, 0, 25, 448, 1, 0, 0, 0, 27, 450, 1, 0, 0, 0, 29, 453, 1, 0, 0, 0, 31, 455, 1, 0, 0, 0, 33, 458, 1, 0, 0, 0, 35, 460, 1, 0, 0, 0, 37, 463, 1, 0, 0, 0, 39, 466, 1, 0, 0, 0, 41, 468, 1, 0, 0, 0, 43, 470, 1, 0, 0, 0, 45, 472, 1, 0, 0, 0, 47, 474, 1, 0, 0, 0, 49, 477, 1, 0, 0, 0, 51, 479, 1, 0, 0, 0, 53, 481, 1, 0, 0, 0, 55, 483, 1, 0, 0, 0, 57, 485, 1, 0, 0, 0, 59, 487, 1, 0, 0, 0, 61, 489, 1, 0, 0, 0, 63, 491, 1, 0, 0, 0, 65, 493, 1, 0, 0, 0, 67, 495, 1, 0, 0, 0, 69, 497, 1, 0, 0, 0, 71, 499, 1, 0, 0, 0, 73, 501, 1, 0, 0, 0, 75, 503, 1, 0, 0, 0, 77, 505, 1, 0, 0, 0, 79, 507, 1, 0, 0, 0, 81, 509, 1, 0, 0, 0, 83, 511, 1, 0, 0, 0, 85, 513, 1, 0, 0, 0, 87, 515, 1, 0, 0, 0, 89, 517, 1, 0, 0, 0, 91, 525, 1, 0, 0, 0, 93, 529, 1, 0, 0, 0, 95, 533, 1, 0, 0, 0, 97, 537, 1, 0, 0, 0, 99, 543, 1, 0, 0, 0, 101, 551, 1, 0, 0, 0, 103, 555, 1, 0, 0, 0, 105, 558, 1, 0, 0, 0, 107, 562, 1, 0, 0, 0, 109, 572, 1, 0, 0, 0, 111, 579, 1, 0, 0, 0, 113, 585, 1, 0, 0, 0, 115, 588, 1, 0, 0, 0, 117, 593, 1, 0, 0, 0, 119, 598, 1, 0, 0, 0, 121, 603, 1, 0, 0, 0, 123, 614, 1, 0, 0, 0, 125, 621, 1, 0, 0, 0, 127, 629, 1, 0, 0, 0, 129, 636, 1, 0, 0, 0, 131, 659, 1, 0, 0, 0, 133, 668, 1, 0, 0, 0, 135, 673, 1, 0, 0, 0, 137, 679, 1, 0, 0, 0, 139, 686, 1, 0, 0, 0, 141, 692, 1, 0, 0, 0, 143, 701, 1, 0, 0, 0, 145, 708, 1, 0, 0, 0, 147, 716, 1, 0, 0, 0, 149, 723, 1, 0, 0, 0, 151, 728, 1, 0, 0, 0, 153, 739, 1, 0, 0, 0, 155, 746, 1, 0, 0, 0, 157, 755, 1, 0, 0, 0, 159, 760, 1, 0, 0, 0, 161, 765, 1, 0, 0, 0, 163, 769, 1, 0, 0, 0, 165, 774, 1, 0, 0, 0, 167, 781, 1, 0, 0, 0, 169, 789, 1, 0, 0, 0, 171, 796, 1, 0, 0, 0, 173, 806, 1, 0, 0, 0, 175, 812, 1, 0, 0, 0, 177, 817, 1, 0, 0, 0, 179, 823, 1, 0, 0, 0, 181, 827, 1, 0, 0, 0, 183, 832, 1, 0, 0, 0, 185, 838, 1, 0, 0, 0, 187, 844, 1, 0, 0, 0, 189, 852, 1, 0, 0, 0, 191, 857, 1, 0, 0, 0, 193, 864, 1, 0, 0, 0, 195, 870, 1, 0, 0, 0, 197, 873, 1, 0, 0, 0, 199, 876, 1, 0, 0, 0, 201, 886, 1, 0, 0, 0, 203, 894, 1, 0, 0, 0, 205, 897, 1, 0, 0, 0, 207, 902, 1, 0, 0, 0, 209, 906, 1, 0, 0, 0, 211, 912, 1, 0, 0, 0, 213, 917, 1, 0, 0, 0, 215, 925, 1, 0, 0, 0, 217, 931, 1, 0, 0, 0, 219, 937, 1, 0, 0, 0, 221, 946, 1, 0, 0, 0, 223, 952, 1, 0, 0, 0, 225, 961, 1, 0, 0, 0, 227, 972, 1, 0, 0, 0, 229, 975, 1, 0, 0, 0, 231, 980, 1, 0, 0, 0, 233, 984, 1, 0, 0, 0, 235, 989, 1, 0, 0, 0, 237, 994, 1, 0, 0, 0, 239, 997, 1, 0, 0, 0, 241, 1002, 1, 0, 0, 0, 243, 1010, 1, 0, 0, 0, 245, 1019, 1, 0, 0, 0, 247, 1022, 1, 0, 0, 0, 249, 1028, 1, 0, 0, 0, 251, 1036, 1, 0, 0, 0, 253, 1044, 1, 0, 0, 0, 255, 1052, 1, 0, 0, 0, 257, 1057, 1, 0, 0, 0, 259, 1061, 1, 0, 0, 0, 261, 1068, 1, 0, 0, 0, 263, 1075, 1, 0, 0, 0, 265, 1084, 1, 0, 0, 0, 267, 1109, 1, 0, 0, 0, 269, 1118, 1, 0, 0, 0, 271, 1122, 1, 0, 0, 0, 273, 1129, 1, 0, 0, 0, 275, 1138, 1, 0, 0, 0, 277, 1144, 1, 0, 0, 0, 279, 1151, 1, 0, 0, 0, 281, 1158, 1, 0, 0, 0, 283, 1164, 1, 0, 0, 0, 285, 1169, 1, 0, 0, 0, 287, 1172, 1, 0, 0, 0, 289, 1178, 1, 0, 0, 0, 291, 1190, 1, 0, 0, 0, 293, 1195, 1, 0, 0, 0, 295, 1200, 1, 0, 0, 0, 297, 1206, 1, 0, 0, 0, 299, 1213, 1, 0, 0, 0, 301, 1223, 1, 0, 0, 0, 303, 1230, 1, 0, 0, 0, 305, 1234, 1, 0, 0, 0, 307, 1239, 1, 0, 0, 0, 309, 1245, 1, 0, 0, 0, 311, 1250, 1, 0, 0, 0, 313, 1256, 1, 0, 0, 0, 315, 1266, 1, 0, 0, 0, 317, 1270, 1, 0, 0, 0, 319, 1277, 1, 0, 0, 0, 321, 1283, 1, 0, 0, 0, 323, 1288, 1, 0, 0, 0, 325, 1297, 1, 0, 0, 0, 327, 1302, 1, 0, 0, 0, 329, 1306, 1, 0, 0, 0, 331, 1314, 1, 0, 0, 0, 333, 1316, 1, 0, 0, 0, 335, 1321, 1, 0, 0, 0, 337, 1324, 1, 0, 0, 0, 339, 1326, 1, 0, 0, 0, 341, 1329, 1, 0, 0, 0, 343, 1331, 1, 0, 0, 0, 345, 1351, 1, 0, 0, 0, 347, 1353, 1, 0, 0, 0, 349, 1385, 1, 0, 0, 0, 351, 1388, 1, 0, 0, 0, 353, 1392, 1, 0, 0, 0, 355, 1396, 1, 0, 0, 0, 357, 1400, 1, 0, 0, 0, 359, 1402, 1, 0, 0, 0, 361, 1404, 1, 0, 0, 0, 363, 1428, 1, 0, 0, 0, 365, 1442, 1, 0, 0, 0, 367, 1451, 1, 0, 0, 0, 369, 1460, 1, 0, 0, 0, 371, 1464, 1, 0, 0, 0, 373, 1474, 1, 0, 0, 0, 375, 1479, 1, 0, 0, 0, 377, 1495, 1, 0, 0, 0, 379, 1526, 1, 0, 0, 0, 381, 1528, 1, 0, 0, 0, 383, 1530, 1, 0, 0, 0, 385, 1532, 1, 0, 0, 0, 387, 1534, 1, 0, 0, 0, 389, 1536, 1, 0, 0, 0, 391, 1538, 1, 0, 0, 0, 393, 1540, 1, 0, 0, 0, 395, 1542, 1, 0, 0, 0, 397, 1544, 1, 0, 0, 0, 399, 1546, 1, 0, 0, 0, 401, 1548, 1, 0, 0, 0, 403, 1550, 1, 0, 0, 0, 405, 1552, 1, 0, 0, 0, 407, 1554, 1, 0, 0, 0, 409, 1556, 1, 0, 0, 0, 411, 1558, 1, 0, 0, 0, 413, 1560, 1, 0, 0, 0, 415, 1562, 1, 0, 0, 0, 417, 1564, 1, 0, 0, 0, 419, 1566, 1, 0, 0, 0, 421, 1568, 1, 0, 0, 0, 423, 424, 5, 59, 0, 0, 424, 2, 1, 0, 0, 0, 425, 426, 5, 40, 0, 0, 426, 4, 1, 0, 0, 0, 427, 428, 5, 41, 0, 0, 428, 6, 1, 0, 0, 0, 429, 430, 5, 44, 0, 0, 430, 8, 1, 0, 0, 0, 431, 432, 5, 46, 0, 0, 432, 10, 1, 0, 0, 0, 433, 434, 5, 61, 0, 0, 434, 12, 1, 0, 0, 0, 435, 436, 5, 91, 0, 0, 436, 14, 1, 0, 0, 0, 437, 438, 5, 93, 0, 0, 438, 16, 1, 0, 0, 0, 439, 440, 5, 123, 0, 0, 440, 18, 1, 0, 0, 0, 441, 442, 5, 125, 0, 0, 442, 20, 1, 0, 0, 0, 443, 444, 5, 124, 0, 0, 444, 22, 1, 0, 0, 0, 445, 446, 5, 60, 0, 0, 446, 447, 5, 62, 0, 0, 447, 24, 1, 0, 0, 0, 448, 449, 5, 60, 0, 0, 449, 26, 1, 0, 0, 0, 450, 451, 5, 60, 0, 0, 451, 452, 5, 61, 0, 0, 452, 28, 1, 0, 0, 0, 453, 454, 5, 62, 0, 0, 454, 30, 1, 0, 0, 0, 455, 456, 5, 62, 0, 0, 456, 457, 5, 61, 0, 0, 457, 32, 1, 0, 0, 0, 458, 459, 5, 38, 0, 0, 459, 34, 1, 0, 0, 0, 460, 461, 5, 62, 0, 0, 461, 462, 5, 62, 0, 0, 462, 36, 1, 0, 0, 0, 463, 464, 5, 60, 0, 0, 464, 465, 5, 60, 0, 0, 465, 38, 1, 0, 0, 0, 466, 467, 5, 43, 0, 0, 467, 40, 1, 0, 0, 0, 468, 469, 5, 47, 0, 0, 469, 42, 1, 0, 0, 0, 470, 471, 5, 37, 0, 0, 471, 44, 1, 0, 0, 0, 472, 473, 5, 94, 0, 0, 473, 46, 1, 0, 0, 0, 474, 475, 5, 61, 0, 0, 475, 476, 5, 126, 0, 0, 476, 48, 1, 0, 0, 0, 477, 478, 5, 36, 0, 0, 478, 50, 1, 0, 0, 0, 479, 480, 5, 10216, 0, 0, 480, 52, 1, 0, 0, 0, 481, 482, 5, 12296, 0, 0, 482, 54, 1, 0, 0, 0, 483, 484, 5, 65124, 0, 0, 484, 56, 1, 0, 0, 0, 485, 486, 5, 65308, 0, 0, 486, 58, 1, 0, 0, 0, 487, 488, 5, 10217, 0, 0, 488, 60, 1, 0, 0, 0, 489, 490, 5, 12297, 0, 0, 490, 62, 1, 0, 0, 0, 491, 492, 5, 65125, 0, 0, 492, 64, 1, 0, 0, 0, 493, 494, 5, 65310, 0, 0, 494, 66, 1, 0, 0, 0, 495, 496, 5, 173, 0, 0, 496, 68, 1, 0, 0, 0, 497, 498, 5, 8208, 0, 0, 498, 70, 1, 0, 0, 0, 499, 500, 5, 8209, 0, 0, 500, 72, 1, 0, 0, 0, 501, 502, 5, 8210, 0, 0, 502, 74, 1, 0, 0, 0, 503, 504, 5, 8211, 0, 0, 504, 76, 1, 0, 0, 0, 505, 506, 5, 8212, 0, 0, 506, 78, 1, 0, 0, 0, 507, 508, 5, 8213, 0, 0, 508, 80, 1, 0, 0, 0, 509, 510, 5, 8722, 0, 0, 510, 82, 1, 0, 0, 0, 511, 512, 5, 65112, 0, 0, 512, 84, 1, 0, 0, 0, 513, 514, 5, 65123, 0, 0, 514, 86, 1, 0, 0, 0, 515, 516, 5, 65293, 0, 0, 516, 88, 1, 0, 0, 0, 517, 518, 7, 0, 0, 0, 518, 519, 7, 1, 0, 0, 519, 520, 7, 2, 0, 0, 520, 521, 7, 1, 0, 0, 521, 522, 7, 3, 0, 0, 522, 523, 7, 4, 0, 0, 523, 524, 7, 1, 0, 0, 524, 90, 1, 0, 0, 0, 525, 526, 7, 0, 0, 0, 526, 527, 7, 5, 0, 0, 527, 528, 7, 2, 0, 0, 528, 92, 1, 0, 0, 0, 529, 530, 7, 0, 0, 0, 530, 531, 7, 6, 0, 0, 531, 532, 7, 6, 0, 0, 532, 94, 1, 0, 0, 0, 533, 534, 7, 0, 0, 0, 534, 535, 7, 3, 0, 0, 535, 536, 7, 3, 0, 0, 536, 96, 1, 0, 0, 0, 537, 538, 7, 0, 0, 0, 538, 539, 7, 3, 0, 0, 539, 540, 7, 7, 0, 0, 540, 541, 7, 8, 0, 0, 541, 542, 7, 9, 0, 0, 542, 98, 1, 0, 0, 0, 543, 544, 7, 0, 0, 0, 544, 545, 7, 5, 0, 0, 545, 546, 7, 0, 0, 0, 546, 547, 7, 3, 0, 0, 547, 548, 7, 2, 0, 0, 548, 549, 7, 10, 0, 0, 549, 550, 7, 8, 0, 0, 550, 100, 1, 0, 0, 0, 551, 552, 7, 0, 0, 0, 552, 553, 7, 5, 0, 0, 553, 554, 7, 6, 0, 0, 554, 102, 1, 0, 0, 0, 555, 556, 7, 0, 0, 0, 556, 557, 7, 11, 0, 0, 557, 104, 1, 0, 0, 0, 558, 559, 7, 0, 0, 0, 559, 560, 7, 11, 0, 0, 560, 561, 7, 1, 0, 0, 561, 106, 1, 0, 0, 0, 562, 563, 7, 0, 0, 0, 563, 564, 7, 11, 0, 0, 564, 565, 7, 1, 0, 0, 565, 566, 7, 8, 0, 0, 566, 567, 7, 5, 0, 0, 567, 568, 7, 6, 0, 0, 568, 569, 7, 4, 0, 0, 569, 570, 7, 5, 0, 0, 570, 571, 7, 12, 0, 0, 571, 108, 1, 0, 0, 0, 572, 573, 7, 0, 0, 0, 573, 574, 7, 7, 0, 0, 574, 575, 7, 7, 0, 0, 575, 576, 7, 0, 0, 0, 576, 577, 7, 1, 0, 0, 577, 578, 7, 13, 0, 0, 578, 110, 1, 0, 0, 0, 579, 580, 7, 14, 0, 0, 580, 581, 7, 8, 0, 0, 581, 582, 7, 12, 0, 0, 582, 583, 7, 4, 0, 0, 583, 584, 7, 5, 0, 0, 584, 112, 1, 0, 0, 0, 585, 586, 7, 14, 0, 0, 586, 587, 7, 2, 0, 0, 587, 114, 1, 0, 0, 0, 588, 589, 7, 1, 0, 0, 589, 590, 7, 0, 0, 0, 590, 591, 7, 3, 0, 0, 591, 592, 7, 3, 0, 0, 592, 116, 1, 0, 0, 0, 593, 594, 7, 1, 0, 0, 594, 595, 7, 0, 0, 0, 595, 596, 7, 11, 0, 0, 596, 597, 7, 8, 0, 0, 597, 118, 1, 0, 0, 0, 598, 599, 7, 1, 0, 0, 599, 600, 7, 0, 0, 0, 600, 601, 7, 11, 0, 0, 601, 602, 7, 7, 0, 0, 602, 120, 1, 0, 0, 0, 603, 604, 7, 1, 0, 0, 604, 605, 7, 13, 0, 0, 605, 606, 7, 8, 0, 0, 606, 607, 7, 1, 0, 0, 607, 608, 7, 15, 0, 0, 608, 609, 7, 16, 0, 0, 609, 610, 7, 17, 0, 0, 610, 611, 7, 4, 0, 0, 611, 612, 7, 5, 0, 0, 612, 613, 7, 7, 0, 0, 613, 122, 1, 0, 0, 0, 614, 615, 7, 1, 0, 0, 615, 616, 7, 17, 0, 0, 616, 617, 7, 3, 0, 0, 617, 618, 7, 18, 0, 0, 618, 619, 7, 19, 0, 0, 619, 620, 7, 5, 0, 0, 620, 124, 1, 0, 0, 0, 621, 622, 7, 1, 0, 0, 622, 623, 7, 17, 0, 0, 623, 624, 7, 19, 0, 0, 624, 625, 7, 19, 0, 0, 625, 626, 7, 8, 0, 0, 626, 627, 7, 5, 0, 0, 627, 628, 7, 7, 0, 0, 628, 126, 1, 0, 0, 0, 629, 630, 7, 1, 0, 0, 630, 631, 7, 17, 0, 0, 631, 632, 7, 19, 0, 0, 632, 633, 7, 19, 0, 0, 633, 634, 7, 4, 0, 0, 634, 635, 7, 7, 0, 0, 635, 128, 1, 0, 0, 0, 636, 637, 7, 1, 0, 0, 637, 638, 7, 17, 0, 0, 638, 639, 7, 19, 0, 0, 639, 640, 7, 19, 0, 0, 640, 641, 7, 4, 0, 0, 641, 642, 7, 7, 0, 0, 642, 643, 5, 95, 0, 0, 643, 644, 7, 11, 0, 0, 644, 645, 7, 15, 0, 0, 645, 646, 7, 4, 0, 0, 646, 647, 7, 16, 0, 0, 647, 648, 5, 95, 0, 0, 648, 649, 7, 1, 0, 0, 649, 650, 7, 13, 0, 0, 650, 651, 7, 8, 0, 0, 651, 652, 7, 1, 0, 0, 652, 653, 7, 15, 0, 0, 653, 654, 7, 16, 0, 0, 654, 655, 7, 17, 0, 0, 655, 656, 7, 4, 0, 0, 656, 657, 7, 5, 0, 0, 657, 658, 7, 7, 0, 0, 658, 130, 1, 0, 0, 0, 659, 660, 7, 1, 0, 0, 660, 661, 7, 17, 0, 0, 661, 662, 7, 5, 0, 0, 662, 663, 7, 7, 0, 0, 663, 664, 7, 0, 0, 0, 664, 665, 7, 4, 0, 0, 665, 666, 7, 5, 0, 0, 666, 667, 7, 11, 0, 0, 667, 132, 1, 0, 0, 0, 668, 669, 7, 1, 0, 0, 669, 670, 7, 17, 0, 0, 670, 671, 7, 16, 0, 0, 671, 672, 7, 2, 0, 0, 672, 134, 1, 0, 0, 0, 673, 674, 7, 1, 0, 0, 674, 675, 7, 17, 0, 0, 675, 676, 7, 18, 0, 0, 676, 677, 7, 5, 0, 0, 677, 678, 7, 7, 0, 0, 678, 136, 1, 0, 0, 0, 679, 680, 7, 1, 0, 0, 680, 681, 7, 9, 0, 0, 681, 682, 7, 8, 0, 0, 682, 683, 7, 0, 0, 0, 683, 684, 7, 7, 0, 0, 684, 685, 7, 8, 0, 0, 685, 138, 1, 0, 0, 0, 686, 687, 7, 1, 0, 0, 687, 688, 7, 2, 0, 0, 688, 689, 7, 1, 0, 0, 689, 690, 7, 3, 0, 0, 690, 691, 7, 8, 0, 0, 691, 140, 1, 0, 0, 0, 692, 693, 7, 6, 0, 0, 693, 694, 7, 0, 0, 0, 694, 695, 7, 7, 0, 0, 695, 696, 7, 0, 0, 0, 696, 697, 7, 14, 0, 0, 697, 698, 7, 0, 0, 0, 698, 699, 7, 11, 0, 0, 699, 700, 7, 8, 0, 0, 700, 142, 1, 0, 0, 0, 701, 702, 7, 6, 0, 0, 702, 703, 7, 14, 0, 0, 703, 704, 7, 7, 0, 0, 704, 705, 7, 2, 0, 0, 705, 706, 7, 16, 0, 0, 706, 707, 7, 8, 0, 0, 707, 144, 1, 0, 0, 0, 708, 709, 7, 6, 0, 0, 709, 710, 7, 8, 0, 0, 710, 711, 7, 20, 0, 0, 711, 712, 7, 0, 0, 0, 712, 713, 7, 18, 0, 0, 713, 714, 7, 3, 0, 0, 714, 715, 7, 7, 0, 0, 715, 146, 1, 0, 0, 0, 716, 717, 7, 6, 0, 0, 717, 718, 7, 8, 0, 0, 718, 719, 7, 3, 0, 0, 719, 720, 7, 8, 0, 0, 720, 721, 7, 7, 0, 0, 721, 722, 7, 8, 0, 0, 722, 148, 1, 0, 0, 0, 723, 724, 7, 6, 0, 0, 724, 725, 7, 8, 0, 0, 725, 726, 7, 11, 0, 0, 726, 727, 7, 1, 0, 0, 727, 150, 1, 0, 0, 0, 728, 729, 7, 6, 0, 0, 729, 730, 7, 8, 0, 0, 730, 731, 7, 11, 0, 0, 731, 732, 7, 1, 0, 0, 732, 733, 7, 8, 0, 0, 733, 734, 7, 5, 0, 0, 734, 735, 7, 6, 0, 0, 735, 736, 7, 4, 0, 0, 736, 737, 7, 5, 0, 0, 737, 738, 7, 12, 0, 0, 738, 152, 1, 0, 0, 0, 739, 740, 7, 6, 0, 0, 740, 741, 7, 8, 0, 0, 741, 742, 7, 7, 0, 0, 742, 743, 7, 0, 0, 0, 743, 744, 7, 1, 0, 0, 744, 745, 7, 13, 0, 0, 745, 154, 1, 0, 0, 0, 746, 747, 7, 6, 0, 0, 747, 748, 7, 4, 0, 0, 748, 749, 7, 11, 0, 0, 749, 750, 7, 7, 0, 0, 750, 751, 7, 4, 0, 0, 751, 752, 7, 5, 0, 0, 752, 753, 7, 1, 0, 0, 753, 754, 7, 7, 0, 0, 754, 156, 1, 0, 0, 0, 755, 756, 7, 6, 0, 0, 756, 757, 7, 9, 0, 0, 757, 758, 7, 17, 0, 0, 758, 759, 7, 16, 0, 0, 759, 158, 1, 0, 0, 0, 760, 761, 7, 8, 0, 0, 761, 762, 7, 3, 0, 0, 762, 763, 7, 11, 0, 0, 763, 764, 7, 8, 0, 0, 764, 160, 1, 0, 0, 0, 765, 766, 7, 8, 0, 0, 766, 767, 7, 5, 0, 0, 767, 768, 7, 6, 0, 0, 768, 162, 1, 0, 0, 0, 769, 770, 7, 8, 0, 0, 770, 771, 7, 5, 0, 0, 771, 772, 7, 6, 0, 0, 772, 773, 7, 11, 0, 0, 773, 164, 1, 0, 0, 0, 774, 775, 7, 8, 0, 0, 775, 776, 7, 21, 0, 0, 776, 777, 7, 4, 0, 0, 777, 778, 7, 11, 0, 0, 778, 779, 7, 7, 0, 0, 779, 780, 7, 11, 0, 0, 780, 166, 1, 0, 0, 0, 781, 782, 7, 8, 0, 0, 782, 783, 7, 21, 0, 0, 783, 784, 7, 16, 0, 0, 784, 785, 7, 3, 0, 0, 785, 786, 7, 0, 0, 0, 786, 787, 7, 4, 0, 0, 787, 788, 7, 5, 0, 0, 788, 168, 1, 0, 0, 0, 789, 790, 7, 8, 0, 0, 790, 791, 7, 21, 0, 0, 791, 792, 7, 16, 0, 0, 792, 793, 7, 17, 0, 0, 793, 794, 7, 9, 0, 0, 794, 795, 7, 7, 0, 0, 795, 170, 1, 0, 0, 0, 796, 797, 7, 8, 0, 0, 797, 798, 7, 21, 0, 0, 798, 799, 7, 7, 0, 0, 799, 800, 7, 8, 0, 0, 800, 801, 7, 5, 0, 0, 801, 802, 7, 11, 0, 0, 802, 803, 7, 4, 0, 0, 803, 804, 7, 17, 0, 0, 804, 805, 7, 5, 0, 0, 805, 172, 1, 0, 0, 0, 806, 807, 7, 20, 0, 0, 807, 808, 7, 0, 0, 0, 808, 809, 7, 3, 0, 0, 809, 810, 7, 11, 0, 0, 810, 811, 7, 8, 0, 0, 811, 174, 1, 0, 0, 0, 812, 813, 7, 20, 0, 0, 813, 814, 7, 9, 0, 0, 814, 815, 7, 17, 0, 0, 815, 816, 7, 19, 0, 0, 816, 176, 1, 0, 0, 0, 817, 818, 7, 20, 0, 0, 818, 819, 7, 17, 0, 0, 819, 820, 7, 9, 0, 0, 820, 821, 7, 1, 0, 0, 821, 822, 7, 8, 0, 0, 822, 178, 1, 0, 0, 0, 823, 824, 7, 20, 0, 0, 824, 825, 7, 17, 0, 0, 825, 826, 7, 9, 0, 0, 826, 180, 1, 0, 0, 0, 827, 828, 7, 12, 0, 0, 828, 829, 7, 3, 0, 0, 829, 830, 7, 17, 0, 0, 830, 831, 7, 14, 0, 0, 831, 182, 1, 0, 0, 0, 832, 833, 7, 12, 0, 0, 833, 834, 7, 9, 0, 0, 834, 835, 7, 0, 0, 0, 835, 836, 7, 16, 0, 0, 836, 837, 7, 13, 0, 0, 837, 184, 1, 0, 0, 0, 838, 839, 7, 12, 0, 0, 839, 840, 7, 9, 0, 0, 840, 841, 7, 17, 0, 0, 841, 842, 7, 18, 0, 0, 842, 843, 7, 16, 0, 0, 843, 186, 1, 0, 0, 0, 844, 845, 7, 13, 0, 0, 845, 846, 7, 8, 0, 0, 846, 847, 7, 0, 0, 0, 847, 848, 7, 6, 0, 0, 848, 849, 7, 8, 0, 0, 849, 850, 7, 9, 0, 0, 850, 851, 7, 11, 0, 0, 851, 188, 1, 0, 0, 0, 852, 853, 7, 13, 0, 0, 853, 854, 7, 4, 0, 0, 854, 855, 7, 5, 0, 0, 855, 856, 7, 7, 0, 0, 856, 190, 1, 0, 0, 0, 857, 858, 7, 4, 0, 0, 858, 859, 7, 19, 0, 0, 859, 860, 7, 16, 0, 0, 860, 861, 7, 17, 0, 0, 861, 862, 7, 9, 0, 0, 862, 863, 7, 7, 0, 0, 863, 192, 1, 0, 0, 0, 864, 865, 7, 4, 0, 0, 865, 866, 7, 5, 0, 0, 866, 867, 7, 6, 0, 0, 867, 868, 7, 8, 0, 0, 868, 869, 7, 21, 0, 0, 869, 194, 1, 0, 0, 0, 870, 871, 7, 4, 0, 0, 871, 872, 7, 20, 0, 0, 872, 196, 1, 0, 0, 0, 873, 874, 7, 4, 0, 0, 874, 875, 7, 5, 0, 0, 875, 198, 1, 0, 0, 0, 876, 877, 7, 4, 0, 0, 877, 878, 7, 5, 0, 0, 878, 879, 7, 1, 0, 0, 879, 880, 7, 9, 0, 0, 880, 881, 7, 8, 0, 0, 881, 882, 7, 19, 0, 0, 882, 883, 7, 8, 0, 0, 883, 884, 7, 5, 0, 0, 884, 885, 7, 7, 0, 0, 885, 200, 1, 0, 0, 0, 886, 887, 7, 4, 0, 0, 887, 888, 7, 5, 0, 0, 888, 889, 7, 11, 0, 0, 889, 890, 7, 7, 0, 0, 890, 891, 7, 0, 0, 0, 891, 892, 7, 3, 0, 0, 892, 893, 7, 3, 0, 0, 893, 202, 1, 0, 0, 0, 894, 895, 7, 4, 0, 0, 895, 896, 7, 11, 0, 0, 896, 204, 1, 0, 0, 0, 897, 898, 7, 22, 0, 0, 898, 899, 7, 17, 0, 0, 899, 900, 7, 4, 0, 0, 900, 901, 7, 5, 0, 0, 901, 206, 1, 0, 0, 0, 902, 903, 7, 15, 0, 0, 903, 904, 7, 8, 0, 0, 904, 905, 7, 2, 0, 0, 905, 208, 1, 0, 0, 0, 906, 907, 7, 3, 0, 0, 907, 908, 7, 4, 0, 0, 908, 909, 7, 19, 0, 0, 909, 910, 7, 4, 0, 0, 910, 911, 7, 7, 0, 0, 911, 210, 1, 0, 0, 0, 912, 913, 7, 3, 0, 0, 913, 914, 7, 17, 0, 0, 914, 915, 7, 0, 0, 0, 915, 916, 7, 6, 0, 0, 916, 212, 1, 0, 0, 0, 917, 918, 7, 3, 0, 0, 918, 919, 7, 17, 0, 0, 919, 920, 7, 12, 0, 0, 920, 921, 7, 4, 0, 0, 921, 922, 7, 1, 0, 0, 922, 923, 7, 0, 0, 0, 923, 924, 7, 3, 0, 0, 924, 214, 1, 0, 0, 0, 925, 926, 7, 19, 0, 0, 926, 927, 7, 0, 0, 0, 927, 928, 7, 1, 0, 0, 928, 929, 7, 9, 0, 0, 929, 930, 7, 17, 0, 0, 930, 216, 1, 0, 0, 0, 931, 932, 7, 19, 0, 0, 932, 933, 7, 0, 0, 0, 933, 934, 7, 7, 0, 0, 934, 935, 7, 1, 0, 0, 935, 936, 7, 13, 0, 0, 936, 218, 1, 0, 0, 0, 937, 938, 7, 19, 0, 0, 938, 939, 7, 0, 0, 0, 939, 940, 7, 21, 0, 0, 940, 941, 7, 23, 0, 0, 941, 942, 7, 0, 0, 0, 942, 943, 7, 3, 0, 0, 943, 944, 7, 18, 0, 0, 944, 945, 7, 8, 0, 0, 945, 220, 1, 0, 0, 0, 946, 947, 7, 19, 0, 0, 947, 948, 7, 8, 0, 0, 948, 949, 7, 9, 0, 0, 949, 950, 7, 12, 0, 0, 950, 951, 7, 8, 0, 0, 951, 222, 1, 0, 0, 0, 952, 953, 7, 19, 0, 0, 953, 954, 7, 4, 0, 0, 954, 955, 7, 5, 0, 0, 955, 956, 7, 23, 0, 0, 956, 957, 7, 0, 0, 0, 957, 958, 7, 3, 0, 0, 958, 959, 7, 18, 0, 0, 959, 960, 7, 8, 0, 0, 960, 224, 1, 0, 0, 0, 961, 962, 7, 19, 0, 0, 962, 963, 7, 18, 0, 0, 963, 964, 7, 3, 0, 0, 964, 965, 7, 7, 0, 0, 965, 966, 7, 4, 0, 0, 966, 967, 5, 95, 0, 0, 967, 968, 7, 22, 0, 0, 968, 969, 7, 17, 0, 0, 969, 970, 7, 4, 0, 0, 970, 971, 7, 5, 0, 0, 971, 226, 1, 0, 0, 0, 972, 973, 7, 5, 0, 0, 973, 974, 7, 17, 0, 0, 974, 228, 1, 0, 0, 0, 975, 976, 7, 5, 0, 0, 976, 977, 7, 17, 0, 0, 977, 978, 7, 6, 0, 0, 978, 979, 7, 8, 0, 0, 979, 230, 1, 0, 0, 0, 980, 981, 7, 5, 0, 0, 981, 982, 7, 17, 0, 0, 982, 983, 7, 7, 0, 0, 983, 232, 1, 0, 0, 0, 984, 985, 7, 5, 0, 0, 985, 986, 7, 17, 0, 0, 986, 987, 7, 5, 0, 0, 987, 988, 7, 8, 0, 0, 988, 234, 1, 0, 0, 0, 989, 990, 7, 5, 0, 0, 990, 991, 7, 18, 0, 0, 991, 992, 7, 3, 0, 0, 992, 993, 7, 3, 0, 0, 993, 236, 1, 0, 0, 0, 994, 995, 7, 17, 0, 0, 995, 996, 7, 5, 0, 0, 996, 238, 1, 0, 0, 0, 997, 998, 7, 17, 0, 0, 998, 999, 7, 5, 0, 0, 999, 1000, 7, 3, 0, 0, 1000, 1001, 7, 2, 0, 0, 1001, 240, 1, 0, 0, 0, 1002, 1003, 7, 17, 0, 0, 1003, 1004, 7, 16, 0, 0, 1004, 1005, 7, 7, 0, 0, 1005, 1006, 7, 4, 0, 0, 1006, 1007, 7, 17, 0, 0, 1007, 1008, 7, 5, 0, 0, 1008, 1009, 7, 11, 0, 0, 1009, 242, 1, 0, 0, 0, 1010, 1011, 7, 17, 0, 0, 1011, 1012, 7, 16, 0, 0, 1012, 1013, 7, 7, 0, 0, 1013, 1014, 7, 4, 0, 0, 1014, 1015, 7, 17, 0, 0, 1015, 1016, 7, 5, 0, 0, 1016, 1017, 7, 0, 0, 0, 1017, 1018, 7, 3, 0, 0, 1018, 244, 1, 0, 0, 0, 1019, 1020, 7, 17, 0, 0, 1020, 1021, 7, 9, 0, 0, 1021, 246, 1, 0, 0, 0, 1022, 1023, 7, 17, 0, 0, 1023, 1024, 7, 9, 0, 0, 1024, 1025, 7, 6, 0, 0, 1025, 1026, 7, 8, 0, 0, 1026, 1027, 7, 9, 0, 0, 1027, 248, 1, 0, 0, 0, 1028, 1029, 7, 16, 0, 0, 1029, 1030, 7, 9, 0, 0, 1030, 1031, 7, 4, 0, 0, 1031, 1032, 7, 19, 0, 0, 1032, 1033, 7, 0, 0, 0, 1033, 1034, 7, 9, 0, 0, 1034, 1035, 7, 2, 0, 0, 1035, 250, 1, 0, 0, 0, 1036, 1037, 7, 16, 0, 0, 1037, 1038, 7, 9, 0, 0, 1038, 1039, 7, 17, 0, 0, 1039, 1040, 7, 20, 0, 0, 1040, 1041, 7, 4, 0, 0, 1041, 1042, 7, 3, 0, 0, 1042, 1043, 7, 8, 0, 0, 1043, 252, 1, 0, 0, 0, 1044, 1045, 7, 16, 0, 0, 1045, 1046, 7, 9, 0, 0, 1046, 1047, 7, 17, 0, 0, 1047, 1048, 7, 22, 0, 0, 1048, 1049, 7, 8, 0, 0, 1049, 1050, 7, 1, 0, 0, 1050, 1051, 7, 7, 0, 0, 1051, 254, 1, 0, 0, 0, 1052, 1053, 7, 9, 0, 0, 1053, 1054, 7, 8, 0, 0, 1054, 1055, 7, 0, 0, 0, 1055, 1056, 7, 6, 0, 0, 1056, 256, 1, 0, 0, 0, 1057, 1058, 7, 9, 0, 0, 1058, 1059, 7, 8, 0, 0, 1059, 1060, 7, 3, 0, 0, 1060, 258, 1, 0, 0, 0, 1061, 1062, 7, 9, 0, 0, 1062, 1063, 7, 8, 0, 0, 1063, 1064, 7, 5, 0, 0, 1064, 1065, 7, 0, 0, 0, 1065, 1066, 7, 19, 0, 0, 1066, 1067, 7, 8, 0, 0, 1067, 260, 1, 0, 0, 0, 1068, 1069, 7, 9, 0, 0, 1069, 1070, 7, 8, 0, 0, 1070, 1071, 7, 7, 0, 0, 1071, 1072, 7, 18, 0, 0, 1072, 1073, 7, 9, 0, 0, 1073, 1074, 7, 5, 0, 0, 1074, 262, 1, 0, 0, 0, 1075, 1076, 7, 9, 0, 0, 1076, 1077, 7, 17, 0, 0, 1077, 1078, 7, 3, 0, 0, 1078, 1079, 7, 3, 0, 0, 1079, 1080, 7, 14, 0, 0, 1080, 1081, 7, 0, 0, 0, 1081, 1082, 7, 1, 0, 0, 1082, 1083, 7, 15, 0, 0, 1083, 264, 1, 0, 0, 0, 1084, 1085, 7, 9, 0, 0, 1085, 1086, 7, 17, 0, 0, 1086, 1087, 7, 3, 0, 0, 1087, 1088, 7, 3, 0, 0, 1088, 1089, 7, 14, 0, 0, 1089, 1090, 7, 0, 0, 0, 1090, 1091, 7, 1, 0, 0, 1091, 1092, 7, 15, 0, 0, 1092, 1093, 5, 95, 0, 0, 1093, 1094, 7, 11, 0, 0, 1094, 1095, 7, 15, 0, 0, 1095, 1096, 7, 4, 0, 0, 1096, 1097, 7, 16, 0, 0, 1097, 1098, 5, 95, 0, 0, 1098, 1099, 7, 1, 0, 0, 1099, 1100, 7, 13, 0, 0, 1100, 1101, 7, 8, 0, 0, 1101, 1102, 7, 1, 0, 0, 1102, 1103, 7, 15, 0, 0, 1103, 1104, 7, 16, 0, 0, 1104, 1105, 7, 17, 0, 0, 1105, 1106, 7, 4, 0, 0, 1106, 1107, 7, 5, 0, 0, 1107, 1108, 7, 7, 0, 0, 1108, 266, 1, 0, 0, 0, 1109, 1110, 7, 11, 0, 0, 1110, 1111, 7, 8, 0, 0, 1111, 1112, 7, 24, 0, 0, 1112, 1113, 7, 18, 0, 0, 1113, 1114, 7, 8, 0, 0, 1114, 1115, 7, 5, 0, 0, 1115, 1116, 7, 1, 0, 0, 1116, 1117, 7, 8, 0, 0, 1117, 268, 1, 0, 0, 0, 1118, 1119, 7, 11, 0, 0, 1119, 1120, 7, 8, 0, 0, 1120, 1121, 7, 7, 0, 0, 1121, 270, 1, 0, 0, 0, 1122, 1123, 7, 11, 0, 0, 1123, 1124, 7, 17, 0, 0, 1124, 1125, 7, 9, 0, 0, 1125, 1126, 7, 7, 0, 0, 1126, 1127, 7, 8, 0, 0, 1127, 1128, 7, 6, 0, 0, 1128, 272, 1, 0, 0, 0, 1129, 1130, 7, 11, 0, 0, 1130, 1131, 7, 13, 0, 0, 1131, 1132, 7, 17, 0, 0, 1132, 1133, 7, 9, 0, 0, 1133, 1134, 7, 7, 0, 0, 1134, 1135, 7, 8, 0, 0, 1135, 1136, 7, 11, 0, 0, 1136, 1137, 7, 7, 0, 0, 1137, 274, 1, 0, 0, 0, 1138, 1139, 7, 11, 0, 0, 1139, 1140, 7, 7, 0, 0, 1140, 1141, 7, 0, 0, 0, 1141, 1142, 7, 9, 0, 0, 1142, 1143, 7, 7, 0, 0, 1143, 276, 1, 0, 0, 0, 1144, 1145, 7, 11, 0, 0, 1145, 1146, 7, 7, 0, 0, 1146, 1147, 7, 0, 0, 0, 1147, 1148, 7, 9, 0, 0, 1148, 1149, 7, 7, 0, 0, 1149, 1150, 7, 11, 0, 0, 1150, 278, 1, 0, 0, 0, 1151, 1152, 7, 11, 0, 0, 1152, 1153, 7, 7, 0, 0, 1153, 1154, 7, 9, 0, 0, 1154, 1155, 7, 18, 0, 0, 1155, 1156, 7, 1, 0, 0, 1156, 1157, 7, 7, 0, 0, 1157, 280, 1, 0, 0, 0, 1158, 1159, 7, 7, 0, 0, 1159, 1160, 7, 0, 0, 0, 1160, 1161, 7, 14, 0, 0, 1161, 1162, 7, 3, 0, 0, 1162, 1163, 7, 8, 0, 0, 1163, 282, 1, 0, 0, 0, 1164, 1165, 7, 7, 0, 0, 1165, 1166, 7, 13, 0, 0, 1166, 1167, 7, 8, 0, 0, 1167, 1168, 7, 5, 0, 0, 1168, 284, 1, 0, 0, 0, 1169, 1170, 7, 7, 0, 0, 1170, 1171, 7, 17, 0, 0, 1171, 286, 1, 0, 0, 0, 1172, 1173, 7, 7, 0, 0, 1173, 1174, 7, 9, 0, 0, 1174, 1175, 7, 0, 0, 0, 1175, 1176, 7, 4, 0, 0, 1176, 1177, 7, 3, 0, 0, 1177, 288, 1, 0, 0, 0, 1178, 1179, 7, 7, 0, 0, 1179, 1180, 7, 9, 0, 0, 1180, 1181, 7, 0, 0, 0, 1181, 1182, 7, 5, 0, 0, 1182, 1183, 7, 11, 0, 0, 1183, 1184, 7, 0, 0, 0, 1184, 1185, 7, 1, 0, 0, 1185, 1186, 7, 7, 0, 0, 1186, 1187, 7, 4, 0, 0, 1187, 1188, 7, 17, 0, 0, 1188, 1189, 7, 5, 0, 0, 1189, 290, 1, 0, 0, 0, 1190, 1191, 7, 7, 0, 0, 1191, 1192, 7, 9, 0, 0, 1192, 1193, 7, 18, 0, 0, 1193, 1194, 7, 8, 0, 0, 1194, 292, 1, 0, 0, 0, 1195, 1196, 7, 7, 0, 0, 1196, 1197, 7, 2, 0, 0, 1197, 1198, 7, 16, 0, 0, 1198, 1199, 7, 8, 0, 0, 1199, 294, 1, 0, 0, 0, 1200, 1201, 7, 18, 0, 0, 1201, 1202, 7, 5, 0, 0, 1202, 1203, 7, 4, 0, 0, 1203, 1204, 7, 17, 0, 0, 1204, 1205, 7, 5, 0, 0, 1205, 296, 1, 0, 0, 0, 1206, 1207, 7, 18, 0, 0, 1207, 1208, 7, 5, 0, 0, 1208, 1209, 7, 25, 0, 0, 1209, 1210, 7, 4, 0, 0, 1210, 1211, 7, 5, 0, 0, 1211, 1212, 7, 6, 0, 0, 1212, 298, 1, 0, 0, 0, 1213, 1214, 7, 18, 0, 0, 1214, 1215, 7, 5, 0, 0, 1215, 1216, 7, 4, 0, 0, 1216, 1217, 7, 5, 0, 0, 1217, 1218, 7, 11, 0, 0, 1218, 1219, 7, 7, 0, 0, 1219, 1220, 7, 0, 0, 0, 1220, 1221, 7, 3, 0, 0, 1221, 1222, 7, 3, 0, 0, 1222, 300, 1, 0, 0, 0, 1223, 1224, 7, 18, 0, 0, 1224, 1225, 7, 16, 0, 0, 1225, 1226, 7, 6, 0, 0, 1226, 1227, 7, 0, 0, 0, 1227, 1228, 7, 7, 0, 0, 1228, 1229, 7, 8, 0, 0, 1229, 302, 1, 0, 0, 0, 1230, 1231, 7, 18, 0, 0, 1231, 1232, 7, 11, 0, 0, 1232, 1233, 7, 8, 0, 0, 1233, 304, 1, 0, 0, 0, 1234, 1235, 7, 25, 0, 0, 1235, 1236, 7, 13, 0, 0, 1236, 1237, 7, 8, 0, 0, 1237, 1238, 7, 5, 0, 0, 1238, 306, 1, 0, 0, 0, 1239, 1240, 7, 25, 0, 0, 1240, 1241, 7, 13, 0, 0, 1241, 1242, 7, 8, 0, 0, 1242, 1243, 7, 9, 0, 0, 1243, 1244, 7, 8, 0, 0, 1244, 308, 1, 0, 0, 0, 1245, 1246, 7, 25, 0, 0, 1246, 1247, 7, 4, 0, 0, 1247, 1248, 7, 7, 0, 0, 1248, 1249, 7, 13, 0, 0, 1249, 310, 1, 0, 0, 0, 1250, 1251, 7, 25, 0, 0, 1251, 1252, 7, 9, 0, 0, 1252, 1253, 7, 4, 0, 0, 1253, 1254, 7, 7, 0, 0, 1254, 1255, 7, 8, 0, 0, 1255, 312, 1, 0, 0, 0, 1256, 1257, 7, 25, 0, 0, 1257, 1258, 7, 11, 0, 0, 1258, 1259, 7, 13, 0, 0, 1259, 1260, 7, 17, 0, 0, 1260, 1261, 7, 9, 0, 0, 1261, 1262, 7, 7, 0, 0, 1262, 1263, 7, 8, 0, 0, 1263, 1264, 7, 11, 0, 0, 1264, 1265, 7, 7, 0, 0, 1265, 314, 1, 0, 0, 0, 1266, 1267, 7, 21, 0, 0, 1267, 1268, 7, 17, 0, 0, 1268, 1269, 7, 9, 0, 0, 1269, 316, 1, 0, 0, 0, 1270, 1271, 7, 11, 0, 0, 1271, 1272, 7, 4, 0, 0, 1272, 1273, 7, 5, 0, 0, 1273, 1274, 7, 12, 0, 0, 1274, 1275, 7, 3, 0, 0, 1275, 1276, 7, 8, 0, 0, 1276, 318, 1, 0, 0, 0, 1277, 1278, 7, 2, 0, 0, 1278, 1279, 7, 4, 0, 0, 1279, 1280, 7, 8, 0, 0, 1280, 1281, 7, 3, 0, 0, 1281, 1282, 7, 6, 0, 0, 1282, 320, 1, 0, 0, 0, 1283, 1284, 7, 18, 0, 0, 1284, 1285, 7, 11, 0, 0, 1285, 1286, 7, 8, 0, 0, 1286, 1287, 7, 9, 0, 0, 1287, 322, 1, 0, 0, 0, 1288, 1289, 7, 16, 0, 0, 1289, 1290, 7, 0, 0, 0, 1290, 1291, 7, 11, 0, 0, 1291, 1292, 7, 11, 0, 0, 1292, 1293, 7, 25, 0, 0, 1293, 1294, 7, 17, 0, 0, 1294, 1295, 7, 9, 0, 0, 1295, 1296, 7, 6, 0, 0, 1296, 324, 1, 0, 0, 0, 1297, 1298, 7, 9, 0, 0, 1298, 1299, 7, 17, 0, 0, 1299, 1300, 7, 3, 0, 0, 1300, 1301, 7, 8, 0, 0, 1301, 326, 1, 0, 0, 0, 1302, 1303, 7, 19, 0, 0, 1303, 1304, 7, 0, 0, 0, 1304, 1305, 7, 16, 0, 0, 1305, 328, 1, 0, 0, 0, 1306, 1307, 7, 6, 0, 0, 1307, 1308, 7, 8, 0, 0, 1308, 1309, 7, 1, 0, 0, 1309, 1310, 7, 4, 0, 0, 1310, 1311, 7, 19, 0, 0, 1311, 1312, 7, 0, 0, 0, 1312, 1313, 7, 3, 0, 0, 1313, 330, 1, 0, 0, 0, 1314, 1315, 5, 42, 0, 0, 1315, 332, 1, 0, 0, 0, 1316, 1317, 7, 11, 0, 0, 1317, 1318, 7, 15, 0, 0, 1318, 1319, 7, 4, 0, 0, 1319, 1320, 7, 16, 0, 0, 1320, 334, 1, 0, 0, 0, 1321, 1322, 5, 33, 0, 0, 1322, 1323, 5, 61, 0, 0, 1323, 336, 1, 0, 0, 0, 1324, 1325, 5, 58, 0, 0, 1325, 338, 1, 0, 0, 0, 1326, 1327, 5, 46, 0, 0, 1327, 1328, 5, 46, 0, 0, 1328, 340, 1, 0, 0, 0, 1329, 1330, 5, 45, 0, 0, 1330, 342, 1, 0, 0, 0, 1331, 1332, 5, 33, 0, 0, 1332, 344, 1, 0, 0, 0, 1333, 1338, 5, 34, 0, 0, 1334, 1337, 3, 411, 205, 0, 1335, 1337, 3, 347, 173, 0, 1336, 1334, 1, 0, 0, 0, 1336, 1335, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 1341, 1, 0, 0, 0, 1340, 1338, 1, 0, 0, 0, 1341, 1352, 5, 34, 0, 0, 1342, 1347, 5, 39, 0, 0, 1343, 1346, 3, 391, 195, 0, 1344, 1346, 3, 347, 173, 0, 1345, 1343, 1, 0, 0, 0, 1345, 1344, 1, 0, 0, 0, 1346, 1349, 1, 0, 0, 0, 1347, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1350, 1, 0, 0, 0, 1349, 1347, 1, 0, 0, 0, 1350, 1352, 5, 39, 0, 0, 1351, 1333, 1, 0, 0, 0, 1351, 1342, 1, 0, 0, 0, 1352, 346, 1, 0, 0, 0, 1353, 1375, 5, 92, 0, 0, 1354, 1376, 7, 26, 0, 0, 1355, 1356, 7, 21, 0, 0, 1356, 1357, 3, 353, 176, 0, 1357, 1358, 3, 353, 176, 0, 1358, 1376, 1, 0, 0, 0, 1359, 1360, 7, 18, 0, 0, 1360, 1361, 3, 353, 176, 0, 1361, 1362, 3, 353, 176, 0, 1362, 1363, 3, 353, 176, 0, 1363, 1364, 3, 353, 176, 0, 1364, 1376, 1, 0, 0, 0, 1365, 1366, 7, 18, 0, 0, 1366, 1367, 3, 353, 176, 0, 1367, 1368, 3, 353, 176, 0, 1368, 1369, 3, 353, 176, 0, 1369, 1370, 3, 353, 176, 0, 1370, 1371, 3, 353, 176, 0, 1371, 1372, 3, 353, 176, 0, 1372, 1373, 3, 353, 176, 0, 1373, 1374, 3, 353, 176, 0, 1374, 1376, 1, 0, 0, 0, 1375, 1354, 1, 0, 0, 0, 1375, 1355, 1, 0, 0, 0, 1375, 1359, 1, 0, 0, 0, 1375, 1365, 1, 0, 0, 0, 1376, 348, 1, 0, 0, 0, 1377, 1386, 3, 361, 180, 0, 1378, 1382, 3, 357, 178, 0, 1379, 1381, 3, 355, 177, 0, 1380, 1379, 1, 0, 0, 0, 1381, 1384, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1385, 1377, 1, 0, 0, 0, 1385, 1378, 1, 0, 0, 0, 1386, 350, 1, 0, 0, 0, 1387, 1389, 7, 27, 0, 0, 1388, 1387, 1, 0, 0, 0, 1389, 352, 1, 0, 0, 0, 1390, 1393, 3, 355, 177, 0, 1391, 1393, 3, 351, 175, 0, 1392, 1390, 1, 0, 0, 0, 1392, 1391, 1, 0, 0, 0, 1393, 354, 1, 0, 0, 0, 1394, 1397, 3, 361, 180, 0, 1395, 1397, 3, 357, 178, 0, 1396, 1394, 1, 0, 0, 0, 1396, 1395, 1, 0, 0, 0, 1397, 356, 1, 0, 0, 0, 1398, 1401, 3, 359, 179, 0, 1399, 1401, 2, 56, 57, 0, 1400, 1398, 1, 0, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 358, 1, 0, 0, 0, 1402, 1403, 2, 49, 55, 0, 1403, 360, 1, 0, 0, 0, 1404, 1405, 5, 48, 0, 0, 1405, 362, 1, 0, 0, 0, 1406, 1408, 3, 355, 177, 0, 1407, 1406, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1429, 1, 0, 0, 0, 1411, 1413, 3, 355, 177, 0, 1412, 1411, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416, 1418, 5, 46, 0, 0, 1417, 1419, 3, 355, 177, 0, 1418, 1417, 1, 0, 0, 0, 1419, 1420, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1429, 1, 0, 0, 0, 1422, 1424, 5, 46, 0, 0, 1423, 1425, 3, 355, 177, 0, 1424, 1423, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1429, 1, 0, 0, 0, 1428, 1407, 1, 0, 0, 0, 1428, 1412, 1, 0, 0, 0, 1428, 1422, 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1432, 7, 8, 0, 0, 1431, 1433, 5, 45, 0, 0, 1432, 1431, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1435, 1, 0, 0, 0, 1434, 1436, 3, 355, 177, 0, 1435, 1434, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1435, 1, 0, 0, 0, 1437, 1438, 1, 0, 0, 0, 1438, 364, 1, 0, 0, 0, 1439, 1441, 3, 355, 177, 0, 1440, 1439, 1, 0, 0, 0, 1441, 1444, 1, 0, 0, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, 1442, 1, 0, 0, 0, 1445, 1447, 5, 46, 0, 0, 1446, 1448, 3, 355, 177, 0, 1447, 1446, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 366, 1, 0, 0, 0, 1451, 1455, 3, 369, 184, 0, 1452, 1454, 3, 371, 185, 0, 1453, 1452, 1, 0, 0, 0, 1454, 1457, 1, 0, 0, 0, 1455, 1453, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 368, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1458, 1461, 3, 419, 209, 0, 1459, 1461, 3, 407, 203, 0, 1460, 1458, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 370, 1, 0, 0, 0, 1462, 1465, 3, 387, 193, 0, 1463, 1465, 3, 403, 201, 0, 1464, 1462, 1, 0, 0, 0, 1464, 1463, 1, 0, 0, 0, 1465, 372, 1, 0, 0, 0, 1466, 1470, 5, 96, 0, 0, 1467, 1469, 3, 383, 191, 0, 1468, 1467, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1473, 1475, 5, 96, 0, 0, 1474, 1466, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 374, 1, 0, 0, 0, 1478, 1480, 3, 377, 188, 0, 1479, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 376, 1, 0, 0, 0, 1483, 1496, 3, 405, 202, 0, 1484, 1496, 3, 409, 204, 0, 1485, 1496, 3, 413, 206, 0, 1486, 1496, 3, 415, 207, 0, 1487, 1496, 3, 381, 190, 0, 1488, 1496, 3, 401, 200, 0, 1489, 1496, 3, 399, 199, 0, 1490, 1496, 3, 397, 198, 0, 1491, 1496, 3, 385, 192, 0, 1492, 1496, 3, 417, 208, 0, 1493, 1496, 7, 28, 0, 0, 1494, 1496, 3, 379, 189, 0, 1495, 1483, 1, 0, 0, 0, 1495, 1484, 1, 0, 0, 0, 1495, 1485, 1, 0, 0, 0, 1495, 1486, 1, 0, 0, 0, 1495, 1487, 1, 0, 0, 0, 1495, 1488, 1, 0, 0, 0, 1495, 1489, 1, 0, 0, 0, 1495, 1490, 1, 0, 0, 0, 1495, 1491, 1, 0, 0, 0, 1495, 1492, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1495, 1494, 1, 0, 0, 0, 1496, 378, 1, 0, 0, 0, 1497, 1498, 5, 47, 0, 0, 1498, 1499, 5, 42, 0, 0, 1499, 1505, 1, 0, 0, 0, 1500, 1504, 3, 389, 194, 0, 1501, 1502, 5, 42, 0, 0, 1502, 1504, 3, 395, 197, 0, 1503, 1500, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1504, 1507, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1508, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1508, 1509, 5, 42, 0, 0, 1509, 1527, 5, 47, 0, 0, 1510, 1511, 5, 47, 0, 0, 1511, 1512, 5, 47, 0, 0, 1512, 1516, 1, 0, 0, 0, 1513, 1515, 3, 393, 196, 0, 1514, 1513, 1, 0, 0, 0, 1515, 1518, 1, 0, 0, 0, 1516, 1514, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1520, 1, 0, 0, 0, 1518, 1516, 1, 0, 0, 0, 1519, 1521, 3, 401, 200, 0, 1520, 1519, 1, 0, 0, 0, 1520, 1521, 1, 0, 0, 0, 1521, 1524, 1, 0, 0, 0, 1522, 1525, 3, 413, 206, 0, 1523, 1525, 5, 0, 0, 1, 1524, 1522, 1, 0, 0, 0, 1524, 1523, 1, 0, 0, 0, 1525, 1527, 1, 0, 0, 0, 1526, 1497, 1, 0, 0, 0, 1526, 1510, 1, 0, 0, 0, 1527, 380, 1, 0, 0, 0, 1528, 1529, 7, 29, 0, 0, 1529, 382, 1, 0, 0, 0, 1530, 1531, 8, 30, 0, 0, 1531, 384, 1, 0, 0, 0, 1532, 1533, 7, 31, 0, 0, 1533, 386, 1, 0, 0, 0, 1534, 1535, 7, 32, 0, 0, 1535, 388, 1, 0, 0, 0, 1536, 1537, 8, 33, 0, 0, 1537, 390, 1, 0, 0, 0, 1538, 1539, 8, 34, 0, 0, 1539, 392, 1, 0, 0, 0, 1540, 1541, 8, 35, 0, 0, 1541, 394, 1, 0, 0, 0, 1542, 1543, 8, 36, 0, 0, 1543, 396, 1, 0, 0, 0, 1544, 1545, 7, 37, 0, 0, 1545, 398, 1, 0, 0, 0, 1546, 1547, 7, 38, 0, 0, 1547, 400, 1, 0, 0, 0, 1548, 1549, 7, 39, 0, 0, 1549, 402, 1, 0, 0, 0, 1550, 1551, 7, 40, 0, 0, 1551, 404, 1, 0, 0, 0, 1552, 1553, 7, 41, 0, 0, 1553, 406, 1, 0, 0, 0, 1554, 1555, 7, 42, 0, 0, 1555, 408, 1, 0, 0, 0, 1556, 1557, 7, 43, 0, 0, 1557, 410, 1, 0, 0, 0, 1558, 1559, 8, 44, 0, 0, 1559, 412, 1, 0, 0, 0, 1560, 1561, 7, 45, 0, 0, 1561, 414, 1, 0, 0, 0, 1562, 1563, 7, 46, 0, 0, 1563, 416, 1, 0, 0, 0, 1564, 1565, 7, 47, 0, 0, 1565, 418, 1, 0, 0, 0, 1566, 1567, 7, 48, 0, 0, 1567, 420, 1, 0, 0, 0, 1568, 1569, 9, 0, 0, 0, 1569, 422, 1, 0, 0, 0, 35, 0, 1336, 1338, 1345, 1347, 1351, 1375, 1382, 1385, 1388, 1392, 1396, 1400, 1409, 1414, 1420, 1426, 1428, 1432, 1437, 1442, 1449, 1455, 1460, 1464, 1470, 1476, 1481, 1495, 1503, 1505, 1516, 1520, 1524, 1526, 0] \ No newline at end of file diff --git a/src/utils/CypherParser/CypherLexer.tokens b/src/utils/CypherParser/CypherLexer.tokens index ccba5dc..c66011f 100644 --- a/src/utils/CypherParser/CypherLexer.tokens +++ b/src/utils/CypherParser/CypherLexer.tokens @@ -47,143 +47,148 @@ ANY=46 ADD=47 ALL=48 ALTER=49 -AND=50 -AS=51 -ASC=52 -ASCENDING=53 -ATTACH=54 -BEGIN=55 -BY=56 -CALL=57 -CASE=58 -CAST=59 -CHECKPOINT=60 -COLUMN=61 -COMMENT=62 -COMMIT=63 -COMMIT_SKIP_CHECKPOINT=64 -CONTAINS=65 -COPY=66 -COUNT=67 -CREATE=68 -CYCLE=69 -DATABASE=70 -DBTYPE=71 -DEFAULT=72 -DELETE=73 -DESC=74 -DESCENDING=75 -DETACH=76 -DISTINCT=77 -DROP=78 -ELSE=79 -END=80 -ENDS=81 -EXISTS=82 -EXPLAIN=83 -EXPORT=84 -EXTENSION=85 -FALSE=86 -FROM=87 -FORCE=88 -GLOB=89 -GRAPH=90 -GROUP=91 -HEADERS=92 -HINT=93 -IMPORT=94 -IF=95 -IN=96 -INCREMENT=97 -INSTALL=98 -IS=99 -JOIN=100 -KEY=101 -LIMIT=102 -LOAD=103 -LOGICAL=104 -MACRO=105 -MATCH=106 -MAXVALUE=107 -MERGE=108 -MINVALUE=109 -MULTI_JOIN=110 -NO=111 -NODE=112 -NOT=113 -NONE=114 -NULL=115 -ON=116 -ONLY=117 -OPTIONAL=118 -OR=119 -ORDER=120 -PRIMARY=121 -PROFILE=122 -PROJECT=123 -READ=124 -REL=125 -RENAME=126 -RETURN=127 -ROLLBACK=128 -ROLLBACK_SKIP_CHECKPOINT=129 -SEQUENCE=130 -SET=131 -SHORTEST=132 -START=133 -STARTS=134 -STRUCT=135 -TABLE=136 -THEN=137 -TO=138 -TRAIL=139 -TRANSACTION=140 -TRUE=141 -TYPE=142 -UNION=143 -UNWIND=144 -UNINSTALL=145 -UPDATE=146 -USE=147 -WHEN=148 -WHERE=149 -WITH=150 -WRITE=151 -WSHORTEST=152 -XOR=153 -SINGLE=154 -YIELD=155 -USER=156 -PASSWORD=157 -ROLE=158 -MAP=159 -DECIMAL=160 -STAR=161 -L_SKIP=162 -INVALID_NOT_EQUAL=163 -COLON=164 -DOTDOT=165 -MINUS=166 -FACTORIAL=167 -StringLiteral=168 -EscapedChar=169 -DecimalInteger=170 -HexLetter=171 -HexDigit=172 -Digit=173 -NonZeroDigit=174 -NonZeroOctDigit=175 -ZeroDigit=176 -ExponentDecimalReal=177 -RegularDecimalReal=178 -UnescapedSymbolicName=179 -IdentifierStart=180 -IdentifierPart=181 -EscapedSymbolicName=182 -SP=183 -WHITESPACE=184 -CypherComment=185 -Unknown=186 +ANALYZE=50 +AND=51 +AS=52 +ASC=53 +ASCENDING=54 +ATTACH=55 +BEGIN=56 +BY=57 +CALL=58 +CASE=59 +CAST=60 +CHECKPOINT=61 +COLUMN=62 +COMMENT=63 +COMMIT=64 +COMMIT_SKIP_CHECKPOINT=65 +CONTAINS=66 +COPY=67 +COUNT=68 +CREATE=69 +CYCLE=70 +DATABASE=71 +DBTYPE=72 +DEFAULT=73 +DELETE=74 +DESC=75 +DESCENDING=76 +DETACH=77 +DISTINCT=78 +DROP=79 +ELSE=80 +END=81 +ENDS=82 +EXISTS=83 +EXPLAIN=84 +EXPORT=85 +EXTENSION=86 +FALSE=87 +FROM=88 +FORCE=89 +FOR=90 +GLOB=91 +GRAPH=92 +GROUP=93 +HEADERS=94 +HINT=95 +IMPORT=96 +INDEX=97 +IF=98 +IN=99 +INCREMENT=100 +INSTALL=101 +IS=102 +JOIN=103 +KEY=104 +LIMIT=105 +LOAD=106 +LOGICAL=107 +MACRO=108 +MATCH=109 +MAXVALUE=110 +MERGE=111 +MINVALUE=112 +MULTI_JOIN=113 +NO=114 +NODE=115 +NOT=116 +NONE=117 +NULL=118 +ON=119 +ONLY=120 +OPTIONS=121 +OPTIONAL=122 +OR=123 +ORDER=124 +PRIMARY=125 +PROFILE=126 +PROJECT=127 +READ=128 +REL=129 +RENAME=130 +RETURN=131 +ROLLBACK=132 +ROLLBACK_SKIP_CHECKPOINT=133 +SEQUENCE=134 +SET=135 +SORTED=136 +SHORTEST=137 +START=138 +STARTS=139 +STRUCT=140 +TABLE=141 +THEN=142 +TO=143 +TRAIL=144 +TRANSACTION=145 +TRUE=146 +TYPE=147 +UNION=148 +UNWIND=149 +UNINSTALL=150 +UPDATE=151 +USE=152 +WHEN=153 +WHERE=154 +WITH=155 +WRITE=156 +WSHORTEST=157 +XOR=158 +SINGLE=159 +YIELD=160 +USER=161 +PASSWORD=162 +ROLE=163 +MAP=164 +DECIMAL=165 +STAR=166 +L_SKIP=167 +INVALID_NOT_EQUAL=168 +COLON=169 +DOTDOT=170 +MINUS=171 +FACTORIAL=172 +StringLiteral=173 +EscapedChar=174 +DecimalInteger=175 +HexLetter=176 +HexDigit=177 +Digit=178 +NonZeroDigit=179 +NonZeroOctDigit=180 +ZeroDigit=181 +ExponentDecimalReal=182 +RegularDecimalReal=183 +UnescapedSymbolicName=184 +IdentifierStart=185 +IdentifierPart=186 +EscapedSymbolicName=187 +SP=188 +WHITESPACE=189 +CypherComment=190 +Unknown=191 ';'=1 '('=2 ')'=3 @@ -228,10 +233,10 @@ Unknown=186 '\ufe58'=42 '\ufe63'=43 '\uff0d'=44 -'*'=161 -'!='=163 -':'=164 -'..'=165 -'-'=166 -'!'=167 -'0'=176 +'*'=166 +'!='=168 +':'=169 +'..'=170 +'-'=171 +'!'=172 +'0'=181 diff --git a/src/utils/CypherParser/CypherLexer.ts b/src/utils/CypherParser/CypherLexer.ts index 408b0f4..2452fab 100644 --- a/src/utils/CypherParser/CypherLexer.ts +++ b/src/utils/CypherParser/CypherLexer.ts @@ -54,143 +54,148 @@ export class CypherLexer extends antlr.Lexer { public static readonly ADD = 47; public static readonly ALL = 48; public static readonly ALTER = 49; - public static readonly AND = 50; - public static readonly AS = 51; - public static readonly ASC = 52; - public static readonly ASCENDING = 53; - public static readonly ATTACH = 54; - public static readonly BEGIN = 55; - public static readonly BY = 56; - public static readonly CALL = 57; - public static readonly CASE = 58; - public static readonly CAST = 59; - public static readonly CHECKPOINT = 60; - public static readonly COLUMN = 61; - public static readonly COMMENT = 62; - public static readonly COMMIT = 63; - public static readonly COMMIT_SKIP_CHECKPOINT = 64; - public static readonly CONTAINS = 65; - public static readonly COPY = 66; - public static readonly COUNT = 67; - public static readonly CREATE = 68; - public static readonly CYCLE = 69; - public static readonly DATABASE = 70; - public static readonly DBTYPE = 71; - public static readonly DEFAULT = 72; - public static readonly DELETE = 73; - public static readonly DESC = 74; - public static readonly DESCENDING = 75; - public static readonly DETACH = 76; - public static readonly DISTINCT = 77; - public static readonly DROP = 78; - public static readonly ELSE = 79; - public static readonly END = 80; - public static readonly ENDS = 81; - public static readonly EXISTS = 82; - public static readonly EXPLAIN = 83; - public static readonly EXPORT = 84; - public static readonly EXTENSION = 85; - public static readonly FALSE = 86; - public static readonly FROM = 87; - public static readonly FORCE = 88; - public static readonly GLOB = 89; - public static readonly GRAPH = 90; - public static readonly GROUP = 91; - public static readonly HEADERS = 92; - public static readonly HINT = 93; - public static readonly IMPORT = 94; - public static readonly IF = 95; - public static readonly IN = 96; - public static readonly INCREMENT = 97; - public static readonly INSTALL = 98; - public static readonly IS = 99; - public static readonly JOIN = 100; - public static readonly KEY = 101; - public static readonly LIMIT = 102; - public static readonly LOAD = 103; - public static readonly LOGICAL = 104; - public static readonly MACRO = 105; - public static readonly MATCH = 106; - public static readonly MAXVALUE = 107; - public static readonly MERGE = 108; - public static readonly MINVALUE = 109; - public static readonly MULTI_JOIN = 110; - public static readonly NO = 111; - public static readonly NODE = 112; - public static readonly NOT = 113; - public static readonly NONE = 114; - public static readonly NULL = 115; - public static readonly ON = 116; - public static readonly ONLY = 117; - public static readonly OPTIONAL = 118; - public static readonly OR = 119; - public static readonly ORDER = 120; - public static readonly PRIMARY = 121; - public static readonly PROFILE = 122; - public static readonly PROJECT = 123; - public static readonly READ = 124; - public static readonly REL = 125; - public static readonly RENAME = 126; - public static readonly RETURN = 127; - public static readonly ROLLBACK = 128; - public static readonly ROLLBACK_SKIP_CHECKPOINT = 129; - public static readonly SEQUENCE = 130; - public static readonly SET = 131; - public static readonly SHORTEST = 132; - public static readonly START = 133; - public static readonly STARTS = 134; - public static readonly STRUCT = 135; - public static readonly TABLE = 136; - public static readonly THEN = 137; - public static readonly TO = 138; - public static readonly TRAIL = 139; - public static readonly TRANSACTION = 140; - public static readonly TRUE = 141; - public static readonly TYPE = 142; - public static readonly UNION = 143; - public static readonly UNWIND = 144; - public static readonly UNINSTALL = 145; - public static readonly UPDATE = 146; - public static readonly USE = 147; - public static readonly WHEN = 148; - public static readonly WHERE = 149; - public static readonly WITH = 150; - public static readonly WRITE = 151; - public static readonly WSHORTEST = 152; - public static readonly XOR = 153; - public static readonly SINGLE = 154; - public static readonly YIELD = 155; - public static readonly USER = 156; - public static readonly PASSWORD = 157; - public static readonly ROLE = 158; - public static readonly MAP = 159; - public static readonly DECIMAL = 160; - public static readonly STAR = 161; - public static readonly L_SKIP = 162; - public static readonly INVALID_NOT_EQUAL = 163; - public static readonly COLON = 164; - public static readonly DOTDOT = 165; - public static readonly MINUS = 166; - public static readonly FACTORIAL = 167; - public static readonly StringLiteral = 168; - public static readonly EscapedChar = 169; - public static readonly DecimalInteger = 170; - public static readonly HexLetter = 171; - public static readonly HexDigit = 172; - public static readonly Digit = 173; - public static readonly NonZeroDigit = 174; - public static readonly NonZeroOctDigit = 175; - public static readonly ZeroDigit = 176; - public static readonly ExponentDecimalReal = 177; - public static readonly RegularDecimalReal = 178; - public static readonly UnescapedSymbolicName = 179; - public static readonly IdentifierStart = 180; - public static readonly IdentifierPart = 181; - public static readonly EscapedSymbolicName = 182; - public static readonly SP = 183; - public static readonly WHITESPACE = 184; - public static readonly CypherComment = 185; - public static readonly Unknown = 186; + public static readonly ANALYZE = 50; + public static readonly AND = 51; + public static readonly AS = 52; + public static readonly ASC = 53; + public static readonly ASCENDING = 54; + public static readonly ATTACH = 55; + public static readonly BEGIN = 56; + public static readonly BY = 57; + public static readonly CALL = 58; + public static readonly CASE = 59; + public static readonly CAST = 60; + public static readonly CHECKPOINT = 61; + public static readonly COLUMN = 62; + public static readonly COMMENT = 63; + public static readonly COMMIT = 64; + public static readonly COMMIT_SKIP_CHECKPOINT = 65; + public static readonly CONTAINS = 66; + public static readonly COPY = 67; + public static readonly COUNT = 68; + public static readonly CREATE = 69; + public static readonly CYCLE = 70; + public static readonly DATABASE = 71; + public static readonly DBTYPE = 72; + public static readonly DEFAULT = 73; + public static readonly DELETE = 74; + public static readonly DESC = 75; + public static readonly DESCENDING = 76; + public static readonly DETACH = 77; + public static readonly DISTINCT = 78; + public static readonly DROP = 79; + public static readonly ELSE = 80; + public static readonly END = 81; + public static readonly ENDS = 82; + public static readonly EXISTS = 83; + public static readonly EXPLAIN = 84; + public static readonly EXPORT = 85; + public static readonly EXTENSION = 86; + public static readonly FALSE = 87; + public static readonly FROM = 88; + public static readonly FORCE = 89; + public static readonly FOR = 90; + public static readonly GLOB = 91; + public static readonly GRAPH = 92; + public static readonly GROUP = 93; + public static readonly HEADERS = 94; + public static readonly HINT = 95; + public static readonly IMPORT = 96; + public static readonly INDEX = 97; + public static readonly IF = 98; + public static readonly IN = 99; + public static readonly INCREMENT = 100; + public static readonly INSTALL = 101; + public static readonly IS = 102; + public static readonly JOIN = 103; + public static readonly KEY = 104; + public static readonly LIMIT = 105; + public static readonly LOAD = 106; + public static readonly LOGICAL = 107; + public static readonly MACRO = 108; + public static readonly MATCH = 109; + public static readonly MAXVALUE = 110; + public static readonly MERGE = 111; + public static readonly MINVALUE = 112; + public static readonly MULTI_JOIN = 113; + public static readonly NO = 114; + public static readonly NODE = 115; + public static readonly NOT = 116; + public static readonly NONE = 117; + public static readonly NULL = 118; + public static readonly ON = 119; + public static readonly ONLY = 120; + public static readonly OPTIONS = 121; + public static readonly OPTIONAL = 122; + public static readonly OR = 123; + public static readonly ORDER = 124; + public static readonly PRIMARY = 125; + public static readonly PROFILE = 126; + public static readonly PROJECT = 127; + public static readonly READ = 128; + public static readonly REL = 129; + public static readonly RENAME = 130; + public static readonly RETURN = 131; + public static readonly ROLLBACK = 132; + public static readonly ROLLBACK_SKIP_CHECKPOINT = 133; + public static readonly SEQUENCE = 134; + public static readonly SET = 135; + public static readonly SORTED = 136; + public static readonly SHORTEST = 137; + public static readonly START = 138; + public static readonly STARTS = 139; + public static readonly STRUCT = 140; + public static readonly TABLE = 141; + public static readonly THEN = 142; + public static readonly TO = 143; + public static readonly TRAIL = 144; + public static readonly TRANSACTION = 145; + public static readonly TRUE = 146; + public static readonly TYPE = 147; + public static readonly UNION = 148; + public static readonly UNWIND = 149; + public static readonly UNINSTALL = 150; + public static readonly UPDATE = 151; + public static readonly USE = 152; + public static readonly WHEN = 153; + public static readonly WHERE = 154; + public static readonly WITH = 155; + public static readonly WRITE = 156; + public static readonly WSHORTEST = 157; + public static readonly XOR = 158; + public static readonly SINGLE = 159; + public static readonly YIELD = 160; + public static readonly USER = 161; + public static readonly PASSWORD = 162; + public static readonly ROLE = 163; + public static readonly MAP = 164; + public static readonly DECIMAL = 165; + public static readonly STAR = 166; + public static readonly L_SKIP = 167; + public static readonly INVALID_NOT_EQUAL = 168; + public static readonly COLON = 169; + public static readonly DOTDOT = 170; + public static readonly MINUS = 171; + public static readonly FACTORIAL = 172; + public static readonly StringLiteral = 173; + public static readonly EscapedChar = 174; + public static readonly DecimalInteger = 175; + public static readonly HexLetter = 176; + public static readonly HexDigit = 177; + public static readonly Digit = 178; + public static readonly NonZeroDigit = 179; + public static readonly NonZeroOctDigit = 180; + public static readonly ZeroDigit = 181; + public static readonly ExponentDecimalReal = 182; + public static readonly RegularDecimalReal = 183; + public static readonly UnescapedSymbolicName = 184; + public static readonly IdentifierStart = 185; + public static readonly IdentifierPart = 186; + public static readonly EscapedSymbolicName = 187; + public static readonly SP = 188; + public static readonly WHITESPACE = 189; + public static readonly CypherComment = 190; + public static readonly Unknown = 191; public static readonly channelNames = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" @@ -214,8 +219,9 @@ export class CypherLexer extends antlr.Lexer { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, "'*'", null, "'!='", "':'", "'..'", "'-'", "'!'", null, null, - null, null, null, null, null, null, "'0'" + null, null, null, null, null, null, "'*'", null, "'!='", "':'", + "'..'", "'-'", "'!'", null, null, null, null, null, null, null, + null, "'0'" ]; public static readonly symbolicNames = [ @@ -223,28 +229,29 @@ export class CypherLexer extends antlr.Lexer { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, "ACYCLIC", "ANY", "ADD", "ALL", "ALTER", "AND", "AS", "ASC", - "ASCENDING", "ATTACH", "BEGIN", "BY", "CALL", "CASE", "CAST", "CHECKPOINT", - "COLUMN", "COMMENT", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "CONTAINS", - "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", - "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", "DROP", "ELSE", - "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", "EXTENSION", "FALSE", - "FROM", "FORCE", "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", "IMPORT", - "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", "LIMIT", - "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", "MERGE", "MINVALUE", - "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", "ON", "ONLY", - "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", "PROJECT", "READ", - "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", - "SEQUENCE", "SET", "SHORTEST", "START", "STARTS", "STRUCT", "TABLE", - "THEN", "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND", - "UNINSTALL", "UPDATE", "USE", "WHEN", "WHERE", "WITH", "WRITE", - "WSHORTEST", "XOR", "SINGLE", "YIELD", "USER", "PASSWORD", "ROLE", - "MAP", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL", "COLON", - "DOTDOT", "MINUS", "FACTORIAL", "StringLiteral", "EscapedChar", - "DecimalInteger", "HexLetter", "HexDigit", "Digit", "NonZeroDigit", - "NonZeroOctDigit", "ZeroDigit", "ExponentDecimalReal", "RegularDecimalReal", - "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", - "SP", "WHITESPACE", "CypherComment", "Unknown" + null, "ACYCLIC", "ANY", "ADD", "ALL", "ALTER", "ANALYZE", "AND", + "AS", "ASC", "ASCENDING", "ATTACH", "BEGIN", "BY", "CALL", "CASE", + "CAST", "CHECKPOINT", "COLUMN", "COMMENT", "COMMIT", "COMMIT_SKIP_CHECKPOINT", + "CONTAINS", "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", + "DEFAULT", "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", + "DROP", "ELSE", "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", "EXTENSION", + "FALSE", "FROM", "FORCE", "FOR", "GLOB", "GRAPH", "GROUP", "HEADERS", + "HINT", "IMPORT", "INDEX", "IF", "IN", "INCREMENT", "INSTALL", "IS", + "JOIN", "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", + "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", + "NULL", "ON", "ONLY", "OPTIONS", "OPTIONAL", "OR", "ORDER", "PRIMARY", + "PROFILE", "PROJECT", "READ", "REL", "RENAME", "RETURN", "ROLLBACK", + "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SORTED", "SHORTEST", + "START", "STARTS", "STRUCT", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", + "TRUE", "TYPE", "UNION", "UNWIND", "UNINSTALL", "UPDATE", "USE", + "WHEN", "WHERE", "WITH", "WRITE", "WSHORTEST", "XOR", "SINGLE", + "YIELD", "USER", "PASSWORD", "ROLE", "MAP", "DECIMAL", "STAR", "L_SKIP", + "INVALID_NOT_EQUAL", "COLON", "DOTDOT", "MINUS", "FACTORIAL", "StringLiteral", + "EscapedChar", "DecimalInteger", "HexLetter", "HexDigit", "Digit", + "NonZeroDigit", "NonZeroOctDigit", "ZeroDigit", "ExponentDecimalReal", + "RegularDecimalReal", "UnescapedSymbolicName", "IdentifierStart", + "IdentifierPart", "EscapedSymbolicName", "SP", "WHITESPACE", "CypherComment", + "Unknown" ]; public static readonly modeNames = [ @@ -258,31 +265,31 @@ export class CypherLexer extends antlr.Lexer { "T__24", "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", "T__41", "T__42", "T__43", "ACYCLIC", "ANY", "ADD", "ALL", - "ALTER", "AND", "AS", "ASC", "ASCENDING", "ATTACH", "BEGIN", "BY", - "CALL", "CASE", "CAST", "CHECKPOINT", "COLUMN", "COMMENT", "COMMIT", - "COMMIT_SKIP_CHECKPOINT", "CONTAINS", "COPY", "COUNT", "CREATE", - "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", "DELETE", "DESC", "DESCENDING", - "DETACH", "DISTINCT", "DROP", "ELSE", "END", "ENDS", "EXISTS", "EXPLAIN", - "EXPORT", "EXTENSION", "FALSE", "FROM", "FORCE", "GLOB", "GRAPH", - "GROUP", "HEADERS", "HINT", "IMPORT", "IF", "IN", "INCREMENT", "INSTALL", - "IS", "JOIN", "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", - "MAXVALUE", "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", - "NONE", "NULL", "ON", "ONLY", "OPTIONAL", "OR", "ORDER", "PRIMARY", - "PROFILE", "PROJECT", "READ", "REL", "RENAME", "RETURN", "ROLLBACK", - "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SHORTEST", "START", - "STARTS", "STRUCT", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", - "TRUE", "TYPE", "UNION", "UNWIND", "UNINSTALL", "UPDATE", "USE", - "WHEN", "WHERE", "WITH", "WRITE", "WSHORTEST", "XOR", "SINGLE", - "YIELD", "USER", "PASSWORD", "ROLE", "MAP", "DECIMAL", "STAR", "L_SKIP", - "INVALID_NOT_EQUAL", "COLON", "DOTDOT", "MINUS", "FACTORIAL", "StringLiteral", - "EscapedChar", "DecimalInteger", "HexLetter", "HexDigit", "Digit", - "NonZeroDigit", "NonZeroOctDigit", "ZeroDigit", "ExponentDecimalReal", - "RegularDecimalReal", "UnescapedSymbolicName", "IdentifierStart", - "IdentifierPart", "EscapedSymbolicName", "SP", "WHITESPACE", "CypherComment", - "FF", "EscapedSymbolicName_0", "RS", "ID_Continue", "Comment_1", - "StringLiteral_1", "Comment_3", "Comment_2", "GS", "FS", "CR", "Sc", - "SPACE", "Pc", "TAB", "StringLiteral_0", "LF", "VT", "US", "ID_Start", - "Unknown", + "ALTER", "ANALYZE", "AND", "AS", "ASC", "ASCENDING", "ATTACH", "BEGIN", + "BY", "CALL", "CASE", "CAST", "CHECKPOINT", "COLUMN", "COMMENT", + "COMMIT", "COMMIT_SKIP_CHECKPOINT", "CONTAINS", "COPY", "COUNT", + "CREATE", "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", "DELETE", "DESC", + "DESCENDING", "DETACH", "DISTINCT", "DROP", "ELSE", "END", "ENDS", + "EXISTS", "EXPLAIN", "EXPORT", "EXTENSION", "FALSE", "FROM", "FORCE", + "FOR", "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", "IMPORT", "INDEX", + "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", "LIMIT", + "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", "MERGE", "MINVALUE", + "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", "ON", "ONLY", + "OPTIONS", "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", "PROJECT", + "READ", "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", + "SEQUENCE", "SET", "SORTED", "SHORTEST", "START", "STARTS", "STRUCT", + "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", + "UNWIND", "UNINSTALL", "UPDATE", "USE", "WHEN", "WHERE", "WITH", + "WRITE", "WSHORTEST", "XOR", "SINGLE", "YIELD", "USER", "PASSWORD", + "ROLE", "MAP", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL", + "COLON", "DOTDOT", "MINUS", "FACTORIAL", "StringLiteral", "EscapedChar", + "DecimalInteger", "HexLetter", "HexDigit", "Digit", "NonZeroDigit", + "NonZeroOctDigit", "ZeroDigit", "ExponentDecimalReal", "RegularDecimalReal", + "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", + "SP", "WHITESPACE", "CypherComment", "FF", "EscapedSymbolicName_0", + "RS", "ID_Continue", "Comment_1", "StringLiteral_1", "Comment_3", + "Comment_2", "GS", "FS", "CR", "Sc", "SPACE", "Pc", "TAB", "StringLiteral_0", + "LF", "VT", "US", "ID_Start", "Unknown", ]; @@ -304,7 +311,7 @@ export class CypherLexer extends antlr.Lexer { public get modeNames(): string[] { return CypherLexer.modeNames; } public static readonly _serializedATN: number[] = [ - 4,0,186,1527,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7, + 4,0,191,1570,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7, 5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12, 2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19, 7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25, @@ -338,245 +345,250 @@ export class CypherLexer extends antlr.Lexer { 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191, 7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196, 2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202, - 7,202,2,203,7,203,2,204,7,204,2,205,7,205,1,0,1,0,1,1,1,1,1,2,1, - 2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1, - 10,1,11,1,11,1,11,1,12,1,12,1,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,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,44,1,44,1,44,1, - 44,1,44,1,44,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47,1, - 47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,50,1, - 50,1,50,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1, - 54,1,54,1,54,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1, - 57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1, - 59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1, - 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1, - 62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, - 63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1, - 64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1, - 66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1, - 68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1, - 69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1, - 73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1, - 74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1, - 76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1, - 78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1, - 81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1, + 7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207, + 2,208,7,208,2,209,7,209,2,210,7,210,1,0,1,0,1,1,1,1,1,2,1,2,1,3, + 1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1, + 11,1,11,1,11,1,12,1,12,1,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,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,44,1,44,1,44,1,44,1, + 44,1,44,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1, + 47,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1, + 49,1,49,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1, + 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1, + 54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1, + 57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1, + 59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1, + 62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1, + 64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1, + 64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1, + 65,1,65,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1, + 68,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1, + 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1, + 71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1, + 73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1, + 75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1, + 76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1, + 78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1, + 81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1, 83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1, - 84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1, - 86,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,89,1, - 89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1, - 91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1, - 93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1,96,1, - 96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1, - 97,1,97,1,97,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100, - 1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102, - 1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104, - 1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105, - 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,107,1,107, - 1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108, - 1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109, - 1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,112, - 1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114, - 1,114,1,114,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117, - 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118, - 1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120, - 1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, - 1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123, - 1,123,1,123,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125, - 1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127, - 1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128, - 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, - 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129, - 1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130, + 85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1, + 86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1, + 88,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1, + 91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1, + 93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1, + 95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,98,1, + 98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,100, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,102, + 1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,104,1,104,1,104, + 1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107, + 1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109, + 1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112, + 1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113, + 1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,116,1,116, + 1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118, + 1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120, + 1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, + 1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124, + 1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126, + 1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,129,1,129, + 1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130, 1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132, - 1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133, - 1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135, - 1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137, - 1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139, + 1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, + 1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135, + 1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,137,1,137, + 1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138, 1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140, - 1,140,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142, - 1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144, - 1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145, - 1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147, - 1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149, - 1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151, - 1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,153, + 1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,143, + 1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144, + 1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145, + 1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147, + 1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149, + 1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150, + 1,150,1,150,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152, 1,153,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154, - 1,154,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,158,1,158, - 1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160, - 1,160,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,163,1,163, - 1,164,1,164,1,164,1,165,1,165,1,166,1,166,1,167,1,167,1,167,5,167, - 1294,8,167,10,167,12,167,1297,9,167,1,167,1,167,1,167,1,167,5,167, - 1303,8,167,10,167,12,167,1306,9,167,1,167,3,167,1309,8,167,1,168, - 1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168, - 1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,3,168, - 1333,8,168,1,169,1,169,1,169,5,169,1338,8,169,10,169,12,169,1341, - 9,169,3,169,1343,8,169,1,170,3,170,1346,8,170,1,171,1,171,3,171, - 1350,8,171,1,172,1,172,3,172,1354,8,172,1,173,1,173,3,173,1358,8, - 173,1,174,1,174,1,175,1,175,1,176,4,176,1365,8,176,11,176,12,176, - 1366,1,176,4,176,1370,8,176,11,176,12,176,1371,1,176,1,176,4,176, - 1376,8,176,11,176,12,176,1377,1,176,1,176,4,176,1382,8,176,11,176, - 12,176,1383,3,176,1386,8,176,1,176,1,176,3,176,1390,8,176,1,176, - 4,176,1393,8,176,11,176,12,176,1394,1,177,5,177,1398,8,177,10,177, - 12,177,1401,9,177,1,177,1,177,4,177,1405,8,177,11,177,12,177,1406, - 1,178,1,178,5,178,1411,8,178,10,178,12,178,1414,9,178,1,179,1,179, - 3,179,1418,8,179,1,180,1,180,3,180,1422,8,180,1,181,1,181,5,181, - 1426,8,181,10,181,12,181,1429,9,181,1,181,4,181,1432,8,181,11,181, - 12,181,1433,1,182,4,182,1437,8,182,11,182,12,182,1438,1,183,1,183, - 1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,3,183, - 1453,8,183,1,184,1,184,1,184,1,184,1,184,1,184,5,184,1461,8,184, - 10,184,12,184,1464,9,184,1,184,1,184,1,184,1,184,1,184,1,184,5,184, - 1472,8,184,10,184,12,184,1475,9,184,1,184,3,184,1478,8,184,1,184, - 1,184,3,184,1482,8,184,3,184,1484,8,184,1,185,1,185,1,186,1,186, - 1,187,1,187,1,188,1,188,1,189,1,189,1,190,1,190,1,191,1,191,1,192, + 1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,158,1,158, + 1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159, + 1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161, + 1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163, + 1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165, + 1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,168,1,168,1,169, + 1,169,1,169,1,170,1,170,1,171,1,171,1,172,1,172,1,172,5,172,1337, + 8,172,10,172,12,172,1340,9,172,1,172,1,172,1,172,1,172,5,172,1346, + 8,172,10,172,12,172,1349,9,172,1,172,3,172,1352,8,172,1,173,1,173, + 1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173, + 1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,3,173,1376, + 8,173,1,174,1,174,1,174,5,174,1381,8,174,10,174,12,174,1384,9,174, + 3,174,1386,8,174,1,175,3,175,1389,8,175,1,176,1,176,3,176,1393,8, + 176,1,177,1,177,3,177,1397,8,177,1,178,1,178,3,178,1401,8,178,1, + 179,1,179,1,180,1,180,1,181,4,181,1408,8,181,11,181,12,181,1409, + 1,181,4,181,1413,8,181,11,181,12,181,1414,1,181,1,181,4,181,1419, + 8,181,11,181,12,181,1420,1,181,1,181,4,181,1425,8,181,11,181,12, + 181,1426,3,181,1429,8,181,1,181,1,181,3,181,1433,8,181,1,181,4,181, + 1436,8,181,11,181,12,181,1437,1,182,5,182,1441,8,182,10,182,12,182, + 1444,9,182,1,182,1,182,4,182,1448,8,182,11,182,12,182,1449,1,183, + 1,183,5,183,1454,8,183,10,183,12,183,1457,9,183,1,184,1,184,3,184, + 1461,8,184,1,185,1,185,3,185,1465,8,185,1,186,1,186,5,186,1469,8, + 186,10,186,12,186,1472,9,186,1,186,4,186,1475,8,186,11,186,12,186, + 1476,1,187,4,187,1480,8,187,11,187,12,187,1481,1,188,1,188,1,188, + 1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,3,188,1496, + 8,188,1,189,1,189,1,189,1,189,1,189,1,189,5,189,1504,8,189,10,189, + 12,189,1507,9,189,1,189,1,189,1,189,1,189,1,189,1,189,5,189,1515, + 8,189,10,189,12,189,1518,9,189,1,189,3,189,1521,8,189,1,189,1,189, + 3,189,1525,8,189,3,189,1527,8,189,1,190,1,190,1,191,1,191,1,192, 1,192,1,193,1,193,1,194,1,194,1,195,1,195,1,196,1,196,1,197,1,197, 1,198,1,198,1,199,1,199,1,200,1,200,1,201,1,201,1,202,1,202,1,203, - 1,203,1,204,1,204,1,205,1,205,0,0,206,1,1,3,2,5,3,7,4,9,5,11,6,13, - 7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18, - 37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29, - 59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40, - 81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101, - 51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60, - 121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139, - 70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79, - 159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177, - 89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98, - 197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213, - 107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229, - 115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245, - 123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261, - 131,263,132,265,133,267,134,269,135,271,136,273,137,275,138,277, - 139,279,140,281,141,283,142,285,143,287,144,289,145,291,146,293, - 147,295,148,297,149,299,150,301,151,303,152,305,153,307,154,309, - 155,311,156,313,157,315,158,317,159,319,160,321,161,323,162,325, - 163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341, - 171,343,172,345,173,347,174,349,175,351,176,353,177,355,178,357, - 179,359,180,361,181,363,182,365,183,367,184,369,185,371,0,373,0, - 375,0,377,0,379,0,381,0,383,0,385,0,387,0,389,0,391,0,393,0,395, - 0,397,0,399,0,401,0,403,0,405,0,407,0,409,0,411,186,1,0,48,2,0,65, - 65,97,97,2,0,67,67,99,99,2,0,89,89,121,121,2,0,76,76,108,108,2,0, - 73,73,105,105,2,0,78,78,110,110,2,0,68,68,100,100,2,0,84,84,116, - 116,2,0,69,69,101,101,2,0,82,82,114,114,2,0,83,83,115,115,2,0,71, - 71,103,103,2,0,72,72,104,104,2,0,66,66,98,98,2,0,75,75,107,107,2, - 0,80,80,112,112,2,0,79,79,111,111,2,0,85,85,117,117,2,0,77,77,109, - 109,2,0,70,70,102,102,2,0,88,88,120,120,2,0,74,74,106,106,2,0,86, - 86,118,118,2,0,81,81,113,113,2,0,87,87,119,119,13,0,34,34,39,39, - 66,66,70,70,78,78,82,82,84,84,92,92,98,98,102,102,110,110,114,114, - 116,116,2,0,65,70,97,102,8,0,160,160,5760,5760,6158,6158,8192,8202, - 8232,8233,8239,8239,8287,8287,12288,12288,1,0,12,12,1,0,96,96,1, - 0,30,30,768,0,48,57,65,90,95,95,97,122,170,170,181,181,183,183,186, - 186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768, - 884,886,887,890,893,895,895,902,906,908,908,910,929,931,1013,1015, - 1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425,1469, - 1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1552, - 1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791, - 1808,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112, - 2139,2144,2154,2160,2183,2185,2190,2200,2273,2275,2403,2406,2415, - 2417,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486, - 2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531, - 2534,2545,2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579, - 2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626, - 2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689, - 2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745, - 2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809, - 2815,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867, - 2869,2873,2876,2884,2887,2888,2891,2893,2901,2903,2908,2909,2911, - 2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965, - 2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006, - 3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084, - 3086,3088,3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157, - 3158,3160,3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212, - 3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274, - 3277,3285,3286,3293,3294,3296,3299,3302,3311,3313,3315,3328,3340, - 3342,3344,3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430, - 3439,3450,3455,3457,3459,3461,3478,3482,3505,3507,3515,3517,3517, - 3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570, - 3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722, - 3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3790,3792, - 3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895, - 3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038, - 4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346, - 4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746, - 4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822, - 4824,4880,4882,4885,4888,4954,4957,4959,4969,4977,4992,5007,5024, - 5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880, - 5888,5909,5919,5940,5952,5971,5984,5996,5998,6000,6002,6003,6016, - 6099,6103,6103,6108,6109,6112,6121,6155,6157,6159,6169,6176,6264, - 6272,6314,6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512, - 6516,6528,6571,6576,6601,6608,6618,6656,6683,6688,6750,6752,6780, - 6783,6793,6800,6809,6823,6823,6832,6845,6847,6862,6912,6988,6992, - 7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304, - 7312,7354,7357,7359,7376,7378,7380,7418,7424,7957,7960,7965,7968, - 8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061, - 8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150, - 8155,8160,8172,8178,8180,8182,8188,8255,8256,8276,8276,8305,8305, - 8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455, - 8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488, - 8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499, - 11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631, - 11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712, - 11718,11720,11726,11728,11734,11736,11742,11744,11775,12293,12295, - 12321,12335,12337,12341,12344,12348,12353,12438,12441,12447,12449, - 12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799, - 13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560, - 42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42954, - 42960,42961,42963,42963,42965,42969,42994,43047,43052,43052,43072, - 43123,43136,43205,43216,43225,43232,43255,43259,43259,43261,43309, - 43312,43347,43360,43388,43392,43456,43471,43481,43488,43518,43520, - 43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741, - 43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808, - 43814,43816,43822,43824,43866,43868,43881,43888,44010,44012,44013, - 44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112, - 64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316, - 64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848, - 64911,64914,64967,65008,65019,65024,65039,65056,65071,65075,65076, - 65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343, - 65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495, - 65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599, - 65613,65616,65629,65664,65786,65856,65908,66045,66045,66176,66204, - 66208,66256,66272,66272,66304,66335,66349,66378,66384,66426,66432, - 66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729, - 66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940, - 66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001, - 67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463, - 67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640, - 67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828, - 67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68099, - 68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159, - 68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405, - 68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800, - 68850,68864,68903,68912,68921,69248,69289,69291,69292,69296,69297, - 69373,69404,69415,69415,69424,69456,69488,69509,69552,69572,69600, - 69622,69632,69702,69734,69749,69759,69818,69826,69826,69840,69864, - 69872,69881,69888,69940,69942,69951,69956,69959,69968,70003,70006, - 70006,70016,70084,70089,70092,70094,70106,70108,70108,70144,70161, - 70163,70199,70206,70209,70272,70278,70280,70280,70282,70285,70287, - 70301,70303,70312,70320,70378,70384,70393,70400,70403,70405,70412, - 70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70459, - 70468,70471,70472,70475,70477,70480,70480,70487,70487,70493,70499, - 70502,70508,70512,70516,70656,70730,70736,70745,70750,70753,70784, - 70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133, - 71168,71232,71236,71236,71248,71257,71296,71352,71360,71369,71424, - 71450,71453,71467,71472,71481,71488,71494,71680,71738,71840,71913, - 71935,71942,71945,71945,71948,71955,71957,71958,71960,71989,71991, - 71992,71995,72003,72016,72025,72096,72103,72106,72151,72154,72161, - 72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72368, - 72440,72704,72712,72714,72758,72760,72768,72784,72793,72818,72847, - 72850,72871,72873,72886,72960,72966,72968,72969,72971,73014,73018, - 73018,73020,73021,73023,73031,73040,73049,73056,73061,73063,73064, - 73066,73102,73104,73105,73107,73112,73120,73129,73440,73462,73472, - 73488,73490,73530,73534,73538,73552,73561,73648,73648,73728,74649, - 74752,74862,74880,75075,77712,77808,77824,78895,78912,78933,82944, - 83526,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873, - 92880,92909,92912,92916,92928,92982,92992,92995,93008,93017,93027, - 93047,93053,93071,93760,93823,93952,94026,94031,94087,94095,94111, - 94176,94177,94179,94180,94192,94193,94208,100343,100352,101589,101632, + 1,203,1,204,1,204,1,205,1,205,1,206,1,206,1,207,1,207,1,208,1,208, + 1,209,1,209,1,210,1,210,0,0,211,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15, + 8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37, + 19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59, + 30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81, + 41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51, + 103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121, + 61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70, + 141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159, + 80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89, + 179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197, + 99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107, + 215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115, + 231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123, + 247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131, + 263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139, + 279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147, + 295,148,297,149,299,150,301,151,303,152,305,153,307,154,309,155, + 311,156,313,157,315,158,317,159,319,160,321,161,323,162,325,163, + 327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171, + 343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179, + 359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187, + 375,188,377,189,379,190,381,0,383,0,385,0,387,0,389,0,391,0,393, + 0,395,0,397,0,399,0,401,0,403,0,405,0,407,0,409,0,411,0,413,0,415, + 0,417,0,419,0,421,191,1,0,49,2,0,65,65,97,97,2,0,67,67,99,99,2,0, + 89,89,121,121,2,0,76,76,108,108,2,0,73,73,105,105,2,0,78,78,110, + 110,2,0,68,68,100,100,2,0,84,84,116,116,2,0,69,69,101,101,2,0,82, + 82,114,114,2,0,90,90,122,122,2,0,83,83,115,115,2,0,71,71,103,103, + 2,0,72,72,104,104,2,0,66,66,98,98,2,0,75,75,107,107,2,0,80,80,112, + 112,2,0,79,79,111,111,2,0,85,85,117,117,2,0,77,77,109,109,2,0,70, + 70,102,102,2,0,88,88,120,120,2,0,74,74,106,106,2,0,86,86,118,118, + 2,0,81,81,113,113,2,0,87,87,119,119,13,0,34,34,39,39,66,66,70,70, + 78,78,82,82,84,84,92,92,98,98,102,102,110,110,114,114,116,116,2, + 0,65,70,97,102,8,0,160,160,5760,5760,6158,6158,8192,8202,8232,8233, + 8239,8239,8287,8287,12288,12288,1,0,12,12,1,0,96,96,1,0,30,30,768, + 0,48,57,65,90,95,95,97,122,170,170,181,181,183,183,186,186,192,214, + 216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887, + 890,893,895,895,902,906,908,908,910,929,931,1013,1015,1153,1155, + 1159,1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471, + 1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1552,1562,1568, + 1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866, + 1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144, + 2154,2160,2183,2185,2190,2200,2273,2275,2403,2406,2415,2417,2435, + 2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492, + 2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545, + 2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602, + 2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632, + 2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693, + 2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757, + 2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815,2817, + 2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873, + 2876,2884,2887,2888,2891,2893,2901,2903,2908,2909,2911,2915,2918, + 2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970, + 2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014, + 3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086,3088, + 3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157,3158,3160, + 3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216, + 3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285, + 3286,3293,3294,3296,3299,3302,3311,3313,3315,3328,3340,3342,3344, + 3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450, + 3455,3457,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526, + 3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3585, + 3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747, + 3749,3749,3751,3773,3776,3780,3782,3782,3784,3790,3792,3801,3804, + 3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897, + 3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096, + 4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680, + 4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752, + 4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880, + 4882,4885,4888,4954,4957,4959,4969,4977,4992,5007,5024,5109,5112, + 5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5909, + 5919,5940,5952,5971,5984,5996,5998,6000,6002,6003,6016,6099,6103, + 6103,6108,6109,6112,6121,6155,6157,6159,6169,6176,6264,6272,6314, + 6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528, + 6571,6576,6601,6608,6618,6656,6683,6688,6750,6752,6780,6783,6793, + 6800,6809,6823,6823,6832,6845,6847,6862,6912,6988,6992,7001,7019, + 7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304,7312,7354, + 7357,7359,7376,7378,7380,7418,7424,7957,7960,7965,7968,8005,8008, + 8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116, + 8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160, + 8172,8178,8180,8182,8188,8255,8256,8276,8276,8305,8305,8319,8319, + 8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458, + 8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490,8505, + 8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11507, + 11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647, + 11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718, + 11720,11726,11728,11734,11736,11742,11744,11775,12293,12295,12321, + 12335,12337,12341,12344,12348,12353,12438,12441,12447,12449,12538, + 12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312, + 19903,19968,42124,42192,42237,42240,42508,42512,42539,42560,42607, + 42612,42621,42623,42737,42775,42783,42786,42888,42891,42954,42960, + 42961,42963,42963,42965,42969,42994,43047,43052,43052,43072,43123, + 43136,43205,43216,43225,43232,43255,43259,43259,43261,43309,43312, + 43347,43360,43388,43392,43456,43471,43481,43488,43518,43520,43574, + 43584,43597,43600,43609,43616,43638,43642,43714,43739,43741,43744, + 43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814, + 43816,43822,43824,43866,43868,43881,43888,44010,44012,44013,44016, + 44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217, + 64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318, + 64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911, + 64914,64967,65008,65019,65024,65039,65056,65071,65075,65076,65101, + 65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343, + 65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498, + 65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613, + 65616,65629,65664,65786,65856,65908,66045,66045,66176,66204,66208, + 66256,66272,66272,66304,66335,66349,66378,66384,66426,66432,66461, + 66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736, + 66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954, + 66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003, + 67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504, + 67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644, + 67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829, + 67840,67861,67872,67897,67968,68023,68030,68031,68096,68099,68101, + 68102,68108,68115,68117,68119,68121,68149,68152,68154,68159,68159, + 68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416, + 68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850, + 68864,68903,68912,68921,69248,69289,69291,69292,69296,69297,69373, + 69404,69415,69415,69424,69456,69488,69509,69552,69572,69600,69622, + 69632,69702,69734,69749,69759,69818,69826,69826,69840,69864,69872, + 69881,69888,69940,69942,69951,69956,69959,69968,70003,70006,70006, + 70016,70084,70089,70092,70094,70106,70108,70108,70144,70161,70163, + 70199,70206,70209,70272,70278,70280,70280,70282,70285,70287,70301, + 70303,70312,70320,70378,70384,70393,70400,70403,70405,70412,70415, + 70416,70419,70440,70442,70448,70450,70451,70453,70457,70459,70468, + 70471,70472,70475,70477,70480,70480,70487,70487,70493,70499,70502, + 70508,70512,70516,70656,70730,70736,70745,70750,70753,70784,70853, + 70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168, + 71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450, + 71453,71467,71472,71481,71488,71494,71680,71738,71840,71913,71935, + 71942,71945,71945,71948,71955,71957,71958,71960,71989,71991,71992, + 71995,72003,72016,72025,72096,72103,72106,72151,72154,72161,72163, + 72164,72192,72254,72263,72263,72272,72345,72349,72349,72368,72440, + 72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850, + 72871,72873,72886,72960,72966,72968,72969,72971,73014,73018,73018, + 73020,73021,73023,73031,73040,73049,73056,73061,73063,73064,73066, + 73102,73104,73105,73107,73112,73120,73129,73440,73462,73472,73488, + 73490,73530,73534,73538,73552,73561,73648,73648,73728,74649,74752, + 74862,74880,75075,77712,77808,77824,78895,78912,78933,82944,83526, + 92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880, + 92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047, + 93053,93071,93760,93823,93952,94026,94031,94087,94095,94111,94176, + 94177,94179,94180,94192,94193,94208,100343,100352,101589,101632, 101640,110576,110579,110581,110587,110589,110590,110592,110882,110898, 110898,110928,110930,110933,110933,110948,110951,110960,111355,113664, 113770,113776,113788,113792,113800,113808,113817,113821,113822,118528, @@ -722,7 +734,7 @@ export class CypherLexer extends antlr.Lexer { 126567,126570,126572,126578,126580,126583,126585,126588,126590,126590, 126592,126601,126603,126619,126625,126627,126629,126633,126635,126651, 131072,173791,173824,177977,177984,178205,178208,183969,183984,191456, - 194560,195101,196608,201546,201552,205743,1552,0,1,1,0,0,0,0,3,1, + 194560,195101,196608,201546,201552,205743,1595,0,1,1,0,0,0,0,3,1, 0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0, 0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0, 0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0, @@ -762,369 +774,380 @@ export class CypherLexer extends antlr.Lexer { 343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0, 0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361, 1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0, - 0,411,1,0,0,0,1,413,1,0,0,0,3,415,1,0,0,0,5,417,1,0,0,0,7,419,1, - 0,0,0,9,421,1,0,0,0,11,423,1,0,0,0,13,425,1,0,0,0,15,427,1,0,0,0, - 17,429,1,0,0,0,19,431,1,0,0,0,21,433,1,0,0,0,23,435,1,0,0,0,25,438, - 1,0,0,0,27,440,1,0,0,0,29,443,1,0,0,0,31,445,1,0,0,0,33,448,1,0, - 0,0,35,450,1,0,0,0,37,453,1,0,0,0,39,456,1,0,0,0,41,458,1,0,0,0, - 43,460,1,0,0,0,45,462,1,0,0,0,47,464,1,0,0,0,49,467,1,0,0,0,51,469, - 1,0,0,0,53,471,1,0,0,0,55,473,1,0,0,0,57,475,1,0,0,0,59,477,1,0, - 0,0,61,479,1,0,0,0,63,481,1,0,0,0,65,483,1,0,0,0,67,485,1,0,0,0, - 69,487,1,0,0,0,71,489,1,0,0,0,73,491,1,0,0,0,75,493,1,0,0,0,77,495, - 1,0,0,0,79,497,1,0,0,0,81,499,1,0,0,0,83,501,1,0,0,0,85,503,1,0, - 0,0,87,505,1,0,0,0,89,507,1,0,0,0,91,515,1,0,0,0,93,519,1,0,0,0, - 95,523,1,0,0,0,97,527,1,0,0,0,99,533,1,0,0,0,101,537,1,0,0,0,103, - 540,1,0,0,0,105,544,1,0,0,0,107,554,1,0,0,0,109,561,1,0,0,0,111, - 567,1,0,0,0,113,570,1,0,0,0,115,575,1,0,0,0,117,580,1,0,0,0,119, - 585,1,0,0,0,121,596,1,0,0,0,123,603,1,0,0,0,125,611,1,0,0,0,127, - 618,1,0,0,0,129,641,1,0,0,0,131,650,1,0,0,0,133,655,1,0,0,0,135, - 661,1,0,0,0,137,668,1,0,0,0,139,674,1,0,0,0,141,683,1,0,0,0,143, - 690,1,0,0,0,145,698,1,0,0,0,147,705,1,0,0,0,149,710,1,0,0,0,151, - 721,1,0,0,0,153,728,1,0,0,0,155,737,1,0,0,0,157,742,1,0,0,0,159, - 747,1,0,0,0,161,751,1,0,0,0,163,756,1,0,0,0,165,763,1,0,0,0,167, - 771,1,0,0,0,169,778,1,0,0,0,171,788,1,0,0,0,173,794,1,0,0,0,175, - 799,1,0,0,0,177,805,1,0,0,0,179,810,1,0,0,0,181,816,1,0,0,0,183, - 822,1,0,0,0,185,830,1,0,0,0,187,835,1,0,0,0,189,842,1,0,0,0,191, - 845,1,0,0,0,193,848,1,0,0,0,195,858,1,0,0,0,197,866,1,0,0,0,199, - 869,1,0,0,0,201,874,1,0,0,0,203,878,1,0,0,0,205,884,1,0,0,0,207, - 889,1,0,0,0,209,897,1,0,0,0,211,903,1,0,0,0,213,909,1,0,0,0,215, - 918,1,0,0,0,217,924,1,0,0,0,219,933,1,0,0,0,221,944,1,0,0,0,223, - 947,1,0,0,0,225,952,1,0,0,0,227,956,1,0,0,0,229,961,1,0,0,0,231, - 966,1,0,0,0,233,969,1,0,0,0,235,974,1,0,0,0,237,983,1,0,0,0,239, - 986,1,0,0,0,241,992,1,0,0,0,243,1000,1,0,0,0,245,1008,1,0,0,0,247, - 1016,1,0,0,0,249,1021,1,0,0,0,251,1025,1,0,0,0,253,1032,1,0,0,0, - 255,1039,1,0,0,0,257,1048,1,0,0,0,259,1073,1,0,0,0,261,1082,1,0, - 0,0,263,1086,1,0,0,0,265,1095,1,0,0,0,267,1101,1,0,0,0,269,1108, - 1,0,0,0,271,1115,1,0,0,0,273,1121,1,0,0,0,275,1126,1,0,0,0,277,1129, - 1,0,0,0,279,1135,1,0,0,0,281,1147,1,0,0,0,283,1152,1,0,0,0,285,1157, - 1,0,0,0,287,1163,1,0,0,0,289,1170,1,0,0,0,291,1180,1,0,0,0,293,1187, - 1,0,0,0,295,1191,1,0,0,0,297,1196,1,0,0,0,299,1202,1,0,0,0,301,1207, - 1,0,0,0,303,1213,1,0,0,0,305,1223,1,0,0,0,307,1227,1,0,0,0,309,1234, - 1,0,0,0,311,1240,1,0,0,0,313,1245,1,0,0,0,315,1254,1,0,0,0,317,1259, - 1,0,0,0,319,1263,1,0,0,0,321,1271,1,0,0,0,323,1273,1,0,0,0,325,1278, - 1,0,0,0,327,1281,1,0,0,0,329,1283,1,0,0,0,331,1286,1,0,0,0,333,1288, - 1,0,0,0,335,1308,1,0,0,0,337,1310,1,0,0,0,339,1342,1,0,0,0,341,1345, - 1,0,0,0,343,1349,1,0,0,0,345,1353,1,0,0,0,347,1357,1,0,0,0,349,1359, - 1,0,0,0,351,1361,1,0,0,0,353,1385,1,0,0,0,355,1399,1,0,0,0,357,1408, - 1,0,0,0,359,1417,1,0,0,0,361,1421,1,0,0,0,363,1431,1,0,0,0,365,1436, - 1,0,0,0,367,1452,1,0,0,0,369,1483,1,0,0,0,371,1485,1,0,0,0,373,1487, - 1,0,0,0,375,1489,1,0,0,0,377,1491,1,0,0,0,379,1493,1,0,0,0,381,1495, - 1,0,0,0,383,1497,1,0,0,0,385,1499,1,0,0,0,387,1501,1,0,0,0,389,1503, - 1,0,0,0,391,1505,1,0,0,0,393,1507,1,0,0,0,395,1509,1,0,0,0,397,1511, - 1,0,0,0,399,1513,1,0,0,0,401,1515,1,0,0,0,403,1517,1,0,0,0,405,1519, - 1,0,0,0,407,1521,1,0,0,0,409,1523,1,0,0,0,411,1525,1,0,0,0,413,414, - 5,59,0,0,414,2,1,0,0,0,415,416,5,40,0,0,416,4,1,0,0,0,417,418,5, - 41,0,0,418,6,1,0,0,0,419,420,5,44,0,0,420,8,1,0,0,0,421,422,5,46, - 0,0,422,10,1,0,0,0,423,424,5,61,0,0,424,12,1,0,0,0,425,426,5,91, - 0,0,426,14,1,0,0,0,427,428,5,93,0,0,428,16,1,0,0,0,429,430,5,123, - 0,0,430,18,1,0,0,0,431,432,5,125,0,0,432,20,1,0,0,0,433,434,5,124, - 0,0,434,22,1,0,0,0,435,436,5,60,0,0,436,437,5,62,0,0,437,24,1,0, - 0,0,438,439,5,60,0,0,439,26,1,0,0,0,440,441,5,60,0,0,441,442,5,61, - 0,0,442,28,1,0,0,0,443,444,5,62,0,0,444,30,1,0,0,0,445,446,5,62, - 0,0,446,447,5,61,0,0,447,32,1,0,0,0,448,449,5,38,0,0,449,34,1,0, - 0,0,450,451,5,62,0,0,451,452,5,62,0,0,452,36,1,0,0,0,453,454,5,60, - 0,0,454,455,5,60,0,0,455,38,1,0,0,0,456,457,5,43,0,0,457,40,1,0, - 0,0,458,459,5,47,0,0,459,42,1,0,0,0,460,461,5,37,0,0,461,44,1,0, - 0,0,462,463,5,94,0,0,463,46,1,0,0,0,464,465,5,61,0,0,465,466,5,126, - 0,0,466,48,1,0,0,0,467,468,5,36,0,0,468,50,1,0,0,0,469,470,5,10216, - 0,0,470,52,1,0,0,0,471,472,5,12296,0,0,472,54,1,0,0,0,473,474,5, - 65124,0,0,474,56,1,0,0,0,475,476,5,65308,0,0,476,58,1,0,0,0,477, - 478,5,10217,0,0,478,60,1,0,0,0,479,480,5,12297,0,0,480,62,1,0,0, - 0,481,482,5,65125,0,0,482,64,1,0,0,0,483,484,5,65310,0,0,484,66, - 1,0,0,0,485,486,5,173,0,0,486,68,1,0,0,0,487,488,5,8208,0,0,488, - 70,1,0,0,0,489,490,5,8209,0,0,490,72,1,0,0,0,491,492,5,8210,0,0, - 492,74,1,0,0,0,493,494,5,8211,0,0,494,76,1,0,0,0,495,496,5,8212, - 0,0,496,78,1,0,0,0,497,498,5,8213,0,0,498,80,1,0,0,0,499,500,5,8722, - 0,0,500,82,1,0,0,0,501,502,5,65112,0,0,502,84,1,0,0,0,503,504,5, - 65123,0,0,504,86,1,0,0,0,505,506,5,65293,0,0,506,88,1,0,0,0,507, - 508,7,0,0,0,508,509,7,1,0,0,509,510,7,2,0,0,510,511,7,1,0,0,511, - 512,7,3,0,0,512,513,7,4,0,0,513,514,7,1,0,0,514,90,1,0,0,0,515,516, - 7,0,0,0,516,517,7,5,0,0,517,518,7,2,0,0,518,92,1,0,0,0,519,520,7, - 0,0,0,520,521,7,6,0,0,521,522,7,6,0,0,522,94,1,0,0,0,523,524,7,0, - 0,0,524,525,7,3,0,0,525,526,7,3,0,0,526,96,1,0,0,0,527,528,7,0,0, - 0,528,529,7,3,0,0,529,530,7,7,0,0,530,531,7,8,0,0,531,532,7,9,0, - 0,532,98,1,0,0,0,533,534,7,0,0,0,534,535,7,5,0,0,535,536,7,6,0,0, - 536,100,1,0,0,0,537,538,7,0,0,0,538,539,7,10,0,0,539,102,1,0,0,0, - 540,541,7,0,0,0,541,542,7,10,0,0,542,543,7,1,0,0,543,104,1,0,0,0, - 544,545,7,0,0,0,545,546,7,10,0,0,546,547,7,1,0,0,547,548,7,8,0,0, - 548,549,7,5,0,0,549,550,7,6,0,0,550,551,7,4,0,0,551,552,7,5,0,0, - 552,553,7,11,0,0,553,106,1,0,0,0,554,555,7,0,0,0,555,556,7,7,0,0, - 556,557,7,7,0,0,557,558,7,0,0,0,558,559,7,1,0,0,559,560,7,12,0,0, - 560,108,1,0,0,0,561,562,7,13,0,0,562,563,7,8,0,0,563,564,7,11,0, - 0,564,565,7,4,0,0,565,566,7,5,0,0,566,110,1,0,0,0,567,568,7,13,0, - 0,568,569,7,2,0,0,569,112,1,0,0,0,570,571,7,1,0,0,571,572,7,0,0, - 0,572,573,7,3,0,0,573,574,7,3,0,0,574,114,1,0,0,0,575,576,7,1,0, - 0,576,577,7,0,0,0,577,578,7,10,0,0,578,579,7,8,0,0,579,116,1,0,0, - 0,580,581,7,1,0,0,581,582,7,0,0,0,582,583,7,10,0,0,583,584,7,7,0, - 0,584,118,1,0,0,0,585,586,7,1,0,0,586,587,7,12,0,0,587,588,7,8,0, - 0,588,589,7,1,0,0,589,590,7,14,0,0,590,591,7,15,0,0,591,592,7,16, - 0,0,592,593,7,4,0,0,593,594,7,5,0,0,594,595,7,7,0,0,595,120,1,0, - 0,0,596,597,7,1,0,0,597,598,7,16,0,0,598,599,7,3,0,0,599,600,7,17, - 0,0,600,601,7,18,0,0,601,602,7,5,0,0,602,122,1,0,0,0,603,604,7,1, - 0,0,604,605,7,16,0,0,605,606,7,18,0,0,606,607,7,18,0,0,607,608,7, - 8,0,0,608,609,7,5,0,0,609,610,7,7,0,0,610,124,1,0,0,0,611,612,7, - 1,0,0,612,613,7,16,0,0,613,614,7,18,0,0,614,615,7,18,0,0,615,616, - 7,4,0,0,616,617,7,7,0,0,617,126,1,0,0,0,618,619,7,1,0,0,619,620, - 7,16,0,0,620,621,7,18,0,0,621,622,7,18,0,0,622,623,7,4,0,0,623,624, - 7,7,0,0,624,625,5,95,0,0,625,626,7,10,0,0,626,627,7,14,0,0,627,628, - 7,4,0,0,628,629,7,15,0,0,629,630,5,95,0,0,630,631,7,1,0,0,631,632, - 7,12,0,0,632,633,7,8,0,0,633,634,7,1,0,0,634,635,7,14,0,0,635,636, - 7,15,0,0,636,637,7,16,0,0,637,638,7,4,0,0,638,639,7,5,0,0,639,640, - 7,7,0,0,640,128,1,0,0,0,641,642,7,1,0,0,642,643,7,16,0,0,643,644, - 7,5,0,0,644,645,7,7,0,0,645,646,7,0,0,0,646,647,7,4,0,0,647,648, - 7,5,0,0,648,649,7,10,0,0,649,130,1,0,0,0,650,651,7,1,0,0,651,652, - 7,16,0,0,652,653,7,15,0,0,653,654,7,2,0,0,654,132,1,0,0,0,655,656, - 7,1,0,0,656,657,7,16,0,0,657,658,7,17,0,0,658,659,7,5,0,0,659,660, - 7,7,0,0,660,134,1,0,0,0,661,662,7,1,0,0,662,663,7,9,0,0,663,664, - 7,8,0,0,664,665,7,0,0,0,665,666,7,7,0,0,666,667,7,8,0,0,667,136, - 1,0,0,0,668,669,7,1,0,0,669,670,7,2,0,0,670,671,7,1,0,0,671,672, - 7,3,0,0,672,673,7,8,0,0,673,138,1,0,0,0,674,675,7,6,0,0,675,676, - 7,0,0,0,676,677,7,7,0,0,677,678,7,0,0,0,678,679,7,13,0,0,679,680, - 7,0,0,0,680,681,7,10,0,0,681,682,7,8,0,0,682,140,1,0,0,0,683,684, - 7,6,0,0,684,685,7,13,0,0,685,686,7,7,0,0,686,687,7,2,0,0,687,688, - 7,15,0,0,688,689,7,8,0,0,689,142,1,0,0,0,690,691,7,6,0,0,691,692, - 7,8,0,0,692,693,7,19,0,0,693,694,7,0,0,0,694,695,7,17,0,0,695,696, - 7,3,0,0,696,697,7,7,0,0,697,144,1,0,0,0,698,699,7,6,0,0,699,700, - 7,8,0,0,700,701,7,3,0,0,701,702,7,8,0,0,702,703,7,7,0,0,703,704, - 7,8,0,0,704,146,1,0,0,0,705,706,7,6,0,0,706,707,7,8,0,0,707,708, - 7,10,0,0,708,709,7,1,0,0,709,148,1,0,0,0,710,711,7,6,0,0,711,712, - 7,8,0,0,712,713,7,10,0,0,713,714,7,1,0,0,714,715,7,8,0,0,715,716, - 7,5,0,0,716,717,7,6,0,0,717,718,7,4,0,0,718,719,7,5,0,0,719,720, - 7,11,0,0,720,150,1,0,0,0,721,722,7,6,0,0,722,723,7,8,0,0,723,724, - 7,7,0,0,724,725,7,0,0,0,725,726,7,1,0,0,726,727,7,12,0,0,727,152, - 1,0,0,0,728,729,7,6,0,0,729,730,7,4,0,0,730,731,7,10,0,0,731,732, - 7,7,0,0,732,733,7,4,0,0,733,734,7,5,0,0,734,735,7,1,0,0,735,736, - 7,7,0,0,736,154,1,0,0,0,737,738,7,6,0,0,738,739,7,9,0,0,739,740, - 7,16,0,0,740,741,7,15,0,0,741,156,1,0,0,0,742,743,7,8,0,0,743,744, - 7,3,0,0,744,745,7,10,0,0,745,746,7,8,0,0,746,158,1,0,0,0,747,748, - 7,8,0,0,748,749,7,5,0,0,749,750,7,6,0,0,750,160,1,0,0,0,751,752, - 7,8,0,0,752,753,7,5,0,0,753,754,7,6,0,0,754,755,7,10,0,0,755,162, - 1,0,0,0,756,757,7,8,0,0,757,758,7,20,0,0,758,759,7,4,0,0,759,760, - 7,10,0,0,760,761,7,7,0,0,761,762,7,10,0,0,762,164,1,0,0,0,763,764, - 7,8,0,0,764,765,7,20,0,0,765,766,7,15,0,0,766,767,7,3,0,0,767,768, - 7,0,0,0,768,769,7,4,0,0,769,770,7,5,0,0,770,166,1,0,0,0,771,772, - 7,8,0,0,772,773,7,20,0,0,773,774,7,15,0,0,774,775,7,16,0,0,775,776, - 7,9,0,0,776,777,7,7,0,0,777,168,1,0,0,0,778,779,7,8,0,0,779,780, - 7,20,0,0,780,781,7,7,0,0,781,782,7,8,0,0,782,783,7,5,0,0,783,784, - 7,10,0,0,784,785,7,4,0,0,785,786,7,16,0,0,786,787,7,5,0,0,787,170, - 1,0,0,0,788,789,7,19,0,0,789,790,7,0,0,0,790,791,7,3,0,0,791,792, - 7,10,0,0,792,793,7,8,0,0,793,172,1,0,0,0,794,795,7,19,0,0,795,796, - 7,9,0,0,796,797,7,16,0,0,797,798,7,18,0,0,798,174,1,0,0,0,799,800, - 7,19,0,0,800,801,7,16,0,0,801,802,7,9,0,0,802,803,7,1,0,0,803,804, - 7,8,0,0,804,176,1,0,0,0,805,806,7,11,0,0,806,807,7,3,0,0,807,808, - 7,16,0,0,808,809,7,13,0,0,809,178,1,0,0,0,810,811,7,11,0,0,811,812, - 7,9,0,0,812,813,7,0,0,0,813,814,7,15,0,0,814,815,7,12,0,0,815,180, - 1,0,0,0,816,817,7,11,0,0,817,818,7,9,0,0,818,819,7,16,0,0,819,820, - 7,17,0,0,820,821,7,15,0,0,821,182,1,0,0,0,822,823,7,12,0,0,823,824, - 7,8,0,0,824,825,7,0,0,0,825,826,7,6,0,0,826,827,7,8,0,0,827,828, - 7,9,0,0,828,829,7,10,0,0,829,184,1,0,0,0,830,831,7,12,0,0,831,832, - 7,4,0,0,832,833,7,5,0,0,833,834,7,7,0,0,834,186,1,0,0,0,835,836, - 7,4,0,0,836,837,7,18,0,0,837,838,7,15,0,0,838,839,7,16,0,0,839,840, - 7,9,0,0,840,841,7,7,0,0,841,188,1,0,0,0,842,843,7,4,0,0,843,844, - 7,19,0,0,844,190,1,0,0,0,845,846,7,4,0,0,846,847,7,5,0,0,847,192, - 1,0,0,0,848,849,7,4,0,0,849,850,7,5,0,0,850,851,7,1,0,0,851,852, - 7,9,0,0,852,853,7,8,0,0,853,854,7,18,0,0,854,855,7,8,0,0,855,856, - 7,5,0,0,856,857,7,7,0,0,857,194,1,0,0,0,858,859,7,4,0,0,859,860, - 7,5,0,0,860,861,7,10,0,0,861,862,7,7,0,0,862,863,7,0,0,0,863,864, - 7,3,0,0,864,865,7,3,0,0,865,196,1,0,0,0,866,867,7,4,0,0,867,868, - 7,10,0,0,868,198,1,0,0,0,869,870,7,21,0,0,870,871,7,16,0,0,871,872, - 7,4,0,0,872,873,7,5,0,0,873,200,1,0,0,0,874,875,7,14,0,0,875,876, - 7,8,0,0,876,877,7,2,0,0,877,202,1,0,0,0,878,879,7,3,0,0,879,880, - 7,4,0,0,880,881,7,18,0,0,881,882,7,4,0,0,882,883,7,7,0,0,883,204, - 1,0,0,0,884,885,7,3,0,0,885,886,7,16,0,0,886,887,7,0,0,0,887,888, - 7,6,0,0,888,206,1,0,0,0,889,890,7,3,0,0,890,891,7,16,0,0,891,892, - 7,11,0,0,892,893,7,4,0,0,893,894,7,1,0,0,894,895,7,0,0,0,895,896, - 7,3,0,0,896,208,1,0,0,0,897,898,7,18,0,0,898,899,7,0,0,0,899,900, - 7,1,0,0,900,901,7,9,0,0,901,902,7,16,0,0,902,210,1,0,0,0,903,904, - 7,18,0,0,904,905,7,0,0,0,905,906,7,7,0,0,906,907,7,1,0,0,907,908, - 7,12,0,0,908,212,1,0,0,0,909,910,7,18,0,0,910,911,7,0,0,0,911,912, - 7,20,0,0,912,913,7,22,0,0,913,914,7,0,0,0,914,915,7,3,0,0,915,916, - 7,17,0,0,916,917,7,8,0,0,917,214,1,0,0,0,918,919,7,18,0,0,919,920, - 7,8,0,0,920,921,7,9,0,0,921,922,7,11,0,0,922,923,7,8,0,0,923,216, - 1,0,0,0,924,925,7,18,0,0,925,926,7,4,0,0,926,927,7,5,0,0,927,928, - 7,22,0,0,928,929,7,0,0,0,929,930,7,3,0,0,930,931,7,17,0,0,931,932, - 7,8,0,0,932,218,1,0,0,0,933,934,7,18,0,0,934,935,7,17,0,0,935,936, - 7,3,0,0,936,937,7,7,0,0,937,938,7,4,0,0,938,939,5,95,0,0,939,940, - 7,21,0,0,940,941,7,16,0,0,941,942,7,4,0,0,942,943,7,5,0,0,943,220, - 1,0,0,0,944,945,7,5,0,0,945,946,7,16,0,0,946,222,1,0,0,0,947,948, - 7,5,0,0,948,949,7,16,0,0,949,950,7,6,0,0,950,951,7,8,0,0,951,224, - 1,0,0,0,952,953,7,5,0,0,953,954,7,16,0,0,954,955,7,7,0,0,955,226, - 1,0,0,0,956,957,7,5,0,0,957,958,7,16,0,0,958,959,7,5,0,0,959,960, - 7,8,0,0,960,228,1,0,0,0,961,962,7,5,0,0,962,963,7,17,0,0,963,964, - 7,3,0,0,964,965,7,3,0,0,965,230,1,0,0,0,966,967,7,16,0,0,967,968, - 7,5,0,0,968,232,1,0,0,0,969,970,7,16,0,0,970,971,7,5,0,0,971,972, - 7,3,0,0,972,973,7,2,0,0,973,234,1,0,0,0,974,975,7,16,0,0,975,976, - 7,15,0,0,976,977,7,7,0,0,977,978,7,4,0,0,978,979,7,16,0,0,979,980, - 7,5,0,0,980,981,7,0,0,0,981,982,7,3,0,0,982,236,1,0,0,0,983,984, - 7,16,0,0,984,985,7,9,0,0,985,238,1,0,0,0,986,987,7,16,0,0,987,988, - 7,9,0,0,988,989,7,6,0,0,989,990,7,8,0,0,990,991,7,9,0,0,991,240, - 1,0,0,0,992,993,7,15,0,0,993,994,7,9,0,0,994,995,7,4,0,0,995,996, - 7,18,0,0,996,997,7,0,0,0,997,998,7,9,0,0,998,999,7,2,0,0,999,242, - 1,0,0,0,1000,1001,7,15,0,0,1001,1002,7,9,0,0,1002,1003,7,16,0,0, - 1003,1004,7,19,0,0,1004,1005,7,4,0,0,1005,1006,7,3,0,0,1006,1007, - 7,8,0,0,1007,244,1,0,0,0,1008,1009,7,15,0,0,1009,1010,7,9,0,0,1010, - 1011,7,16,0,0,1011,1012,7,21,0,0,1012,1013,7,8,0,0,1013,1014,7,1, - 0,0,1014,1015,7,7,0,0,1015,246,1,0,0,0,1016,1017,7,9,0,0,1017,1018, - 7,8,0,0,1018,1019,7,0,0,0,1019,1020,7,6,0,0,1020,248,1,0,0,0,1021, - 1022,7,9,0,0,1022,1023,7,8,0,0,1023,1024,7,3,0,0,1024,250,1,0,0, - 0,1025,1026,7,9,0,0,1026,1027,7,8,0,0,1027,1028,7,5,0,0,1028,1029, - 7,0,0,0,1029,1030,7,18,0,0,1030,1031,7,8,0,0,1031,252,1,0,0,0,1032, - 1033,7,9,0,0,1033,1034,7,8,0,0,1034,1035,7,7,0,0,1035,1036,7,17, - 0,0,1036,1037,7,9,0,0,1037,1038,7,5,0,0,1038,254,1,0,0,0,1039,1040, - 7,9,0,0,1040,1041,7,16,0,0,1041,1042,7,3,0,0,1042,1043,7,3,0,0,1043, - 1044,7,13,0,0,1044,1045,7,0,0,0,1045,1046,7,1,0,0,1046,1047,7,14, - 0,0,1047,256,1,0,0,0,1048,1049,7,9,0,0,1049,1050,7,16,0,0,1050,1051, - 7,3,0,0,1051,1052,7,3,0,0,1052,1053,7,13,0,0,1053,1054,7,0,0,0,1054, - 1055,7,1,0,0,1055,1056,7,14,0,0,1056,1057,5,95,0,0,1057,1058,7,10, - 0,0,1058,1059,7,14,0,0,1059,1060,7,4,0,0,1060,1061,7,15,0,0,1061, - 1062,5,95,0,0,1062,1063,7,1,0,0,1063,1064,7,12,0,0,1064,1065,7,8, - 0,0,1065,1066,7,1,0,0,1066,1067,7,14,0,0,1067,1068,7,15,0,0,1068, - 1069,7,16,0,0,1069,1070,7,4,0,0,1070,1071,7,5,0,0,1071,1072,7,7, - 0,0,1072,258,1,0,0,0,1073,1074,7,10,0,0,1074,1075,7,8,0,0,1075,1076, - 7,23,0,0,1076,1077,7,17,0,0,1077,1078,7,8,0,0,1078,1079,7,5,0,0, - 1079,1080,7,1,0,0,1080,1081,7,8,0,0,1081,260,1,0,0,0,1082,1083,7, - 10,0,0,1083,1084,7,8,0,0,1084,1085,7,7,0,0,1085,262,1,0,0,0,1086, - 1087,7,10,0,0,1087,1088,7,12,0,0,1088,1089,7,16,0,0,1089,1090,7, - 9,0,0,1090,1091,7,7,0,0,1091,1092,7,8,0,0,1092,1093,7,10,0,0,1093, - 1094,7,7,0,0,1094,264,1,0,0,0,1095,1096,7,10,0,0,1096,1097,7,7,0, - 0,1097,1098,7,0,0,0,1098,1099,7,9,0,0,1099,1100,7,7,0,0,1100,266, - 1,0,0,0,1101,1102,7,10,0,0,1102,1103,7,7,0,0,1103,1104,7,0,0,0,1104, - 1105,7,9,0,0,1105,1106,7,7,0,0,1106,1107,7,10,0,0,1107,268,1,0,0, - 0,1108,1109,7,10,0,0,1109,1110,7,7,0,0,1110,1111,7,9,0,0,1111,1112, - 7,17,0,0,1112,1113,7,1,0,0,1113,1114,7,7,0,0,1114,270,1,0,0,0,1115, - 1116,7,7,0,0,1116,1117,7,0,0,0,1117,1118,7,13,0,0,1118,1119,7,3, - 0,0,1119,1120,7,8,0,0,1120,272,1,0,0,0,1121,1122,7,7,0,0,1122,1123, - 7,12,0,0,1123,1124,7,8,0,0,1124,1125,7,5,0,0,1125,274,1,0,0,0,1126, - 1127,7,7,0,0,1127,1128,7,16,0,0,1128,276,1,0,0,0,1129,1130,7,7,0, - 0,1130,1131,7,9,0,0,1131,1132,7,0,0,0,1132,1133,7,4,0,0,1133,1134, - 7,3,0,0,1134,278,1,0,0,0,1135,1136,7,7,0,0,1136,1137,7,9,0,0,1137, - 1138,7,0,0,0,1138,1139,7,5,0,0,1139,1140,7,10,0,0,1140,1141,7,0, - 0,0,1141,1142,7,1,0,0,1142,1143,7,7,0,0,1143,1144,7,4,0,0,1144,1145, - 7,16,0,0,1145,1146,7,5,0,0,1146,280,1,0,0,0,1147,1148,7,7,0,0,1148, - 1149,7,9,0,0,1149,1150,7,17,0,0,1150,1151,7,8,0,0,1151,282,1,0,0, - 0,1152,1153,7,7,0,0,1153,1154,7,2,0,0,1154,1155,7,15,0,0,1155,1156, - 7,8,0,0,1156,284,1,0,0,0,1157,1158,7,17,0,0,1158,1159,7,5,0,0,1159, - 1160,7,4,0,0,1160,1161,7,16,0,0,1161,1162,7,5,0,0,1162,286,1,0,0, - 0,1163,1164,7,17,0,0,1164,1165,7,5,0,0,1165,1166,7,24,0,0,1166,1167, - 7,4,0,0,1167,1168,7,5,0,0,1168,1169,7,6,0,0,1169,288,1,0,0,0,1170, - 1171,7,17,0,0,1171,1172,7,5,0,0,1172,1173,7,4,0,0,1173,1174,7,5, - 0,0,1174,1175,7,10,0,0,1175,1176,7,7,0,0,1176,1177,7,0,0,0,1177, - 1178,7,3,0,0,1178,1179,7,3,0,0,1179,290,1,0,0,0,1180,1181,7,17,0, - 0,1181,1182,7,15,0,0,1182,1183,7,6,0,0,1183,1184,7,0,0,0,1184,1185, - 7,7,0,0,1185,1186,7,8,0,0,1186,292,1,0,0,0,1187,1188,7,17,0,0,1188, - 1189,7,10,0,0,1189,1190,7,8,0,0,1190,294,1,0,0,0,1191,1192,7,24, - 0,0,1192,1193,7,12,0,0,1193,1194,7,8,0,0,1194,1195,7,5,0,0,1195, - 296,1,0,0,0,1196,1197,7,24,0,0,1197,1198,7,12,0,0,1198,1199,7,8, - 0,0,1199,1200,7,9,0,0,1200,1201,7,8,0,0,1201,298,1,0,0,0,1202,1203, - 7,24,0,0,1203,1204,7,4,0,0,1204,1205,7,7,0,0,1205,1206,7,12,0,0, - 1206,300,1,0,0,0,1207,1208,7,24,0,0,1208,1209,7,9,0,0,1209,1210, - 7,4,0,0,1210,1211,7,7,0,0,1211,1212,7,8,0,0,1212,302,1,0,0,0,1213, - 1214,7,24,0,0,1214,1215,7,10,0,0,1215,1216,7,12,0,0,1216,1217,7, - 16,0,0,1217,1218,7,9,0,0,1218,1219,7,7,0,0,1219,1220,7,8,0,0,1220, - 1221,7,10,0,0,1221,1222,7,7,0,0,1222,304,1,0,0,0,1223,1224,7,20, - 0,0,1224,1225,7,16,0,0,1225,1226,7,9,0,0,1226,306,1,0,0,0,1227,1228, - 7,10,0,0,1228,1229,7,4,0,0,1229,1230,7,5,0,0,1230,1231,7,11,0,0, - 1231,1232,7,3,0,0,1232,1233,7,8,0,0,1233,308,1,0,0,0,1234,1235,7, - 2,0,0,1235,1236,7,4,0,0,1236,1237,7,8,0,0,1237,1238,7,3,0,0,1238, - 1239,7,6,0,0,1239,310,1,0,0,0,1240,1241,7,17,0,0,1241,1242,7,10, - 0,0,1242,1243,7,8,0,0,1243,1244,7,9,0,0,1244,312,1,0,0,0,1245,1246, - 7,15,0,0,1246,1247,7,0,0,0,1247,1248,7,10,0,0,1248,1249,7,10,0,0, - 1249,1250,7,24,0,0,1250,1251,7,16,0,0,1251,1252,7,9,0,0,1252,1253, - 7,6,0,0,1253,314,1,0,0,0,1254,1255,7,9,0,0,1255,1256,7,16,0,0,1256, - 1257,7,3,0,0,1257,1258,7,8,0,0,1258,316,1,0,0,0,1259,1260,7,18,0, - 0,1260,1261,7,0,0,0,1261,1262,7,15,0,0,1262,318,1,0,0,0,1263,1264, - 7,6,0,0,1264,1265,7,8,0,0,1265,1266,7,1,0,0,1266,1267,7,4,0,0,1267, - 1268,7,18,0,0,1268,1269,7,0,0,0,1269,1270,7,3,0,0,1270,320,1,0,0, - 0,1271,1272,5,42,0,0,1272,322,1,0,0,0,1273,1274,7,10,0,0,1274,1275, - 7,14,0,0,1275,1276,7,4,0,0,1276,1277,7,15,0,0,1277,324,1,0,0,0,1278, - 1279,5,33,0,0,1279,1280,5,61,0,0,1280,326,1,0,0,0,1281,1282,5,58, - 0,0,1282,328,1,0,0,0,1283,1284,5,46,0,0,1284,1285,5,46,0,0,1285, - 330,1,0,0,0,1286,1287,5,45,0,0,1287,332,1,0,0,0,1288,1289,5,33,0, - 0,1289,334,1,0,0,0,1290,1295,5,34,0,0,1291,1294,3,401,200,0,1292, - 1294,3,337,168,0,1293,1291,1,0,0,0,1293,1292,1,0,0,0,1294,1297,1, - 0,0,0,1295,1293,1,0,0,0,1295,1296,1,0,0,0,1296,1298,1,0,0,0,1297, - 1295,1,0,0,0,1298,1309,5,34,0,0,1299,1304,5,39,0,0,1300,1303,3,381, - 190,0,1301,1303,3,337,168,0,1302,1300,1,0,0,0,1302,1301,1,0,0,0, - 1303,1306,1,0,0,0,1304,1302,1,0,0,0,1304,1305,1,0,0,0,1305,1307, - 1,0,0,0,1306,1304,1,0,0,0,1307,1309,5,39,0,0,1308,1290,1,0,0,0,1308, - 1299,1,0,0,0,1309,336,1,0,0,0,1310,1332,5,92,0,0,1311,1333,7,25, - 0,0,1312,1313,7,20,0,0,1313,1314,3,343,171,0,1314,1315,3,343,171, - 0,1315,1333,1,0,0,0,1316,1317,7,17,0,0,1317,1318,3,343,171,0,1318, - 1319,3,343,171,0,1319,1320,3,343,171,0,1320,1321,3,343,171,0,1321, - 1333,1,0,0,0,1322,1323,7,17,0,0,1323,1324,3,343,171,0,1324,1325, - 3,343,171,0,1325,1326,3,343,171,0,1326,1327,3,343,171,0,1327,1328, - 3,343,171,0,1328,1329,3,343,171,0,1329,1330,3,343,171,0,1330,1331, - 3,343,171,0,1331,1333,1,0,0,0,1332,1311,1,0,0,0,1332,1312,1,0,0, - 0,1332,1316,1,0,0,0,1332,1322,1,0,0,0,1333,338,1,0,0,0,1334,1343, - 3,351,175,0,1335,1339,3,347,173,0,1336,1338,3,345,172,0,1337,1336, - 1,0,0,0,1338,1341,1,0,0,0,1339,1337,1,0,0,0,1339,1340,1,0,0,0,1340, - 1343,1,0,0,0,1341,1339,1,0,0,0,1342,1334,1,0,0,0,1342,1335,1,0,0, - 0,1343,340,1,0,0,0,1344,1346,7,26,0,0,1345,1344,1,0,0,0,1346,342, - 1,0,0,0,1347,1350,3,345,172,0,1348,1350,3,341,170,0,1349,1347,1, - 0,0,0,1349,1348,1,0,0,0,1350,344,1,0,0,0,1351,1354,3,351,175,0,1352, - 1354,3,347,173,0,1353,1351,1,0,0,0,1353,1352,1,0,0,0,1354,346,1, - 0,0,0,1355,1358,3,349,174,0,1356,1358,2,56,57,0,1357,1355,1,0,0, - 0,1357,1356,1,0,0,0,1358,348,1,0,0,0,1359,1360,2,49,55,0,1360,350, - 1,0,0,0,1361,1362,5,48,0,0,1362,352,1,0,0,0,1363,1365,3,345,172, - 0,1364,1363,1,0,0,0,1365,1366,1,0,0,0,1366,1364,1,0,0,0,1366,1367, - 1,0,0,0,1367,1386,1,0,0,0,1368,1370,3,345,172,0,1369,1368,1,0,0, - 0,1370,1371,1,0,0,0,1371,1369,1,0,0,0,1371,1372,1,0,0,0,1372,1373, - 1,0,0,0,1373,1375,5,46,0,0,1374,1376,3,345,172,0,1375,1374,1,0,0, - 0,1376,1377,1,0,0,0,1377,1375,1,0,0,0,1377,1378,1,0,0,0,1378,1386, - 1,0,0,0,1379,1381,5,46,0,0,1380,1382,3,345,172,0,1381,1380,1,0,0, - 0,1382,1383,1,0,0,0,1383,1381,1,0,0,0,1383,1384,1,0,0,0,1384,1386, - 1,0,0,0,1385,1364,1,0,0,0,1385,1369,1,0,0,0,1385,1379,1,0,0,0,1386, - 1387,1,0,0,0,1387,1389,7,8,0,0,1388,1390,5,45,0,0,1389,1388,1,0, - 0,0,1389,1390,1,0,0,0,1390,1392,1,0,0,0,1391,1393,3,345,172,0,1392, - 1391,1,0,0,0,1393,1394,1,0,0,0,1394,1392,1,0,0,0,1394,1395,1,0,0, - 0,1395,354,1,0,0,0,1396,1398,3,345,172,0,1397,1396,1,0,0,0,1398, - 1401,1,0,0,0,1399,1397,1,0,0,0,1399,1400,1,0,0,0,1400,1402,1,0,0, - 0,1401,1399,1,0,0,0,1402,1404,5,46,0,0,1403,1405,3,345,172,0,1404, - 1403,1,0,0,0,1405,1406,1,0,0,0,1406,1404,1,0,0,0,1406,1407,1,0,0, - 0,1407,356,1,0,0,0,1408,1412,3,359,179,0,1409,1411,3,361,180,0,1410, - 1409,1,0,0,0,1411,1414,1,0,0,0,1412,1410,1,0,0,0,1412,1413,1,0,0, - 0,1413,358,1,0,0,0,1414,1412,1,0,0,0,1415,1418,3,409,204,0,1416, - 1418,3,397,198,0,1417,1415,1,0,0,0,1417,1416,1,0,0,0,1418,360,1, - 0,0,0,1419,1422,3,377,188,0,1420,1422,3,393,196,0,1421,1419,1,0, - 0,0,1421,1420,1,0,0,0,1422,362,1,0,0,0,1423,1427,5,96,0,0,1424,1426, - 3,373,186,0,1425,1424,1,0,0,0,1426,1429,1,0,0,0,1427,1425,1,0,0, - 0,1427,1428,1,0,0,0,1428,1430,1,0,0,0,1429,1427,1,0,0,0,1430,1432, - 5,96,0,0,1431,1423,1,0,0,0,1432,1433,1,0,0,0,1433,1431,1,0,0,0,1433, - 1434,1,0,0,0,1434,364,1,0,0,0,1435,1437,3,367,183,0,1436,1435,1, - 0,0,0,1437,1438,1,0,0,0,1438,1436,1,0,0,0,1438,1439,1,0,0,0,1439, - 366,1,0,0,0,1440,1453,3,395,197,0,1441,1453,3,399,199,0,1442,1453, - 3,403,201,0,1443,1453,3,405,202,0,1444,1453,3,371,185,0,1445,1453, - 3,391,195,0,1446,1453,3,389,194,0,1447,1453,3,387,193,0,1448,1453, - 3,375,187,0,1449,1453,3,407,203,0,1450,1453,7,27,0,0,1451,1453,3, - 369,184,0,1452,1440,1,0,0,0,1452,1441,1,0,0,0,1452,1442,1,0,0,0, - 1452,1443,1,0,0,0,1452,1444,1,0,0,0,1452,1445,1,0,0,0,1452,1446, - 1,0,0,0,1452,1447,1,0,0,0,1452,1448,1,0,0,0,1452,1449,1,0,0,0,1452, - 1450,1,0,0,0,1452,1451,1,0,0,0,1453,368,1,0,0,0,1454,1455,5,47,0, - 0,1455,1456,5,42,0,0,1456,1462,1,0,0,0,1457,1461,3,379,189,0,1458, - 1459,5,42,0,0,1459,1461,3,385,192,0,1460,1457,1,0,0,0,1460,1458, - 1,0,0,0,1461,1464,1,0,0,0,1462,1460,1,0,0,0,1462,1463,1,0,0,0,1463, - 1465,1,0,0,0,1464,1462,1,0,0,0,1465,1466,5,42,0,0,1466,1484,5,47, - 0,0,1467,1468,5,47,0,0,1468,1469,5,47,0,0,1469,1473,1,0,0,0,1470, - 1472,3,383,191,0,1471,1470,1,0,0,0,1472,1475,1,0,0,0,1473,1471,1, - 0,0,0,1473,1474,1,0,0,0,1474,1477,1,0,0,0,1475,1473,1,0,0,0,1476, - 1478,3,391,195,0,1477,1476,1,0,0,0,1477,1478,1,0,0,0,1478,1481,1, - 0,0,0,1479,1482,3,403,201,0,1480,1482,5,0,0,1,1481,1479,1,0,0,0, - 1481,1480,1,0,0,0,1482,1484,1,0,0,0,1483,1454,1,0,0,0,1483,1467, - 1,0,0,0,1484,370,1,0,0,0,1485,1486,7,28,0,0,1486,372,1,0,0,0,1487, - 1488,8,29,0,0,1488,374,1,0,0,0,1489,1490,7,30,0,0,1490,376,1,0,0, - 0,1491,1492,7,31,0,0,1492,378,1,0,0,0,1493,1494,8,32,0,0,1494,380, - 1,0,0,0,1495,1496,8,33,0,0,1496,382,1,0,0,0,1497,1498,8,34,0,0,1498, - 384,1,0,0,0,1499,1500,8,35,0,0,1500,386,1,0,0,0,1501,1502,7,36,0, - 0,1502,388,1,0,0,0,1503,1504,7,37,0,0,1504,390,1,0,0,0,1505,1506, - 7,38,0,0,1506,392,1,0,0,0,1507,1508,7,39,0,0,1508,394,1,0,0,0,1509, - 1510,7,40,0,0,1510,396,1,0,0,0,1511,1512,7,41,0,0,1512,398,1,0,0, - 0,1513,1514,7,42,0,0,1514,400,1,0,0,0,1515,1516,8,43,0,0,1516,402, - 1,0,0,0,1517,1518,7,44,0,0,1518,404,1,0,0,0,1519,1520,7,45,0,0,1520, - 406,1,0,0,0,1521,1522,7,46,0,0,1522,408,1,0,0,0,1523,1524,7,47,0, - 0,1524,410,1,0,0,0,1525,1526,9,0,0,0,1526,412,1,0,0,0,35,0,1293, - 1295,1302,1304,1308,1332,1339,1342,1345,1349,1353,1357,1366,1371, - 1377,1383,1385,1389,1394,1399,1406,1412,1417,1421,1427,1433,1438, - 1452,1460,1462,1473,1477,1481,1483,0 + 0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1, + 0,0,0,0,421,1,0,0,0,1,423,1,0,0,0,3,425,1,0,0,0,5,427,1,0,0,0,7, + 429,1,0,0,0,9,431,1,0,0,0,11,433,1,0,0,0,13,435,1,0,0,0,15,437,1, + 0,0,0,17,439,1,0,0,0,19,441,1,0,0,0,21,443,1,0,0,0,23,445,1,0,0, + 0,25,448,1,0,0,0,27,450,1,0,0,0,29,453,1,0,0,0,31,455,1,0,0,0,33, + 458,1,0,0,0,35,460,1,0,0,0,37,463,1,0,0,0,39,466,1,0,0,0,41,468, + 1,0,0,0,43,470,1,0,0,0,45,472,1,0,0,0,47,474,1,0,0,0,49,477,1,0, + 0,0,51,479,1,0,0,0,53,481,1,0,0,0,55,483,1,0,0,0,57,485,1,0,0,0, + 59,487,1,0,0,0,61,489,1,0,0,0,63,491,1,0,0,0,65,493,1,0,0,0,67,495, + 1,0,0,0,69,497,1,0,0,0,71,499,1,0,0,0,73,501,1,0,0,0,75,503,1,0, + 0,0,77,505,1,0,0,0,79,507,1,0,0,0,81,509,1,0,0,0,83,511,1,0,0,0, + 85,513,1,0,0,0,87,515,1,0,0,0,89,517,1,0,0,0,91,525,1,0,0,0,93,529, + 1,0,0,0,95,533,1,0,0,0,97,537,1,0,0,0,99,543,1,0,0,0,101,551,1,0, + 0,0,103,555,1,0,0,0,105,558,1,0,0,0,107,562,1,0,0,0,109,572,1,0, + 0,0,111,579,1,0,0,0,113,585,1,0,0,0,115,588,1,0,0,0,117,593,1,0, + 0,0,119,598,1,0,0,0,121,603,1,0,0,0,123,614,1,0,0,0,125,621,1,0, + 0,0,127,629,1,0,0,0,129,636,1,0,0,0,131,659,1,0,0,0,133,668,1,0, + 0,0,135,673,1,0,0,0,137,679,1,0,0,0,139,686,1,0,0,0,141,692,1,0, + 0,0,143,701,1,0,0,0,145,708,1,0,0,0,147,716,1,0,0,0,149,723,1,0, + 0,0,151,728,1,0,0,0,153,739,1,0,0,0,155,746,1,0,0,0,157,755,1,0, + 0,0,159,760,1,0,0,0,161,765,1,0,0,0,163,769,1,0,0,0,165,774,1,0, + 0,0,167,781,1,0,0,0,169,789,1,0,0,0,171,796,1,0,0,0,173,806,1,0, + 0,0,175,812,1,0,0,0,177,817,1,0,0,0,179,823,1,0,0,0,181,827,1,0, + 0,0,183,832,1,0,0,0,185,838,1,0,0,0,187,844,1,0,0,0,189,852,1,0, + 0,0,191,857,1,0,0,0,193,864,1,0,0,0,195,870,1,0,0,0,197,873,1,0, + 0,0,199,876,1,0,0,0,201,886,1,0,0,0,203,894,1,0,0,0,205,897,1,0, + 0,0,207,902,1,0,0,0,209,906,1,0,0,0,211,912,1,0,0,0,213,917,1,0, + 0,0,215,925,1,0,0,0,217,931,1,0,0,0,219,937,1,0,0,0,221,946,1,0, + 0,0,223,952,1,0,0,0,225,961,1,0,0,0,227,972,1,0,0,0,229,975,1,0, + 0,0,231,980,1,0,0,0,233,984,1,0,0,0,235,989,1,0,0,0,237,994,1,0, + 0,0,239,997,1,0,0,0,241,1002,1,0,0,0,243,1010,1,0,0,0,245,1019,1, + 0,0,0,247,1022,1,0,0,0,249,1028,1,0,0,0,251,1036,1,0,0,0,253,1044, + 1,0,0,0,255,1052,1,0,0,0,257,1057,1,0,0,0,259,1061,1,0,0,0,261,1068, + 1,0,0,0,263,1075,1,0,0,0,265,1084,1,0,0,0,267,1109,1,0,0,0,269,1118, + 1,0,0,0,271,1122,1,0,0,0,273,1129,1,0,0,0,275,1138,1,0,0,0,277,1144, + 1,0,0,0,279,1151,1,0,0,0,281,1158,1,0,0,0,283,1164,1,0,0,0,285,1169, + 1,0,0,0,287,1172,1,0,0,0,289,1178,1,0,0,0,291,1190,1,0,0,0,293,1195, + 1,0,0,0,295,1200,1,0,0,0,297,1206,1,0,0,0,299,1213,1,0,0,0,301,1223, + 1,0,0,0,303,1230,1,0,0,0,305,1234,1,0,0,0,307,1239,1,0,0,0,309,1245, + 1,0,0,0,311,1250,1,0,0,0,313,1256,1,0,0,0,315,1266,1,0,0,0,317,1270, + 1,0,0,0,319,1277,1,0,0,0,321,1283,1,0,0,0,323,1288,1,0,0,0,325,1297, + 1,0,0,0,327,1302,1,0,0,0,329,1306,1,0,0,0,331,1314,1,0,0,0,333,1316, + 1,0,0,0,335,1321,1,0,0,0,337,1324,1,0,0,0,339,1326,1,0,0,0,341,1329, + 1,0,0,0,343,1331,1,0,0,0,345,1351,1,0,0,0,347,1353,1,0,0,0,349,1385, + 1,0,0,0,351,1388,1,0,0,0,353,1392,1,0,0,0,355,1396,1,0,0,0,357,1400, + 1,0,0,0,359,1402,1,0,0,0,361,1404,1,0,0,0,363,1428,1,0,0,0,365,1442, + 1,0,0,0,367,1451,1,0,0,0,369,1460,1,0,0,0,371,1464,1,0,0,0,373,1474, + 1,0,0,0,375,1479,1,0,0,0,377,1495,1,0,0,0,379,1526,1,0,0,0,381,1528, + 1,0,0,0,383,1530,1,0,0,0,385,1532,1,0,0,0,387,1534,1,0,0,0,389,1536, + 1,0,0,0,391,1538,1,0,0,0,393,1540,1,0,0,0,395,1542,1,0,0,0,397,1544, + 1,0,0,0,399,1546,1,0,0,0,401,1548,1,0,0,0,403,1550,1,0,0,0,405,1552, + 1,0,0,0,407,1554,1,0,0,0,409,1556,1,0,0,0,411,1558,1,0,0,0,413,1560, + 1,0,0,0,415,1562,1,0,0,0,417,1564,1,0,0,0,419,1566,1,0,0,0,421,1568, + 1,0,0,0,423,424,5,59,0,0,424,2,1,0,0,0,425,426,5,40,0,0,426,4,1, + 0,0,0,427,428,5,41,0,0,428,6,1,0,0,0,429,430,5,44,0,0,430,8,1,0, + 0,0,431,432,5,46,0,0,432,10,1,0,0,0,433,434,5,61,0,0,434,12,1,0, + 0,0,435,436,5,91,0,0,436,14,1,0,0,0,437,438,5,93,0,0,438,16,1,0, + 0,0,439,440,5,123,0,0,440,18,1,0,0,0,441,442,5,125,0,0,442,20,1, + 0,0,0,443,444,5,124,0,0,444,22,1,0,0,0,445,446,5,60,0,0,446,447, + 5,62,0,0,447,24,1,0,0,0,448,449,5,60,0,0,449,26,1,0,0,0,450,451, + 5,60,0,0,451,452,5,61,0,0,452,28,1,0,0,0,453,454,5,62,0,0,454,30, + 1,0,0,0,455,456,5,62,0,0,456,457,5,61,0,0,457,32,1,0,0,0,458,459, + 5,38,0,0,459,34,1,0,0,0,460,461,5,62,0,0,461,462,5,62,0,0,462,36, + 1,0,0,0,463,464,5,60,0,0,464,465,5,60,0,0,465,38,1,0,0,0,466,467, + 5,43,0,0,467,40,1,0,0,0,468,469,5,47,0,0,469,42,1,0,0,0,470,471, + 5,37,0,0,471,44,1,0,0,0,472,473,5,94,0,0,473,46,1,0,0,0,474,475, + 5,61,0,0,475,476,5,126,0,0,476,48,1,0,0,0,477,478,5,36,0,0,478,50, + 1,0,0,0,479,480,5,10216,0,0,480,52,1,0,0,0,481,482,5,12296,0,0,482, + 54,1,0,0,0,483,484,5,65124,0,0,484,56,1,0,0,0,485,486,5,65308,0, + 0,486,58,1,0,0,0,487,488,5,10217,0,0,488,60,1,0,0,0,489,490,5,12297, + 0,0,490,62,1,0,0,0,491,492,5,65125,0,0,492,64,1,0,0,0,493,494,5, + 65310,0,0,494,66,1,0,0,0,495,496,5,173,0,0,496,68,1,0,0,0,497,498, + 5,8208,0,0,498,70,1,0,0,0,499,500,5,8209,0,0,500,72,1,0,0,0,501, + 502,5,8210,0,0,502,74,1,0,0,0,503,504,5,8211,0,0,504,76,1,0,0,0, + 505,506,5,8212,0,0,506,78,1,0,0,0,507,508,5,8213,0,0,508,80,1,0, + 0,0,509,510,5,8722,0,0,510,82,1,0,0,0,511,512,5,65112,0,0,512,84, + 1,0,0,0,513,514,5,65123,0,0,514,86,1,0,0,0,515,516,5,65293,0,0,516, + 88,1,0,0,0,517,518,7,0,0,0,518,519,7,1,0,0,519,520,7,2,0,0,520,521, + 7,1,0,0,521,522,7,3,0,0,522,523,7,4,0,0,523,524,7,1,0,0,524,90,1, + 0,0,0,525,526,7,0,0,0,526,527,7,5,0,0,527,528,7,2,0,0,528,92,1,0, + 0,0,529,530,7,0,0,0,530,531,7,6,0,0,531,532,7,6,0,0,532,94,1,0,0, + 0,533,534,7,0,0,0,534,535,7,3,0,0,535,536,7,3,0,0,536,96,1,0,0,0, + 537,538,7,0,0,0,538,539,7,3,0,0,539,540,7,7,0,0,540,541,7,8,0,0, + 541,542,7,9,0,0,542,98,1,0,0,0,543,544,7,0,0,0,544,545,7,5,0,0,545, + 546,7,0,0,0,546,547,7,3,0,0,547,548,7,2,0,0,548,549,7,10,0,0,549, + 550,7,8,0,0,550,100,1,0,0,0,551,552,7,0,0,0,552,553,7,5,0,0,553, + 554,7,6,0,0,554,102,1,0,0,0,555,556,7,0,0,0,556,557,7,11,0,0,557, + 104,1,0,0,0,558,559,7,0,0,0,559,560,7,11,0,0,560,561,7,1,0,0,561, + 106,1,0,0,0,562,563,7,0,0,0,563,564,7,11,0,0,564,565,7,1,0,0,565, + 566,7,8,0,0,566,567,7,5,0,0,567,568,7,6,0,0,568,569,7,4,0,0,569, + 570,7,5,0,0,570,571,7,12,0,0,571,108,1,0,0,0,572,573,7,0,0,0,573, + 574,7,7,0,0,574,575,7,7,0,0,575,576,7,0,0,0,576,577,7,1,0,0,577, + 578,7,13,0,0,578,110,1,0,0,0,579,580,7,14,0,0,580,581,7,8,0,0,581, + 582,7,12,0,0,582,583,7,4,0,0,583,584,7,5,0,0,584,112,1,0,0,0,585, + 586,7,14,0,0,586,587,7,2,0,0,587,114,1,0,0,0,588,589,7,1,0,0,589, + 590,7,0,0,0,590,591,7,3,0,0,591,592,7,3,0,0,592,116,1,0,0,0,593, + 594,7,1,0,0,594,595,7,0,0,0,595,596,7,11,0,0,596,597,7,8,0,0,597, + 118,1,0,0,0,598,599,7,1,0,0,599,600,7,0,0,0,600,601,7,11,0,0,601, + 602,7,7,0,0,602,120,1,0,0,0,603,604,7,1,0,0,604,605,7,13,0,0,605, + 606,7,8,0,0,606,607,7,1,0,0,607,608,7,15,0,0,608,609,7,16,0,0,609, + 610,7,17,0,0,610,611,7,4,0,0,611,612,7,5,0,0,612,613,7,7,0,0,613, + 122,1,0,0,0,614,615,7,1,0,0,615,616,7,17,0,0,616,617,7,3,0,0,617, + 618,7,18,0,0,618,619,7,19,0,0,619,620,7,5,0,0,620,124,1,0,0,0,621, + 622,7,1,0,0,622,623,7,17,0,0,623,624,7,19,0,0,624,625,7,19,0,0,625, + 626,7,8,0,0,626,627,7,5,0,0,627,628,7,7,0,0,628,126,1,0,0,0,629, + 630,7,1,0,0,630,631,7,17,0,0,631,632,7,19,0,0,632,633,7,19,0,0,633, + 634,7,4,0,0,634,635,7,7,0,0,635,128,1,0,0,0,636,637,7,1,0,0,637, + 638,7,17,0,0,638,639,7,19,0,0,639,640,7,19,0,0,640,641,7,4,0,0,641, + 642,7,7,0,0,642,643,5,95,0,0,643,644,7,11,0,0,644,645,7,15,0,0,645, + 646,7,4,0,0,646,647,7,16,0,0,647,648,5,95,0,0,648,649,7,1,0,0,649, + 650,7,13,0,0,650,651,7,8,0,0,651,652,7,1,0,0,652,653,7,15,0,0,653, + 654,7,16,0,0,654,655,7,17,0,0,655,656,7,4,0,0,656,657,7,5,0,0,657, + 658,7,7,0,0,658,130,1,0,0,0,659,660,7,1,0,0,660,661,7,17,0,0,661, + 662,7,5,0,0,662,663,7,7,0,0,663,664,7,0,0,0,664,665,7,4,0,0,665, + 666,7,5,0,0,666,667,7,11,0,0,667,132,1,0,0,0,668,669,7,1,0,0,669, + 670,7,17,0,0,670,671,7,16,0,0,671,672,7,2,0,0,672,134,1,0,0,0,673, + 674,7,1,0,0,674,675,7,17,0,0,675,676,7,18,0,0,676,677,7,5,0,0,677, + 678,7,7,0,0,678,136,1,0,0,0,679,680,7,1,0,0,680,681,7,9,0,0,681, + 682,7,8,0,0,682,683,7,0,0,0,683,684,7,7,0,0,684,685,7,8,0,0,685, + 138,1,0,0,0,686,687,7,1,0,0,687,688,7,2,0,0,688,689,7,1,0,0,689, + 690,7,3,0,0,690,691,7,8,0,0,691,140,1,0,0,0,692,693,7,6,0,0,693, + 694,7,0,0,0,694,695,7,7,0,0,695,696,7,0,0,0,696,697,7,14,0,0,697, + 698,7,0,0,0,698,699,7,11,0,0,699,700,7,8,0,0,700,142,1,0,0,0,701, + 702,7,6,0,0,702,703,7,14,0,0,703,704,7,7,0,0,704,705,7,2,0,0,705, + 706,7,16,0,0,706,707,7,8,0,0,707,144,1,0,0,0,708,709,7,6,0,0,709, + 710,7,8,0,0,710,711,7,20,0,0,711,712,7,0,0,0,712,713,7,18,0,0,713, + 714,7,3,0,0,714,715,7,7,0,0,715,146,1,0,0,0,716,717,7,6,0,0,717, + 718,7,8,0,0,718,719,7,3,0,0,719,720,7,8,0,0,720,721,7,7,0,0,721, + 722,7,8,0,0,722,148,1,0,0,0,723,724,7,6,0,0,724,725,7,8,0,0,725, + 726,7,11,0,0,726,727,7,1,0,0,727,150,1,0,0,0,728,729,7,6,0,0,729, + 730,7,8,0,0,730,731,7,11,0,0,731,732,7,1,0,0,732,733,7,8,0,0,733, + 734,7,5,0,0,734,735,7,6,0,0,735,736,7,4,0,0,736,737,7,5,0,0,737, + 738,7,12,0,0,738,152,1,0,0,0,739,740,7,6,0,0,740,741,7,8,0,0,741, + 742,7,7,0,0,742,743,7,0,0,0,743,744,7,1,0,0,744,745,7,13,0,0,745, + 154,1,0,0,0,746,747,7,6,0,0,747,748,7,4,0,0,748,749,7,11,0,0,749, + 750,7,7,0,0,750,751,7,4,0,0,751,752,7,5,0,0,752,753,7,1,0,0,753, + 754,7,7,0,0,754,156,1,0,0,0,755,756,7,6,0,0,756,757,7,9,0,0,757, + 758,7,17,0,0,758,759,7,16,0,0,759,158,1,0,0,0,760,761,7,8,0,0,761, + 762,7,3,0,0,762,763,7,11,0,0,763,764,7,8,0,0,764,160,1,0,0,0,765, + 766,7,8,0,0,766,767,7,5,0,0,767,768,7,6,0,0,768,162,1,0,0,0,769, + 770,7,8,0,0,770,771,7,5,0,0,771,772,7,6,0,0,772,773,7,11,0,0,773, + 164,1,0,0,0,774,775,7,8,0,0,775,776,7,21,0,0,776,777,7,4,0,0,777, + 778,7,11,0,0,778,779,7,7,0,0,779,780,7,11,0,0,780,166,1,0,0,0,781, + 782,7,8,0,0,782,783,7,21,0,0,783,784,7,16,0,0,784,785,7,3,0,0,785, + 786,7,0,0,0,786,787,7,4,0,0,787,788,7,5,0,0,788,168,1,0,0,0,789, + 790,7,8,0,0,790,791,7,21,0,0,791,792,7,16,0,0,792,793,7,17,0,0,793, + 794,7,9,0,0,794,795,7,7,0,0,795,170,1,0,0,0,796,797,7,8,0,0,797, + 798,7,21,0,0,798,799,7,7,0,0,799,800,7,8,0,0,800,801,7,5,0,0,801, + 802,7,11,0,0,802,803,7,4,0,0,803,804,7,17,0,0,804,805,7,5,0,0,805, + 172,1,0,0,0,806,807,7,20,0,0,807,808,7,0,0,0,808,809,7,3,0,0,809, + 810,7,11,0,0,810,811,7,8,0,0,811,174,1,0,0,0,812,813,7,20,0,0,813, + 814,7,9,0,0,814,815,7,17,0,0,815,816,7,19,0,0,816,176,1,0,0,0,817, + 818,7,20,0,0,818,819,7,17,0,0,819,820,7,9,0,0,820,821,7,1,0,0,821, + 822,7,8,0,0,822,178,1,0,0,0,823,824,7,20,0,0,824,825,7,17,0,0,825, + 826,7,9,0,0,826,180,1,0,0,0,827,828,7,12,0,0,828,829,7,3,0,0,829, + 830,7,17,0,0,830,831,7,14,0,0,831,182,1,0,0,0,832,833,7,12,0,0,833, + 834,7,9,0,0,834,835,7,0,0,0,835,836,7,16,0,0,836,837,7,13,0,0,837, + 184,1,0,0,0,838,839,7,12,0,0,839,840,7,9,0,0,840,841,7,17,0,0,841, + 842,7,18,0,0,842,843,7,16,0,0,843,186,1,0,0,0,844,845,7,13,0,0,845, + 846,7,8,0,0,846,847,7,0,0,0,847,848,7,6,0,0,848,849,7,8,0,0,849, + 850,7,9,0,0,850,851,7,11,0,0,851,188,1,0,0,0,852,853,7,13,0,0,853, + 854,7,4,0,0,854,855,7,5,0,0,855,856,7,7,0,0,856,190,1,0,0,0,857, + 858,7,4,0,0,858,859,7,19,0,0,859,860,7,16,0,0,860,861,7,17,0,0,861, + 862,7,9,0,0,862,863,7,7,0,0,863,192,1,0,0,0,864,865,7,4,0,0,865, + 866,7,5,0,0,866,867,7,6,0,0,867,868,7,8,0,0,868,869,7,21,0,0,869, + 194,1,0,0,0,870,871,7,4,0,0,871,872,7,20,0,0,872,196,1,0,0,0,873, + 874,7,4,0,0,874,875,7,5,0,0,875,198,1,0,0,0,876,877,7,4,0,0,877, + 878,7,5,0,0,878,879,7,1,0,0,879,880,7,9,0,0,880,881,7,8,0,0,881, + 882,7,19,0,0,882,883,7,8,0,0,883,884,7,5,0,0,884,885,7,7,0,0,885, + 200,1,0,0,0,886,887,7,4,0,0,887,888,7,5,0,0,888,889,7,11,0,0,889, + 890,7,7,0,0,890,891,7,0,0,0,891,892,7,3,0,0,892,893,7,3,0,0,893, + 202,1,0,0,0,894,895,7,4,0,0,895,896,7,11,0,0,896,204,1,0,0,0,897, + 898,7,22,0,0,898,899,7,17,0,0,899,900,7,4,0,0,900,901,7,5,0,0,901, + 206,1,0,0,0,902,903,7,15,0,0,903,904,7,8,0,0,904,905,7,2,0,0,905, + 208,1,0,0,0,906,907,7,3,0,0,907,908,7,4,0,0,908,909,7,19,0,0,909, + 910,7,4,0,0,910,911,7,7,0,0,911,210,1,0,0,0,912,913,7,3,0,0,913, + 914,7,17,0,0,914,915,7,0,0,0,915,916,7,6,0,0,916,212,1,0,0,0,917, + 918,7,3,0,0,918,919,7,17,0,0,919,920,7,12,0,0,920,921,7,4,0,0,921, + 922,7,1,0,0,922,923,7,0,0,0,923,924,7,3,0,0,924,214,1,0,0,0,925, + 926,7,19,0,0,926,927,7,0,0,0,927,928,7,1,0,0,928,929,7,9,0,0,929, + 930,7,17,0,0,930,216,1,0,0,0,931,932,7,19,0,0,932,933,7,0,0,0,933, + 934,7,7,0,0,934,935,7,1,0,0,935,936,7,13,0,0,936,218,1,0,0,0,937, + 938,7,19,0,0,938,939,7,0,0,0,939,940,7,21,0,0,940,941,7,23,0,0,941, + 942,7,0,0,0,942,943,7,3,0,0,943,944,7,18,0,0,944,945,7,8,0,0,945, + 220,1,0,0,0,946,947,7,19,0,0,947,948,7,8,0,0,948,949,7,9,0,0,949, + 950,7,12,0,0,950,951,7,8,0,0,951,222,1,0,0,0,952,953,7,19,0,0,953, + 954,7,4,0,0,954,955,7,5,0,0,955,956,7,23,0,0,956,957,7,0,0,0,957, + 958,7,3,0,0,958,959,7,18,0,0,959,960,7,8,0,0,960,224,1,0,0,0,961, + 962,7,19,0,0,962,963,7,18,0,0,963,964,7,3,0,0,964,965,7,7,0,0,965, + 966,7,4,0,0,966,967,5,95,0,0,967,968,7,22,0,0,968,969,7,17,0,0,969, + 970,7,4,0,0,970,971,7,5,0,0,971,226,1,0,0,0,972,973,7,5,0,0,973, + 974,7,17,0,0,974,228,1,0,0,0,975,976,7,5,0,0,976,977,7,17,0,0,977, + 978,7,6,0,0,978,979,7,8,0,0,979,230,1,0,0,0,980,981,7,5,0,0,981, + 982,7,17,0,0,982,983,7,7,0,0,983,232,1,0,0,0,984,985,7,5,0,0,985, + 986,7,17,0,0,986,987,7,5,0,0,987,988,7,8,0,0,988,234,1,0,0,0,989, + 990,7,5,0,0,990,991,7,18,0,0,991,992,7,3,0,0,992,993,7,3,0,0,993, + 236,1,0,0,0,994,995,7,17,0,0,995,996,7,5,0,0,996,238,1,0,0,0,997, + 998,7,17,0,0,998,999,7,5,0,0,999,1000,7,3,0,0,1000,1001,7,2,0,0, + 1001,240,1,0,0,0,1002,1003,7,17,0,0,1003,1004,7,16,0,0,1004,1005, + 7,7,0,0,1005,1006,7,4,0,0,1006,1007,7,17,0,0,1007,1008,7,5,0,0,1008, + 1009,7,11,0,0,1009,242,1,0,0,0,1010,1011,7,17,0,0,1011,1012,7,16, + 0,0,1012,1013,7,7,0,0,1013,1014,7,4,0,0,1014,1015,7,17,0,0,1015, + 1016,7,5,0,0,1016,1017,7,0,0,0,1017,1018,7,3,0,0,1018,244,1,0,0, + 0,1019,1020,7,17,0,0,1020,1021,7,9,0,0,1021,246,1,0,0,0,1022,1023, + 7,17,0,0,1023,1024,7,9,0,0,1024,1025,7,6,0,0,1025,1026,7,8,0,0,1026, + 1027,7,9,0,0,1027,248,1,0,0,0,1028,1029,7,16,0,0,1029,1030,7,9,0, + 0,1030,1031,7,4,0,0,1031,1032,7,19,0,0,1032,1033,7,0,0,0,1033,1034, + 7,9,0,0,1034,1035,7,2,0,0,1035,250,1,0,0,0,1036,1037,7,16,0,0,1037, + 1038,7,9,0,0,1038,1039,7,17,0,0,1039,1040,7,20,0,0,1040,1041,7,4, + 0,0,1041,1042,7,3,0,0,1042,1043,7,8,0,0,1043,252,1,0,0,0,1044,1045, + 7,16,0,0,1045,1046,7,9,0,0,1046,1047,7,17,0,0,1047,1048,7,22,0,0, + 1048,1049,7,8,0,0,1049,1050,7,1,0,0,1050,1051,7,7,0,0,1051,254,1, + 0,0,0,1052,1053,7,9,0,0,1053,1054,7,8,0,0,1054,1055,7,0,0,0,1055, + 1056,7,6,0,0,1056,256,1,0,0,0,1057,1058,7,9,0,0,1058,1059,7,8,0, + 0,1059,1060,7,3,0,0,1060,258,1,0,0,0,1061,1062,7,9,0,0,1062,1063, + 7,8,0,0,1063,1064,7,5,0,0,1064,1065,7,0,0,0,1065,1066,7,19,0,0,1066, + 1067,7,8,0,0,1067,260,1,0,0,0,1068,1069,7,9,0,0,1069,1070,7,8,0, + 0,1070,1071,7,7,0,0,1071,1072,7,18,0,0,1072,1073,7,9,0,0,1073,1074, + 7,5,0,0,1074,262,1,0,0,0,1075,1076,7,9,0,0,1076,1077,7,17,0,0,1077, + 1078,7,3,0,0,1078,1079,7,3,0,0,1079,1080,7,14,0,0,1080,1081,7,0, + 0,0,1081,1082,7,1,0,0,1082,1083,7,15,0,0,1083,264,1,0,0,0,1084,1085, + 7,9,0,0,1085,1086,7,17,0,0,1086,1087,7,3,0,0,1087,1088,7,3,0,0,1088, + 1089,7,14,0,0,1089,1090,7,0,0,0,1090,1091,7,1,0,0,1091,1092,7,15, + 0,0,1092,1093,5,95,0,0,1093,1094,7,11,0,0,1094,1095,7,15,0,0,1095, + 1096,7,4,0,0,1096,1097,7,16,0,0,1097,1098,5,95,0,0,1098,1099,7,1, + 0,0,1099,1100,7,13,0,0,1100,1101,7,8,0,0,1101,1102,7,1,0,0,1102, + 1103,7,15,0,0,1103,1104,7,16,0,0,1104,1105,7,17,0,0,1105,1106,7, + 4,0,0,1106,1107,7,5,0,0,1107,1108,7,7,0,0,1108,266,1,0,0,0,1109, + 1110,7,11,0,0,1110,1111,7,8,0,0,1111,1112,7,24,0,0,1112,1113,7,18, + 0,0,1113,1114,7,8,0,0,1114,1115,7,5,0,0,1115,1116,7,1,0,0,1116,1117, + 7,8,0,0,1117,268,1,0,0,0,1118,1119,7,11,0,0,1119,1120,7,8,0,0,1120, + 1121,7,7,0,0,1121,270,1,0,0,0,1122,1123,7,11,0,0,1123,1124,7,17, + 0,0,1124,1125,7,9,0,0,1125,1126,7,7,0,0,1126,1127,7,8,0,0,1127,1128, + 7,6,0,0,1128,272,1,0,0,0,1129,1130,7,11,0,0,1130,1131,7,13,0,0,1131, + 1132,7,17,0,0,1132,1133,7,9,0,0,1133,1134,7,7,0,0,1134,1135,7,8, + 0,0,1135,1136,7,11,0,0,1136,1137,7,7,0,0,1137,274,1,0,0,0,1138,1139, + 7,11,0,0,1139,1140,7,7,0,0,1140,1141,7,0,0,0,1141,1142,7,9,0,0,1142, + 1143,7,7,0,0,1143,276,1,0,0,0,1144,1145,7,11,0,0,1145,1146,7,7,0, + 0,1146,1147,7,0,0,0,1147,1148,7,9,0,0,1148,1149,7,7,0,0,1149,1150, + 7,11,0,0,1150,278,1,0,0,0,1151,1152,7,11,0,0,1152,1153,7,7,0,0,1153, + 1154,7,9,0,0,1154,1155,7,18,0,0,1155,1156,7,1,0,0,1156,1157,7,7, + 0,0,1157,280,1,0,0,0,1158,1159,7,7,0,0,1159,1160,7,0,0,0,1160,1161, + 7,14,0,0,1161,1162,7,3,0,0,1162,1163,7,8,0,0,1163,282,1,0,0,0,1164, + 1165,7,7,0,0,1165,1166,7,13,0,0,1166,1167,7,8,0,0,1167,1168,7,5, + 0,0,1168,284,1,0,0,0,1169,1170,7,7,0,0,1170,1171,7,17,0,0,1171,286, + 1,0,0,0,1172,1173,7,7,0,0,1173,1174,7,9,0,0,1174,1175,7,0,0,0,1175, + 1176,7,4,0,0,1176,1177,7,3,0,0,1177,288,1,0,0,0,1178,1179,7,7,0, + 0,1179,1180,7,9,0,0,1180,1181,7,0,0,0,1181,1182,7,5,0,0,1182,1183, + 7,11,0,0,1183,1184,7,0,0,0,1184,1185,7,1,0,0,1185,1186,7,7,0,0,1186, + 1187,7,4,0,0,1187,1188,7,17,0,0,1188,1189,7,5,0,0,1189,290,1,0,0, + 0,1190,1191,7,7,0,0,1191,1192,7,9,0,0,1192,1193,7,18,0,0,1193,1194, + 7,8,0,0,1194,292,1,0,0,0,1195,1196,7,7,0,0,1196,1197,7,2,0,0,1197, + 1198,7,16,0,0,1198,1199,7,8,0,0,1199,294,1,0,0,0,1200,1201,7,18, + 0,0,1201,1202,7,5,0,0,1202,1203,7,4,0,0,1203,1204,7,17,0,0,1204, + 1205,7,5,0,0,1205,296,1,0,0,0,1206,1207,7,18,0,0,1207,1208,7,5,0, + 0,1208,1209,7,25,0,0,1209,1210,7,4,0,0,1210,1211,7,5,0,0,1211,1212, + 7,6,0,0,1212,298,1,0,0,0,1213,1214,7,18,0,0,1214,1215,7,5,0,0,1215, + 1216,7,4,0,0,1216,1217,7,5,0,0,1217,1218,7,11,0,0,1218,1219,7,7, + 0,0,1219,1220,7,0,0,0,1220,1221,7,3,0,0,1221,1222,7,3,0,0,1222,300, + 1,0,0,0,1223,1224,7,18,0,0,1224,1225,7,16,0,0,1225,1226,7,6,0,0, + 1226,1227,7,0,0,0,1227,1228,7,7,0,0,1228,1229,7,8,0,0,1229,302,1, + 0,0,0,1230,1231,7,18,0,0,1231,1232,7,11,0,0,1232,1233,7,8,0,0,1233, + 304,1,0,0,0,1234,1235,7,25,0,0,1235,1236,7,13,0,0,1236,1237,7,8, + 0,0,1237,1238,7,5,0,0,1238,306,1,0,0,0,1239,1240,7,25,0,0,1240,1241, + 7,13,0,0,1241,1242,7,8,0,0,1242,1243,7,9,0,0,1243,1244,7,8,0,0,1244, + 308,1,0,0,0,1245,1246,7,25,0,0,1246,1247,7,4,0,0,1247,1248,7,7,0, + 0,1248,1249,7,13,0,0,1249,310,1,0,0,0,1250,1251,7,25,0,0,1251,1252, + 7,9,0,0,1252,1253,7,4,0,0,1253,1254,7,7,0,0,1254,1255,7,8,0,0,1255, + 312,1,0,0,0,1256,1257,7,25,0,0,1257,1258,7,11,0,0,1258,1259,7,13, + 0,0,1259,1260,7,17,0,0,1260,1261,7,9,0,0,1261,1262,7,7,0,0,1262, + 1263,7,8,0,0,1263,1264,7,11,0,0,1264,1265,7,7,0,0,1265,314,1,0,0, + 0,1266,1267,7,21,0,0,1267,1268,7,17,0,0,1268,1269,7,9,0,0,1269,316, + 1,0,0,0,1270,1271,7,11,0,0,1271,1272,7,4,0,0,1272,1273,7,5,0,0,1273, + 1274,7,12,0,0,1274,1275,7,3,0,0,1275,1276,7,8,0,0,1276,318,1,0,0, + 0,1277,1278,7,2,0,0,1278,1279,7,4,0,0,1279,1280,7,8,0,0,1280,1281, + 7,3,0,0,1281,1282,7,6,0,0,1282,320,1,0,0,0,1283,1284,7,18,0,0,1284, + 1285,7,11,0,0,1285,1286,7,8,0,0,1286,1287,7,9,0,0,1287,322,1,0,0, + 0,1288,1289,7,16,0,0,1289,1290,7,0,0,0,1290,1291,7,11,0,0,1291,1292, + 7,11,0,0,1292,1293,7,25,0,0,1293,1294,7,17,0,0,1294,1295,7,9,0,0, + 1295,1296,7,6,0,0,1296,324,1,0,0,0,1297,1298,7,9,0,0,1298,1299,7, + 17,0,0,1299,1300,7,3,0,0,1300,1301,7,8,0,0,1301,326,1,0,0,0,1302, + 1303,7,19,0,0,1303,1304,7,0,0,0,1304,1305,7,16,0,0,1305,328,1,0, + 0,0,1306,1307,7,6,0,0,1307,1308,7,8,0,0,1308,1309,7,1,0,0,1309,1310, + 7,4,0,0,1310,1311,7,19,0,0,1311,1312,7,0,0,0,1312,1313,7,3,0,0,1313, + 330,1,0,0,0,1314,1315,5,42,0,0,1315,332,1,0,0,0,1316,1317,7,11,0, + 0,1317,1318,7,15,0,0,1318,1319,7,4,0,0,1319,1320,7,16,0,0,1320,334, + 1,0,0,0,1321,1322,5,33,0,0,1322,1323,5,61,0,0,1323,336,1,0,0,0,1324, + 1325,5,58,0,0,1325,338,1,0,0,0,1326,1327,5,46,0,0,1327,1328,5,46, + 0,0,1328,340,1,0,0,0,1329,1330,5,45,0,0,1330,342,1,0,0,0,1331,1332, + 5,33,0,0,1332,344,1,0,0,0,1333,1338,5,34,0,0,1334,1337,3,411,205, + 0,1335,1337,3,347,173,0,1336,1334,1,0,0,0,1336,1335,1,0,0,0,1337, + 1340,1,0,0,0,1338,1336,1,0,0,0,1338,1339,1,0,0,0,1339,1341,1,0,0, + 0,1340,1338,1,0,0,0,1341,1352,5,34,0,0,1342,1347,5,39,0,0,1343,1346, + 3,391,195,0,1344,1346,3,347,173,0,1345,1343,1,0,0,0,1345,1344,1, + 0,0,0,1346,1349,1,0,0,0,1347,1345,1,0,0,0,1347,1348,1,0,0,0,1348, + 1350,1,0,0,0,1349,1347,1,0,0,0,1350,1352,5,39,0,0,1351,1333,1,0, + 0,0,1351,1342,1,0,0,0,1352,346,1,0,0,0,1353,1375,5,92,0,0,1354,1376, + 7,26,0,0,1355,1356,7,21,0,0,1356,1357,3,353,176,0,1357,1358,3,353, + 176,0,1358,1376,1,0,0,0,1359,1360,7,18,0,0,1360,1361,3,353,176,0, + 1361,1362,3,353,176,0,1362,1363,3,353,176,0,1363,1364,3,353,176, + 0,1364,1376,1,0,0,0,1365,1366,7,18,0,0,1366,1367,3,353,176,0,1367, + 1368,3,353,176,0,1368,1369,3,353,176,0,1369,1370,3,353,176,0,1370, + 1371,3,353,176,0,1371,1372,3,353,176,0,1372,1373,3,353,176,0,1373, + 1374,3,353,176,0,1374,1376,1,0,0,0,1375,1354,1,0,0,0,1375,1355,1, + 0,0,0,1375,1359,1,0,0,0,1375,1365,1,0,0,0,1376,348,1,0,0,0,1377, + 1386,3,361,180,0,1378,1382,3,357,178,0,1379,1381,3,355,177,0,1380, + 1379,1,0,0,0,1381,1384,1,0,0,0,1382,1380,1,0,0,0,1382,1383,1,0,0, + 0,1383,1386,1,0,0,0,1384,1382,1,0,0,0,1385,1377,1,0,0,0,1385,1378, + 1,0,0,0,1386,350,1,0,0,0,1387,1389,7,27,0,0,1388,1387,1,0,0,0,1389, + 352,1,0,0,0,1390,1393,3,355,177,0,1391,1393,3,351,175,0,1392,1390, + 1,0,0,0,1392,1391,1,0,0,0,1393,354,1,0,0,0,1394,1397,3,361,180,0, + 1395,1397,3,357,178,0,1396,1394,1,0,0,0,1396,1395,1,0,0,0,1397,356, + 1,0,0,0,1398,1401,3,359,179,0,1399,1401,2,56,57,0,1400,1398,1,0, + 0,0,1400,1399,1,0,0,0,1401,358,1,0,0,0,1402,1403,2,49,55,0,1403, + 360,1,0,0,0,1404,1405,5,48,0,0,1405,362,1,0,0,0,1406,1408,3,355, + 177,0,1407,1406,1,0,0,0,1408,1409,1,0,0,0,1409,1407,1,0,0,0,1409, + 1410,1,0,0,0,1410,1429,1,0,0,0,1411,1413,3,355,177,0,1412,1411,1, + 0,0,0,1413,1414,1,0,0,0,1414,1412,1,0,0,0,1414,1415,1,0,0,0,1415, + 1416,1,0,0,0,1416,1418,5,46,0,0,1417,1419,3,355,177,0,1418,1417, + 1,0,0,0,1419,1420,1,0,0,0,1420,1418,1,0,0,0,1420,1421,1,0,0,0,1421, + 1429,1,0,0,0,1422,1424,5,46,0,0,1423,1425,3,355,177,0,1424,1423, + 1,0,0,0,1425,1426,1,0,0,0,1426,1424,1,0,0,0,1426,1427,1,0,0,0,1427, + 1429,1,0,0,0,1428,1407,1,0,0,0,1428,1412,1,0,0,0,1428,1422,1,0,0, + 0,1429,1430,1,0,0,0,1430,1432,7,8,0,0,1431,1433,5,45,0,0,1432,1431, + 1,0,0,0,1432,1433,1,0,0,0,1433,1435,1,0,0,0,1434,1436,3,355,177, + 0,1435,1434,1,0,0,0,1436,1437,1,0,0,0,1437,1435,1,0,0,0,1437,1438, + 1,0,0,0,1438,364,1,0,0,0,1439,1441,3,355,177,0,1440,1439,1,0,0,0, + 1441,1444,1,0,0,0,1442,1440,1,0,0,0,1442,1443,1,0,0,0,1443,1445, + 1,0,0,0,1444,1442,1,0,0,0,1445,1447,5,46,0,0,1446,1448,3,355,177, + 0,1447,1446,1,0,0,0,1448,1449,1,0,0,0,1449,1447,1,0,0,0,1449,1450, + 1,0,0,0,1450,366,1,0,0,0,1451,1455,3,369,184,0,1452,1454,3,371,185, + 0,1453,1452,1,0,0,0,1454,1457,1,0,0,0,1455,1453,1,0,0,0,1455,1456, + 1,0,0,0,1456,368,1,0,0,0,1457,1455,1,0,0,0,1458,1461,3,419,209,0, + 1459,1461,3,407,203,0,1460,1458,1,0,0,0,1460,1459,1,0,0,0,1461,370, + 1,0,0,0,1462,1465,3,387,193,0,1463,1465,3,403,201,0,1464,1462,1, + 0,0,0,1464,1463,1,0,0,0,1465,372,1,0,0,0,1466,1470,5,96,0,0,1467, + 1469,3,383,191,0,1468,1467,1,0,0,0,1469,1472,1,0,0,0,1470,1468,1, + 0,0,0,1470,1471,1,0,0,0,1471,1473,1,0,0,0,1472,1470,1,0,0,0,1473, + 1475,5,96,0,0,1474,1466,1,0,0,0,1475,1476,1,0,0,0,1476,1474,1,0, + 0,0,1476,1477,1,0,0,0,1477,374,1,0,0,0,1478,1480,3,377,188,0,1479, + 1478,1,0,0,0,1480,1481,1,0,0,0,1481,1479,1,0,0,0,1481,1482,1,0,0, + 0,1482,376,1,0,0,0,1483,1496,3,405,202,0,1484,1496,3,409,204,0,1485, + 1496,3,413,206,0,1486,1496,3,415,207,0,1487,1496,3,381,190,0,1488, + 1496,3,401,200,0,1489,1496,3,399,199,0,1490,1496,3,397,198,0,1491, + 1496,3,385,192,0,1492,1496,3,417,208,0,1493,1496,7,28,0,0,1494,1496, + 3,379,189,0,1495,1483,1,0,0,0,1495,1484,1,0,0,0,1495,1485,1,0,0, + 0,1495,1486,1,0,0,0,1495,1487,1,0,0,0,1495,1488,1,0,0,0,1495,1489, + 1,0,0,0,1495,1490,1,0,0,0,1495,1491,1,0,0,0,1495,1492,1,0,0,0,1495, + 1493,1,0,0,0,1495,1494,1,0,0,0,1496,378,1,0,0,0,1497,1498,5,47,0, + 0,1498,1499,5,42,0,0,1499,1505,1,0,0,0,1500,1504,3,389,194,0,1501, + 1502,5,42,0,0,1502,1504,3,395,197,0,1503,1500,1,0,0,0,1503,1501, + 1,0,0,0,1504,1507,1,0,0,0,1505,1503,1,0,0,0,1505,1506,1,0,0,0,1506, + 1508,1,0,0,0,1507,1505,1,0,0,0,1508,1509,5,42,0,0,1509,1527,5,47, + 0,0,1510,1511,5,47,0,0,1511,1512,5,47,0,0,1512,1516,1,0,0,0,1513, + 1515,3,393,196,0,1514,1513,1,0,0,0,1515,1518,1,0,0,0,1516,1514,1, + 0,0,0,1516,1517,1,0,0,0,1517,1520,1,0,0,0,1518,1516,1,0,0,0,1519, + 1521,3,401,200,0,1520,1519,1,0,0,0,1520,1521,1,0,0,0,1521,1524,1, + 0,0,0,1522,1525,3,413,206,0,1523,1525,5,0,0,1,1524,1522,1,0,0,0, + 1524,1523,1,0,0,0,1525,1527,1,0,0,0,1526,1497,1,0,0,0,1526,1510, + 1,0,0,0,1527,380,1,0,0,0,1528,1529,7,29,0,0,1529,382,1,0,0,0,1530, + 1531,8,30,0,0,1531,384,1,0,0,0,1532,1533,7,31,0,0,1533,386,1,0,0, + 0,1534,1535,7,32,0,0,1535,388,1,0,0,0,1536,1537,8,33,0,0,1537,390, + 1,0,0,0,1538,1539,8,34,0,0,1539,392,1,0,0,0,1540,1541,8,35,0,0,1541, + 394,1,0,0,0,1542,1543,8,36,0,0,1543,396,1,0,0,0,1544,1545,7,37,0, + 0,1545,398,1,0,0,0,1546,1547,7,38,0,0,1547,400,1,0,0,0,1548,1549, + 7,39,0,0,1549,402,1,0,0,0,1550,1551,7,40,0,0,1551,404,1,0,0,0,1552, + 1553,7,41,0,0,1553,406,1,0,0,0,1554,1555,7,42,0,0,1555,408,1,0,0, + 0,1556,1557,7,43,0,0,1557,410,1,0,0,0,1558,1559,8,44,0,0,1559,412, + 1,0,0,0,1560,1561,7,45,0,0,1561,414,1,0,0,0,1562,1563,7,46,0,0,1563, + 416,1,0,0,0,1564,1565,7,47,0,0,1565,418,1,0,0,0,1566,1567,7,48,0, + 0,1567,420,1,0,0,0,1568,1569,9,0,0,0,1569,422,1,0,0,0,35,0,1336, + 1338,1345,1347,1351,1375,1382,1385,1388,1392,1396,1400,1409,1414, + 1420,1426,1428,1432,1437,1442,1449,1455,1460,1464,1470,1476,1481, + 1495,1503,1505,1516,1520,1524,1526,0 ]; private static __ATN: antlr.ATN; diff --git a/src/utils/CypherParser/CypherParser.ts b/src/utils/CypherParser/CypherParser.ts index 7e9b233..1323418 100644 --- a/src/utils/CypherParser/CypherParser.ts +++ b/src/utils/CypherParser/CypherParser.ts @@ -58,322 +58,341 @@ export class CypherParser extends antlr.Parser { public static readonly ADD = 47; public static readonly ALL = 48; public static readonly ALTER = 49; - public static readonly AND = 50; - public static readonly AS = 51; - public static readonly ASC = 52; - public static readonly ASCENDING = 53; - public static readonly ATTACH = 54; - public static readonly BEGIN = 55; - public static readonly BY = 56; - public static readonly CALL = 57; - public static readonly CASE = 58; - public static readonly CAST = 59; - public static readonly CHECKPOINT = 60; - public static readonly COLUMN = 61; - public static readonly COMMENT = 62; - public static readonly COMMIT = 63; - public static readonly COMMIT_SKIP_CHECKPOINT = 64; - public static readonly CONTAINS = 65; - public static readonly COPY = 66; - public static readonly COUNT = 67; - public static readonly CREATE = 68; - public static readonly CYCLE = 69; - public static readonly DATABASE = 70; - public static readonly DBTYPE = 71; - public static readonly DEFAULT = 72; - public static readonly DELETE = 73; - public static readonly DESC = 74; - public static readonly DESCENDING = 75; - public static readonly DETACH = 76; - public static readonly DISTINCT = 77; - public static readonly DROP = 78; - public static readonly ELSE = 79; - public static readonly END = 80; - public static readonly ENDS = 81; - public static readonly EXISTS = 82; - public static readonly EXPLAIN = 83; - public static readonly EXPORT = 84; - public static readonly EXTENSION = 85; - public static readonly FALSE = 86; - public static readonly FROM = 87; - public static readonly FORCE = 88; - public static readonly GLOB = 89; - public static readonly GRAPH = 90; - public static readonly GROUP = 91; - public static readonly HEADERS = 92; - public static readonly HINT = 93; - public static readonly IMPORT = 94; - public static readonly IF = 95; - public static readonly IN = 96; - public static readonly INCREMENT = 97; - public static readonly INSTALL = 98; - public static readonly IS = 99; - public static readonly JOIN = 100; - public static readonly KEY = 101; - public static readonly LIMIT = 102; - public static readonly LOAD = 103; - public static readonly LOGICAL = 104; - public static readonly MACRO = 105; - public static readonly MATCH = 106; - public static readonly MAXVALUE = 107; - public static readonly MERGE = 108; - public static readonly MINVALUE = 109; - public static readonly MULTI_JOIN = 110; - public static readonly NO = 111; - public static readonly NODE = 112; - public static readonly NOT = 113; - public static readonly NONE = 114; - public static readonly NULL = 115; - public static readonly ON = 116; - public static readonly ONLY = 117; - public static readonly OPTIONAL = 118; - public static readonly OR = 119; - public static readonly ORDER = 120; - public static readonly PRIMARY = 121; - public static readonly PROFILE = 122; - public static readonly PROJECT = 123; - public static readonly READ = 124; - public static readonly REL = 125; - public static readonly RENAME = 126; - public static readonly RETURN = 127; - public static readonly ROLLBACK = 128; - public static readonly ROLLBACK_SKIP_CHECKPOINT = 129; - public static readonly SEQUENCE = 130; - public static readonly SET = 131; - public static readonly SHORTEST = 132; - public static readonly START = 133; - public static readonly STARTS = 134; - public static readonly STRUCT = 135; - public static readonly TABLE = 136; - public static readonly THEN = 137; - public static readonly TO = 138; - public static readonly TRAIL = 139; - public static readonly TRANSACTION = 140; - public static readonly TRUE = 141; - public static readonly TYPE = 142; - public static readonly UNION = 143; - public static readonly UNWIND = 144; - public static readonly UNINSTALL = 145; - public static readonly UPDATE = 146; - public static readonly USE = 147; - public static readonly WHEN = 148; - public static readonly WHERE = 149; - public static readonly WITH = 150; - public static readonly WRITE = 151; - public static readonly WSHORTEST = 152; - public static readonly XOR = 153; - public static readonly SINGLE = 154; - public static readonly YIELD = 155; - public static readonly USER = 156; - public static readonly PASSWORD = 157; - public static readonly ROLE = 158; - public static readonly MAP = 159; - public static readonly DECIMAL = 160; - public static readonly STAR = 161; - public static readonly L_SKIP = 162; - public static readonly INVALID_NOT_EQUAL = 163; - public static readonly COLON = 164; - public static readonly DOTDOT = 165; - public static readonly MINUS = 166; - public static readonly FACTORIAL = 167; - public static readonly StringLiteral = 168; - public static readonly EscapedChar = 169; - public static readonly DecimalInteger = 170; - public static readonly HexLetter = 171; - public static readonly HexDigit = 172; - public static readonly Digit = 173; - public static readonly NonZeroDigit = 174; - public static readonly NonZeroOctDigit = 175; - public static readonly ZeroDigit = 176; - public static readonly ExponentDecimalReal = 177; - public static readonly RegularDecimalReal = 178; - public static readonly UnescapedSymbolicName = 179; - public static readonly IdentifierStart = 180; - public static readonly IdentifierPart = 181; - public static readonly EscapedSymbolicName = 182; - public static readonly SP = 183; - public static readonly WHITESPACE = 184; - public static readonly CypherComment = 185; - public static readonly Unknown = 186; - public static readonly RULE_ku_Statements = 0; + public static readonly ANALYZE = 50; + public static readonly AND = 51; + public static readonly AS = 52; + public static readonly ASC = 53; + public static readonly ASCENDING = 54; + public static readonly ATTACH = 55; + public static readonly BEGIN = 56; + public static readonly BY = 57; + public static readonly CALL = 58; + public static readonly CASE = 59; + public static readonly CAST = 60; + public static readonly CHECKPOINT = 61; + public static readonly COLUMN = 62; + public static readonly COMMENT = 63; + public static readonly COMMIT = 64; + public static readonly COMMIT_SKIP_CHECKPOINT = 65; + public static readonly CONTAINS = 66; + public static readonly COPY = 67; + public static readonly COUNT = 68; + public static readonly CREATE = 69; + public static readonly CYCLE = 70; + public static readonly DATABASE = 71; + public static readonly DBTYPE = 72; + public static readonly DEFAULT = 73; + public static readonly DELETE = 74; + public static readonly DESC = 75; + public static readonly DESCENDING = 76; + public static readonly DETACH = 77; + public static readonly DISTINCT = 78; + public static readonly DROP = 79; + public static readonly ELSE = 80; + public static readonly END = 81; + public static readonly ENDS = 82; + public static readonly EXISTS = 83; + public static readonly EXPLAIN = 84; + public static readonly EXPORT = 85; + public static readonly EXTENSION = 86; + public static readonly FALSE = 87; + public static readonly FROM = 88; + public static readonly FORCE = 89; + public static readonly FOR = 90; + public static readonly GLOB = 91; + public static readonly GRAPH = 92; + public static readonly GROUP = 93; + public static readonly HEADERS = 94; + public static readonly HINT = 95; + public static readonly IMPORT = 96; + public static readonly INDEX = 97; + public static readonly IF = 98; + public static readonly IN = 99; + public static readonly INCREMENT = 100; + public static readonly INSTALL = 101; + public static readonly IS = 102; + public static readonly JOIN = 103; + public static readonly KEY = 104; + public static readonly LIMIT = 105; + public static readonly LOAD = 106; + public static readonly LOGICAL = 107; + public static readonly MACRO = 108; + public static readonly MATCH = 109; + public static readonly MAXVALUE = 110; + public static readonly MERGE = 111; + public static readonly MINVALUE = 112; + public static readonly MULTI_JOIN = 113; + public static readonly NO = 114; + public static readonly NODE = 115; + public static readonly NOT = 116; + public static readonly NONE = 117; + public static readonly NULL = 118; + public static readonly ON = 119; + public static readonly ONLY = 120; + public static readonly OPTIONS = 121; + public static readonly OPTIONAL = 122; + public static readonly OR = 123; + public static readonly ORDER = 124; + public static readonly PRIMARY = 125; + public static readonly PROFILE = 126; + public static readonly PROJECT = 127; + public static readonly READ = 128; + public static readonly REL = 129; + public static readonly RENAME = 130; + public static readonly RETURN = 131; + public static readonly ROLLBACK = 132; + public static readonly ROLLBACK_SKIP_CHECKPOINT = 133; + public static readonly SEQUENCE = 134; + public static readonly SET = 135; + public static readonly SORTED = 136; + public static readonly SHORTEST = 137; + public static readonly START = 138; + public static readonly STARTS = 139; + public static readonly STRUCT = 140; + public static readonly TABLE = 141; + public static readonly THEN = 142; + public static readonly TO = 143; + public static readonly TRAIL = 144; + public static readonly TRANSACTION = 145; + public static readonly TRUE = 146; + public static readonly TYPE = 147; + public static readonly UNION = 148; + public static readonly UNWIND = 149; + public static readonly UNINSTALL = 150; + public static readonly UPDATE = 151; + public static readonly USE = 152; + public static readonly WHEN = 153; + public static readonly WHERE = 154; + public static readonly WITH = 155; + public static readonly WRITE = 156; + public static readonly WSHORTEST = 157; + public static readonly XOR = 158; + public static readonly SINGLE = 159; + public static readonly YIELD = 160; + public static readonly USER = 161; + public static readonly PASSWORD = 162; + public static readonly ROLE = 163; + public static readonly MAP = 164; + public static readonly DECIMAL = 165; + public static readonly STAR = 166; + public static readonly L_SKIP = 167; + public static readonly INVALID_NOT_EQUAL = 168; + public static readonly COLON = 169; + public static readonly DOTDOT = 170; + public static readonly MINUS = 171; + public static readonly FACTORIAL = 172; + public static readonly StringLiteral = 173; + public static readonly EscapedChar = 174; + public static readonly DecimalInteger = 175; + public static readonly HexLetter = 176; + public static readonly HexDigit = 177; + public static readonly Digit = 178; + public static readonly NonZeroDigit = 179; + public static readonly NonZeroOctDigit = 180; + public static readonly ZeroDigit = 181; + public static readonly ExponentDecimalReal = 182; + public static readonly RegularDecimalReal = 183; + public static readonly UnescapedSymbolicName = 184; + public static readonly IdentifierStart = 185; + public static readonly IdentifierPart = 186; + public static readonly EscapedSymbolicName = 187; + public static readonly SP = 188; + public static readonly WHITESPACE = 189; + public static readonly CypherComment = 190; + public static readonly Unknown = 191; + public static readonly RULE_iC_Statements = 0; public static readonly RULE_oC_Cypher = 1; public static readonly RULE_oC_Statement = 2; - public static readonly RULE_kU_CopyFrom = 3; - public static readonly RULE_kU_ColumnNames = 4; - public static readonly RULE_kU_ScanSource = 5; - public static readonly RULE_kU_CopyFromByColumn = 6; - public static readonly RULE_kU_CopyTO = 7; - public static readonly RULE_kU_ExportDatabase = 8; - public static readonly RULE_kU_ImportDatabase = 9; - public static readonly RULE_kU_AttachDatabase = 10; - public static readonly RULE_kU_Option = 11; - public static readonly RULE_kU_Options = 12; - public static readonly RULE_kU_DetachDatabase = 13; - public static readonly RULE_kU_UseDatabase = 14; - public static readonly RULE_kU_StandaloneCall = 15; - public static readonly RULE_kU_CommentOn = 16; - public static readonly RULE_kU_CreateMacro = 17; - public static readonly RULE_kU_PositionalArgs = 18; - public static readonly RULE_kU_DefaultArg = 19; - public static readonly RULE_kU_FilePaths = 20; - public static readonly RULE_kU_IfNotExists = 21; - public static readonly RULE_kU_CreateNodeTable = 22; - public static readonly RULE_kU_CreateRelTable = 23; - public static readonly RULE_kU_FromToConnections = 24; - public static readonly RULE_kU_FromToConnection = 25; - public static readonly RULE_kU_CreateSequence = 26; - public static readonly RULE_kU_CreateType = 27; - public static readonly RULE_kU_SequenceOptions = 28; - public static readonly RULE_kU_WithPasswd = 29; - public static readonly RULE_kU_CreateUser = 30; - public static readonly RULE_kU_CreateRole = 31; - public static readonly RULE_kU_IncrementBy = 32; - public static readonly RULE_kU_MinValue = 33; - public static readonly RULE_kU_MaxValue = 34; - public static readonly RULE_kU_StartWith = 35; - public static readonly RULE_kU_Cycle = 36; - public static readonly RULE_kU_IfExists = 37; - public static readonly RULE_kU_Drop = 38; - public static readonly RULE_kU_AlterTable = 39; - public static readonly RULE_kU_AlterOptions = 40; - public static readonly RULE_kU_AddProperty = 41; - public static readonly RULE_kU_Default = 42; - public static readonly RULE_kU_DropProperty = 43; - public static readonly RULE_kU_RenameTable = 44; - public static readonly RULE_kU_RenameProperty = 45; - public static readonly RULE_kU_AddFromToConnection = 46; - public static readonly RULE_kU_DropFromToConnection = 47; - public static readonly RULE_kU_ColumnDefinitions = 48; - public static readonly RULE_kU_ColumnDefinition = 49; - public static readonly RULE_kU_PropertyDefinitions = 50; - public static readonly RULE_kU_PropertyDefinition = 51; - public static readonly RULE_kU_CreateNodeConstraint = 52; - public static readonly RULE_kU_UnionType = 53; - public static readonly RULE_kU_StructType = 54; - public static readonly RULE_kU_MapType = 55; - public static readonly RULE_kU_DecimalType = 56; - public static readonly RULE_kU_DataType = 57; - public static readonly RULE_kU_ListIdentifiers = 58; - public static readonly RULE_kU_ListIdentifier = 59; - public static readonly RULE_oC_AnyCypherOption = 60; - public static readonly RULE_oC_Explain = 61; - public static readonly RULE_oC_Profile = 62; - public static readonly RULE_kU_Transaction = 63; - public static readonly RULE_kU_Extension = 64; - public static readonly RULE_kU_LoadExtension = 65; - public static readonly RULE_kU_InstallExtension = 66; - public static readonly RULE_kU_UninstallExtension = 67; - public static readonly RULE_kU_UpdateExtension = 68; - public static readonly RULE_oC_Query = 69; - public static readonly RULE_oC_RegularQuery = 70; - public static readonly RULE_oC_Union = 71; - public static readonly RULE_oC_SingleQuery = 72; - public static readonly RULE_oC_SinglePartQuery = 73; - public static readonly RULE_oC_MultiPartQuery = 74; - public static readonly RULE_kU_QueryPart = 75; - public static readonly RULE_oC_UpdatingClause = 76; - public static readonly RULE_oC_ReadingClause = 77; - public static readonly RULE_kU_LoadFrom = 78; - public static readonly RULE_oC_YieldItem = 79; - public static readonly RULE_oC_YieldItems = 80; - public static readonly RULE_kU_InQueryCall = 81; - public static readonly RULE_oC_Match = 82; - public static readonly RULE_kU_Hint = 83; - public static readonly RULE_kU_JoinNode = 84; - public static readonly RULE_oC_Unwind = 85; - public static readonly RULE_oC_Create = 86; - public static readonly RULE_oC_Merge = 87; - public static readonly RULE_oC_MergeAction = 88; - public static readonly RULE_oC_Set = 89; - public static readonly RULE_oC_SetItem = 90; - public static readonly RULE_oC_Delete = 91; - public static readonly RULE_oC_With = 92; - public static readonly RULE_oC_Return = 93; - public static readonly RULE_oC_ProjectionBody = 94; - public static readonly RULE_oC_ProjectionItems = 95; - public static readonly RULE_oC_ProjectionItem = 96; - public static readonly RULE_oC_Order = 97; - public static readonly RULE_oC_Skip = 98; - public static readonly RULE_oC_Limit = 99; - public static readonly RULE_oC_SortItem = 100; - public static readonly RULE_oC_Where = 101; - public static readonly RULE_oC_Pattern = 102; - public static readonly RULE_oC_PatternPart = 103; - public static readonly RULE_oC_AnonymousPatternPart = 104; - public static readonly RULE_oC_PatternElement = 105; - public static readonly RULE_oC_NodePattern = 106; - public static readonly RULE_oC_PatternElementChain = 107; - public static readonly RULE_oC_RelationshipPattern = 108; - public static readonly RULE_oC_RelationshipDetail = 109; - public static readonly RULE_kU_Properties = 110; - public static readonly RULE_oC_RelationshipTypes = 111; - public static readonly RULE_oC_NodeLabels = 112; - public static readonly RULE_kU_RecursiveDetail = 113; - public static readonly RULE_kU_RecursiveType = 114; - public static readonly RULE_oC_RangeLiteral = 115; - public static readonly RULE_kU_RecursiveComprehension = 116; - public static readonly RULE_kU_RecursiveProjectionItems = 117; - public static readonly RULE_oC_LowerBound = 118; - public static readonly RULE_oC_UpperBound = 119; - public static readonly RULE_oC_LabelName = 120; - public static readonly RULE_oC_RelTypeName = 121; - public static readonly RULE_oC_Expression = 122; - public static readonly RULE_oC_OrExpression = 123; - public static readonly RULE_oC_XorExpression = 124; - public static readonly RULE_oC_AndExpression = 125; - public static readonly RULE_oC_NotExpression = 126; - public static readonly RULE_oC_ComparisonExpression = 127; - public static readonly RULE_kU_ComparisonOperator = 128; - public static readonly RULE_kU_BitwiseOrOperatorExpression = 129; - public static readonly RULE_kU_BitwiseAndOperatorExpression = 130; - public static readonly RULE_kU_BitShiftOperatorExpression = 131; - public static readonly RULE_kU_BitShiftOperator = 132; - public static readonly RULE_oC_AddOrSubtractExpression = 133; - public static readonly RULE_kU_AddOrSubtractOperator = 134; - public static readonly RULE_oC_MultiplyDivideModuloExpression = 135; - public static readonly RULE_kU_MultiplyDivideModuloOperator = 136; - public static readonly RULE_oC_PowerOfExpression = 137; - public static readonly RULE_oC_StringListNullOperatorExpression = 138; - public static readonly RULE_oC_ListOperatorExpression = 139; - public static readonly RULE_oC_StringOperatorExpression = 140; - public static readonly RULE_oC_RegularExpression = 141; - public static readonly RULE_oC_NullOperatorExpression = 142; - public static readonly RULE_oC_UnaryAddSubtractOrFactorialExpression = 143; - public static readonly RULE_oC_PropertyOrLabelsExpression = 144; - public static readonly RULE_oC_Atom = 145; - public static readonly RULE_oC_Quantifier = 146; - public static readonly RULE_oC_FilterExpression = 147; - public static readonly RULE_oC_IdInColl = 148; - public static readonly RULE_oC_Literal = 149; - public static readonly RULE_oC_BooleanLiteral = 150; - public static readonly RULE_oC_ListLiteral = 151; - public static readonly RULE_kU_ListEntry = 152; - public static readonly RULE_kU_StructLiteral = 153; - public static readonly RULE_kU_StructField = 154; - public static readonly RULE_oC_ParenthesizedExpression = 155; - public static readonly RULE_oC_FunctionInvocation = 156; - public static readonly RULE_oC_FunctionName = 157; - public static readonly RULE_kU_FunctionParameter = 158; - public static readonly RULE_kU_LambdaParameter = 159; - public static readonly RULE_kU_LambdaVars = 160; - public static readonly RULE_oC_PathPatterns = 161; - public static readonly RULE_oC_ExistCountSubquery = 162; - public static readonly RULE_oC_PropertyLookup = 163; - public static readonly RULE_oC_CaseExpression = 164; - public static readonly RULE_oC_CaseAlternative = 165; - public static readonly RULE_oC_Variable = 166; - public static readonly RULE_oC_NumberLiteral = 167; - public static readonly RULE_oC_Parameter = 168; - public static readonly RULE_oC_PropertyExpression = 169; - public static readonly RULE_oC_PropertyKeyName = 170; - public static readonly RULE_oC_IntegerLiteral = 171; - public static readonly RULE_oC_DoubleLiteral = 172; - public static readonly RULE_oC_SchemaName = 173; - public static readonly RULE_oC_SymbolicName = 174; - public static readonly RULE_kU_NonReservedKeywords = 175; - public static readonly RULE_oC_LeftArrowHead = 176; - public static readonly RULE_oC_RightArrowHead = 177; - public static readonly RULE_oC_Dash = 178; + public static readonly RULE_iC_CopyFrom = 3; + public static readonly RULE_iC_ColumnNames = 4; + public static readonly RULE_iC_ScanSource = 5; + public static readonly RULE_iC_CopyFromByColumn = 6; + public static readonly RULE_iC_CopyTO = 7; + public static readonly RULE_iC_ExportDatabase = 8; + public static readonly RULE_iC_ImportDatabase = 9; + public static readonly RULE_iC_AttachDatabase = 10; + public static readonly RULE_iC_Option = 11; + public static readonly RULE_iC_OptionQualifier = 12; + public static readonly RULE_iC_Options = 13; + public static readonly RULE_iC_DetachDatabase = 14; + public static readonly RULE_iC_UseDatabase = 15; + public static readonly RULE_iC_CreateGraph = 16; + public static readonly RULE_iC_UseGraph = 17; + public static readonly RULE_iC_Analyze = 18; + public static readonly RULE_iC_StandaloneCall = 19; + public static readonly RULE_iC_CommentOn = 20; + public static readonly RULE_iC_CreateMacro = 21; + public static readonly RULE_iC_PositionalArgs = 22; + public static readonly RULE_iC_DefaultArg = 23; + public static readonly RULE_iC_FilePaths = 24; + public static readonly RULE_iC_IfNotExists = 25; + public static readonly RULE_iC_CreateNodeTable = 26; + public static readonly RULE_iC_CreateRelTable = 27; + public static readonly RULE_iC_CreateIndex = 28; + public static readonly RULE_iC_IndexPattern = 29; + public static readonly RULE_iC_IndexNodePattern = 30; + public static readonly RULE_iC_IndexRelationshipPattern = 31; + public static readonly RULE_iC_IndexPropertyPattern = 32; + public static readonly RULE_iC_CreateFromToConnections = 33; + public static readonly RULE_iC_CreateFromToConnection = 34; + public static readonly RULE_iC_FromToConnections = 35; + public static readonly RULE_iC_FromToConnection = 36; + public static readonly RULE_iC_CreateSequence = 37; + public static readonly RULE_iC_CreateType = 38; + public static readonly RULE_iC_SequenceOptions = 39; + public static readonly RULE_iC_WithPasswd = 40; + public static readonly RULE_iC_CreateUser = 41; + public static readonly RULE_iC_CreateRole = 42; + public static readonly RULE_iC_IncrementBy = 43; + public static readonly RULE_iC_MinValue = 44; + public static readonly RULE_iC_MaxValue = 45; + public static readonly RULE_iC_StartWith = 46; + public static readonly RULE_iC_Cycle = 47; + public static readonly RULE_iC_IfExists = 48; + public static readonly RULE_iC_Drop = 49; + public static readonly RULE_iC_DropIndexName = 50; + public static readonly RULE_iC_AlterTable = 51; + public static readonly RULE_iC_AlterOptions = 52; + public static readonly RULE_iC_AddProperty = 53; + public static readonly RULE_iC_Default = 54; + public static readonly RULE_iC_DropProperty = 55; + public static readonly RULE_iC_RenameTable = 56; + public static readonly RULE_iC_RenameProperty = 57; + public static readonly RULE_iC_AddFromToConnection = 58; + public static readonly RULE_iC_DropFromToConnection = 59; + public static readonly RULE_iC_SetSortedBy = 60; + public static readonly RULE_iC_SortedByItem = 61; + public static readonly RULE_iC_ColumnDefinitions = 62; + public static readonly RULE_iC_ColumnDefinition = 63; + public static readonly RULE_iC_PropertyDefinitions = 64; + public static readonly RULE_iC_PropertyDefinition = 65; + public static readonly RULE_iC_CreateNodeConstraint = 66; + public static readonly RULE_iC_UnionType = 67; + public static readonly RULE_iC_StructType = 68; + public static readonly RULE_iC_MapType = 69; + public static readonly RULE_iC_DecimalType = 70; + public static readonly RULE_iC_DataType = 71; + public static readonly RULE_iC_ListIdentifiers = 72; + public static readonly RULE_iC_ListIdentifier = 73; + public static readonly RULE_oC_AnyCypherOption = 74; + public static readonly RULE_oC_Explain = 75; + public static readonly RULE_oC_Profile = 76; + public static readonly RULE_iC_Transaction = 77; + public static readonly RULE_iC_Extension = 78; + public static readonly RULE_iC_LoadExtension = 79; + public static readonly RULE_iC_InstallExtension = 80; + public static readonly RULE_iC_UninstallExtension = 81; + public static readonly RULE_iC_UpdateExtension = 82; + public static readonly RULE_oC_Query = 83; + public static readonly RULE_oC_RegularQuery = 84; + public static readonly RULE_oC_Union = 85; + public static readonly RULE_oC_SingleQuery = 86; + public static readonly RULE_oC_SinglePartQuery = 87; + public static readonly RULE_oC_MultiPartQuery = 88; + public static readonly RULE_iC_QueryPart = 89; + public static readonly RULE_oC_UpdatingClause = 90; + public static readonly RULE_oC_ReadingClause = 91; + public static readonly RULE_iC_LoadFrom = 92; + public static readonly RULE_oC_YieldItem = 93; + public static readonly RULE_oC_YieldItems = 94; + public static readonly RULE_iC_InQueryCall = 95; + public static readonly RULE_oC_Match = 96; + public static readonly RULE_iC_Hint = 97; + public static readonly RULE_iC_JoinNode = 98; + public static readonly RULE_oC_Unwind = 99; + public static readonly RULE_oC_Create = 100; + public static readonly RULE_oC_Merge = 101; + public static readonly RULE_oC_MergeAction = 102; + public static readonly RULE_oC_Set = 103; + public static readonly RULE_oC_SetItem = 104; + public static readonly RULE_oC_Delete = 105; + public static readonly RULE_oC_With = 106; + public static readonly RULE_oC_Return = 107; + public static readonly RULE_oC_ProjectionBody = 108; + public static readonly RULE_oC_ProjectionItems = 109; + public static readonly RULE_oC_ProjectionItem = 110; + public static readonly RULE_oC_Order = 111; + public static readonly RULE_oC_Skip = 112; + public static readonly RULE_oC_Limit = 113; + public static readonly RULE_oC_SortItem = 114; + public static readonly RULE_oC_Where = 115; + public static readonly RULE_oC_Pattern = 116; + public static readonly RULE_oC_PatternPart = 117; + public static readonly RULE_oC_AnonymousPatternPart = 118; + public static readonly RULE_oC_PatternElement = 119; + public static readonly RULE_oC_NodePattern = 120; + public static readonly RULE_oC_PatternElementChain = 121; + public static readonly RULE_oC_RelationshipPattern = 122; + public static readonly RULE_oC_RelationshipDetail = 123; + public static readonly RULE_iC_Properties = 124; + public static readonly RULE_oC_RelationshipTypes = 125; + public static readonly RULE_oC_NodeLabels = 126; + public static readonly RULE_iC_RecursiveDetail = 127; + public static readonly RULE_iC_RecursiveType = 128; + public static readonly RULE_oC_RangeLiteral = 129; + public static readonly RULE_iC_RecursiveComprehension = 130; + public static readonly RULE_iC_RecursiveProjectionItems = 131; + public static readonly RULE_oC_LowerBound = 132; + public static readonly RULE_oC_UpperBound = 133; + public static readonly RULE_oC_LabelName = 134; + public static readonly RULE_oC_RelTypeName = 135; + public static readonly RULE_oC_Expression = 136; + public static readonly RULE_oC_OrExpression = 137; + public static readonly RULE_oC_XorExpression = 138; + public static readonly RULE_oC_AndExpression = 139; + public static readonly RULE_oC_NotExpression = 140; + public static readonly RULE_oC_ComparisonExpression = 141; + public static readonly RULE_iC_ComparisonOperator = 142; + public static readonly RULE_iC_BitwiseOrOperatorExpression = 143; + public static readonly RULE_iC_BitwiseAndOperatorExpression = 144; + public static readonly RULE_iC_BitShiftOperatorExpression = 145; + public static readonly RULE_iC_BitShiftOperator = 146; + public static readonly RULE_oC_AddOrSubtractExpression = 147; + public static readonly RULE_iC_AddOrSubtractOperator = 148; + public static readonly RULE_oC_MultiplyDivideModuloExpression = 149; + public static readonly RULE_iC_MultiplyDivideModuloOperator = 150; + public static readonly RULE_oC_PowerOfExpression = 151; + public static readonly RULE_oC_StringListNullOperatorExpression = 152; + public static readonly RULE_oC_ListOperatorExpression = 153; + public static readonly RULE_oC_StringOperatorExpression = 154; + public static readonly RULE_oC_RegularExpression = 155; + public static readonly RULE_oC_NullOperatorExpression = 156; + public static readonly RULE_oC_UnaryAddSubtractOrFactorialExpression = 157; + public static readonly RULE_oC_PropertyOrLabelsExpression = 158; + public static readonly RULE_oC_Atom = 159; + public static readonly RULE_oC_Quantifier = 160; + public static readonly RULE_oC_FilterExpression = 161; + public static readonly RULE_oC_IdInColl = 162; + public static readonly RULE_oC_Literal = 163; + public static readonly RULE_oC_BooleanLiteral = 164; + public static readonly RULE_oC_ListLiteral = 165; + public static readonly RULE_iC_ListEntry = 166; + public static readonly RULE_iC_StructLiteral = 167; + public static readonly RULE_iC_StructField = 168; + public static readonly RULE_oC_ParenthesizedExpression = 169; + public static readonly RULE_oC_FunctionInvocation = 170; + public static readonly RULE_oC_FunctionName = 171; + public static readonly RULE_iC_FunctionParameter = 172; + public static readonly RULE_iC_LambdaParameter = 173; + public static readonly RULE_iC_LambdaVars = 174; + public static readonly RULE_oC_PathPatterns = 175; + public static readonly RULE_oC_ExistCountSubquery = 176; + public static readonly RULE_oC_PropertyLookup = 177; + public static readonly RULE_oC_CaseExpression = 178; + public static readonly RULE_oC_CaseAlternative = 179; + public static readonly RULE_oC_Variable = 180; + public static readonly RULE_oC_NumberLiteral = 181; + public static readonly RULE_oC_Parameter = 182; + public static readonly RULE_oC_PropertyExpression = 183; + public static readonly RULE_oC_PropertyKeyName = 184; + public static readonly RULE_oC_IntegerLiteral = 185; + public static readonly RULE_oC_DoubleLiteral = 186; + public static readonly RULE_oC_SchemaName = 187; + public static readonly RULE_oC_SymbolicName = 188; + public static readonly RULE_iC_NonReservedKeywords = 189; + public static readonly RULE_oC_LeftArrowHead = 190; + public static readonly RULE_oC_RightArrowHead = 191; + public static readonly RULE_oC_Dash = 192; public static readonly literalNames = [ null, "';'", "'('", "')'", "','", "'.'", "'='", "'['", "']'", "'{'", @@ -393,8 +412,9 @@ export class CypherParser extends antlr.Parser { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, "'*'", null, "'!='", "':'", "'..'", "'-'", "'!'", null, null, - null, null, null, null, null, null, "'0'" + null, null, null, null, null, null, "'*'", null, "'!='", "':'", + "'..'", "'-'", "'!'", null, null, null, null, null, null, null, + null, "'0'" ]; public static readonly symbolicNames = [ @@ -402,77 +422,83 @@ export class CypherParser extends antlr.Parser { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, "ACYCLIC", "ANY", "ADD", "ALL", "ALTER", "AND", "AS", "ASC", - "ASCENDING", "ATTACH", "BEGIN", "BY", "CALL", "CASE", "CAST", "CHECKPOINT", - "COLUMN", "COMMENT", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "CONTAINS", - "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", - "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", "DROP", "ELSE", - "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", "EXTENSION", "FALSE", - "FROM", "FORCE", "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", "IMPORT", - "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", "LIMIT", - "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", "MERGE", "MINVALUE", - "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", "ON", "ONLY", - "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", "PROJECT", "READ", - "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", - "SEQUENCE", "SET", "SHORTEST", "START", "STARTS", "STRUCT", "TABLE", - "THEN", "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND", - "UNINSTALL", "UPDATE", "USE", "WHEN", "WHERE", "WITH", "WRITE", - "WSHORTEST", "XOR", "SINGLE", "YIELD", "USER", "PASSWORD", "ROLE", - "MAP", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL", "COLON", - "DOTDOT", "MINUS", "FACTORIAL", "StringLiteral", "EscapedChar", - "DecimalInteger", "HexLetter", "HexDigit", "Digit", "NonZeroDigit", - "NonZeroOctDigit", "ZeroDigit", "ExponentDecimalReal", "RegularDecimalReal", - "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", - "SP", "WHITESPACE", "CypherComment", "Unknown" + null, "ACYCLIC", "ANY", "ADD", "ALL", "ALTER", "ANALYZE", "AND", + "AS", "ASC", "ASCENDING", "ATTACH", "BEGIN", "BY", "CALL", "CASE", + "CAST", "CHECKPOINT", "COLUMN", "COMMENT", "COMMIT", "COMMIT_SKIP_CHECKPOINT", + "CONTAINS", "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", + "DEFAULT", "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", + "DROP", "ELSE", "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", "EXTENSION", + "FALSE", "FROM", "FORCE", "FOR", "GLOB", "GRAPH", "GROUP", "HEADERS", + "HINT", "IMPORT", "INDEX", "IF", "IN", "INCREMENT", "INSTALL", "IS", + "JOIN", "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", + "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", + "NULL", "ON", "ONLY", "OPTIONS", "OPTIONAL", "OR", "ORDER", "PRIMARY", + "PROFILE", "PROJECT", "READ", "REL", "RENAME", "RETURN", "ROLLBACK", + "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SORTED", "SHORTEST", + "START", "STARTS", "STRUCT", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", + "TRUE", "TYPE", "UNION", "UNWIND", "UNINSTALL", "UPDATE", "USE", + "WHEN", "WHERE", "WITH", "WRITE", "WSHORTEST", "XOR", "SINGLE", + "YIELD", "USER", "PASSWORD", "ROLE", "MAP", "DECIMAL", "STAR", "L_SKIP", + "INVALID_NOT_EQUAL", "COLON", "DOTDOT", "MINUS", "FACTORIAL", "StringLiteral", + "EscapedChar", "DecimalInteger", "HexLetter", "HexDigit", "Digit", + "NonZeroDigit", "NonZeroOctDigit", "ZeroDigit", "ExponentDecimalReal", + "RegularDecimalReal", "UnescapedSymbolicName", "IdentifierStart", + "IdentifierPart", "EscapedSymbolicName", "SP", "WHITESPACE", "CypherComment", + "Unknown" ]; public static readonly ruleNames = [ - "ku_Statements", "oC_Cypher", "oC_Statement", "kU_CopyFrom", "kU_ColumnNames", - "kU_ScanSource", "kU_CopyFromByColumn", "kU_CopyTO", "kU_ExportDatabase", - "kU_ImportDatabase", "kU_AttachDatabase", "kU_Option", "kU_Options", - "kU_DetachDatabase", "kU_UseDatabase", "kU_StandaloneCall", "kU_CommentOn", - "kU_CreateMacro", "kU_PositionalArgs", "kU_DefaultArg", "kU_FilePaths", - "kU_IfNotExists", "kU_CreateNodeTable", "kU_CreateRelTable", "kU_FromToConnections", - "kU_FromToConnection", "kU_CreateSequence", "kU_CreateType", "kU_SequenceOptions", - "kU_WithPasswd", "kU_CreateUser", "kU_CreateRole", "kU_IncrementBy", - "kU_MinValue", "kU_MaxValue", "kU_StartWith", "kU_Cycle", "kU_IfExists", - "kU_Drop", "kU_AlterTable", "kU_AlterOptions", "kU_AddProperty", - "kU_Default", "kU_DropProperty", "kU_RenameTable", "kU_RenameProperty", - "kU_AddFromToConnection", "kU_DropFromToConnection", "kU_ColumnDefinitions", - "kU_ColumnDefinition", "kU_PropertyDefinitions", "kU_PropertyDefinition", - "kU_CreateNodeConstraint", "kU_UnionType", "kU_StructType", "kU_MapType", - "kU_DecimalType", "kU_DataType", "kU_ListIdentifiers", "kU_ListIdentifier", - "oC_AnyCypherOption", "oC_Explain", "oC_Profile", "kU_Transaction", - "kU_Extension", "kU_LoadExtension", "kU_InstallExtension", "kU_UninstallExtension", - "kU_UpdateExtension", "oC_Query", "oC_RegularQuery", "oC_Union", - "oC_SingleQuery", "oC_SinglePartQuery", "oC_MultiPartQuery", "kU_QueryPart", - "oC_UpdatingClause", "oC_ReadingClause", "kU_LoadFrom", "oC_YieldItem", - "oC_YieldItems", "kU_InQueryCall", "oC_Match", "kU_Hint", "kU_JoinNode", - "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", "kU_RecursiveDetail", - "kU_RecursiveType", "oC_RangeLiteral", "kU_RecursiveComprehension", - "kU_RecursiveProjectionItems", "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_StringListNullOperatorExpression", + "iC_Statements", "oC_Cypher", "oC_Statement", "iC_CopyFrom", "iC_ColumnNames", + "iC_ScanSource", "iC_CopyFromByColumn", "iC_CopyTO", "iC_ExportDatabase", + "iC_ImportDatabase", "iC_AttachDatabase", "iC_Option", "iC_OptionQualifier", + "iC_Options", "iC_DetachDatabase", "iC_UseDatabase", "iC_CreateGraph", + "iC_UseGraph", "iC_Analyze", "iC_StandaloneCall", "iC_CommentOn", + "iC_CreateMacro", "iC_PositionalArgs", "iC_DefaultArg", "iC_FilePaths", + "iC_IfNotExists", "iC_CreateNodeTable", "iC_CreateRelTable", "iC_CreateIndex", + "iC_IndexPattern", "iC_IndexNodePattern", "iC_IndexRelationshipPattern", + "iC_IndexPropertyPattern", "iC_CreateFromToConnections", "iC_CreateFromToConnection", + "iC_FromToConnections", "iC_FromToConnection", "iC_CreateSequence", + "iC_CreateType", "iC_SequenceOptions", "iC_WithPasswd", "iC_CreateUser", + "iC_CreateRole", "iC_IncrementBy", "iC_MinValue", "iC_MaxValue", + "iC_StartWith", "iC_Cycle", "iC_IfExists", "iC_Drop", "iC_DropIndexName", + "iC_AlterTable", "iC_AlterOptions", "iC_AddProperty", "iC_Default", + "iC_DropProperty", "iC_RenameTable", "iC_RenameProperty", "iC_AddFromToConnection", + "iC_DropFromToConnection", "iC_SetSortedBy", "iC_SortedByItem", + "iC_ColumnDefinitions", "iC_ColumnDefinition", "iC_PropertyDefinitions", + "iC_PropertyDefinition", "iC_CreateNodeConstraint", "iC_UnionType", + "iC_StructType", "iC_MapType", "iC_DecimalType", "iC_DataType", + "iC_ListIdentifiers", "iC_ListIdentifier", "oC_AnyCypherOption", + "oC_Explain", "oC_Profile", "iC_Transaction", "iC_Extension", "iC_LoadExtension", + "iC_InstallExtension", "iC_UninstallExtension", "iC_UpdateExtension", + "oC_Query", "oC_RegularQuery", "oC_Union", "oC_SingleQuery", "oC_SinglePartQuery", + "oC_MultiPartQuery", "iC_QueryPart", "oC_UpdatingClause", "oC_ReadingClause", + "iC_LoadFrom", "oC_YieldItem", "oC_YieldItems", "iC_InQueryCall", + "oC_Match", "iC_Hint", "iC_JoinNode", "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", "iC_Properties", + "oC_RelationshipTypes", "oC_NodeLabels", "iC_RecursiveDetail", "iC_RecursiveType", + "oC_RangeLiteral", "iC_RecursiveComprehension", "iC_RecursiveProjectionItems", + "oC_LowerBound", "oC_UpperBound", "oC_LabelName", "oC_RelTypeName", + "oC_Expression", "oC_OrExpression", "oC_XorExpression", "oC_AndExpression", + "oC_NotExpression", "oC_ComparisonExpression", "iC_ComparisonOperator", + "iC_BitwiseOrOperatorExpression", "iC_BitwiseAndOperatorExpression", + "iC_BitShiftOperatorExpression", "iC_BitShiftOperator", "oC_AddOrSubtractExpression", + "iC_AddOrSubtractOperator", "oC_MultiplyDivideModuloExpression", + "iC_MultiplyDivideModuloOperator", "oC_PowerOfExpression", "oC_StringListNullOperatorExpression", "oC_ListOperatorExpression", "oC_StringOperatorExpression", "oC_RegularExpression", "oC_NullOperatorExpression", "oC_UnaryAddSubtractOrFactorialExpression", "oC_PropertyOrLabelsExpression", "oC_Atom", "oC_Quantifier", "oC_FilterExpression", "oC_IdInColl", "oC_Literal", "oC_BooleanLiteral", "oC_ListLiteral", - "kU_ListEntry", "kU_StructLiteral", "kU_StructField", "oC_ParenthesizedExpression", - "oC_FunctionInvocation", "oC_FunctionName", "kU_FunctionParameter", - "kU_LambdaParameter", "kU_LambdaVars", "oC_PathPatterns", "oC_ExistCountSubquery", + "iC_ListEntry", "iC_StructLiteral", "iC_StructField", "oC_ParenthesizedExpression", + "oC_FunctionInvocation", "oC_FunctionName", "iC_FunctionParameter", + "iC_LambdaParameter", "iC_LambdaVars", "oC_PathPatterns", "oC_ExistCountSubquery", "oC_PropertyLookup", "oC_CaseExpression", "oC_CaseAlternative", "oC_Variable", "oC_NumberLiteral", "oC_Parameter", "oC_PropertyExpression", "oC_PropertyKeyName", "oC_IntegerLiteral", "oC_DoubleLiteral", "oC_SchemaName", - "oC_SymbolicName", "kU_NonReservedKeywords", "oC_LeftArrowHead", + "oC_SymbolicName", "iC_NonReservedKeywords", "oC_LeftArrowHead", "oC_RightArrowHead", "oC_Dash", ]; @@ -490,65 +516,65 @@ export class CypherParser extends antlr.Parser { super(input); this._interp = new antlr.ParserATNSimulator(this, CypherParser._ATN, CypherParser.decisionsToDFA, new antlr.PredictionContextCache()); } - public ku_Statements(): Ku_StatementsContext { - let localctx: Ku_StatementsContext = new Ku_StatementsContext(this._ctx, this.state); - this.enterRule(localctx, 0, CypherParser.RULE_ku_Statements); + public iC_Statements(): IC_StatementsContext { + let localctx: IC_StatementsContext = new IC_StatementsContext(this._ctx, this.state); + this.enterRule(localctx, 0, CypherParser.RULE_iC_Statements); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 358; + this.state = 386; this.oC_Cypher(); - this.state = 369; + this.state = 397; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 360; + this.state = 388; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 359; + this.state = 387; this.match(CypherParser.SP); } } - this.state = 362; + this.state = 390; this.match(CypherParser.T__0); - this.state = 364; + this.state = 392; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 1, this._ctx) ) { case 1: { - this.state = 363; + this.state = 391; this.match(CypherParser.SP); } break; } - this.state = 366; + this.state = 394; this.oC_Cypher(); } } } - this.state = 371; + this.state = 399; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); } - this.state = 373; + this.state = 401; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 372; + this.state = 400; this.match(CypherParser.SP); } } - this.state = 375; + this.state = 403; this.match(CypherParser.EOF); } } @@ -573,46 +599,46 @@ export class CypherParser extends antlr.Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 378; + this.state = 406; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===83 || _la===122) { + if (_la===84 || _la===126) { { - this.state = 377; + this.state = 405; this.oC_AnyCypherOption(); } } - this.state = 381; + this.state = 409; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 380; + this.state = 408; this.match(CypherParser.SP); } } { - this.state = 383; + this.state = 411; this.oC_Statement(); } - this.state = 388; + this.state = 416; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { case 1: { - this.state = 385; + this.state = 413; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 384; + this.state = 412; this.match(CypherParser.SP); } } - this.state = 387; + this.state = 415; this.match(CypherParser.T__0); } break; @@ -637,161 +663,189 @@ export class CypherParser extends antlr.Parser { let localctx: OC_StatementContext = new OC_StatementContext(this._ctx, this.state); this.enterRule(localctx, 4, CypherParser.RULE_oC_Statement); try { - this.state = 412; + this.state = 444; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 8, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 390; + this.state = 418; this.oC_Query(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 391; - this.kU_CreateUser(); + this.state = 419; + this.iC_Analyze(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 392; - this.kU_CreateRole(); + this.state = 420; + this.iC_CreateUser(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 393; - this.kU_CreateNodeTable(); + this.state = 421; + this.iC_CreateRole(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 394; - this.kU_CreateRelTable(); + this.state = 422; + this.iC_CreateNodeTable(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 395; - this.kU_CreateSequence(); + this.state = 423; + this.iC_CreateRelTable(); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 396; - this.kU_CreateType(); + this.state = 424; + this.iC_CreateIndex(); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 397; - this.kU_Drop(); + this.state = 425; + this.iC_CreateSequence(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 398; - this.kU_AlterTable(); + this.state = 426; + this.iC_CreateType(); } break; case 10: this.enterOuterAlt(localctx, 10); { - this.state = 399; - this.kU_CopyFrom(); + this.state = 427; + this.iC_Drop(); } break; case 11: this.enterOuterAlt(localctx, 11); { - this.state = 400; - this.kU_CopyFromByColumn(); + this.state = 428; + this.iC_AlterTable(); } break; case 12: this.enterOuterAlt(localctx, 12); { - this.state = 401; - this.kU_CopyTO(); + this.state = 429; + this.iC_CopyFrom(); } break; case 13: this.enterOuterAlt(localctx, 13); { - this.state = 402; - this.kU_StandaloneCall(); + this.state = 430; + this.iC_CopyFromByColumn(); } break; case 14: this.enterOuterAlt(localctx, 14); { - this.state = 403; - this.kU_CreateMacro(); + this.state = 431; + this.iC_CopyTO(); } break; case 15: this.enterOuterAlt(localctx, 15); { - this.state = 404; - this.kU_CommentOn(); + this.state = 432; + this.iC_StandaloneCall(); } break; case 16: this.enterOuterAlt(localctx, 16); { - this.state = 405; - this.kU_Transaction(); + this.state = 433; + this.iC_CreateMacro(); } break; case 17: this.enterOuterAlt(localctx, 17); { - this.state = 406; - this.kU_Extension(); + this.state = 434; + this.iC_CommentOn(); } break; case 18: this.enterOuterAlt(localctx, 18); { - this.state = 407; - this.kU_ExportDatabase(); + this.state = 435; + this.iC_Transaction(); } break; case 19: this.enterOuterAlt(localctx, 19); { - this.state = 408; - this.kU_ImportDatabase(); + this.state = 436; + this.iC_Extension(); } break; case 20: this.enterOuterAlt(localctx, 20); { - this.state = 409; - this.kU_AttachDatabase(); + this.state = 437; + this.iC_ExportDatabase(); } break; case 21: this.enterOuterAlt(localctx, 21); { - this.state = 410; - this.kU_DetachDatabase(); + this.state = 438; + this.iC_ImportDatabase(); } break; case 22: this.enterOuterAlt(localctx, 22); { - this.state = 411; - this.kU_UseDatabase(); + this.state = 439; + this.iC_AttachDatabase(); + } + break; + case 23: + this.enterOuterAlt(localctx, 23); + { + this.state = 440; + this.iC_DetachDatabase(); + } + break; + case 24: + this.enterOuterAlt(localctx, 24); + { + this.state = 441; + this.iC_UseDatabase(); + } + break; + case 25: + this.enterOuterAlt(localctx, 25); + { + this.state = 442; + this.iC_CreateGraph(); + } + break; + case 26: + this.enterOuterAlt(localctx, 26); + { + this.state = 443; + this.iC_UseGraph(); } break; } @@ -810,77 +864,77 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CopyFrom(): KU_CopyFromContext { - let localctx: KU_CopyFromContext = new KU_CopyFromContext(this._ctx, this.state); - this.enterRule(localctx, 6, CypherParser.RULE_kU_CopyFrom); + public iC_CopyFrom(): IC_CopyFromContext { + let localctx: IC_CopyFromContext = new IC_CopyFromContext(this._ctx, this.state); + this.enterRule(localctx, 6, CypherParser.RULE_iC_CopyFrom); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 414; + this.state = 446; this.match(CypherParser.COPY); - this.state = 415; + this.state = 447; this.match(CypherParser.SP); - this.state = 416; + this.state = 448; this.oC_SchemaName(); - this.state = 418; + this.state = 450; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 9, this._ctx) ) { case 1: { - this.state = 417; - this.kU_ColumnNames(); + this.state = 449; + this.iC_ColumnNames(); } break; } - this.state = 420; + this.state = 452; this.match(CypherParser.SP); - this.state = 421; + this.state = 453; this.match(CypherParser.FROM); - this.state = 422; + this.state = 454; this.match(CypherParser.SP); - this.state = 423; - this.kU_ScanSource(); - this.state = 437; + this.state = 455; + this.iC_ScanSource(); + this.state = 469; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 13, this._ctx) ) { case 1: { - this.state = 425; + this.state = 457; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 424; + this.state = 456; this.match(CypherParser.SP); } } - this.state = 427; + this.state = 459; this.match(CypherParser.T__1); - this.state = 429; + this.state = 461; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 428; + this.state = 460; this.match(CypherParser.SP); } } - this.state = 431; - this.kU_Options(); - this.state = 433; + this.state = 463; + this.iC_Options(); + this.state = 465; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 432; + this.state = 464; this.match(CypherParser.SP); } } - this.state = 435; + this.state = 467; this.match(CypherParser.T__2); } break; @@ -901,87 +955,87 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ColumnNames(): KU_ColumnNamesContext { - let localctx: KU_ColumnNamesContext = new KU_ColumnNamesContext(this._ctx, this.state); - this.enterRule(localctx, 8, CypherParser.RULE_kU_ColumnNames); + public iC_ColumnNames(): IC_ColumnNamesContext { + let localctx: IC_ColumnNamesContext = new IC_ColumnNamesContext(this._ctx, this.state); + this.enterRule(localctx, 8, CypherParser.RULE_iC_ColumnNames); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 440; + this.state = 472; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 439; + this.state = 471; this.match(CypherParser.SP); } } - this.state = 442; + this.state = 474; this.match(CypherParser.T__1); - this.state = 444; + this.state = 476; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 443; + this.state = 475; this.match(CypherParser.SP); } } - this.state = 463; + this.state = 495; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 2765989781) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 935155895) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 298489279) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 151060671) !== 0)) { + if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237012269) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693025) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383259) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 25043861) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 2305) !== 0)) { { - this.state = 446; + this.state = 478; this.oC_SchemaName(); - this.state = 457; + this.state = 489; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 448; + this.state = 480; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 447; + this.state = 479; this.match(CypherParser.SP); } } - this.state = 450; + this.state = 482; this.match(CypherParser.T__3); - this.state = 452; + this.state = 484; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 451; + this.state = 483; this.match(CypherParser.SP); } } - this.state = 454; + this.state = 486; this.oC_SchemaName(); } } } - this.state = 459; + this.state = 491; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); } - this.state = 461; + this.state = 493; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 460; + this.state = 492; this.match(CypherParser.SP); } } @@ -989,7 +1043,7 @@ export class CypherParser extends antlr.Parser { } } - this.state = 465; + this.state = 497; this.match(CypherParser.T__2); } } @@ -1007,91 +1061,91 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ScanSource(): KU_ScanSourceContext { - let localctx: KU_ScanSourceContext = new KU_ScanSourceContext(this._ctx, this.state); - this.enterRule(localctx, 10, CypherParser.RULE_kU_ScanSource); + public iC_ScanSource(): IC_ScanSourceContext { + let localctx: IC_ScanSourceContext = new IC_ScanSourceContext(this._ctx, this.state); + this.enterRule(localctx, 10, CypherParser.RULE_iC_ScanSource); let _la: number; try { - this.state = 488; + this.state = 520; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 24, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 467; - this.kU_FilePaths(); + this.state = 499; + this.iC_FilePaths(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 468; + this.state = 500; this.match(CypherParser.T__1); - this.state = 470; + this.state = 502; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 469; + this.state = 501; this.match(CypherParser.SP); } } - this.state = 472; + this.state = 504; this.oC_Query(); - this.state = 474; + this.state = 506; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 473; + this.state = 505; this.match(CypherParser.SP); } } - this.state = 476; + this.state = 508; this.match(CypherParser.T__2); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 478; + this.state = 510; this.oC_Parameter(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 479; + this.state = 511; this.oC_Variable(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 480; + this.state = 512; this.oC_Variable(); - this.state = 481; + this.state = 513; this.match(CypherParser.T__4); - this.state = 483; + this.state = 515; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 482; + this.state = 514; this.match(CypherParser.SP); } } - this.state = 485; + this.state = 517; this.oC_SchemaName(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 487; + this.state = 519; this.oC_FunctionInvocation(); } break; @@ -1111,84 +1165,84 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CopyFromByColumn(): KU_CopyFromByColumnContext { - let localctx: KU_CopyFromByColumnContext = new KU_CopyFromByColumnContext(this._ctx, this.state); - this.enterRule(localctx, 12, CypherParser.RULE_kU_CopyFromByColumn); + public iC_CopyFromByColumn(): IC_CopyFromByColumnContext { + let localctx: IC_CopyFromByColumnContext = new IC_CopyFromByColumnContext(this._ctx, this.state); + this.enterRule(localctx, 12, CypherParser.RULE_iC_CopyFromByColumn); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 490; + this.state = 522; this.match(CypherParser.COPY); - this.state = 491; + this.state = 523; this.match(CypherParser.SP); - this.state = 492; + this.state = 524; this.oC_SchemaName(); - this.state = 493; + this.state = 525; this.match(CypherParser.SP); - this.state = 494; + this.state = 526; this.match(CypherParser.FROM); - this.state = 495; + this.state = 527; this.match(CypherParser.SP); - this.state = 496; + this.state = 528; this.match(CypherParser.T__1); - this.state = 498; + this.state = 530; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 497; + this.state = 529; this.match(CypherParser.SP); } } - this.state = 500; + this.state = 532; this.match(CypherParser.StringLiteral); - this.state = 511; + this.state = 543; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===4 || _la===183) { + while (_la===4 || _la===188) { { { - this.state = 502; + this.state = 534; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 501; + this.state = 533; this.match(CypherParser.SP); } } - this.state = 504; + this.state = 536; this.match(CypherParser.T__3); - this.state = 506; + this.state = 538; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 505; + this.state = 537; this.match(CypherParser.SP); } } - this.state = 508; + this.state = 540; this.match(CypherParser.StringLiteral); } } - this.state = 513; + this.state = 545; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 514; + this.state = 546; this.match(CypherParser.T__2); - this.state = 515; + this.state = 547; this.match(CypherParser.SP); - this.state = 516; + this.state = 548; this.match(CypherParser.BY); - this.state = 517; + this.state = 549; this.match(CypherParser.SP); - this.state = 518; + this.state = 550; this.match(CypherParser.COLUMN); } } @@ -1206,91 +1260,91 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CopyTO(): KU_CopyTOContext { - let localctx: KU_CopyTOContext = new KU_CopyTOContext(this._ctx, this.state); - this.enterRule(localctx, 14, CypherParser.RULE_kU_CopyTO); + public iC_CopyTO(): IC_CopyTOContext { + let localctx: IC_CopyTOContext = new IC_CopyTOContext(this._ctx, this.state); + this.enterRule(localctx, 14, CypherParser.RULE_iC_CopyTO); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 520; + this.state = 552; this.match(CypherParser.COPY); - this.state = 521; + this.state = 553; this.match(CypherParser.SP); - this.state = 522; + this.state = 554; this.match(CypherParser.T__1); - this.state = 524; + this.state = 556; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 523; + this.state = 555; this.match(CypherParser.SP); } } - this.state = 526; + this.state = 558; this.oC_Query(); - this.state = 528; + this.state = 560; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 527; + this.state = 559; this.match(CypherParser.SP); } } - this.state = 530; + this.state = 562; this.match(CypherParser.T__2); - this.state = 531; + this.state = 563; this.match(CypherParser.SP); - this.state = 532; + this.state = 564; this.match(CypherParser.TO); - this.state = 533; + this.state = 565; this.match(CypherParser.SP); - this.state = 534; + this.state = 566; this.match(CypherParser.StringLiteral); - this.state = 548; + this.state = 580; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 34, this._ctx) ) { case 1: { - this.state = 536; + this.state = 568; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 535; + this.state = 567; this.match(CypherParser.SP); } } - this.state = 538; + this.state = 570; this.match(CypherParser.T__1); - this.state = 540; + this.state = 572; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 539; + this.state = 571; this.match(CypherParser.SP); } } - this.state = 542; - this.kU_Options(); - this.state = 544; + this.state = 574; + this.iC_Options(); + this.state = 576; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 543; + this.state = 575; this.match(CypherParser.SP); } } - this.state = 546; + this.state = 578; this.match(CypherParser.T__2); } break; @@ -1311,63 +1365,63 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ExportDatabase(): KU_ExportDatabaseContext { - let localctx: KU_ExportDatabaseContext = new KU_ExportDatabaseContext(this._ctx, this.state); - this.enterRule(localctx, 16, CypherParser.RULE_kU_ExportDatabase); + public iC_ExportDatabase(): IC_ExportDatabaseContext { + let localctx: IC_ExportDatabaseContext = new IC_ExportDatabaseContext(this._ctx, this.state); + this.enterRule(localctx, 16, CypherParser.RULE_iC_ExportDatabase); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 550; + this.state = 582; this.match(CypherParser.EXPORT); - this.state = 551; + this.state = 583; this.match(CypherParser.SP); - this.state = 552; + this.state = 584; this.match(CypherParser.DATABASE); - this.state = 553; + this.state = 585; this.match(CypherParser.SP); - this.state = 554; + this.state = 586; this.match(CypherParser.StringLiteral); - this.state = 568; + this.state = 600; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 38, this._ctx) ) { case 1: { - this.state = 556; + this.state = 588; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 555; + this.state = 587; this.match(CypherParser.SP); } } - this.state = 558; + this.state = 590; this.match(CypherParser.T__1); - this.state = 560; + this.state = 592; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 559; + this.state = 591; this.match(CypherParser.SP); } } - this.state = 562; - this.kU_Options(); - this.state = 564; + this.state = 594; + this.iC_Options(); + this.state = 596; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 563; + this.state = 595; this.match(CypherParser.SP); } } - this.state = 566; + this.state = 598; this.match(CypherParser.T__2); } break; @@ -1388,21 +1442,21 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ImportDatabase(): KU_ImportDatabaseContext { - let localctx: KU_ImportDatabaseContext = new KU_ImportDatabaseContext(this._ctx, this.state); - this.enterRule(localctx, 18, CypherParser.RULE_kU_ImportDatabase); + public iC_ImportDatabase(): IC_ImportDatabaseContext { + let localctx: IC_ImportDatabaseContext = new IC_ImportDatabaseContext(this._ctx, this.state); + this.enterRule(localctx, 18, CypherParser.RULE_iC_ImportDatabase); try { this.enterOuterAlt(localctx, 1); { - this.state = 570; + this.state = 602; this.match(CypherParser.IMPORT); - this.state = 571; + this.state = 603; this.match(CypherParser.SP); - this.state = 572; + this.state = 604; this.match(CypherParser.DATABASE); - this.state = 573; + this.state = 605; this.match(CypherParser.SP); - this.state = 574; + this.state = 606; this.match(CypherParser.StringLiteral); } } @@ -1420,98 +1474,98 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_AttachDatabase(): KU_AttachDatabaseContext { - let localctx: KU_AttachDatabaseContext = new KU_AttachDatabaseContext(this._ctx, this.state); - this.enterRule(localctx, 20, CypherParser.RULE_kU_AttachDatabase); + public iC_AttachDatabase(): IC_AttachDatabaseContext { + let localctx: IC_AttachDatabaseContext = new IC_AttachDatabaseContext(this._ctx, this.state); + this.enterRule(localctx, 20, CypherParser.RULE_iC_AttachDatabase); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 576; + this.state = 608; this.match(CypherParser.ATTACH); - this.state = 577; + this.state = 609; this.match(CypherParser.SP); - this.state = 578; + this.state = 610; this.match(CypherParser.StringLiteral); - this.state = 583; + this.state = 615; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 39, this._ctx) ) { case 1: { - this.state = 579; + this.state = 611; this.match(CypherParser.SP); - this.state = 580; + this.state = 612; this.match(CypherParser.AS); - this.state = 581; + this.state = 613; this.match(CypherParser.SP); - this.state = 582; + this.state = 614; this.oC_SchemaName(); } break; } - this.state = 585; + this.state = 617; this.match(CypherParser.SP); - this.state = 586; + this.state = 618; this.match(CypherParser.T__1); - this.state = 588; + this.state = 620; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 587; + this.state = 619; this.match(CypherParser.SP); } } - this.state = 590; + this.state = 622; this.match(CypherParser.DBTYPE); - this.state = 591; + this.state = 623; this.match(CypherParser.SP); - this.state = 592; + this.state = 624; this.oC_SymbolicName(); - this.state = 601; + this.state = 633; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 43, this._ctx) ) { case 1: { - this.state = 594; + this.state = 626; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 593; + this.state = 625; this.match(CypherParser.SP); } } - this.state = 596; + this.state = 628; this.match(CypherParser.T__3); - this.state = 598; + this.state = 630; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 597; + this.state = 629; this.match(CypherParser.SP); } } - this.state = 600; - this.kU_Options(); + this.state = 632; + this.iC_Options(); } break; } - this.state = 604; + this.state = 636; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 603; + this.state = 635; this.match(CypherParser.SP); } } - this.state = 606; + this.state = 638; this.match(CypherParser.T__2); } } @@ -1529,42 +1583,42 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Option(): KU_OptionContext { - let localctx: KU_OptionContext = new KU_OptionContext(this._ctx, this.state); - this.enterRule(localctx, 22, CypherParser.RULE_kU_Option); + public iC_Option(): IC_OptionContext { + let localctx: IC_OptionContext = new IC_OptionContext(this._ctx, this.state); + this.enterRule(localctx, 22, CypherParser.RULE_iC_Option); let _la: number; try { - this.state = 627; + this.state = 664; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 49, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 51, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 608; + this.state = 640; this.oC_SymbolicName(); - this.state = 622; + this.state = 654; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 48, this._ctx) ) { case 1: { - this.state = 610; + this.state = 642; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 609; + this.state = 641; this.match(CypherParser.SP); } } - this.state = 612; + this.state = 644; this.match(CypherParser.T__5); - this.state = 614; + this.state = 646; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 613; + this.state = 645; this.match(CypherParser.SP); } } @@ -1573,31 +1627,51 @@ export class CypherParser extends antlr.Parser { break; case 2: { - this.state = 619; + this.state = 651; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===183) { + while (_la===188) { { { - this.state = 616; + this.state = 648; this.match(CypherParser.SP); } } - this.state = 621; + this.state = 653; this._errHandler.sync(this); _la = this._input.LA(1); } } break; } - this.state = 624; + this.state = 656; this.oC_Literal(); + this.state = 661; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 50, this._ctx) ) { + case 1: + { + this.state = 658; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 657; + this.match(CypherParser.SP); + } + } + + this.state = 660; + this.iC_OptionQualifier(); + } + break; + } } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 626; + this.state = 663; this.oC_SymbolicName(); } break; @@ -1617,53 +1691,102 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Options(): KU_OptionsContext { - let localctx: KU_OptionsContext = new KU_OptionsContext(this._ctx, this.state); - this.enterRule(localctx, 24, CypherParser.RULE_kU_Options); + public iC_OptionQualifier(): IC_OptionQualifierContext { + let localctx: IC_OptionQualifierContext = new IC_OptionQualifierContext(this._ctx, this.state); + this.enterRule(localctx, 24, CypherParser.RULE_iC_OptionQualifier); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 666; + this.match(CypherParser.T__1); + this.state = 668; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 667; + this.match(CypherParser.SP); + } + } + + this.state = 670; + this.oC_SymbolicName(); + this.state = 672; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 671; + this.match(CypherParser.SP); + } + } + + this.state = 674; + this.match(CypherParser.T__2); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_Options(): IC_OptionsContext { + let localctx: IC_OptionsContext = new IC_OptionsContext(this._ctx, this.state); + this.enterRule(localctx, 26, CypherParser.RULE_iC_Options); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 629; - this.kU_Option(); - this.state = 640; + this.state = 676; + this.iC_Option(); + this.state = 687; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 52, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 56, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 631; + this.state = 678; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 630; + this.state = 677; this.match(CypherParser.SP); } } - this.state = 633; + this.state = 680; this.match(CypherParser.T__3); - this.state = 635; + this.state = 682; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 634; + this.state = 681; this.match(CypherParser.SP); } } - this.state = 637; - this.kU_Option(); + this.state = 684; + this.iC_Option(); } } } - this.state = 642; + this.state = 689; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 52, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 56, this._ctx); } } } @@ -1681,17 +1804,17 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_DetachDatabase(): KU_DetachDatabaseContext { - let localctx: KU_DetachDatabaseContext = new KU_DetachDatabaseContext(this._ctx, this.state); - this.enterRule(localctx, 26, CypherParser.RULE_kU_DetachDatabase); + public iC_DetachDatabase(): IC_DetachDatabaseContext { + let localctx: IC_DetachDatabaseContext = new IC_DetachDatabaseContext(this._ctx, this.state); + this.enterRule(localctx, 28, CypherParser.RULE_iC_DetachDatabase); try { this.enterOuterAlt(localctx, 1); { - this.state = 643; + this.state = 690; this.match(CypherParser.DETACH); - this.state = 644; + this.state = 691; this.match(CypherParser.SP); - this.state = 645; + this.state = 692; this.oC_SchemaName(); } } @@ -1709,17 +1832,17 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_UseDatabase(): KU_UseDatabaseContext { - let localctx: KU_UseDatabaseContext = new KU_UseDatabaseContext(this._ctx, this.state); - this.enterRule(localctx, 28, CypherParser.RULE_kU_UseDatabase); + public iC_UseDatabase(): IC_UseDatabaseContext { + let localctx: IC_UseDatabaseContext = new IC_UseDatabaseContext(this._ctx, this.state); + this.enterRule(localctx, 30, CypherParser.RULE_iC_UseDatabase); try { this.enterOuterAlt(localctx, 1); { - this.state = 647; + this.state = 694; this.match(CypherParser.USE); - this.state = 648; + this.state = 695; this.match(CypherParser.SP); - this.state = 649; + this.state = 696; this.oC_SchemaName(); } } @@ -1737,61 +1860,35 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_StandaloneCall(): KU_StandaloneCallContext { - let localctx: KU_StandaloneCallContext = new KU_StandaloneCallContext(this._ctx, this.state); - this.enterRule(localctx, 30, CypherParser.RULE_kU_StandaloneCall); - let _la: number; + public iC_CreateGraph(): IC_CreateGraphContext { + let localctx: IC_CreateGraphContext = new IC_CreateGraphContext(this._ctx, this.state); + this.enterRule(localctx, 32, CypherParser.RULE_iC_CreateGraph); try { - this.state = 666; + this.enterOuterAlt(localctx, 1); + { + this.state = 698; + this.match(CypherParser.CREATE); + this.state = 699; + this.match(CypherParser.SP); + this.state = 700; + this.match(CypherParser.GRAPH); + this.state = 701; + this.match(CypherParser.SP); + this.state = 702; + this.oC_SchemaName(); + this.state = 705; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 55, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 57, this._ctx) ) { case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 651; - this.match(CypherParser.CALL); - this.state = 652; - this.match(CypherParser.SP); - this.state = 653; - this.oC_SymbolicName(); - this.state = 655; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===183) { - { - this.state = 654; - this.match(CypherParser.SP); - } - } - - this.state = 657; - this.match(CypherParser.T__5); - this.state = 659; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===183) { - { - this.state = 658; - this.match(CypherParser.SP); - } - } - - this.state = 661; - this.oC_Expression(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); { - this.state = 663; - this.match(CypherParser.CALL); - this.state = 664; + this.state = 703; this.match(CypherParser.SP); - this.state = 665; - this.oC_FunctionInvocation(); + this.state = 704; + this.match(CypherParser.ANY); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -1807,34 +1904,22 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CommentOn(): KU_CommentOnContext { - let localctx: KU_CommentOnContext = new KU_CommentOnContext(this._ctx, this.state); - this.enterRule(localctx, 32, CypherParser.RULE_kU_CommentOn); + public iC_UseGraph(): IC_UseGraphContext { + let localctx: IC_UseGraphContext = new IC_UseGraphContext(this._ctx, this.state); + this.enterRule(localctx, 34, CypherParser.RULE_iC_UseGraph); try { this.enterOuterAlt(localctx, 1); { - this.state = 668; - this.match(CypherParser.COMMENT); - this.state = 669; - this.match(CypherParser.SP); - this.state = 670; - this.match(CypherParser.ON); - this.state = 671; + this.state = 707; + this.match(CypherParser.USE); + this.state = 708; this.match(CypherParser.SP); - this.state = 672; - this.match(CypherParser.TABLE); - this.state = 673; + this.state = 709; + this.match(CypherParser.GRAPH); + this.state = 710; this.match(CypherParser.SP); - this.state = 674; + this.state = 711; this.oC_SchemaName(); - this.state = 675; - this.match(CypherParser.SP); - this.state = 676; - this.match(CypherParser.IS); - this.state = 677; - this.match(CypherParser.SP); - this.state = 678; - this.match(CypherParser.StringLiteral); } } catch (re) { @@ -1851,133 +1936,283 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CreateMacro(): KU_CreateMacroContext { - let localctx: KU_CreateMacroContext = new KU_CreateMacroContext(this._ctx, this.state); - this.enterRule(localctx, 34, CypherParser.RULE_kU_CreateMacro); - let _la: number; + public iC_Analyze(): IC_AnalyzeContext { + let localctx: IC_AnalyzeContext = new IC_AnalyzeContext(this._ctx, this.state); + this.enterRule(localctx, 36, CypherParser.RULE_iC_Analyze); try { - let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 680; - this.match(CypherParser.CREATE); - this.state = 681; - this.match(CypherParser.SP); - this.state = 682; - this.match(CypherParser.MACRO); - this.state = 683; - this.match(CypherParser.SP); - this.state = 684; - this.oC_FunctionName(); - this.state = 686; + this.state = 713; + this.match(CypherParser.ANALYZE); + this.state = 716; this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===183) { - { - this.state = 685; - this.match(CypherParser.SP); - } - } - - this.state = 688; - this.match(CypherParser.T__1); - this.state = 690; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 57, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 58, this._ctx) ) { case 1: { - this.state = 689; + this.state = 714; this.match(CypherParser.SP); + this.state = 715; + this.oC_SchemaName(); } break; } - this.state = 693; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 58, this._ctx) ) { + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_StandaloneCall(): IC_StandaloneCallContext { + let localctx: IC_StandaloneCallContext = new IC_StandaloneCallContext(this._ctx, this.state); + this.enterRule(localctx, 38, CypherParser.RULE_iC_StandaloneCall); + let _la: number; + try { + this.state = 733; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 61, this._ctx) ) { case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 718; + this.match(CypherParser.CALL); + this.state = 719; + this.match(CypherParser.SP); + this.state = 720; + this.oC_SymbolicName(); + this.state = 722; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 721; + this.match(CypherParser.SP); + } + } + + this.state = 724; + this.match(CypherParser.T__5); + this.state = 726; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 725; + this.match(CypherParser.SP); + } + } + + this.state = 728; + this.oC_Expression(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); { - this.state = 692; - this.kU_PositionalArgs(); + this.state = 730; + this.match(CypherParser.CALL); + this.state = 731; + this.match(CypherParser.SP); + this.state = 732; + this.oC_FunctionInvocation(); } break; } - this.state = 696; + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_CommentOn(): IC_CommentOnContext { + let localctx: IC_CommentOnContext = new IC_CommentOnContext(this._ctx, this.state); + this.enterRule(localctx, 40, CypherParser.RULE_iC_CommentOn); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 735; + this.match(CypherParser.COMMENT); + this.state = 736; + this.match(CypherParser.SP); + this.state = 737; + this.match(CypherParser.ON); + this.state = 738; + this.match(CypherParser.SP); + this.state = 739; + this.match(CypherParser.TABLE); + this.state = 740; + this.match(CypherParser.SP); + this.state = 741; + this.oC_SchemaName(); + this.state = 742; + this.match(CypherParser.SP); + this.state = 743; + this.match(CypherParser.IS); + this.state = 744; + this.match(CypherParser.SP); + this.state = 745; + this.match(CypherParser.StringLiteral); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_CreateMacro(): IC_CreateMacroContext { + let localctx: IC_CreateMacroContext = new IC_CreateMacroContext(this._ctx, this.state); + this.enterRule(localctx, 42, CypherParser.RULE_iC_CreateMacro); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 747; + this.match(CypherParser.CREATE); + this.state = 748; + this.match(CypherParser.SP); + this.state = 749; + this.match(CypherParser.MACRO); + this.state = 750; + this.match(CypherParser.SP); + this.state = 751; + this.oC_FunctionName(); + this.state = 753; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 752; + this.match(CypherParser.SP); + } + } + + this.state = 755; + this.match(CypherParser.T__1); + this.state = 757; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 59, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 63, this._ctx) ) { case 1: { - this.state = 695; + this.state = 756; this.match(CypherParser.SP); } break; } - this.state = 699; + this.state = 760; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 64, this._ctx) ) { + case 1: + { + this.state = 759; + this.iC_PositionalArgs(); + } + break; + } + this.state = 763; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 65, this._ctx) ) { + case 1: + { + this.state = 762; + this.match(CypherParser.SP); + } + break; + } + this.state = 766; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 2765989781) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 935155895) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 298489279) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 151060671) !== 0)) { + if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237012269) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693025) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383259) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 25043861) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 2305) !== 0)) { { - this.state = 698; - this.kU_DefaultArg(); + this.state = 765; + this.iC_DefaultArg(); } } - this.state = 711; + this.state = 778; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 63, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 69, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 702; + this.state = 769; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 701; + this.state = 768; this.match(CypherParser.SP); } } - this.state = 704; + this.state = 771; this.match(CypherParser.T__3); - this.state = 706; + this.state = 773; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 705; + this.state = 772; this.match(CypherParser.SP); } } - this.state = 708; - this.kU_DefaultArg(); + this.state = 775; + this.iC_DefaultArg(); } } } - this.state = 713; + this.state = 780; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 63, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 69, this._ctx); } - this.state = 715; + this.state = 782; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 714; + this.state = 781; this.match(CypherParser.SP); } } - this.state = 717; + this.state = 784; this.match(CypherParser.T__2); - this.state = 718; + this.state = 785; this.match(CypherParser.SP); - this.state = 719; + this.state = 786; this.match(CypherParser.AS); - this.state = 720; + this.state = 787; this.match(CypherParser.SP); - this.state = 721; + this.state = 788; this.oC_Expression(); } } @@ -1995,53 +2230,53 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_PositionalArgs(): KU_PositionalArgsContext { - let localctx: KU_PositionalArgsContext = new KU_PositionalArgsContext(this._ctx, this.state); - this.enterRule(localctx, 36, CypherParser.RULE_kU_PositionalArgs); + public iC_PositionalArgs(): IC_PositionalArgsContext { + let localctx: IC_PositionalArgsContext = new IC_PositionalArgsContext(this._ctx, this.state); + this.enterRule(localctx, 44, CypherParser.RULE_iC_PositionalArgs); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 723; + this.state = 790; this.oC_SymbolicName(); - this.state = 734; + this.state = 801; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 67, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 73, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 725; + this.state = 792; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 724; + this.state = 791; this.match(CypherParser.SP); } } - this.state = 727; + this.state = 794; this.match(CypherParser.T__3); - this.state = 729; + this.state = 796; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 728; + this.state = 795; this.match(CypherParser.SP); } } - this.state = 731; + this.state = 798; this.oC_SymbolicName(); } } } - this.state = 736; + this.state = 803; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 67, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 73, this._ctx); } } } @@ -2059,40 +2294,40 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_DefaultArg(): KU_DefaultArgContext { - let localctx: KU_DefaultArgContext = new KU_DefaultArgContext(this._ctx, this.state); - this.enterRule(localctx, 38, CypherParser.RULE_kU_DefaultArg); + public iC_DefaultArg(): IC_DefaultArgContext { + let localctx: IC_DefaultArgContext = new IC_DefaultArgContext(this._ctx, this.state); + this.enterRule(localctx, 46, CypherParser.RULE_iC_DefaultArg); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 737; + this.state = 804; this.oC_SymbolicName(); - this.state = 739; + this.state = 806; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 738; + this.state = 805; this.match(CypherParser.SP); } } - this.state = 741; + this.state = 808; this.match(CypherParser.COLON); - this.state = 742; + this.state = 809; this.match(CypherParser.T__5); - this.state = 744; + this.state = 811; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 743; + this.state = 810; this.match(CypherParser.SP); } } - this.state = 746; + this.state = 813; this.oC_Literal(); } } @@ -2110,118 +2345,118 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_FilePaths(): KU_FilePathsContext { - let localctx: KU_FilePathsContext = new KU_FilePathsContext(this._ctx, this.state); - this.enterRule(localctx, 40, CypherParser.RULE_kU_FilePaths); + public iC_FilePaths(): IC_FilePathsContext { + let localctx: IC_FilePathsContext = new IC_FilePathsContext(this._ctx, this.state); + this.enterRule(localctx, 48, CypherParser.RULE_iC_FilePaths); let _la: number; try { - this.state = 781; + this.state = 848; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.T__6: this.enterOuterAlt(localctx, 1); { - this.state = 748; + this.state = 815; this.match(CypherParser.T__6); - this.state = 750; + this.state = 817; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 749; + this.state = 816; this.match(CypherParser.SP); } } - this.state = 752; + this.state = 819; this.match(CypherParser.StringLiteral); - this.state = 763; + this.state = 830; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===4 || _la===183) { + while (_la===4 || _la===188) { { { - this.state = 754; + this.state = 821; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 753; + this.state = 820; this.match(CypherParser.SP); } } - this.state = 756; + this.state = 823; this.match(CypherParser.T__3); - this.state = 758; + this.state = 825; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 757; + this.state = 824; this.match(CypherParser.SP); } } - this.state = 760; + this.state = 827; this.match(CypherParser.StringLiteral); } } - this.state = 765; + this.state = 832; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 766; + this.state = 833; this.match(CypherParser.T__7); } break; case CypherParser.StringLiteral: this.enterOuterAlt(localctx, 2); { - this.state = 767; + this.state = 834; this.match(CypherParser.StringLiteral); } break; case CypherParser.GLOB: this.enterOuterAlt(localctx, 3); { - this.state = 768; + this.state = 835; this.match(CypherParser.GLOB); - this.state = 770; + this.state = 837; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 769; + this.state = 836; this.match(CypherParser.SP); } } - this.state = 772; + this.state = 839; this.match(CypherParser.T__1); - this.state = 774; + this.state = 841; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 773; + this.state = 840; this.match(CypherParser.SP); } } - this.state = 776; + this.state = 843; this.match(CypherParser.StringLiteral); - this.state = 778; + this.state = 845; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 777; + this.state = 844; this.match(CypherParser.SP); } } - this.state = 780; + this.state = 847; this.match(CypherParser.T__2); } break; @@ -2243,21 +2478,21 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_IfNotExists(): KU_IfNotExistsContext { - let localctx: KU_IfNotExistsContext = new KU_IfNotExistsContext(this._ctx, this.state); - this.enterRule(localctx, 42, CypherParser.RULE_kU_IfNotExists); + public iC_IfNotExists(): IC_IfNotExistsContext { + let localctx: IC_IfNotExistsContext = new IC_IfNotExistsContext(this._ctx, this.state); + this.enterRule(localctx, 50, CypherParser.RULE_iC_IfNotExists); try { this.enterOuterAlt(localctx, 1); { - this.state = 783; + this.state = 850; this.match(CypherParser.IF); - this.state = 784; + this.state = 851; this.match(CypherParser.SP); - this.state = 785; + this.state = 852; this.match(CypherParser.NOT); - this.state = 786; + this.state = 853; this.match(CypherParser.SP); - this.state = 787; + this.state = 854; this.match(CypherParser.EXISTS); } } @@ -2275,127 +2510,175 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CreateNodeTable(): KU_CreateNodeTableContext { - let localctx: KU_CreateNodeTableContext = new KU_CreateNodeTableContext(this._ctx, this.state); - this.enterRule(localctx, 44, CypherParser.RULE_kU_CreateNodeTable); + public iC_CreateNodeTable(): IC_CreateNodeTableContext { + let localctx: IC_CreateNodeTableContext = new IC_CreateNodeTableContext(this._ctx, this.state); + this.enterRule(localctx, 52, CypherParser.RULE_iC_CreateNodeTable); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 789; + this.state = 856; this.match(CypherParser.CREATE); - this.state = 790; + this.state = 857; this.match(CypherParser.SP); - this.state = 791; + this.state = 858; this.match(CypherParser.NODE); - this.state = 792; + this.state = 859; this.match(CypherParser.SP); - this.state = 793; + this.state = 860; this.match(CypherParser.TABLE); - this.state = 794; + this.state = 861; this.match(CypherParser.SP); - this.state = 798; + this.state = 865; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 78, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 84, this._ctx) ) { case 1: { - this.state = 795; - this.kU_IfNotExists(); - this.state = 796; + this.state = 862; + this.iC_IfNotExists(); + this.state = 863; this.match(CypherParser.SP); } break; } - this.state = 800; + this.state = 867; this.oC_SchemaName(); - this.state = 828; + this.state = 895; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 85, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 91, this._ctx) ) { case 1: { - this.state = 802; + this.state = 869; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 801; + this.state = 868; this.match(CypherParser.SP); } } - this.state = 804; + this.state = 871; this.match(CypherParser.T__1); - this.state = 806; + this.state = 873; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 805; + this.state = 872; this.match(CypherParser.SP); } } - this.state = 808; - this.kU_PropertyDefinitions(); - this.state = 810; + this.state = 875; + this.iC_PropertyDefinitions(); + this.state = 877; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 81, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 87, this._ctx) ) { case 1: { - this.state = 809; + this.state = 876; this.match(CypherParser.SP); } break; } - this.state = 817; + this.state = 884; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===4) { { - this.state = 812; + this.state = 879; this.match(CypherParser.T__3); - this.state = 814; + this.state = 881; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 813; + this.state = 880; this.match(CypherParser.SP); } } - this.state = 816; - this.kU_CreateNodeConstraint(); + this.state = 883; + this.iC_CreateNodeConstraint(); } } - this.state = 820; + this.state = 887; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 819; + this.state = 886; this.match(CypherParser.SP); } } - this.state = 822; + this.state = 889; this.match(CypherParser.T__2); } break; case 2: { - this.state = 824; + this.state = 891; this.match(CypherParser.SP); - this.state = 825; + this.state = 892; this.match(CypherParser.AS); - this.state = 826; + this.state = 893; this.match(CypherParser.SP); - this.state = 827; + this.state = 894; this.oC_Query(); } break; } + this.state = 912; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 95, this._ctx) ) { + case 1: + { + this.state = 897; + this.match(CypherParser.SP); + this.state = 898; + this.match(CypherParser.WITH); + this.state = 900; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 899; + this.match(CypherParser.SP); + } + } + + this.state = 902; + this.match(CypherParser.T__1); + this.state = 904; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 903; + this.match(CypherParser.SP); + } + } + + this.state = 906; + this.iC_Options(); + this.state = 908; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 907; + this.match(CypherParser.SP); + } + } + + this.state = 910; + this.match(CypherParser.T__2); + } + break; + } } } catch (re) { @@ -2412,115 +2695,115 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CreateRelTable(): KU_CreateRelTableContext { - let localctx: KU_CreateRelTableContext = new KU_CreateRelTableContext(this._ctx, this.state); - this.enterRule(localctx, 46, CypherParser.RULE_kU_CreateRelTable); + public iC_CreateRelTable(): IC_CreateRelTableContext { + let localctx: IC_CreateRelTableContext = new IC_CreateRelTableContext(this._ctx, this.state); + this.enterRule(localctx, 54, CypherParser.RULE_iC_CreateRelTable); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 830; + this.state = 914; this.match(CypherParser.CREATE); - this.state = 831; + this.state = 915; this.match(CypherParser.SP); - this.state = 832; + this.state = 916; this.match(CypherParser.REL); - this.state = 833; + this.state = 917; this.match(CypherParser.SP); - this.state = 834; + this.state = 918; this.match(CypherParser.TABLE); - this.state = 837; + this.state = 921; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 86, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 96, this._ctx) ) { case 1: { - this.state = 835; + this.state = 919; this.match(CypherParser.SP); - this.state = 836; + this.state = 920; this.match(CypherParser.GROUP); } break; } - this.state = 841; + this.state = 925; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 87, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 97, this._ctx) ) { case 1: { - this.state = 839; + this.state = 923; this.match(CypherParser.SP); - this.state = 840; - this.kU_IfNotExists(); + this.state = 924; + this.iC_IfNotExists(); } break; } - this.state = 843; + this.state = 927; this.match(CypherParser.SP); - this.state = 844; + this.state = 928; this.oC_SchemaName(); - this.state = 846; + this.state = 930; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 845; + this.state = 929; this.match(CypherParser.SP); } } - this.state = 848; + this.state = 932; this.match(CypherParser.T__1); - this.state = 850; + this.state = 934; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 849; + this.state = 933; this.match(CypherParser.SP); } } - this.state = 852; - this.kU_FromToConnections(); - this.state = 854; + this.state = 936; + this.iC_CreateFromToConnections(); + this.state = 938; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 853; + this.state = 937; this.match(CypherParser.SP); } } - this.state = 882; + this.state = 966; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 97, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 107, this._ctx) ) { case 1: { - this.state = 864; + this.state = 948; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 93, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 103, this._ctx) ) { case 1: { - this.state = 856; + this.state = 940; this.match(CypherParser.T__3); - this.state = 858; + this.state = 942; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 857; + this.state = 941; this.match(CypherParser.SP); } } - this.state = 860; - this.kU_PropertyDefinitions(); - this.state = 862; + this.state = 944; + this.iC_PropertyDefinitions(); + this.state = 946; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 861; + this.state = 945; this.match(CypherParser.SP); } } @@ -2528,31 +2811,31 @@ export class CypherParser extends antlr.Parser { } break; } - this.state = 874; + this.state = 958; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===4) { { - this.state = 866; + this.state = 950; this.match(CypherParser.T__3); - this.state = 868; + this.state = 952; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 867; + this.state = 951; this.match(CypherParser.SP); } } - this.state = 870; + this.state = 954; this.oC_SymbolicName(); - this.state = 872; + this.state = 956; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 871; + this.state = 955; this.match(CypherParser.SP); } } @@ -2560,69 +2843,69 @@ export class CypherParser extends antlr.Parser { } } - this.state = 876; + this.state = 960; this.match(CypherParser.T__2); } break; case 2: { - this.state = 877; + this.state = 961; this.match(CypherParser.T__2); - this.state = 878; + this.state = 962; this.match(CypherParser.SP); - this.state = 879; + this.state = 963; this.match(CypherParser.AS); - this.state = 880; + this.state = 964; this.match(CypherParser.SP); - this.state = 881; + this.state = 965; this.oC_Query(); } break; } - this.state = 899; + this.state = 983; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 101, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 111, this._ctx) ) { case 1: { - this.state = 884; + this.state = 968; this.match(CypherParser.SP); - this.state = 885; + this.state = 969; this.match(CypherParser.WITH); - this.state = 887; + this.state = 971; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 886; + this.state = 970; this.match(CypherParser.SP); } } - this.state = 889; + this.state = 973; this.match(CypherParser.T__1); - this.state = 891; + this.state = 975; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 890; + this.state = 974; this.match(CypherParser.SP); } } - this.state = 893; - this.kU_Options(); - this.state = 895; + this.state = 977; + this.iC_Options(); + this.state = 979; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 894; + this.state = 978; this.match(CypherParser.SP); } } - this.state = 897; + this.state = 981; this.match(CypherParser.T__2); } break; @@ -2643,53 +2926,563 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_FromToConnections(): KU_FromToConnectionsContext { - let localctx: KU_FromToConnectionsContext = new KU_FromToConnectionsContext(this._ctx, this.state); - this.enterRule(localctx, 48, CypherParser.RULE_kU_FromToConnections); + public iC_CreateIndex(): IC_CreateIndexContext { + let localctx: IC_CreateIndexContext = new IC_CreateIndexContext(this._ctx, this.state); + this.enterRule(localctx, 56, CypherParser.RULE_iC_CreateIndex); let _la: number; try { - let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 901; - this.kU_FromToConnection(); - this.state = 912; + this.state = 985; + this.match(CypherParser.CREATE); + this.state = 988; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 104, this._ctx); - while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 903; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===183) { + switch ( this._interp.adaptivePredict(this._input, 112, this._ctx) ) { + case 1: + { + this.state = 986; + this.match(CypherParser.SP); + this.state = 987; + this.oC_SymbolicName(); + } + break; + } + this.state = 990; + this.match(CypherParser.SP); + this.state = 991; + this.match(CypherParser.INDEX); + this.state = 994; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 113, this._ctx) ) { + case 1: + { + this.state = 992; + this.match(CypherParser.SP); + this.state = 993; + this.oC_SchemaName(); + } + break; + } + this.state = 998; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 114, this._ctx) ) { + case 1: + { + this.state = 996; + this.match(CypherParser.SP); + this.state = 997; + this.iC_IfNotExists(); + } + break; + } + this.state = 1000; + this.match(CypherParser.SP); + this.state = 1001; + this.match(CypherParser.FOR); + this.state = 1002; + this.match(CypherParser.SP); + this.state = 1003; + this.iC_IndexPattern(); + this.state = 1004; + this.match(CypherParser.SP); + this.state = 1005; + this.match(CypherParser.ON); + this.state = 1006; + this.match(CypherParser.SP); + this.state = 1007; + this.iC_IndexPropertyPattern(); + this.state = 1024; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 119, this._ctx) ) { + case 1: + { + this.state = 1008; + this.match(CypherParser.SP); + this.state = 1009; + this.match(CypherParser.OPTIONS); + this.state = 1011; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1010; + this.match(CypherParser.SP); + } + } + + this.state = 1013; + this.match(CypherParser.T__8); + this.state = 1015; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 116, this._ctx) ) { + case 1: + { + this.state = 1014; + this.match(CypherParser.SP); + } + break; + } + this.state = 1018; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237012269) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693025) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383259) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 25043861) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 2305) !== 0)) { + { + this.state = 1017; + this.iC_Options(); + } + } + + this.state = 1021; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1020; + this.match(CypherParser.SP); + } + } + + this.state = 1023; + this.match(CypherParser.T__9); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_IndexPattern(): IC_IndexPatternContext { + let localctx: IC_IndexPatternContext = new IC_IndexPatternContext(this._ctx, this.state); + this.enterRule(localctx, 58, CypherParser.RULE_iC_IndexPattern); + try { + this.state = 1028; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 120, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 1026; + this.iC_IndexNodePattern(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 1027; + this.iC_IndexRelationshipPattern(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_IndexNodePattern(): IC_IndexNodePatternContext { + let localctx: IC_IndexNodePatternContext = new IC_IndexNodePatternContext(this._ctx, this.state); + this.enterRule(localctx, 60, CypherParser.RULE_iC_IndexNodePattern); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 1030; + this.match(CypherParser.T__1); + this.state = 1032; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 121, this._ctx) ) { + case 1: + { + this.state = 1031; + this.match(CypherParser.SP); + } + break; + } + this.state = 1035; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237012269) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693025) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383259) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 25043861) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 2305) !== 0)) { + { + this.state = 1034; + this.oC_Variable(); + } + } + + this.state = 1038; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1037; + this.match(CypherParser.SP); + } + } + + this.state = 1040; + this.match(CypherParser.COLON); + this.state = 1042; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1041; + this.match(CypherParser.SP); + } + } + + this.state = 1044; + this.oC_LabelName(); + this.state = 1046; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1045; + this.match(CypherParser.SP); + } + } + + this.state = 1048; + this.match(CypherParser.T__2); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_IndexRelationshipPattern(): IC_IndexRelationshipPatternContext { + let localctx: IC_IndexRelationshipPatternContext = new IC_IndexRelationshipPatternContext(this._ctx, this.state); + this.enterRule(localctx, 62, CypherParser.RULE_iC_IndexRelationshipPattern); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 1050; + this.match(CypherParser.T__1); + this.state = 1052; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1051; + this.match(CypherParser.SP); + } + } + + this.state = 1054; + this.match(CypherParser.T__2); + this.state = 1056; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1055; + this.match(CypherParser.SP); + } + } + + this.state = 1058; + this.oC_RelationshipPattern(); + this.state = 1060; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1059; + this.match(CypherParser.SP); + } + } + + this.state = 1062; + this.match(CypherParser.T__1); + this.state = 1064; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1063; + this.match(CypherParser.SP); + } + } + + this.state = 1066; + this.match(CypherParser.T__2); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_IndexPropertyPattern(): IC_IndexPropertyPatternContext { + let localctx: IC_IndexPropertyPatternContext = new IC_IndexPropertyPatternContext(this._ctx, this.state); + this.enterRule(localctx, 64, CypherParser.RULE_iC_IndexPropertyPattern); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 1068; + this.match(CypherParser.T__1); + this.state = 1070; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1069; + this.match(CypherParser.SP); + } + } + + this.state = 1072; + this.oC_Variable(); + this.state = 1074; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1073; + this.match(CypherParser.SP); + } + } + + this.state = 1076; + this.match(CypherParser.T__4); + this.state = 1078; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1077; + this.match(CypherParser.SP); + } + } + + this.state = 1080; + this.oC_PropertyKeyName(); + this.state = 1082; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1081; + this.match(CypherParser.SP); + } + } + + this.state = 1084; + this.match(CypherParser.T__2); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_CreateFromToConnections(): IC_CreateFromToConnectionsContext { + let localctx: IC_CreateFromToConnectionsContext = new IC_CreateFromToConnectionsContext(this._ctx, this.state); + this.enterRule(localctx, 66, CypherParser.RULE_iC_CreateFromToConnections); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(localctx, 1); + { + this.state = 1086; + this.iC_CreateFromToConnection(); + this.state = 1097; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 136, this._ctx); + while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 1088; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1087; + this.match(CypherParser.SP); + } + } + + this.state = 1090; + this.match(CypherParser.T__3); + this.state = 1092; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { { - this.state = 902; + this.state = 1091; this.match(CypherParser.SP); } } - this.state = 905; - this.match(CypherParser.T__3); - this.state = 907; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===183) { - { - this.state = 906; - this.match(CypherParser.SP); - } + this.state = 1094; + this.iC_CreateFromToConnection(); + } + } + } + this.state = 1099; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 136, this._ctx); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_CreateFromToConnection(): IC_CreateFromToConnectionContext { + let localctx: IC_CreateFromToConnectionContext = new IC_CreateFromToConnectionContext(this._ctx, this.state); + this.enterRule(localctx, 68, CypherParser.RULE_iC_CreateFromToConnection); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 1100; + this.match(CypherParser.FROM); + this.state = 1101; + this.match(CypherParser.SP); + this.state = 1102; + this.oC_SchemaName(); + this.state = 1103; + this.match(CypherParser.SP); + this.state = 1104; + this.match(CypherParser.TO); + this.state = 1105; + this.match(CypherParser.SP); + this.state = 1106; + this.oC_SchemaName(); + this.state = 1109; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 137, this._ctx) ) { + case 1: + { + this.state = 1107; + this.match(CypherParser.SP); + this.state = 1108; + this.oC_SymbolicName(); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_FromToConnections(): IC_FromToConnectionsContext { + let localctx: IC_FromToConnectionsContext = new IC_FromToConnectionsContext(this._ctx, this.state); + this.enterRule(localctx, 70, CypherParser.RULE_iC_FromToConnections); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 1111; + this.iC_FromToConnection(); + this.state = 1122; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la===4 || _la===188) { + { + { + this.state = 1113; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1112; + this.match(CypherParser.SP); + } + } + + this.state = 1115; + this.match(CypherParser.T__3); + this.state = 1117; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1116; + this.match(CypherParser.SP); } + } - this.state = 909; - this.kU_FromToConnection(); - } - } + this.state = 1119; + this.iC_FromToConnection(); } - this.state = 914; + } + this.state = 1124; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 104, this._ctx); + _la = this._input.LA(1); } } } @@ -2707,25 +3500,25 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_FromToConnection(): KU_FromToConnectionContext { - let localctx: KU_FromToConnectionContext = new KU_FromToConnectionContext(this._ctx, this.state); - this.enterRule(localctx, 50, CypherParser.RULE_kU_FromToConnection); + public iC_FromToConnection(): IC_FromToConnectionContext { + let localctx: IC_FromToConnectionContext = new IC_FromToConnectionContext(this._ctx, this.state); + this.enterRule(localctx, 72, CypherParser.RULE_iC_FromToConnection); try { this.enterOuterAlt(localctx, 1); { - this.state = 915; + this.state = 1125; this.match(CypherParser.FROM); - this.state = 916; + this.state = 1126; this.match(CypherParser.SP); - this.state = 917; + this.state = 1127; this.oC_SchemaName(); - this.state = 918; + this.state = 1128; this.match(CypherParser.SP); - this.state = 919; + this.state = 1129; this.match(CypherParser.TO); - this.state = 920; + this.state = 1130; this.match(CypherParser.SP); - this.state = 921; + this.state = 1131; this.oC_SchemaName(); } } @@ -2743,52 +3536,52 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CreateSequence(): KU_CreateSequenceContext { - let localctx: KU_CreateSequenceContext = new KU_CreateSequenceContext(this._ctx, this.state); - this.enterRule(localctx, 52, CypherParser.RULE_kU_CreateSequence); + public iC_CreateSequence(): IC_CreateSequenceContext { + let localctx: IC_CreateSequenceContext = new IC_CreateSequenceContext(this._ctx, this.state); + this.enterRule(localctx, 74, CypherParser.RULE_iC_CreateSequence); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 923; + this.state = 1133; this.match(CypherParser.CREATE); - this.state = 924; + this.state = 1134; this.match(CypherParser.SP); - this.state = 925; + this.state = 1135; this.match(CypherParser.SEQUENCE); - this.state = 926; + this.state = 1136; this.match(CypherParser.SP); - this.state = 930; + this.state = 1140; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 105, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 141, this._ctx) ) { case 1: { - this.state = 927; - this.kU_IfNotExists(); - this.state = 928; + this.state = 1137; + this.iC_IfNotExists(); + this.state = 1138; this.match(CypherParser.SP); } break; } - this.state = 932; + this.state = 1142; this.oC_SchemaName(); - this.state = 937; + this.state = 1147; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 106, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 142, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 933; + this.state = 1143; this.match(CypherParser.SP); - this.state = 934; - this.kU_SequenceOptions(); + this.state = 1144; + this.iC_SequenceOptions(); } } } - this.state = 939; + this.state = 1149; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 106, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 142, this._ctx); } } } @@ -2806,36 +3599,36 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CreateType(): KU_CreateTypeContext { - let localctx: KU_CreateTypeContext = new KU_CreateTypeContext(this._ctx, this.state); - this.enterRule(localctx, 54, CypherParser.RULE_kU_CreateType); + public iC_CreateType(): IC_CreateTypeContext { + let localctx: IC_CreateTypeContext = new IC_CreateTypeContext(this._ctx, this.state); + this.enterRule(localctx, 76, CypherParser.RULE_iC_CreateType); try { this.enterOuterAlt(localctx, 1); { - this.state = 940; + this.state = 1150; this.match(CypherParser.CREATE); - this.state = 941; + this.state = 1151; this.match(CypherParser.SP); - this.state = 942; + this.state = 1152; this.match(CypherParser.TYPE); - this.state = 943; + this.state = 1153; this.match(CypherParser.SP); - this.state = 944; + this.state = 1154; this.oC_SchemaName(); - this.state = 945; + this.state = 1155; this.match(CypherParser.SP); - this.state = 946; + this.state = 1156; this.match(CypherParser.AS); - this.state = 947; + this.state = 1157; this.match(CypherParser.SP); - this.state = 948; - this.kU_DataType(0); - this.state = 950; + this.state = 1158; + this.iC_DataType(0); + this.state = 1160; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 107, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 143, this._ctx) ) { case 1: { - this.state = 949; + this.state = 1159; this.match(CypherParser.SP); } break; @@ -2856,46 +3649,46 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_SequenceOptions(): KU_SequenceOptionsContext { - let localctx: KU_SequenceOptionsContext = new KU_SequenceOptionsContext(this._ctx, this.state); - this.enterRule(localctx, 56, CypherParser.RULE_kU_SequenceOptions); + public iC_SequenceOptions(): IC_SequenceOptionsContext { + let localctx: IC_SequenceOptionsContext = new IC_SequenceOptionsContext(this._ctx, this.state); + this.enterRule(localctx, 78, CypherParser.RULE_iC_SequenceOptions); try { - this.state = 957; + this.state = 1167; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 108, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 144, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 952; - this.kU_IncrementBy(); + this.state = 1162; + this.iC_IncrementBy(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 953; - this.kU_MinValue(); + this.state = 1163; + this.iC_MinValue(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 954; - this.kU_MaxValue(); + this.state = 1164; + this.iC_MaxValue(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 955; - this.kU_StartWith(); + this.state = 1165; + this.iC_StartWith(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 956; - this.kU_Cycle(); + this.state = 1166; + this.iC_Cycle(); } break; } @@ -2914,23 +3707,23 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_WithPasswd(): KU_WithPasswdContext { - let localctx: KU_WithPasswdContext = new KU_WithPasswdContext(this._ctx, this.state); - this.enterRule(localctx, 58, CypherParser.RULE_kU_WithPasswd); + public iC_WithPasswd(): IC_WithPasswdContext { + let localctx: IC_WithPasswdContext = new IC_WithPasswdContext(this._ctx, this.state); + this.enterRule(localctx, 80, CypherParser.RULE_iC_WithPasswd); try { this.enterOuterAlt(localctx, 1); { - this.state = 959; + this.state = 1169; this.match(CypherParser.SP); - this.state = 960; + this.state = 1170; this.match(CypherParser.WITH); - this.state = 961; + this.state = 1171; this.match(CypherParser.SP); - this.state = 962; + this.state = 1172; this.match(CypherParser.PASSWORD); - this.state = 963; + this.state = 1173; this.match(CypherParser.SP); - this.state = 964; + this.state = 1174; this.match(CypherParser.StringLiteral); } } @@ -2948,41 +3741,41 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CreateUser(): KU_CreateUserContext { - let localctx: KU_CreateUserContext = new KU_CreateUserContext(this._ctx, this.state); - this.enterRule(localctx, 60, CypherParser.RULE_kU_CreateUser); + public iC_CreateUser(): IC_CreateUserContext { + let localctx: IC_CreateUserContext = new IC_CreateUserContext(this._ctx, this.state); + this.enterRule(localctx, 82, CypherParser.RULE_iC_CreateUser); try { this.enterOuterAlt(localctx, 1); { - this.state = 966; + this.state = 1176; this.match(CypherParser.CREATE); - this.state = 967; + this.state = 1177; this.match(CypherParser.SP); - this.state = 968; + this.state = 1178; this.match(CypherParser.USER); - this.state = 969; + this.state = 1179; this.match(CypherParser.SP); - this.state = 973; + this.state = 1183; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 109, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 145, this._ctx) ) { case 1: { - this.state = 970; - this.kU_IfNotExists(); - this.state = 971; + this.state = 1180; + this.iC_IfNotExists(); + this.state = 1181; this.match(CypherParser.SP); } break; } - this.state = 975; + this.state = 1185; this.oC_Variable(); - this.state = 977; + this.state = 1187; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 110, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 146, this._ctx) ) { case 1: { - this.state = 976; - this.kU_WithPasswd(); + this.state = 1186; + this.iC_WithPasswd(); } break; } @@ -3002,33 +3795,33 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CreateRole(): KU_CreateRoleContext { - let localctx: KU_CreateRoleContext = new KU_CreateRoleContext(this._ctx, this.state); - this.enterRule(localctx, 62, CypherParser.RULE_kU_CreateRole); + public iC_CreateRole(): IC_CreateRoleContext { + let localctx: IC_CreateRoleContext = new IC_CreateRoleContext(this._ctx, this.state); + this.enterRule(localctx, 84, CypherParser.RULE_iC_CreateRole); try { this.enterOuterAlt(localctx, 1); { - this.state = 979; + this.state = 1189; this.match(CypherParser.CREATE); - this.state = 980; + this.state = 1190; this.match(CypherParser.SP); - this.state = 981; + this.state = 1191; this.match(CypherParser.ROLE); - this.state = 982; + this.state = 1192; this.match(CypherParser.SP); - this.state = 986; + this.state = 1196; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 111, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 147, this._ctx) ) { case 1: { - this.state = 983; - this.kU_IfNotExists(); - this.state = 984; + this.state = 1193; + this.iC_IfNotExists(); + this.state = 1194; this.match(CypherParser.SP); } break; } - this.state = 988; + this.state = 1198; this.oC_Variable(); } } @@ -3046,40 +3839,40 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_IncrementBy(): KU_IncrementByContext { - let localctx: KU_IncrementByContext = new KU_IncrementByContext(this._ctx, this.state); - this.enterRule(localctx, 64, CypherParser.RULE_kU_IncrementBy); + public iC_IncrementBy(): IC_IncrementByContext { + let localctx: IC_IncrementByContext = new IC_IncrementByContext(this._ctx, this.state); + this.enterRule(localctx, 86, CypherParser.RULE_iC_IncrementBy); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 990; + this.state = 1200; this.match(CypherParser.INCREMENT); - this.state = 991; + this.state = 1201; this.match(CypherParser.SP); - this.state = 994; + this.state = 1204; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===56) { + if (_la===57) { { - this.state = 992; + this.state = 1202; this.match(CypherParser.BY); - this.state = 993; + this.state = 1203; this.match(CypherParser.SP); } } - this.state = 997; + this.state = 1207; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===166) { + if (_la===171) { { - this.state = 996; + this.state = 1206; this.match(CypherParser.MINUS); } } - this.state = 999; + this.state = 1209; this.oC_IntegerLiteral(); } } @@ -3097,23 +3890,23 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_MinValue(): KU_MinValueContext { - let localctx: KU_MinValueContext = new KU_MinValueContext(this._ctx, this.state); - this.enterRule(localctx, 66, CypherParser.RULE_kU_MinValue); + public iC_MinValue(): IC_MinValueContext { + let localctx: IC_MinValueContext = new IC_MinValueContext(this._ctx, this.state); + this.enterRule(localctx, 88, CypherParser.RULE_iC_MinValue); let _la: number; try { - this.state = 1010; + this.state = 1220; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.NO: this.enterOuterAlt(localctx, 1); { { - this.state = 1001; + this.state = 1211; this.match(CypherParser.NO); - this.state = 1002; + this.state = 1212; this.match(CypherParser.SP); - this.state = 1003; + this.state = 1213; this.match(CypherParser.MINVALUE); } } @@ -3122,21 +3915,21 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1004; + this.state = 1214; this.match(CypherParser.MINVALUE); - this.state = 1005; + this.state = 1215; this.match(CypherParser.SP); - this.state = 1007; + this.state = 1217; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===166) { + if (_la===171) { { - this.state = 1006; + this.state = 1216; this.match(CypherParser.MINUS); } } - this.state = 1009; + this.state = 1219; this.oC_IntegerLiteral(); } } @@ -3159,23 +3952,23 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_MaxValue(): KU_MaxValueContext { - let localctx: KU_MaxValueContext = new KU_MaxValueContext(this._ctx, this.state); - this.enterRule(localctx, 68, CypherParser.RULE_kU_MaxValue); + public iC_MaxValue(): IC_MaxValueContext { + let localctx: IC_MaxValueContext = new IC_MaxValueContext(this._ctx, this.state); + this.enterRule(localctx, 90, CypherParser.RULE_iC_MaxValue); let _la: number; try { - this.state = 1021; + this.state = 1231; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.NO: this.enterOuterAlt(localctx, 1); { { - this.state = 1012; + this.state = 1222; this.match(CypherParser.NO); - this.state = 1013; + this.state = 1223; this.match(CypherParser.SP); - this.state = 1014; + this.state = 1224; this.match(CypherParser.MAXVALUE); } } @@ -3184,21 +3977,21 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1015; + this.state = 1225; this.match(CypherParser.MAXVALUE); - this.state = 1016; + this.state = 1226; this.match(CypherParser.SP); - this.state = 1018; + this.state = 1228; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===166) { + if (_la===171) { { - this.state = 1017; + this.state = 1227; this.match(CypherParser.MINUS); } } - this.state = 1020; + this.state = 1230; this.oC_IntegerLiteral(); } } @@ -3221,40 +4014,40 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_StartWith(): KU_StartWithContext { - let localctx: KU_StartWithContext = new KU_StartWithContext(this._ctx, this.state); - this.enterRule(localctx, 70, CypherParser.RULE_kU_StartWith); + public iC_StartWith(): IC_StartWithContext { + let localctx: IC_StartWithContext = new IC_StartWithContext(this._ctx, this.state); + this.enterRule(localctx, 92, CypherParser.RULE_iC_StartWith); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1023; + this.state = 1233; this.match(CypherParser.START); - this.state = 1024; + this.state = 1234; this.match(CypherParser.SP); - this.state = 1027; + this.state = 1237; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===150) { + if (_la===155) { { - this.state = 1025; + this.state = 1235; this.match(CypherParser.WITH); - this.state = 1026; + this.state = 1236; this.match(CypherParser.SP); } } - this.state = 1030; + this.state = 1240; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===166) { + if (_la===171) { { - this.state = 1029; + this.state = 1239; this.match(CypherParser.MINUS); } } - this.state = 1032; + this.state = 1242; this.oC_IntegerLiteral(); } } @@ -3272,26 +4065,26 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Cycle(): KU_CycleContext { - let localctx: KU_CycleContext = new KU_CycleContext(this._ctx, this.state); - this.enterRule(localctx, 72, CypherParser.RULE_kU_Cycle); + public iC_Cycle(): IC_CycleContext { + let localctx: IC_CycleContext = new IC_CycleContext(this._ctx, this.state); + this.enterRule(localctx, 94, CypherParser.RULE_iC_Cycle); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1036; + this.state = 1246; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===111) { + if (_la===114) { { - this.state = 1034; + this.state = 1244; this.match(CypherParser.NO); - this.state = 1035; + this.state = 1245; this.match(CypherParser.SP); } } - this.state = 1038; + this.state = 1248; this.match(CypherParser.CYCLE); } } @@ -3309,17 +4102,17 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_IfExists(): KU_IfExistsContext { - let localctx: KU_IfExistsContext = new KU_IfExistsContext(this._ctx, this.state); - this.enterRule(localctx, 74, CypherParser.RULE_kU_IfExists); + public iC_IfExists(): IC_IfExistsContext { + let localctx: IC_IfExistsContext = new IC_IfExistsContext(this._ctx, this.state); + this.enterRule(localctx, 96, CypherParser.RULE_iC_IfExists); try { this.enterOuterAlt(localctx, 1); { - this.state = 1040; + this.state = 1250; this.match(CypherParser.IF); - this.state = 1041; + this.state = 1251; this.match(CypherParser.SP); - this.state = 1042; + this.state = 1252; this.match(CypherParser.EXISTS); } } @@ -3337,41 +4130,123 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Drop(): KU_DropContext { - let localctx: KU_DropContext = new KU_DropContext(this._ctx, this.state); - this.enterRule(localctx, 76, CypherParser.RULE_kU_Drop); + public iC_Drop(): IC_DropContext { + let localctx: IC_DropContext = new IC_DropContext(this._ctx, this.state); + this.enterRule(localctx, 98, CypherParser.RULE_iC_Drop); + let _la: number; + try { + this.state = 1274; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 159, this._ctx) ) { + case 1: + this.enterOuterAlt(localctx, 1); + { + this.state = 1254; + this.match(CypherParser.DROP); + this.state = 1255; + this.match(CypherParser.SP); + this.state = 1256; + _la = this._input.LA(1); + if(!(_la===92 || _la===108 || _la===134 || _la===141)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 1257; + this.match(CypherParser.SP); + this.state = 1261; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 157, this._ctx) ) { + case 1: + { + this.state = 1258; + this.iC_IfExists(); + this.state = 1259; + this.match(CypherParser.SP); + } + break; + } + this.state = 1263; + this.oC_SchemaName(); + } + break; + case 2: + this.enterOuterAlt(localctx, 2); + { + this.state = 1264; + this.match(CypherParser.DROP); + this.state = 1265; + this.match(CypherParser.SP); + this.state = 1266; + this.match(CypherParser.INDEX); + this.state = 1267; + this.match(CypherParser.SP); + this.state = 1271; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 158, this._ctx) ) { + case 1: + { + this.state = 1268; + this.iC_IfExists(); + this.state = 1269; + this.match(CypherParser.SP); + } + break; + } + this.state = 1273; + this.iC_DropIndexName(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_DropIndexName(): IC_DropIndexNameContext { + let localctx: IC_DropIndexNameContext = new IC_DropIndexNameContext(this._ctx, this.state); + this.enterRule(localctx, 100, CypherParser.RULE_iC_DropIndexName); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1044; - this.match(CypherParser.DROP); - this.state = 1045; - this.match(CypherParser.SP); - this.state = 1046; + this.state = 1276; + this.oC_SchemaName(); + this.state = 1278; + this._errHandler.sync(this); _la = this._input.LA(1); - if(!(((((_la - 105)) & ~0x1F) === 0 && ((1 << (_la - 105)) & 2181038081) !== 0))) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); + if (_la===188) { + { + this.state = 1277; + this.match(CypherParser.SP); + } } - this.state = 1047; - this.match(CypherParser.SP); - this.state = 1051; + + this.state = 1280; + this.match(CypherParser.T__4); + this.state = 1282; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 121, this._ctx) ) { - case 1: + _la = this._input.LA(1); + if (_la===188) { { - this.state = 1048; - this.kU_IfExists(); - this.state = 1049; + this.state = 1281; this.match(CypherParser.SP); } - break; } - this.state = 1053; + + this.state = 1284; this.oC_SchemaName(); } } @@ -3389,26 +4264,26 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_AlterTable(): KU_AlterTableContext { - let localctx: KU_AlterTableContext = new KU_AlterTableContext(this._ctx, this.state); - this.enterRule(localctx, 78, CypherParser.RULE_kU_AlterTable); + public iC_AlterTable(): IC_AlterTableContext { + let localctx: IC_AlterTableContext = new IC_AlterTableContext(this._ctx, this.state); + this.enterRule(localctx, 102, CypherParser.RULE_iC_AlterTable); try { this.enterOuterAlt(localctx, 1); { - this.state = 1055; + this.state = 1286; this.match(CypherParser.ALTER); - this.state = 1056; + this.state = 1287; this.match(CypherParser.SP); - this.state = 1057; + this.state = 1288; this.match(CypherParser.TABLE); - this.state = 1058; + this.state = 1289; this.match(CypherParser.SP); - this.state = 1059; + this.state = 1290; this.oC_SchemaName(); - this.state = 1060; + this.state = 1291; this.match(CypherParser.SP); - this.state = 1061; - this.kU_AlterOptions(); + this.state = 1292; + this.iC_AlterOptions(); } } catch (re) { @@ -3425,53 +4300,60 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_AlterOptions(): KU_AlterOptionsContext { - let localctx: KU_AlterOptionsContext = new KU_AlterOptionsContext(this._ctx, this.state); - this.enterRule(localctx, 80, CypherParser.RULE_kU_AlterOptions); + public iC_AlterOptions(): IC_AlterOptionsContext { + let localctx: IC_AlterOptionsContext = new IC_AlterOptionsContext(this._ctx, this.state); + this.enterRule(localctx, 104, CypherParser.RULE_iC_AlterOptions); try { - this.state = 1069; + this.state = 1301; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 122, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 162, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1063; - this.kU_AddProperty(); + this.state = 1294; + this.iC_AddProperty(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1064; - this.kU_DropProperty(); + this.state = 1295; + this.iC_DropProperty(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1065; - this.kU_RenameTable(); + this.state = 1296; + this.iC_RenameTable(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 1066; - this.kU_RenameProperty(); + this.state = 1297; + this.iC_RenameProperty(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 1067; - this.kU_AddFromToConnection(); + this.state = 1298; + this.iC_AddFromToConnection(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 1068; - this.kU_DropFromToConnection(); + this.state = 1299; + this.iC_DropFromToConnection(); + } + break; + case 7: + this.enterOuterAlt(localctx, 7); + { + this.state = 1300; + this.iC_SetSortedBy(); } break; } @@ -3490,43 +4372,43 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_AddProperty(): KU_AddPropertyContext { - let localctx: KU_AddPropertyContext = new KU_AddPropertyContext(this._ctx, this.state); - this.enterRule(localctx, 82, CypherParser.RULE_kU_AddProperty); + public iC_AddProperty(): IC_AddPropertyContext { + let localctx: IC_AddPropertyContext = new IC_AddPropertyContext(this._ctx, this.state); + this.enterRule(localctx, 106, CypherParser.RULE_iC_AddProperty); try { this.enterOuterAlt(localctx, 1); { - this.state = 1071; + this.state = 1303; this.match(CypherParser.ADD); - this.state = 1072; + this.state = 1304; this.match(CypherParser.SP); - this.state = 1076; + this.state = 1308; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 123, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 163, this._ctx) ) { case 1: { - this.state = 1073; - this.kU_IfNotExists(); - this.state = 1074; + this.state = 1305; + this.iC_IfNotExists(); + this.state = 1306; this.match(CypherParser.SP); } break; } - this.state = 1078; + this.state = 1310; this.oC_PropertyKeyName(); - this.state = 1079; + this.state = 1311; this.match(CypherParser.SP); - this.state = 1080; - this.kU_DataType(0); - this.state = 1083; + this.state = 1312; + this.iC_DataType(0); + this.state = 1315; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 124, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 164, this._ctx) ) { case 1: { - this.state = 1081; + this.state = 1313; this.match(CypherParser.SP); - this.state = 1082; - this.kU_Default(); + this.state = 1314; + this.iC_Default(); } break; } @@ -3546,18 +4428,90 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Default(): KU_DefaultContext { - let localctx: KU_DefaultContext = new KU_DefaultContext(this._ctx, this.state); - this.enterRule(localctx, 84, CypherParser.RULE_kU_Default); + public iC_Default(): IC_DefaultContext { + let localctx: IC_DefaultContext = new IC_DefaultContext(this._ctx, this.state); + this.enterRule(localctx, 108, CypherParser.RULE_iC_Default); try { this.enterOuterAlt(localctx, 1); { - this.state = 1085; + this.state = 1317; this.match(CypherParser.DEFAULT); - this.state = 1086; + this.state = 1318; + this.match(CypherParser.SP); + this.state = 1319; + this.oC_Expression(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_DropProperty(): IC_DropPropertyContext { + let localctx: IC_DropPropertyContext = new IC_DropPropertyContext(this._ctx, this.state); + this.enterRule(localctx, 110, CypherParser.RULE_iC_DropProperty); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 1321; + this.match(CypherParser.DROP); + this.state = 1322; + this.match(CypherParser.SP); + this.state = 1326; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 165, this._ctx) ) { + case 1: + { + this.state = 1323; + this.iC_IfExists(); + this.state = 1324; + this.match(CypherParser.SP); + } + break; + } + this.state = 1328; + this.oC_PropertyKeyName(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + public iC_RenameTable(): IC_RenameTableContext { + let localctx: IC_RenameTableContext = new IC_RenameTableContext(this._ctx, this.state); + this.enterRule(localctx, 112, CypherParser.RULE_iC_RenameTable); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 1330; + this.match(CypherParser.RENAME); + this.state = 1331; + this.match(CypherParser.SP); + this.state = 1332; + this.match(CypherParser.TO); + this.state = 1333; this.match(CypherParser.SP); - this.state = 1087; - this.oC_Expression(); + this.state = 1334; + this.oC_SchemaName(); } } catch (re) { @@ -3574,29 +4528,25 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_DropProperty(): KU_DropPropertyContext { - let localctx: KU_DropPropertyContext = new KU_DropPropertyContext(this._ctx, this.state); - this.enterRule(localctx, 86, CypherParser.RULE_kU_DropProperty); + public iC_RenameProperty(): IC_RenamePropertyContext { + let localctx: IC_RenamePropertyContext = new IC_RenamePropertyContext(this._ctx, this.state); + this.enterRule(localctx, 114, CypherParser.RULE_iC_RenameProperty); try { this.enterOuterAlt(localctx, 1); { - this.state = 1089; - this.match(CypherParser.DROP); - this.state = 1090; + this.state = 1336; + this.match(CypherParser.RENAME); + this.state = 1337; this.match(CypherParser.SP); - this.state = 1094; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 125, this._ctx) ) { - case 1: - { - this.state = 1091; - this.kU_IfExists(); - this.state = 1092; - this.match(CypherParser.SP); - } - break; - } - this.state = 1096; + this.state = 1338; + this.oC_PropertyKeyName(); + this.state = 1339; + this.match(CypherParser.SP); + this.state = 1340; + this.match(CypherParser.TO); + this.state = 1341; + this.match(CypherParser.SP); + this.state = 1342; this.oC_PropertyKeyName(); } } @@ -3614,22 +4564,31 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_RenameTable(): KU_RenameTableContext { - let localctx: KU_RenameTableContext = new KU_RenameTableContext(this._ctx, this.state); - this.enterRule(localctx, 88, CypherParser.RULE_kU_RenameTable); + public iC_AddFromToConnection(): IC_AddFromToConnectionContext { + let localctx: IC_AddFromToConnectionContext = new IC_AddFromToConnectionContext(this._ctx, this.state); + this.enterRule(localctx, 116, CypherParser.RULE_iC_AddFromToConnection); + let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1098; - this.match(CypherParser.RENAME); - this.state = 1099; - this.match(CypherParser.SP); - this.state = 1100; - this.match(CypherParser.TO); - this.state = 1101; + this.state = 1344; + this.match(CypherParser.ADD); + this.state = 1345; this.match(CypherParser.SP); - this.state = 1102; - this.oC_SchemaName(); + this.state = 1349; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===98) { + { + this.state = 1346; + this.iC_IfNotExists(); + this.state = 1347; + this.match(CypherParser.SP); + } + } + + this.state = 1351; + this.iC_FromToConnection(); } } catch (re) { @@ -3646,26 +4605,31 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_RenameProperty(): KU_RenamePropertyContext { - let localctx: KU_RenamePropertyContext = new KU_RenamePropertyContext(this._ctx, this.state); - this.enterRule(localctx, 90, CypherParser.RULE_kU_RenameProperty); + public iC_DropFromToConnection(): IC_DropFromToConnectionContext { + let localctx: IC_DropFromToConnectionContext = new IC_DropFromToConnectionContext(this._ctx, this.state); + this.enterRule(localctx, 118, CypherParser.RULE_iC_DropFromToConnection); + let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1104; - this.match(CypherParser.RENAME); - this.state = 1105; - this.match(CypherParser.SP); - this.state = 1106; - this.oC_PropertyKeyName(); - this.state = 1107; - this.match(CypherParser.SP); - this.state = 1108; - this.match(CypherParser.TO); - this.state = 1109; + this.state = 1353; + this.match(CypherParser.DROP); + this.state = 1354; this.match(CypherParser.SP); - this.state = 1110; - this.oC_PropertyKeyName(); + this.state = 1358; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===98) { + { + this.state = 1355; + this.iC_IfExists(); + this.state = 1356; + this.match(CypherParser.SP); + } + } + + this.state = 1360; + this.iC_FromToConnection(); } } catch (re) { @@ -3682,31 +4646,98 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_AddFromToConnection(): KU_AddFromToConnectionContext { - let localctx: KU_AddFromToConnectionContext = new KU_AddFromToConnectionContext(this._ctx, this.state); - this.enterRule(localctx, 92, CypherParser.RULE_kU_AddFromToConnection); + public iC_SetSortedBy(): IC_SetSortedByContext { + let localctx: IC_SetSortedByContext = new IC_SetSortedByContext(this._ctx, this.state); + this.enterRule(localctx, 120, CypherParser.RULE_iC_SetSortedBy); let _la: number; try { + let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1112; - this.match(CypherParser.ADD); - this.state = 1113; + this.state = 1362; + this.match(CypherParser.SET); + this.state = 1363; this.match(CypherParser.SP); - this.state = 1117; + this.state = 1364; + this.match(CypherParser.SORTED); + this.state = 1365; + this.match(CypherParser.SP); + this.state = 1366; + this.match(CypherParser.BY); + this.state = 1368; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===95) { + if (_la===188) { { - this.state = 1114; - this.kU_IfNotExists(); - this.state = 1115; + this.state = 1367; + this.match(CypherParser.SP); + } + } + + this.state = 1370; + this.match(CypherParser.T__1); + this.state = 1372; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1371; + this.match(CypherParser.SP); + } + } + + this.state = 1374; + this.iC_SortedByItem(); + this.state = 1385; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 172, this._ctx); + while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 1376; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1375; + this.match(CypherParser.SP); + } + } + + this.state = 1378; + this.match(CypherParser.T__3); + this.state = 1380; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1379; + this.match(CypherParser.SP); + } + } + + this.state = 1382; + this.iC_SortedByItem(); + } + } + } + this.state = 1387; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input, 172, this._ctx); + } + this.state = 1389; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===188) { + { + this.state = 1388; this.match(CypherParser.SP); } } - this.state = 1119; - this.kU_FromToConnection(); + this.state = 1391; + this.match(CypherParser.T__2); } } catch (re) { @@ -3723,31 +4754,26 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_DropFromToConnection(): KU_DropFromToConnectionContext { - let localctx: KU_DropFromToConnectionContext = new KU_DropFromToConnectionContext(this._ctx, this.state); - this.enterRule(localctx, 94, CypherParser.RULE_kU_DropFromToConnection); + public iC_SortedByItem(): IC_SortedByItemContext { + let localctx: IC_SortedByItemContext = new IC_SortedByItemContext(this._ctx, this.state); + this.enterRule(localctx, 122, CypherParser.RULE_iC_SortedByItem); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1121; - this.match(CypherParser.DROP); - this.state = 1122; + this.state = 1393; + this.oC_PropertyKeyName(); + this.state = 1394; this.match(CypherParser.SP); - this.state = 1126; - this._errHandler.sync(this); + this.state = 1395; _la = this._input.LA(1); - if (_la===95) { - { - this.state = 1123; - this.kU_IfExists(); - this.state = 1124; - this.match(CypherParser.SP); - } + if(!(_la===53 || _la===75)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); } - - this.state = 1128; - this.kU_FromToConnection(); } } catch (re) { @@ -3764,53 +4790,53 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ColumnDefinitions(): KU_ColumnDefinitionsContext { - let localctx: KU_ColumnDefinitionsContext = new KU_ColumnDefinitionsContext(this._ctx, this.state); - this.enterRule(localctx, 96, CypherParser.RULE_kU_ColumnDefinitions); + public iC_ColumnDefinitions(): IC_ColumnDefinitionsContext { + let localctx: IC_ColumnDefinitionsContext = new IC_ColumnDefinitionsContext(this._ctx, this.state); + this.enterRule(localctx, 124, CypherParser.RULE_iC_ColumnDefinitions); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1130; - this.kU_ColumnDefinition(); - this.state = 1141; + this.state = 1397; + this.iC_ColumnDefinition(); + this.state = 1408; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 130, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 176, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1132; + this.state = 1399; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1131; + this.state = 1398; this.match(CypherParser.SP); } } - this.state = 1134; + this.state = 1401; this.match(CypherParser.T__3); - this.state = 1136; + this.state = 1403; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1135; + this.state = 1402; this.match(CypherParser.SP); } } - this.state = 1138; - this.kU_ColumnDefinition(); + this.state = 1405; + this.iC_ColumnDefinition(); } } } - this.state = 1143; + this.state = 1410; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 130, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 176, this._ctx); } } } @@ -3828,18 +4854,18 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ColumnDefinition(): KU_ColumnDefinitionContext { - let localctx: KU_ColumnDefinitionContext = new KU_ColumnDefinitionContext(this._ctx, this.state); - this.enterRule(localctx, 98, CypherParser.RULE_kU_ColumnDefinition); + public iC_ColumnDefinition(): IC_ColumnDefinitionContext { + let localctx: IC_ColumnDefinitionContext = new IC_ColumnDefinitionContext(this._ctx, this.state); + this.enterRule(localctx, 126, CypherParser.RULE_iC_ColumnDefinition); try { this.enterOuterAlt(localctx, 1); { - this.state = 1144; + this.state = 1411; this.oC_PropertyKeyName(); - this.state = 1145; + this.state = 1412; this.match(CypherParser.SP); - this.state = 1146; - this.kU_DataType(0); + this.state = 1413; + this.iC_DataType(0); } } catch (re) { @@ -3856,53 +4882,53 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext { - let localctx: KU_PropertyDefinitionsContext = new KU_PropertyDefinitionsContext(this._ctx, this.state); - this.enterRule(localctx, 100, CypherParser.RULE_kU_PropertyDefinitions); + public iC_PropertyDefinitions(): IC_PropertyDefinitionsContext { + let localctx: IC_PropertyDefinitionsContext = new IC_PropertyDefinitionsContext(this._ctx, this.state); + this.enterRule(localctx, 128, CypherParser.RULE_iC_PropertyDefinitions); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1148; - this.kU_PropertyDefinition(); - this.state = 1159; + this.state = 1415; + this.iC_PropertyDefinition(); + this.state = 1426; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 133, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 179, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1150; + this.state = 1417; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1149; + this.state = 1416; this.match(CypherParser.SP); } } - this.state = 1152; + this.state = 1419; this.match(CypherParser.T__3); - this.state = 1154; + this.state = 1421; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1153; + this.state = 1420; this.match(CypherParser.SP); } } - this.state = 1156; - this.kU_PropertyDefinition(); + this.state = 1423; + this.iC_PropertyDefinition(); } } } - this.state = 1161; + this.state = 1428; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 133, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 179, this._ctx); } } } @@ -3920,38 +4946,38 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_PropertyDefinition(): KU_PropertyDefinitionContext { - let localctx: KU_PropertyDefinitionContext = new KU_PropertyDefinitionContext(this._ctx, this.state); - this.enterRule(localctx, 102, CypherParser.RULE_kU_PropertyDefinition); + public iC_PropertyDefinition(): IC_PropertyDefinitionContext { + let localctx: IC_PropertyDefinitionContext = new IC_PropertyDefinitionContext(this._ctx, this.state); + this.enterRule(localctx, 130, CypherParser.RULE_iC_PropertyDefinition); try { this.enterOuterAlt(localctx, 1); { - this.state = 1162; - this.kU_ColumnDefinition(); - this.state = 1165; + this.state = 1429; + this.iC_ColumnDefinition(); + this.state = 1432; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 134, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 180, this._ctx) ) { case 1: { - this.state = 1163; + this.state = 1430; this.match(CypherParser.SP); - this.state = 1164; - this.kU_Default(); + this.state = 1431; + this.iC_Default(); } break; } - this.state = 1171; + this.state = 1438; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 135, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 181, this._ctx) ) { case 1: { - this.state = 1167; + this.state = 1434; this.match(CypherParser.SP); - this.state = 1168; + this.state = 1435; this.match(CypherParser.PRIMARY); - this.state = 1169; + this.state = 1436; this.match(CypherParser.SP); - this.state = 1170; + this.state = 1437; this.match(CypherParser.KEY); } break; @@ -3972,54 +4998,54 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_CreateNodeConstraint(): KU_CreateNodeConstraintContext { - let localctx: KU_CreateNodeConstraintContext = new KU_CreateNodeConstraintContext(this._ctx, this.state); - this.enterRule(localctx, 104, CypherParser.RULE_kU_CreateNodeConstraint); + public iC_CreateNodeConstraint(): IC_CreateNodeConstraintContext { + let localctx: IC_CreateNodeConstraintContext = new IC_CreateNodeConstraintContext(this._ctx, this.state); + this.enterRule(localctx, 132, CypherParser.RULE_iC_CreateNodeConstraint); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1173; + this.state = 1440; this.match(CypherParser.PRIMARY); - this.state = 1174; + this.state = 1441; this.match(CypherParser.SP); - this.state = 1175; + this.state = 1442; this.match(CypherParser.KEY); - this.state = 1177; + this.state = 1444; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1176; + this.state = 1443; this.match(CypherParser.SP); } } - this.state = 1179; + this.state = 1446; this.match(CypherParser.T__1); - this.state = 1181; + this.state = 1448; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1180; + this.state = 1447; this.match(CypherParser.SP); } } - this.state = 1183; + this.state = 1450; this.oC_PropertyKeyName(); - this.state = 1185; + this.state = 1452; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1184; + this.state = 1451; this.match(CypherParser.SP); } } - this.state = 1187; + this.state = 1454; this.match(CypherParser.T__2); } } @@ -4037,50 +5063,50 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_UnionType(): KU_UnionTypeContext { - let localctx: KU_UnionTypeContext = new KU_UnionTypeContext(this._ctx, this.state); - this.enterRule(localctx, 106, CypherParser.RULE_kU_UnionType); + public iC_UnionType(): IC_UnionTypeContext { + let localctx: IC_UnionTypeContext = new IC_UnionTypeContext(this._ctx, this.state); + this.enterRule(localctx, 134, CypherParser.RULE_iC_UnionType); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1189; + this.state = 1456; this.match(CypherParser.UNION); - this.state = 1191; + this.state = 1458; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1190; + this.state = 1457; this.match(CypherParser.SP); } } - this.state = 1193; + this.state = 1460; this.match(CypherParser.T__1); - this.state = 1195; + this.state = 1462; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1194; + this.state = 1461; this.match(CypherParser.SP); } } - this.state = 1197; - this.kU_ColumnDefinitions(); - this.state = 1199; + this.state = 1464; + this.iC_ColumnDefinitions(); + this.state = 1466; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1198; + this.state = 1465; this.match(CypherParser.SP); } } - this.state = 1201; + this.state = 1468; this.match(CypherParser.T__2); } } @@ -4098,50 +5124,50 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_StructType(): KU_StructTypeContext { - let localctx: KU_StructTypeContext = new KU_StructTypeContext(this._ctx, this.state); - this.enterRule(localctx, 108, CypherParser.RULE_kU_StructType); + public iC_StructType(): IC_StructTypeContext { + let localctx: IC_StructTypeContext = new IC_StructTypeContext(this._ctx, this.state); + this.enterRule(localctx, 136, CypherParser.RULE_iC_StructType); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1203; + this.state = 1470; this.match(CypherParser.STRUCT); - this.state = 1205; + this.state = 1472; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1204; + this.state = 1471; this.match(CypherParser.SP); } } - this.state = 1207; + this.state = 1474; this.match(CypherParser.T__1); - this.state = 1209; + this.state = 1476; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1208; + this.state = 1475; this.match(CypherParser.SP); } } - this.state = 1211; - this.kU_ColumnDefinitions(); - this.state = 1213; + this.state = 1478; + this.iC_ColumnDefinitions(); + this.state = 1480; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1212; + this.state = 1479; this.match(CypherParser.SP); } } - this.state = 1215; + this.state = 1482; this.match(CypherParser.T__2); } } @@ -4159,74 +5185,74 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_MapType(): KU_MapTypeContext { - let localctx: KU_MapTypeContext = new KU_MapTypeContext(this._ctx, this.state); - this.enterRule(localctx, 110, CypherParser.RULE_kU_MapType); + public iC_MapType(): IC_MapTypeContext { + let localctx: IC_MapTypeContext = new IC_MapTypeContext(this._ctx, this.state); + this.enterRule(localctx, 138, CypherParser.RULE_iC_MapType); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1217; + this.state = 1484; this.match(CypherParser.MAP); - this.state = 1219; + this.state = 1486; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1218; + this.state = 1485; this.match(CypherParser.SP); } } - this.state = 1221; + this.state = 1488; this.match(CypherParser.T__1); - this.state = 1223; + this.state = 1490; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1222; + this.state = 1489; this.match(CypherParser.SP); } } - this.state = 1225; - this.kU_DataType(0); - this.state = 1227; + this.state = 1492; + this.iC_DataType(0); + this.state = 1494; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1226; + this.state = 1493; this.match(CypherParser.SP); } } - this.state = 1229; + this.state = 1496; this.match(CypherParser.T__3); - this.state = 1231; + this.state = 1498; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1230; + this.state = 1497; this.match(CypherParser.SP); } } - this.state = 1233; - this.kU_DataType(0); - this.state = 1235; + this.state = 1500; + this.iC_DataType(0); + this.state = 1502; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1234; + this.state = 1501; this.match(CypherParser.SP); } } - this.state = 1237; + this.state = 1504; this.match(CypherParser.T__2); } } @@ -4244,74 +5270,74 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_DecimalType(): KU_DecimalTypeContext { - let localctx: KU_DecimalTypeContext = new KU_DecimalTypeContext(this._ctx, this.state); - this.enterRule(localctx, 112, CypherParser.RULE_kU_DecimalType); + public iC_DecimalType(): IC_DecimalTypeContext { + let localctx: IC_DecimalTypeContext = new IC_DecimalTypeContext(this._ctx, this.state); + this.enterRule(localctx, 140, CypherParser.RULE_iC_DecimalType); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1239; + this.state = 1506; this.match(CypherParser.DECIMAL); - this.state = 1241; + this.state = 1508; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1240; + this.state = 1507; this.match(CypherParser.SP); } } - this.state = 1243; + this.state = 1510; this.match(CypherParser.T__1); - this.state = 1245; + this.state = 1512; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1244; + this.state = 1511; this.match(CypherParser.SP); } } - this.state = 1247; + this.state = 1514; this.oC_IntegerLiteral(); - this.state = 1249; + this.state = 1516; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1248; + this.state = 1515; this.match(CypherParser.SP); } } - this.state = 1251; + this.state = 1518; this.match(CypherParser.T__3); - this.state = 1253; + this.state = 1520; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1252; + this.state = 1519; this.match(CypherParser.SP); } } - this.state = 1255; + this.state = 1522; this.oC_IntegerLiteral(); - this.state = 1257; + this.state = 1524; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1256; + this.state = 1523; this.match(CypherParser.SP); } } - this.state = 1259; + this.state = 1526; this.match(CypherParser.T__2); } } @@ -4330,61 +5356,61 @@ export class CypherParser extends antlr.Parser { return localctx; } - public kU_DataType(): KU_DataTypeContext; - public kU_DataType(_p: number): KU_DataTypeContext; - public kU_DataType(_p?: number): KU_DataTypeContext { + public iC_DataType(): IC_DataTypeContext; + public iC_DataType(_p: number): IC_DataTypeContext; + public iC_DataType(_p?: number): IC_DataTypeContext { if (_p === undefined) { _p = 0; } let _parentctx = this._ctx; let _parentState = this.state; - let localctx = new KU_DataTypeContext(this._ctx, _parentState); + let localctx = new IC_DataTypeContext(this._ctx, _parentState); let _prevctx = localctx; - let _startState = 114; - this.enterRecursionRule(localctx, 114, CypherParser.RULE_kU_DataType, _p); + let _startState = 142; + this.enterRecursionRule(localctx, 142, CypherParser.RULE_iC_DataType, _p); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1267; + this.state = 1534; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 155, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 201, this._ctx) ) { case 1: { - this.state = 1262; + this.state = 1529; this.oC_SymbolicName(); } break; case 2: { - this.state = 1263; - this.kU_UnionType(); + this.state = 1530; + this.iC_UnionType(); } break; case 3: { - this.state = 1264; - this.kU_StructType(); + this.state = 1531; + this.iC_StructType(); } break; case 4: { - this.state = 1265; - this.kU_MapType(); + this.state = 1532; + this.iC_MapType(); } break; case 5: { - this.state = 1266; - this.kU_DecimalType(); + this.state = 1533; + this.iC_DecimalType(); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 1273; + this.state = 1540; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 156, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 202, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -4393,20 +5419,20 @@ export class CypherParser extends antlr.Parser { _prevctx = localctx; { { - localctx = new KU_DataTypeContext(_parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_kU_DataType); - this.state = 1269; + localctx = new IC_DataTypeContext(_parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_iC_DataType); + this.state = 1536; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); } - this.state = 1270; - this.kU_ListIdentifiers(); + this.state = 1537; + this.iC_ListIdentifiers(); } } } - this.state = 1275; + this.state = 1542; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 156, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 202, this._ctx); } } } @@ -4424,30 +5450,30 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ListIdentifiers(): KU_ListIdentifiersContext { - let localctx: KU_ListIdentifiersContext = new KU_ListIdentifiersContext(this._ctx, this.state); - this.enterRule(localctx, 116, CypherParser.RULE_kU_ListIdentifiers); + public iC_ListIdentifiers(): IC_ListIdentifiersContext { + let localctx: IC_ListIdentifiersContext = new IC_ListIdentifiersContext(this._ctx, this.state); + this.enterRule(localctx, 144, CypherParser.RULE_iC_ListIdentifiers); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1276; - this.kU_ListIdentifier(); - this.state = 1280; + this.state = 1543; + this.iC_ListIdentifier(); + this.state = 1547; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 157, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 203, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1277; - this.kU_ListIdentifier(); + this.state = 1544; + this.iC_ListIdentifier(); } } } - this.state = 1282; + this.state = 1549; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 157, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 203, this._ctx); } } } @@ -4465,26 +5491,26 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ListIdentifier(): KU_ListIdentifierContext { - let localctx: KU_ListIdentifierContext = new KU_ListIdentifierContext(this._ctx, this.state); - this.enterRule(localctx, 118, CypherParser.RULE_kU_ListIdentifier); + public iC_ListIdentifier(): IC_ListIdentifierContext { + let localctx: IC_ListIdentifierContext = new IC_ListIdentifierContext(this._ctx, this.state); + this.enterRule(localctx, 146, CypherParser.RULE_iC_ListIdentifier); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1283; + this.state = 1550; this.match(CypherParser.T__6); - this.state = 1285; + this.state = 1552; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===170) { + if (_la===175) { { - this.state = 1284; + this.state = 1551; this.oC_IntegerLiteral(); } } - this.state = 1287; + this.state = 1554; this.match(CypherParser.T__7); } } @@ -4504,22 +5530,22 @@ export class CypherParser extends antlr.Parser { } public oC_AnyCypherOption(): OC_AnyCypherOptionContext { let localctx: OC_AnyCypherOptionContext = new OC_AnyCypherOptionContext(this._ctx, this.state); - this.enterRule(localctx, 120, CypherParser.RULE_oC_AnyCypherOption); + this.enterRule(localctx, 148, CypherParser.RULE_oC_AnyCypherOption); try { - this.state = 1291; + this.state = 1558; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.EXPLAIN: this.enterOuterAlt(localctx, 1); { - this.state = 1289; + this.state = 1556; this.oC_Explain(); } break; case CypherParser.PROFILE: this.enterOuterAlt(localctx, 2); { - this.state = 1290; + this.state = 1557; this.oC_Profile(); } break; @@ -4543,20 +5569,20 @@ export class CypherParser extends antlr.Parser { } public oC_Explain(): OC_ExplainContext { let localctx: OC_ExplainContext = new OC_ExplainContext(this._ctx, this.state); - this.enterRule(localctx, 122, CypherParser.RULE_oC_Explain); + this.enterRule(localctx, 150, CypherParser.RULE_oC_Explain); try { this.enterOuterAlt(localctx, 1); { - this.state = 1293; + this.state = 1560; this.match(CypherParser.EXPLAIN); - this.state = 1296; + this.state = 1563; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 160, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 206, this._ctx) ) { case 1: { - this.state = 1294; + this.state = 1561; this.match(CypherParser.SP); - this.state = 1295; + this.state = 1562; this.match(CypherParser.LOGICAL); } break; @@ -4579,11 +5605,11 @@ export class CypherParser extends antlr.Parser { } public oC_Profile(): OC_ProfileContext { let localctx: OC_ProfileContext = new OC_ProfileContext(this._ctx, this.state); - this.enterRule(localctx, 124, CypherParser.RULE_oC_Profile); + this.enterRule(localctx, 152, CypherParser.RULE_oC_Profile); try { this.enterOuterAlt(localctx, 1); { - this.state = 1298; + this.state = 1565; this.match(CypherParser.PROFILE); } } @@ -4601,61 +5627,61 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Transaction(): KU_TransactionContext { - let localctx: KU_TransactionContext = new KU_TransactionContext(this._ctx, this.state); - this.enterRule(localctx, 126, CypherParser.RULE_kU_Transaction); + public iC_Transaction(): IC_TransactionContext { + let localctx: IC_TransactionContext = new IC_TransactionContext(this._ctx, this.state); + this.enterRule(localctx, 154, CypherParser.RULE_iC_Transaction); try { - this.state = 1313; + this.state = 1580; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 161, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 207, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1300; + this.state = 1567; this.match(CypherParser.BEGIN); - this.state = 1301; + this.state = 1568; this.match(CypherParser.SP); - this.state = 1302; + this.state = 1569; this.match(CypherParser.TRANSACTION); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1303; + this.state = 1570; this.match(CypherParser.BEGIN); - this.state = 1304; + this.state = 1571; this.match(CypherParser.SP); - this.state = 1305; + this.state = 1572; this.match(CypherParser.TRANSACTION); - this.state = 1306; + this.state = 1573; this.match(CypherParser.SP); - this.state = 1307; + this.state = 1574; this.match(CypherParser.READ); - this.state = 1308; + this.state = 1575; this.match(CypherParser.SP); - this.state = 1309; + this.state = 1576; this.match(CypherParser.ONLY); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1310; + this.state = 1577; this.match(CypherParser.COMMIT); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 1311; + this.state = 1578; this.match(CypherParser.ROLLBACK); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 1312; + this.state = 1579; this.match(CypherParser.CHECKPOINT); } break; @@ -4675,40 +5701,40 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Extension(): KU_ExtensionContext { - let localctx: KU_ExtensionContext = new KU_ExtensionContext(this._ctx, this.state); - this.enterRule(localctx, 128, CypherParser.RULE_kU_Extension); + public iC_Extension(): IC_ExtensionContext { + let localctx: IC_ExtensionContext = new IC_ExtensionContext(this._ctx, this.state); + this.enterRule(localctx, 156, CypherParser.RULE_iC_Extension); try { - this.state = 1319; + this.state = 1586; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.LOAD: this.enterOuterAlt(localctx, 1); { - this.state = 1315; - this.kU_LoadExtension(); + this.state = 1582; + this.iC_LoadExtension(); } break; case CypherParser.FORCE: case CypherParser.INSTALL: this.enterOuterAlt(localctx, 2); { - this.state = 1316; - this.kU_InstallExtension(); + this.state = 1583; + this.iC_InstallExtension(); } break; case CypherParser.UNINSTALL: this.enterOuterAlt(localctx, 3); { - this.state = 1317; - this.kU_UninstallExtension(); + this.state = 1584; + this.iC_UninstallExtension(); } break; case CypherParser.UPDATE: this.enterOuterAlt(localctx, 4); { - this.state = 1318; - this.kU_UpdateExtension(); + this.state = 1585; + this.iC_UpdateExtension(); } break; default: @@ -4729,39 +5755,40 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_LoadExtension(): KU_LoadExtensionContext { - let localctx: KU_LoadExtensionContext = new KU_LoadExtensionContext(this._ctx, this.state); - this.enterRule(localctx, 130, CypherParser.RULE_kU_LoadExtension); + public iC_LoadExtension(): IC_LoadExtensionContext { + let localctx: IC_LoadExtensionContext = new IC_LoadExtensionContext(this._ctx, this.state); + this.enterRule(localctx, 158, CypherParser.RULE_iC_LoadExtension); try { this.enterOuterAlt(localctx, 1); { - this.state = 1321; + this.state = 1588; this.match(CypherParser.LOAD); - this.state = 1322; + this.state = 1589; this.match(CypherParser.SP); - this.state = 1325; + this.state = 1592; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 163, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 209, this._ctx) ) { case 1: { - this.state = 1323; + this.state = 1590; this.match(CypherParser.EXTENSION); - this.state = 1324; + this.state = 1591; this.match(CypherParser.SP); } break; } - this.state = 1329; + this.state = 1596; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.StringLiteral: { - this.state = 1327; + this.state = 1594; this.match(CypherParser.StringLiteral); } break; case CypherParser.ADD: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -4826,7 +5853,7 @@ export class CypherParser extends antlr.Parser { case CypherParser.UnescapedSymbolicName: case CypherParser.EscapedSymbolicName: { - this.state = 1328; + this.state = 1595; this.oC_Variable(); } break; @@ -4849,43 +5876,43 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_InstallExtension(): KU_InstallExtensionContext { - let localctx: KU_InstallExtensionContext = new KU_InstallExtensionContext(this._ctx, this.state); - this.enterRule(localctx, 132, CypherParser.RULE_kU_InstallExtension); + public iC_InstallExtension(): IC_InstallExtensionContext { + let localctx: IC_InstallExtensionContext = new IC_InstallExtensionContext(this._ctx, this.state); + this.enterRule(localctx, 160, CypherParser.RULE_iC_InstallExtension); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1333; + this.state = 1600; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===88) { + if (_la===89) { { - this.state = 1331; + this.state = 1598; this.match(CypherParser.FORCE); - this.state = 1332; + this.state = 1599; this.match(CypherParser.SP); } } - this.state = 1335; + this.state = 1602; this.match(CypherParser.INSTALL); - this.state = 1336; + this.state = 1603; this.match(CypherParser.SP); - this.state = 1337; + this.state = 1604; this.oC_Variable(); - this.state = 1342; + this.state = 1609; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 166, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 212, this._ctx) ) { case 1: { - this.state = 1338; + this.state = 1605; this.match(CypherParser.SP); - this.state = 1339; + this.state = 1606; this.match(CypherParser.FROM); - this.state = 1340; + this.state = 1607; this.match(CypherParser.SP); - this.state = 1341; + this.state = 1608; this.match(CypherParser.StringLiteral); } break; @@ -4906,17 +5933,17 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_UninstallExtension(): KU_UninstallExtensionContext { - let localctx: KU_UninstallExtensionContext = new KU_UninstallExtensionContext(this._ctx, this.state); - this.enterRule(localctx, 134, CypherParser.RULE_kU_UninstallExtension); + public iC_UninstallExtension(): IC_UninstallExtensionContext { + let localctx: IC_UninstallExtensionContext = new IC_UninstallExtensionContext(this._ctx, this.state); + this.enterRule(localctx, 162, CypherParser.RULE_iC_UninstallExtension); try { this.enterOuterAlt(localctx, 1); { - this.state = 1344; + this.state = 1611; this.match(CypherParser.UNINSTALL); - this.state = 1345; + this.state = 1612; this.match(CypherParser.SP); - this.state = 1346; + this.state = 1613; this.oC_Variable(); } } @@ -4934,17 +5961,17 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_UpdateExtension(): KU_UpdateExtensionContext { - let localctx: KU_UpdateExtensionContext = new KU_UpdateExtensionContext(this._ctx, this.state); - this.enterRule(localctx, 136, CypherParser.RULE_kU_UpdateExtension); + public iC_UpdateExtension(): IC_UpdateExtensionContext { + let localctx: IC_UpdateExtensionContext = new IC_UpdateExtensionContext(this._ctx, this.state); + this.enterRule(localctx, 164, CypherParser.RULE_iC_UpdateExtension); try { this.enterOuterAlt(localctx, 1); { - this.state = 1348; + this.state = 1615; this.match(CypherParser.UPDATE); - this.state = 1349; + this.state = 1616; this.match(CypherParser.SP); - this.state = 1350; + this.state = 1617; this.oC_Variable(); } } @@ -4964,11 +5991,11 @@ export class CypherParser extends antlr.Parser { } public oC_Query(): OC_QueryContext { let localctx: OC_QueryContext = new OC_QueryContext(this._ctx, this.state); - this.enterRule(localctx, 138, CypherParser.RULE_oC_Query); + this.enterRule(localctx, 166, CypherParser.RULE_oC_Query); try { this.enterOuterAlt(localctx, 1); { - this.state = 1352; + this.state = 1619; this.oC_RegularQuery(); } } @@ -4988,50 +6015,50 @@ export class CypherParser extends antlr.Parser { } public oC_RegularQuery(): OC_RegularQueryContext { let localctx: OC_RegularQueryContext = new OC_RegularQueryContext(this._ctx, this.state); - this.enterRule(localctx, 140, CypherParser.RULE_oC_RegularQuery); + this.enterRule(localctx, 168, CypherParser.RULE_oC_RegularQuery); let _la: number; try { let _alt: number; - this.state = 1375; + this.state = 1642; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 171, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 217, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1354; + this.state = 1621; this.oC_SingleQuery(); - this.state = 1361; + this.state = 1628; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 168, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 214, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1356; + this.state = 1623; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1355; + this.state = 1622; this.match(CypherParser.SP); } } - this.state = 1358; + this.state = 1625; this.oC_Union(); } } } - this.state = 1363; + this.state = 1630; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 168, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 214, this._ctx); } } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1368; + this.state = 1635; this._errHandler.sync(this); _alt = 1; do { @@ -5039,14 +6066,14 @@ export class CypherParser extends antlr.Parser { case 1: { { - this.state = 1364; + this.state = 1631; this.oC_Return(); - this.state = 1366; + this.state = 1633; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1365; + this.state = 1632; this.match(CypherParser.SP); } } @@ -5057,11 +6084,11 @@ export class CypherParser extends antlr.Parser { default: throw new antlr.NoViableAltException(this); } - this.state = 1370; + this.state = 1637; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 170, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 216, this._ctx); } while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 1372; + this.state = 1639; this.oC_SingleQuery(); } break; @@ -5083,33 +6110,33 @@ export class CypherParser extends antlr.Parser { } public oC_Union(): OC_UnionContext { let localctx: OC_UnionContext = new OC_UnionContext(this._ctx, this.state); - this.enterRule(localctx, 142, CypherParser.RULE_oC_Union); + this.enterRule(localctx, 170, CypherParser.RULE_oC_Union); let _la: number; try { - this.state = 1389; + this.state = 1656; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 174, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 220, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 1377; + this.state = 1644; this.match(CypherParser.UNION); - this.state = 1378; + this.state = 1645; this.match(CypherParser.SP); - this.state = 1379; + this.state = 1646; this.match(CypherParser.ALL); - this.state = 1381; + this.state = 1648; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1380; + this.state = 1647; this.match(CypherParser.SP); } } - this.state = 1383; + this.state = 1650; this.oC_SingleQuery(); } } @@ -5118,19 +6145,19 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1384; + this.state = 1651; this.match(CypherParser.UNION); - this.state = 1386; + this.state = 1653; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1385; + this.state = 1652; this.match(CypherParser.SP); } } - this.state = 1388; + this.state = 1655; this.oC_SingleQuery(); } } @@ -5153,22 +6180,22 @@ export class CypherParser extends antlr.Parser { } public oC_SingleQuery(): OC_SingleQueryContext { let localctx: OC_SingleQueryContext = new OC_SingleQueryContext(this._ctx, this.state); - this.enterRule(localctx, 144, CypherParser.RULE_oC_SingleQuery); + this.enterRule(localctx, 172, CypherParser.RULE_oC_SingleQuery); try { - this.state = 1393; + this.state = 1660; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 175, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 221, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1391; + this.state = 1658; this.oC_SinglePartQuery(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1392; + this.state = 1659; this.oC_MultiPartQuery(); } break; @@ -5190,41 +6217,41 @@ export class CypherParser extends antlr.Parser { } public oC_SinglePartQuery(): OC_SinglePartQueryContext { let localctx: OC_SinglePartQueryContext = new OC_SinglePartQueryContext(this._ctx, this.state); - this.enterRule(localctx, 146, CypherParser.RULE_oC_SinglePartQuery); + this.enterRule(localctx, 174, CypherParser.RULE_oC_SinglePartQuery); let _la: number; try { let _alt: number; - this.state = 1430; + this.state = 1697; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 184, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 230, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1401; + this.state = 1668; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===57 || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 32777) !== 0) || _la===144) { + while (_la===58 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 65545) !== 0) || _la===149) { { { - this.state = 1395; + this.state = 1662; this.oC_ReadingClause(); - this.state = 1397; + this.state = 1664; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1396; + this.state = 1663; this.match(CypherParser.SP); } } } } - this.state = 1403; + this.state = 1670; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1404; + this.state = 1671; this.oC_Return(); } break; @@ -5232,74 +6259,74 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1411; + this.state = 1678; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===57 || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 32777) !== 0) || _la===144) { + while (_la===58 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 65545) !== 0) || _la===149) { { { - this.state = 1405; + this.state = 1672; this.oC_ReadingClause(); - this.state = 1407; + this.state = 1674; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1406; + this.state = 1673; this.match(CypherParser.SP); } } } } - this.state = 1413; + this.state = 1680; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1414; + this.state = 1681; this.oC_UpdatingClause(); - this.state = 1421; + this.state = 1688; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 181, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 227, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1416; + this.state = 1683; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1415; + this.state = 1682; this.match(CypherParser.SP); } } - this.state = 1418; + this.state = 1685; this.oC_UpdatingClause(); } } } - this.state = 1423; + this.state = 1690; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 181, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 227, this._ctx); } - this.state = 1428; + this.state = 1695; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 183, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 229, this._ctx) ) { case 1: { - this.state = 1425; + this.state = 1692; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1424; + this.state = 1691; this.match(CypherParser.SP); } } - this.state = 1427; + this.state = 1694; this.oC_Return(); } break; @@ -5325,13 +6352,13 @@ export class CypherParser extends antlr.Parser { } public oC_MultiPartQuery(): OC_MultiPartQueryContext { let localctx: OC_MultiPartQueryContext = new OC_MultiPartQueryContext(this._ctx, this.state); - this.enterRule(localctx, 148, CypherParser.RULE_oC_MultiPartQuery); + this.enterRule(localctx, 176, CypherParser.RULE_oC_MultiPartQuery); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1436; + this.state = 1703; this._errHandler.sync(this); _alt = 1; do { @@ -5339,14 +6366,14 @@ export class CypherParser extends antlr.Parser { case 1: { { - this.state = 1432; - this.kU_QueryPart(); - this.state = 1434; + this.state = 1699; + this.iC_QueryPart(); + this.state = 1701; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1433; + this.state = 1700; this.match(CypherParser.SP); } } @@ -5357,11 +6384,11 @@ export class CypherParser extends antlr.Parser { default: throw new antlr.NoViableAltException(this); } - this.state = 1438; + this.state = 1705; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 186, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 232, this._ctx); } while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 1440; + this.state = 1707; this.oC_SinglePartQuery(); } } @@ -5379,62 +6406,62 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_QueryPart(): KU_QueryPartContext { - let localctx: KU_QueryPartContext = new KU_QueryPartContext(this._ctx, this.state); - this.enterRule(localctx, 150, CypherParser.RULE_kU_QueryPart); + public iC_QueryPart(): IC_QueryPartContext { + let localctx: IC_QueryPartContext = new IC_QueryPartContext(this._ctx, this.state); + this.enterRule(localctx, 178, CypherParser.RULE_iC_QueryPart); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1448; + this.state = 1715; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===57 || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 32777) !== 0) || _la===144) { + while (_la===58 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 65545) !== 0) || _la===149) { { { - this.state = 1442; + this.state = 1709; this.oC_ReadingClause(); - this.state = 1444; + this.state = 1711; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1443; + this.state = 1710; this.match(CypherParser.SP); } } } } - this.state = 1450; + this.state = 1717; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1457; + this.state = 1724; this._errHandler.sync(this); _la = this._input.LA(1); - while (((((_la - 68)) & ~0x1F) === 0 && ((1 << (_la - 68)) & 289) !== 0) || _la===108 || _la===131) { + while (((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 289) !== 0) || _la===111 || _la===135) { { { - this.state = 1451; + this.state = 1718; this.oC_UpdatingClause(); - this.state = 1453; + this.state = 1720; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1452; + this.state = 1719; this.match(CypherParser.SP); } } } } - this.state = 1459; + this.state = 1726; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1460; + this.state = 1727; this.oC_With(); } } @@ -5454,29 +6481,29 @@ export class CypherParser extends antlr.Parser { } public oC_UpdatingClause(): OC_UpdatingClauseContext { let localctx: OC_UpdatingClauseContext = new OC_UpdatingClauseContext(this._ctx, this.state); - this.enterRule(localctx, 152, CypherParser.RULE_oC_UpdatingClause); + this.enterRule(localctx, 180, CypherParser.RULE_oC_UpdatingClause); try { - this.state = 1466; + this.state = 1733; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.CREATE: this.enterOuterAlt(localctx, 1); { - this.state = 1462; + this.state = 1729; this.oC_Create(); } break; case CypherParser.MERGE: this.enterOuterAlt(localctx, 2); { - this.state = 1463; + this.state = 1730; this.oC_Merge(); } break; case CypherParser.SET: this.enterOuterAlt(localctx, 3); { - this.state = 1464; + this.state = 1731; this.oC_Set(); } break; @@ -5484,7 +6511,7 @@ export class CypherParser extends antlr.Parser { case CypherParser.DETACH: this.enterOuterAlt(localctx, 4); { - this.state = 1465; + this.state = 1732; this.oC_Delete(); } break; @@ -5508,38 +6535,38 @@ export class CypherParser extends antlr.Parser { } public oC_ReadingClause(): OC_ReadingClauseContext { let localctx: OC_ReadingClauseContext = new OC_ReadingClauseContext(this._ctx, this.state); - this.enterRule(localctx, 154, CypherParser.RULE_oC_ReadingClause); + this.enterRule(localctx, 182, CypherParser.RULE_oC_ReadingClause); try { - this.state = 1472; + this.state = 1739; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.MATCH: case CypherParser.OPTIONAL: this.enterOuterAlt(localctx, 1); { - this.state = 1468; + this.state = 1735; this.oC_Match(); } break; case CypherParser.UNWIND: this.enterOuterAlt(localctx, 2); { - this.state = 1469; + this.state = 1736; this.oC_Unwind(); } break; case CypherParser.CALL: this.enterOuterAlt(localctx, 3); { - this.state = 1470; - this.kU_InQueryCall(); + this.state = 1737; + this.iC_InQueryCall(); } break; case CypherParser.LOAD: this.enterOuterAlt(localctx, 4); { - this.state = 1471; - this.kU_LoadFrom(); + this.state = 1738; + this.iC_LoadFrom(); } break; default: @@ -5560,135 +6587,135 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_LoadFrom(): KU_LoadFromContext { - let localctx: KU_LoadFromContext = new KU_LoadFromContext(this._ctx, this.state); - this.enterRule(localctx, 156, CypherParser.RULE_kU_LoadFrom); + public iC_LoadFrom(): IC_LoadFromContext { + let localctx: IC_LoadFromContext = new IC_LoadFromContext(this._ctx, this.state); + this.enterRule(localctx, 184, CypherParser.RULE_iC_LoadFrom); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1474; + this.state = 1741; this.match(CypherParser.LOAD); - this.state = 1492; + this.state = 1759; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 196, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 242, this._ctx) ) { case 1: { - this.state = 1475; + this.state = 1742; this.match(CypherParser.SP); - this.state = 1476; + this.state = 1743; this.match(CypherParser.WITH); - this.state = 1477; + this.state = 1744; this.match(CypherParser.SP); - this.state = 1478; + this.state = 1745; this.match(CypherParser.HEADERS); - this.state = 1480; + this.state = 1747; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1479; + this.state = 1746; this.match(CypherParser.SP); } } - this.state = 1482; + this.state = 1749; this.match(CypherParser.T__1); - this.state = 1484; + this.state = 1751; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1483; + this.state = 1750; this.match(CypherParser.SP); } } - this.state = 1486; - this.kU_ColumnDefinitions(); - this.state = 1488; + this.state = 1753; + this.iC_ColumnDefinitions(); + this.state = 1755; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1487; + this.state = 1754; this.match(CypherParser.SP); } } - this.state = 1490; + this.state = 1757; this.match(CypherParser.T__2); } break; } - this.state = 1494; + this.state = 1761; this.match(CypherParser.SP); - this.state = 1495; + this.state = 1762; this.match(CypherParser.FROM); - this.state = 1496; + this.state = 1763; this.match(CypherParser.SP); - this.state = 1497; - this.kU_ScanSource(); - this.state = 1511; + this.state = 1764; + this.iC_ScanSource(); + this.state = 1778; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 200, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 246, this._ctx) ) { case 1: { - this.state = 1499; + this.state = 1766; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1498; + this.state = 1765; this.match(CypherParser.SP); } } - this.state = 1501; + this.state = 1768; this.match(CypherParser.T__1); - this.state = 1503; + this.state = 1770; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1502; + this.state = 1769; this.match(CypherParser.SP); } } - this.state = 1505; - this.kU_Options(); - this.state = 1507; + this.state = 1772; + this.iC_Options(); + this.state = 1774; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1506; + this.state = 1773; this.match(CypherParser.SP); } } - this.state = 1509; + this.state = 1776; this.match(CypherParser.T__2); } break; } - this.state = 1517; + this.state = 1784; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 202, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 248, this._ctx) ) { case 1: { - this.state = 1514; + this.state = 1781; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1513; + this.state = 1780; this.match(CypherParser.SP); } } - this.state = 1516; + this.state = 1783; this.oC_Where(); } break; @@ -5711,27 +6738,27 @@ export class CypherParser extends antlr.Parser { } public oC_YieldItem(): OC_YieldItemContext { let localctx: OC_YieldItemContext = new OC_YieldItemContext(this._ctx, this.state); - this.enterRule(localctx, 158, CypherParser.RULE_oC_YieldItem); + this.enterRule(localctx, 186, CypherParser.RULE_oC_YieldItem); try { this.enterOuterAlt(localctx, 1); { - this.state = 1524; + this.state = 1791; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 203, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 249, this._ctx) ) { case 1: { - this.state = 1519; + this.state = 1786; this.oC_Variable(); - this.state = 1520; + this.state = 1787; this.match(CypherParser.SP); - this.state = 1521; + this.state = 1788; this.match(CypherParser.AS); - this.state = 1522; + this.state = 1789; this.match(CypherParser.SP); } break; } - this.state = 1526; + this.state = 1793; this.oC_Variable(); } } @@ -5751,51 +6778,51 @@ export class CypherParser extends antlr.Parser { } public oC_YieldItems(): OC_YieldItemsContext { let localctx: OC_YieldItemsContext = new OC_YieldItemsContext(this._ctx, this.state); - this.enterRule(localctx, 160, CypherParser.RULE_oC_YieldItems); + this.enterRule(localctx, 188, CypherParser.RULE_oC_YieldItems); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1528; + this.state = 1795; this.oC_YieldItem(); - this.state = 1539; + this.state = 1806; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 206, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 252, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1530; + this.state = 1797; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1529; + this.state = 1796; this.match(CypherParser.SP); } } - this.state = 1532; + this.state = 1799; this.match(CypherParser.T__3); - this.state = 1534; + this.state = 1801; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1533; + this.state = 1800; this.match(CypherParser.SP); } } - this.state = 1536; + this.state = 1803; this.oC_YieldItem(); } } } - this.state = 1541; + this.state = 1808; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 206, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 252, this._ctx); } } } @@ -5813,59 +6840,59 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_InQueryCall(): KU_InQueryCallContext { - let localctx: KU_InQueryCallContext = new KU_InQueryCallContext(this._ctx, this.state); - this.enterRule(localctx, 162, CypherParser.RULE_kU_InQueryCall); + public iC_InQueryCall(): IC_InQueryCallContext { + let localctx: IC_InQueryCallContext = new IC_InQueryCallContext(this._ctx, this.state); + this.enterRule(localctx, 190, CypherParser.RULE_iC_InQueryCall); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1542; + this.state = 1809; this.match(CypherParser.CALL); - this.state = 1543; + this.state = 1810; this.match(CypherParser.SP); - this.state = 1544; + this.state = 1811; this.oC_FunctionInvocation(); - this.state = 1549; + this.state = 1816; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 208, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 254, this._ctx) ) { case 1: { - this.state = 1546; + this.state = 1813; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1545; + this.state = 1812; this.match(CypherParser.SP); } } - this.state = 1548; + this.state = 1815; this.oC_Where(); } break; } - this.state = 1557; + this.state = 1824; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 210, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 256, this._ctx) ) { case 1: { - this.state = 1552; + this.state = 1819; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1551; + this.state = 1818; this.match(CypherParser.SP); } } - this.state = 1554; + this.state = 1821; this.match(CypherParser.YIELD); - this.state = 1555; + this.state = 1822; this.match(CypherParser.SP); - this.state = 1556; + this.state = 1823; this.oC_YieldItems(); } break; @@ -5888,58 +6915,58 @@ export class CypherParser extends antlr.Parser { } public oC_Match(): OC_MatchContext { let localctx: OC_MatchContext = new OC_MatchContext(this._ctx, this.state); - this.enterRule(localctx, 164, CypherParser.RULE_oC_Match); + this.enterRule(localctx, 192, CypherParser.RULE_oC_Match); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1561; + this.state = 1828; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===118) { + if (_la===122) { { - this.state = 1559; + this.state = 1826; this.match(CypherParser.OPTIONAL); - this.state = 1560; + this.state = 1827; this.match(CypherParser.SP); } } - this.state = 1563; + this.state = 1830; this.match(CypherParser.MATCH); - this.state = 1565; + this.state = 1832; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1564; + this.state = 1831; this.match(CypherParser.SP); } } - this.state = 1567; + this.state = 1834; this.oC_Pattern(); - this.state = 1570; + this.state = 1837; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 213, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 259, this._ctx) ) { case 1: { - this.state = 1568; + this.state = 1835; this.match(CypherParser.SP); - this.state = 1569; + this.state = 1836; this.oC_Where(); } break; } - this.state = 1574; + this.state = 1841; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 214, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 260, this._ctx) ) { case 1: { - this.state = 1572; + this.state = 1839; this.match(CypherParser.SP); - this.state = 1573; - this.kU_Hint(); + this.state = 1840; + this.iC_Hint(); } break; } @@ -5959,18 +6986,18 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Hint(): KU_HintContext { - let localctx: KU_HintContext = new KU_HintContext(this._ctx, this.state); - this.enterRule(localctx, 166, CypherParser.RULE_kU_Hint); + public iC_Hint(): IC_HintContext { + let localctx: IC_HintContext = new IC_HintContext(this._ctx, this.state); + this.enterRule(localctx, 194, CypherParser.RULE_iC_Hint); try { this.enterOuterAlt(localctx, 1); { - this.state = 1576; + this.state = 1843; this.match(CypherParser.HINT); - this.state = 1577; + this.state = 1844; this.match(CypherParser.SP); - this.state = 1578; - this.kU_JoinNode(0); + this.state = 1845; + this.iC_JoinNode(0); } } catch (re) { @@ -5988,59 +7015,60 @@ export class CypherParser extends antlr.Parser { return localctx; } - public kU_JoinNode(): KU_JoinNodeContext; - public kU_JoinNode(_p: number): KU_JoinNodeContext; - public kU_JoinNode(_p?: number): KU_JoinNodeContext { + public iC_JoinNode(): IC_JoinNodeContext; + public iC_JoinNode(_p: number): IC_JoinNodeContext; + public iC_JoinNode(_p?: number): IC_JoinNodeContext { if (_p === undefined) { _p = 0; } let _parentctx = this._ctx; let _parentState = this.state; - let localctx = new KU_JoinNodeContext(this._ctx, _parentState); + let localctx = new IC_JoinNodeContext(this._ctx, _parentState); let _prevctx = localctx; - let _startState = 168; - this.enterRecursionRule(localctx, 168, CypherParser.RULE_kU_JoinNode, _p); + let _startState = 196; + this.enterRecursionRule(localctx, 196, CypherParser.RULE_iC_JoinNode, _p); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1592; + this.state = 1859; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.T__1: { - this.state = 1581; + this.state = 1848; this.match(CypherParser.T__1); - this.state = 1583; + this.state = 1850; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1582; + this.state = 1849; this.match(CypherParser.SP); } } - this.state = 1585; - this.kU_JoinNode(0); - this.state = 1587; + this.state = 1852; + this.iC_JoinNode(0); + this.state = 1854; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1586; + this.state = 1853; this.match(CypherParser.SP); } } - this.state = 1589; + this.state = 1856; this.match(CypherParser.T__2); } break; case CypherParser.ADD: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -6105,7 +7133,7 @@ export class CypherParser extends antlr.Parser { case CypherParser.UnescapedSymbolicName: case CypherParser.EscapedSymbolicName: { - this.state = 1591; + this.state = 1858; this.oC_SchemaName(); } break; @@ -6113,9 +7141,9 @@ export class CypherParser extends antlr.Parser { throw new antlr.NoViableAltException(this); } this._ctx.stop = this._input.LT(-1); - this.state = 1610; + this.state = 1877; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 220, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 266, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -6123,36 +7151,36 @@ export class CypherParser extends antlr.Parser { } _prevctx = localctx; { - this.state = 1608; + this.state = 1875; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 219, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 265, this._ctx) ) { case 1: { - localctx = new KU_JoinNodeContext(_parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_kU_JoinNode); - this.state = 1594; + localctx = new IC_JoinNodeContext(_parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_iC_JoinNode); + this.state = 1861; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); } - this.state = 1595; + this.state = 1862; this.match(CypherParser.SP); - this.state = 1596; + this.state = 1863; this.match(CypherParser.JOIN); - this.state = 1597; + this.state = 1864; this.match(CypherParser.SP); - this.state = 1598; - this.kU_JoinNode(5); + this.state = 1865; + this.iC_JoinNode(5); } break; case 2: { - localctx = new KU_JoinNodeContext(_parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_kU_JoinNode); - this.state = 1599; + localctx = new IC_JoinNodeContext(_parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_iC_JoinNode); + this.state = 1866; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 1604; + this.state = 1871; this._errHandler.sync(this); _alt = 1; do { @@ -6160,13 +7188,13 @@ export class CypherParser extends antlr.Parser { case 1: { { - this.state = 1600; + this.state = 1867; this.match(CypherParser.SP); - this.state = 1601; + this.state = 1868; this.match(CypherParser.MULTI_JOIN); - this.state = 1602; + this.state = 1869; this.match(CypherParser.SP); - this.state = 1603; + this.state = 1870; this.oC_SchemaName(); } } @@ -6174,18 +7202,18 @@ export class CypherParser extends antlr.Parser { default: throw new antlr.NoViableAltException(this); } - this.state = 1606; + this.state = 1873; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 218, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 264, this._ctx); } while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER); } break; } } } - this.state = 1612; + this.state = 1879; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 220, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 266, this._ctx); } } } @@ -6205,32 +7233,32 @@ export class CypherParser extends antlr.Parser { } public oC_Unwind(): OC_UnwindContext { let localctx: OC_UnwindContext = new OC_UnwindContext(this._ctx, this.state); - this.enterRule(localctx, 170, CypherParser.RULE_oC_Unwind); + this.enterRule(localctx, 198, CypherParser.RULE_oC_Unwind); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1613; + this.state = 1880; this.match(CypherParser.UNWIND); - this.state = 1615; + this.state = 1882; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1614; + this.state = 1881; this.match(CypherParser.SP); } } - this.state = 1617; + this.state = 1884; this.oC_Expression(); - this.state = 1618; + this.state = 1885; this.match(CypherParser.SP); - this.state = 1619; + this.state = 1886; this.match(CypherParser.AS); - this.state = 1620; + this.state = 1887; this.match(CypherParser.SP); - this.state = 1621; + this.state = 1888; this.oC_Variable(); } } @@ -6250,24 +7278,24 @@ export class CypherParser extends antlr.Parser { } public oC_Create(): OC_CreateContext { let localctx: OC_CreateContext = new OC_CreateContext(this._ctx, this.state); - this.enterRule(localctx, 172, CypherParser.RULE_oC_Create); + this.enterRule(localctx, 200, CypherParser.RULE_oC_Create); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1623; + this.state = 1890; this.match(CypherParser.CREATE); - this.state = 1625; + this.state = 1892; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1624; + this.state = 1891; this.match(CypherParser.SP); } } - this.state = 1627; + this.state = 1894; this.oC_Pattern(); } } @@ -6287,43 +7315,43 @@ export class CypherParser extends antlr.Parser { } public oC_Merge(): OC_MergeContext { let localctx: OC_MergeContext = new OC_MergeContext(this._ctx, this.state); - this.enterRule(localctx, 174, CypherParser.RULE_oC_Merge); + this.enterRule(localctx, 202, CypherParser.RULE_oC_Merge); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1629; + this.state = 1896; this.match(CypherParser.MERGE); - this.state = 1631; + this.state = 1898; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1630; + this.state = 1897; this.match(CypherParser.SP); } } - this.state = 1633; + this.state = 1900; this.oC_Pattern(); - this.state = 1638; + this.state = 1905; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 224, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 270, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1634; + this.state = 1901; this.match(CypherParser.SP); - this.state = 1635; + this.state = 1902; this.oC_MergeAction(); } } } - this.state = 1640; + this.state = 1907; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 224, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 270, this._ctx); } } } @@ -6343,24 +7371,24 @@ export class CypherParser extends antlr.Parser { } public oC_MergeAction(): OC_MergeActionContext { let localctx: OC_MergeActionContext = new OC_MergeActionContext(this._ctx, this.state); - this.enterRule(localctx, 176, CypherParser.RULE_oC_MergeAction); + this.enterRule(localctx, 204, CypherParser.RULE_oC_MergeAction); try { - this.state = 1651; + this.state = 1918; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 225, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 271, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 1641; + this.state = 1908; this.match(CypherParser.ON); - this.state = 1642; + this.state = 1909; this.match(CypherParser.SP); - this.state = 1643; + this.state = 1910; this.match(CypherParser.MATCH); - this.state = 1644; + this.state = 1911; this.match(CypherParser.SP); - this.state = 1645; + this.state = 1912; this.oC_Set(); } } @@ -6369,15 +7397,15 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1646; + this.state = 1913; this.match(CypherParser.ON); - this.state = 1647; + this.state = 1914; this.match(CypherParser.SP); - this.state = 1648; + this.state = 1915; this.match(CypherParser.CREATE); - this.state = 1649; + this.state = 1916; this.match(CypherParser.SP); - this.state = 1650; + this.state = 1917; this.oC_Set(); } } @@ -6400,111 +7428,111 @@ export class CypherParser extends antlr.Parser { } public oC_Set(): OC_SetContext { let localctx: OC_SetContext = new OC_SetContext(this._ctx, this.state); - this.enterRule(localctx, 178, CypherParser.RULE_oC_Set); + this.enterRule(localctx, 206, CypherParser.RULE_oC_Set); let _la: number; try { let _alt: number; - this.state = 1685; + this.state = 1952; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 233, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 279, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1653; + this.state = 1920; this.match(CypherParser.SET); - this.state = 1655; + this.state = 1922; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1654; + this.state = 1921; this.match(CypherParser.SP); } } - this.state = 1657; + this.state = 1924; this.oC_SetItem(); - this.state = 1668; + this.state = 1935; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 229, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 275, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1659; + this.state = 1926; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1658; + this.state = 1925; this.match(CypherParser.SP); } } - this.state = 1661; + this.state = 1928; this.match(CypherParser.T__3); - this.state = 1663; + this.state = 1930; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1662; + this.state = 1929; this.match(CypherParser.SP); } } - this.state = 1665; + this.state = 1932; this.oC_SetItem(); } } } - this.state = 1670; + this.state = 1937; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 229, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 275, this._ctx); } } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1671; + this.state = 1938; this.match(CypherParser.SET); - this.state = 1673; + this.state = 1940; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1672; + this.state = 1939; this.match(CypherParser.SP); } } - this.state = 1675; + this.state = 1942; this.oC_Atom(); - this.state = 1677; + this.state = 1944; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1676; + this.state = 1943; this.match(CypherParser.SP); } } - this.state = 1679; + this.state = 1946; this.match(CypherParser.T__5); - this.state = 1681; + this.state = 1948; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1680; + this.state = 1947; this.match(CypherParser.SP); } } - this.state = 1683; - this.kU_Properties(); + this.state = 1950; + this.iC_Properties(); } break; } @@ -6525,37 +7553,37 @@ export class CypherParser extends antlr.Parser { } public oC_SetItem(): OC_SetItemContext { let localctx: OC_SetItemContext = new OC_SetItemContext(this._ctx, this.state); - this.enterRule(localctx, 180, CypherParser.RULE_oC_SetItem); + this.enterRule(localctx, 208, CypherParser.RULE_oC_SetItem); let _la: number; try { this.enterOuterAlt(localctx, 1); { { - this.state = 1687; + this.state = 1954; this.oC_PropertyExpression(); - this.state = 1689; + this.state = 1956; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1688; + this.state = 1955; this.match(CypherParser.SP); } } - this.state = 1691; + this.state = 1958; this.match(CypherParser.T__5); - this.state = 1693; + this.state = 1960; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1692; + this.state = 1959; this.match(CypherParser.SP); } } - this.state = 1695; + this.state = 1962; this.oC_Expression(); } } @@ -6576,75 +7604,75 @@ export class CypherParser extends antlr.Parser { } public oC_Delete(): OC_DeleteContext { let localctx: OC_DeleteContext = new OC_DeleteContext(this._ctx, this.state); - this.enterRule(localctx, 182, CypherParser.RULE_oC_Delete); + this.enterRule(localctx, 210, CypherParser.RULE_oC_Delete); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1699; + this.state = 1966; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===76) { + if (_la===77) { { - this.state = 1697; + this.state = 1964; this.match(CypherParser.DETACH); - this.state = 1698; + this.state = 1965; this.match(CypherParser.SP); } } - this.state = 1701; + this.state = 1968; this.match(CypherParser.DELETE); - this.state = 1703; + this.state = 1970; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1702; + this.state = 1969; this.match(CypherParser.SP); } } - this.state = 1705; + this.state = 1972; this.oC_Expression(); - this.state = 1716; + this.state = 1983; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 240, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 286, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1707; + this.state = 1974; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1706; + this.state = 1973; this.match(CypherParser.SP); } } - this.state = 1709; + this.state = 1976; this.match(CypherParser.T__3); - this.state = 1711; + this.state = 1978; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1710; + this.state = 1977; this.match(CypherParser.SP); } } - this.state = 1713; + this.state = 1980; this.oC_Expression(); } } } - this.state = 1718; + this.state = 1985; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 240, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 286, this._ctx); } } } @@ -6664,31 +7692,31 @@ export class CypherParser extends antlr.Parser { } public oC_With(): OC_WithContext { let localctx: OC_WithContext = new OC_WithContext(this._ctx, this.state); - this.enterRule(localctx, 184, CypherParser.RULE_oC_With); + this.enterRule(localctx, 212, CypherParser.RULE_oC_With); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1719; + this.state = 1986; this.match(CypherParser.WITH); - this.state = 1720; + this.state = 1987; this.oC_ProjectionBody(); - this.state = 1725; + this.state = 1992; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 242, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 288, this._ctx) ) { case 1: { - this.state = 1722; + this.state = 1989; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1721; + this.state = 1988; this.match(CypherParser.SP); } } - this.state = 1724; + this.state = 1991; this.oC_Where(); } break; @@ -6711,13 +7739,13 @@ export class CypherParser extends antlr.Parser { } public oC_Return(): OC_ReturnContext { let localctx: OC_ReturnContext = new OC_ReturnContext(this._ctx, this.state); - this.enterRule(localctx, 186, CypherParser.RULE_oC_Return); + this.enterRule(localctx, 214, CypherParser.RULE_oC_Return); try { this.enterOuterAlt(localctx, 1); { - this.state = 1727; + this.state = 1994; this.match(CypherParser.RETURN); - this.state = 1728; + this.state = 1995; this.oC_ProjectionBody(); } } @@ -6737,67 +7765,67 @@ export class CypherParser extends antlr.Parser { } public oC_ProjectionBody(): OC_ProjectionBodyContext { let localctx: OC_ProjectionBodyContext = new OC_ProjectionBodyContext(this._ctx, this.state); - this.enterRule(localctx, 188, CypherParser.RULE_oC_ProjectionBody); + this.enterRule(localctx, 216, CypherParser.RULE_oC_ProjectionBody); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1734; + this.state = 2001; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 244, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 290, this._ctx) ) { case 1: { - this.state = 1731; + this.state = 1998; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1730; + this.state = 1997; this.match(CypherParser.SP); } } - this.state = 1733; + this.state = 2000; this.match(CypherParser.DISTINCT); } break; } - this.state = 1736; + this.state = 2003; this.match(CypherParser.SP); - this.state = 1737; + this.state = 2004; this.oC_ProjectionItems(); - this.state = 1740; + this.state = 2007; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 245, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 291, this._ctx) ) { case 1: { - this.state = 1738; + this.state = 2005; this.match(CypherParser.SP); - this.state = 1739; + this.state = 2006; this.oC_Order(); } break; } - this.state = 1744; + this.state = 2011; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 246, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 292, this._ctx) ) { case 1: { - this.state = 1742; + this.state = 2009; this.match(CypherParser.SP); - this.state = 1743; + this.state = 2010; this.oC_Skip(); } break; } - this.state = 1748; + this.state = 2015; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 247, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 293, this._ctx) ) { case 1: { - this.state = 1746; + this.state = 2013; this.match(CypherParser.SP); - this.state = 1747; + this.state = 2014; this.oC_Limit(); } break; @@ -6820,56 +7848,56 @@ export class CypherParser extends antlr.Parser { } public oC_ProjectionItems(): OC_ProjectionItemsContext { let localctx: OC_ProjectionItemsContext = new OC_ProjectionItemsContext(this._ctx, this.state); - this.enterRule(localctx, 190, CypherParser.RULE_oC_ProjectionItems); + this.enterRule(localctx, 218, CypherParser.RULE_oC_ProjectionItems); let _la: number; try { let _alt: number; - this.state = 1778; + this.state = 2045; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.STAR: this.enterOuterAlt(localctx, 1); { { - this.state = 1750; + this.state = 2017; this.match(CypherParser.STAR); - this.state = 1761; + this.state = 2028; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 250, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 296, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1752; + this.state = 2019; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1751; + this.state = 2018; this.match(CypherParser.SP); } } - this.state = 1754; + this.state = 2021; this.match(CypherParser.T__3); - this.state = 1756; + this.state = 2023; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1755; + this.state = 2022; this.match(CypherParser.SP); } } - this.state = 1758; + this.state = 2025; this.oC_ProjectionItem(); } } } - this.state = 1763; + this.state = 2030; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 250, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 296, this._ctx); } } } @@ -6882,6 +7910,7 @@ export class CypherParser extends antlr.Parser { case CypherParser.ADD: case CypherParser.ALL: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -6962,45 +7991,45 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1764; + this.state = 2031; this.oC_ProjectionItem(); - this.state = 1775; + this.state = 2042; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 253, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 299, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1766; + this.state = 2033; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1765; + this.state = 2032; this.match(CypherParser.SP); } } - this.state = 1768; + this.state = 2035; this.match(CypherParser.T__3); - this.state = 1770; + this.state = 2037; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1769; + this.state = 2036; this.match(CypherParser.SP); } } - this.state = 1772; + this.state = 2039; this.oC_ProjectionItem(); } } } - this.state = 1777; + this.state = 2044; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 253, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 299, this._ctx); } } } @@ -7025,24 +8054,24 @@ export class CypherParser extends antlr.Parser { } public oC_ProjectionItem(): OC_ProjectionItemContext { let localctx: OC_ProjectionItemContext = new OC_ProjectionItemContext(this._ctx, this.state); - this.enterRule(localctx, 192, CypherParser.RULE_oC_ProjectionItem); + this.enterRule(localctx, 220, CypherParser.RULE_oC_ProjectionItem); try { - this.state = 1787; + this.state = 2054; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 255, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 301, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 1780; + this.state = 2047; this.oC_Expression(); - this.state = 1781; + this.state = 2048; this.match(CypherParser.SP); - this.state = 1782; + this.state = 2049; this.match(CypherParser.AS); - this.state = 1783; + this.state = 2050; this.match(CypherParser.SP); - this.state = 1784; + this.state = 2051; this.oC_Variable(); } } @@ -7050,7 +8079,7 @@ export class CypherParser extends antlr.Parser { case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1786; + this.state = 2053; this.oC_Expression(); } break; @@ -7072,44 +8101,44 @@ export class CypherParser extends antlr.Parser { } public oC_Order(): OC_OrderContext { let localctx: OC_OrderContext = new OC_OrderContext(this._ctx, this.state); - this.enterRule(localctx, 194, CypherParser.RULE_oC_Order); + this.enterRule(localctx, 222, CypherParser.RULE_oC_Order); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1789; + this.state = 2056; this.match(CypherParser.ORDER); - this.state = 1790; + this.state = 2057; this.match(CypherParser.SP); - this.state = 1791; + this.state = 2058; this.match(CypherParser.BY); - this.state = 1792; + this.state = 2059; this.match(CypherParser.SP); - this.state = 1793; + this.state = 2060; this.oC_SortItem(); - this.state = 1801; + this.state = 2068; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===4) { { { - this.state = 1794; + this.state = 2061; this.match(CypherParser.T__3); - this.state = 1796; + this.state = 2063; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1795; + this.state = 2062; this.match(CypherParser.SP); } } - this.state = 1798; + this.state = 2065; this.oC_SortItem(); } } - this.state = 1803; + this.state = 2070; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -7131,15 +8160,15 @@ export class CypherParser extends antlr.Parser { } public oC_Skip(): OC_SkipContext { let localctx: OC_SkipContext = new OC_SkipContext(this._ctx, this.state); - this.enterRule(localctx, 196, CypherParser.RULE_oC_Skip); + this.enterRule(localctx, 224, CypherParser.RULE_oC_Skip); try { this.enterOuterAlt(localctx, 1); { - this.state = 1804; + this.state = 2071; this.match(CypherParser.L_SKIP); - this.state = 1805; + this.state = 2072; this.match(CypherParser.SP); - this.state = 1806; + this.state = 2073; this.oC_Expression(); } } @@ -7159,15 +8188,15 @@ export class CypherParser extends antlr.Parser { } public oC_Limit(): OC_LimitContext { let localctx: OC_LimitContext = new OC_LimitContext(this._ctx, this.state); - this.enterRule(localctx, 198, CypherParser.RULE_oC_Limit); + this.enterRule(localctx, 226, CypherParser.RULE_oC_Limit); try { this.enterOuterAlt(localctx, 1); { - this.state = 1808; + this.state = 2075; this.match(CypherParser.LIMIT); - this.state = 1809; + this.state = 2076; this.match(CypherParser.SP); - this.state = 1810; + this.state = 2077; this.oC_Expression(); } } @@ -7187,31 +8216,31 @@ export class CypherParser extends antlr.Parser { } public oC_SortItem(): OC_SortItemContext { let localctx: OC_SortItemContext = new OC_SortItemContext(this._ctx, this.state); - this.enterRule(localctx, 200, CypherParser.RULE_oC_SortItem); + this.enterRule(localctx, 228, CypherParser.RULE_oC_SortItem); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1812; + this.state = 2079; this.oC_Expression(); - this.state = 1817; + this.state = 2084; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 259, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 305, this._ctx) ) { case 1: { - this.state = 1814; + this.state = 2081; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1813; + this.state = 2080; this.match(CypherParser.SP); } } - this.state = 1816; + this.state = 2083; _la = this._input.LA(1); - if(!(((((_la - 52)) & ~0x1F) === 0 && ((1 << (_la - 52)) & 12582915) !== 0))) { + if(!(((((_la - 53)) & ~0x1F) === 0 && ((1 << (_la - 53)) & 12582915) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -7239,15 +8268,15 @@ export class CypherParser extends antlr.Parser { } public oC_Where(): OC_WhereContext { let localctx: OC_WhereContext = new OC_WhereContext(this._ctx, this.state); - this.enterRule(localctx, 202, CypherParser.RULE_oC_Where); + this.enterRule(localctx, 230, CypherParser.RULE_oC_Where); try { this.enterOuterAlt(localctx, 1); { - this.state = 1819; + this.state = 2086; this.match(CypherParser.WHERE); - this.state = 1820; + this.state = 2087; this.match(CypherParser.SP); - this.state = 1821; + this.state = 2088; this.oC_Expression(); } } @@ -7267,51 +8296,51 @@ export class CypherParser extends antlr.Parser { } public oC_Pattern(): OC_PatternContext { let localctx: OC_PatternContext = new OC_PatternContext(this._ctx, this.state); - this.enterRule(localctx, 204, CypherParser.RULE_oC_Pattern); + this.enterRule(localctx, 232, CypherParser.RULE_oC_Pattern); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1823; + this.state = 2090; this.oC_PatternPart(); - this.state = 1834; + this.state = 2101; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 262, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 308, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1825; + this.state = 2092; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1824; + this.state = 2091; this.match(CypherParser.SP); } } - this.state = 1827; + this.state = 2094; this.match(CypherParser.T__3); - this.state = 1829; + this.state = 2096; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1828; + this.state = 2095; this.match(CypherParser.SP); } } - this.state = 1831; + this.state = 2098; this.oC_PatternPart(); } } } - this.state = 1836; + this.state = 2103; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 262, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 308, this._ctx); } } } @@ -7331,14 +8360,15 @@ export class CypherParser extends antlr.Parser { } public oC_PatternPart(): OC_PatternPartContext { let localctx: OC_PatternPartContext = new OC_PatternPartContext(this._ctx, this.state); - this.enterRule(localctx, 206, CypherParser.RULE_oC_PatternPart); + this.enterRule(localctx, 234, CypherParser.RULE_oC_PatternPart); let _la: number; try { - this.state = 1848; + this.state = 2115; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.ADD: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -7405,31 +8435,31 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 1); { { - this.state = 1837; + this.state = 2104; this.oC_Variable(); - this.state = 1839; + this.state = 2106; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1838; + this.state = 2105; this.match(CypherParser.SP); } } - this.state = 1841; + this.state = 2108; this.match(CypherParser.T__5); - this.state = 1843; + this.state = 2110; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1842; + this.state = 2109; this.match(CypherParser.SP); } } - this.state = 1845; + this.state = 2112; this.oC_AnonymousPatternPart(); } } @@ -7437,7 +8467,7 @@ export class CypherParser extends antlr.Parser { case CypherParser.T__1: this.enterOuterAlt(localctx, 2); { - this.state = 1847; + this.state = 2114; this.oC_AnonymousPatternPart(); } break; @@ -7461,11 +8491,11 @@ export class CypherParser extends antlr.Parser { } public oC_AnonymousPatternPart(): OC_AnonymousPatternPartContext { let localctx: OC_AnonymousPatternPartContext = new OC_AnonymousPatternPartContext(this._ctx, this.state); - this.enterRule(localctx, 208, CypherParser.RULE_oC_AnonymousPatternPart); + this.enterRule(localctx, 236, CypherParser.RULE_oC_AnonymousPatternPart); try { this.enterOuterAlt(localctx, 1); { - this.state = 1850; + this.state = 2117; this.oC_PatternElement(); } } @@ -7485,44 +8515,44 @@ export class CypherParser extends antlr.Parser { } public oC_PatternElement(): OC_PatternElementContext { let localctx: OC_PatternElementContext = new OC_PatternElementContext(this._ctx, this.state); - this.enterRule(localctx, 210, CypherParser.RULE_oC_PatternElement); + this.enterRule(localctx, 238, CypherParser.RULE_oC_PatternElement); let _la: number; try { let _alt: number; - this.state = 1866; + this.state = 2133; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 268, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 314, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 1852; + this.state = 2119; this.oC_NodePattern(); - this.state = 1859; + this.state = 2126; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 267, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 313, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1854; + this.state = 2121; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1853; + this.state = 2120; this.match(CypherParser.SP); } } - this.state = 1856; + this.state = 2123; this.oC_PatternElementChain(); } } } - this.state = 1861; + this.state = 2128; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 267, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 313, this._ctx); } } } @@ -7531,11 +8561,11 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1862; + this.state = 2129; this.match(CypherParser.T__1); - this.state = 1863; + this.state = 2130; this.oC_PatternElement(); - this.state = 1864; + this.state = 2131; this.match(CypherParser.T__2); } } @@ -7558,36 +8588,36 @@ export class CypherParser extends antlr.Parser { } public oC_NodePattern(): OC_NodePatternContext { let localctx: OC_NodePatternContext = new OC_NodePatternContext(this._ctx, this.state); - this.enterRule(localctx, 212, CypherParser.RULE_oC_NodePattern); + this.enterRule(localctx, 240, CypherParser.RULE_oC_NodePattern); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1868; + this.state = 2135; this.match(CypherParser.T__1); - this.state = 1870; + this.state = 2137; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1869; + this.state = 2136; this.match(CypherParser.SP); } } - this.state = 1876; + this.state = 2143; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 2765989781) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 935155895) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 298489279) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 151060671) !== 0)) { + if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237012269) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693025) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383259) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 25043861) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 2305) !== 0)) { { - this.state = 1872; + this.state = 2139; this.oC_Variable(); - this.state = 1874; + this.state = 2141; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1873; + this.state = 2140; this.match(CypherParser.SP); } } @@ -7595,19 +8625,19 @@ export class CypherParser extends antlr.Parser { } } - this.state = 1882; + this.state = 2149; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===164) { + if (_la===169) { { - this.state = 1878; + this.state = 2145; this.oC_NodeLabels(); - this.state = 1880; + this.state = 2147; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1879; + this.state = 2146; this.match(CypherParser.SP); } } @@ -7615,19 +8645,19 @@ export class CypherParser extends antlr.Parser { } } - this.state = 1888; + this.state = 2155; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===9) { { - this.state = 1884; - this.kU_Properties(); - this.state = 1886; + this.state = 2151; + this.iC_Properties(); + this.state = 2153; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1885; + this.state = 2152; this.match(CypherParser.SP); } } @@ -7635,7 +8665,7 @@ export class CypherParser extends antlr.Parser { } } - this.state = 1890; + this.state = 2157; this.match(CypherParser.T__2); } } @@ -7655,24 +8685,24 @@ export class CypherParser extends antlr.Parser { } public oC_PatternElementChain(): OC_PatternElementChainContext { let localctx: OC_PatternElementChainContext = new OC_PatternElementChainContext(this._ctx, this.state); - this.enterRule(localctx, 214, CypherParser.RULE_oC_PatternElementChain); + this.enterRule(localctx, 242, CypherParser.RULE_oC_PatternElementChain); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1892; + this.state = 2159; this.oC_RelationshipPattern(); - this.state = 1894; + this.state = 2161; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1893; + this.state = 2160; this.match(CypherParser.SP); } } - this.state = 1896; + this.state = 2163; this.oC_NodePattern(); } } @@ -7692,61 +8722,61 @@ export class CypherParser extends antlr.Parser { } public oC_RelationshipPattern(): OC_RelationshipPatternContext { let localctx: OC_RelationshipPatternContext = new OC_RelationshipPatternContext(this._ctx, this.state); - this.enterRule(localctx, 216, CypherParser.RULE_oC_RelationshipPattern); + this.enterRule(localctx, 244, CypherParser.RULE_oC_RelationshipPattern); let _la: number; try { - this.state = 1942; + this.state = 2209; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 288, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 334, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 1898; + this.state = 2165; this.oC_LeftArrowHead(); - this.state = 1900; + this.state = 2167; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1899; + this.state = 2166; this.match(CypherParser.SP); } } - this.state = 1902; + this.state = 2169; this.oC_Dash(); - this.state = 1904; + this.state = 2171; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 278, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 324, this._ctx) ) { case 1: { - this.state = 1903; + this.state = 2170; this.match(CypherParser.SP); } break; } - this.state = 1907; + this.state = 2174; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===7) { { - this.state = 1906; + this.state = 2173; this.oC_RelationshipDetail(); } } - this.state = 1910; + this.state = 2177; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1909; + this.state = 2176; this.match(CypherParser.SP); } } - this.state = 1912; + this.state = 2179; this.oC_Dash(); } } @@ -7755,51 +8785,51 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1914; + this.state = 2181; this.oC_Dash(); - this.state = 1916; + this.state = 2183; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 281, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 327, this._ctx) ) { case 1: { - this.state = 1915; + this.state = 2182; this.match(CypherParser.SP); } break; } - this.state = 1919; + this.state = 2186; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===7) { { - this.state = 1918; + this.state = 2185; this.oC_RelationshipDetail(); } } - this.state = 1922; + this.state = 2189; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1921; + this.state = 2188; this.match(CypherParser.SP); } } - this.state = 1924; + this.state = 2191; this.oC_Dash(); - this.state = 1926; + this.state = 2193; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1925; + this.state = 2192; this.match(CypherParser.SP); } } - this.state = 1928; + this.state = 2195; this.oC_RightArrowHead(); } } @@ -7808,39 +8838,39 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 3); { { - this.state = 1930; + this.state = 2197; this.oC_Dash(); - this.state = 1932; + this.state = 2199; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 285, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 331, this._ctx) ) { case 1: { - this.state = 1931; + this.state = 2198; this.match(CypherParser.SP); } break; } - this.state = 1935; + this.state = 2202; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===7) { { - this.state = 1934; + this.state = 2201; this.oC_RelationshipDetail(); } } - this.state = 1938; + this.state = 2205; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1937; + this.state = 2204; this.match(CypherParser.SP); } } - this.state = 1940; + this.state = 2207; this.oC_Dash(); } } @@ -7863,36 +8893,36 @@ export class CypherParser extends antlr.Parser { } public oC_RelationshipDetail(): OC_RelationshipDetailContext { let localctx: OC_RelationshipDetailContext = new OC_RelationshipDetailContext(this._ctx, this.state); - this.enterRule(localctx, 218, CypherParser.RULE_oC_RelationshipDetail); + this.enterRule(localctx, 246, CypherParser.RULE_oC_RelationshipDetail); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1944; + this.state = 2211; this.match(CypherParser.T__6); - this.state = 1946; + this.state = 2213; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1945; + this.state = 2212; this.match(CypherParser.SP); } } - this.state = 1952; + this.state = 2219; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 2765989781) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 935155895) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 298489279) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 151060671) !== 0)) { + if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237012269) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693025) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383259) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 25043861) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 2305) !== 0)) { { - this.state = 1948; + this.state = 2215; this.oC_Variable(); - this.state = 1950; + this.state = 2217; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1949; + this.state = 2216; this.match(CypherParser.SP); } } @@ -7900,19 +8930,19 @@ export class CypherParser extends antlr.Parser { } } - this.state = 1958; + this.state = 2225; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===164) { + if (_la===169) { { - this.state = 1954; + this.state = 2221; this.oC_RelationshipTypes(); - this.state = 1956; + this.state = 2223; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1955; + this.state = 2222; this.match(CypherParser.SP); } } @@ -7920,19 +8950,19 @@ export class CypherParser extends antlr.Parser { } } - this.state = 1964; + this.state = 2231; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===161) { + if (_la===166) { { - this.state = 1960; - this.kU_RecursiveDetail(); - this.state = 1962; + this.state = 2227; + this.iC_RecursiveDetail(); + this.state = 2229; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1961; + this.state = 2228; this.match(CypherParser.SP); } } @@ -7940,19 +8970,19 @@ export class CypherParser extends antlr.Parser { } } - this.state = 1970; + this.state = 2237; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===9) { { - this.state = 1966; - this.kU_Properties(); - this.state = 1968; + this.state = 2233; + this.iC_Properties(); + this.state = 2235; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1967; + this.state = 2234; this.match(CypherParser.SP); } } @@ -7960,7 +8990,7 @@ export class CypherParser extends antlr.Parser { } } - this.state = 1972; + this.state = 2239; this.match(CypherParser.T__7); } } @@ -7978,130 +9008,130 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_Properties(): KU_PropertiesContext { - let localctx: KU_PropertiesContext = new KU_PropertiesContext(this._ctx, this.state); - this.enterRule(localctx, 220, CypherParser.RULE_kU_Properties); + public iC_Properties(): IC_PropertiesContext { + let localctx: IC_PropertiesContext = new IC_PropertiesContext(this._ctx, this.state); + this.enterRule(localctx, 248, CypherParser.RULE_iC_Properties); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1974; + this.state = 2241; this.match(CypherParser.T__8); - this.state = 1976; + this.state = 2243; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1975; + this.state = 2242; this.match(CypherParser.SP); } } - this.state = 2011; + this.state = 2278; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 2765989781) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 935155895) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 298489279) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 151060671) !== 0)) { + if (((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237012269) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693025) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383259) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 25043861) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 2305) !== 0)) { { - this.state = 1978; + this.state = 2245; this.oC_PropertyKeyName(); - this.state = 1980; + this.state = 2247; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1979; + this.state = 2246; this.match(CypherParser.SP); } } - this.state = 1982; + this.state = 2249; this.match(CypherParser.COLON); - this.state = 1984; + this.state = 2251; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1983; + this.state = 2250; this.match(CypherParser.SP); } } - this.state = 1986; + this.state = 2253; this.oC_Expression(); - this.state = 1988; + this.state = 2255; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1987; + this.state = 2254; this.match(CypherParser.SP); } } - this.state = 2008; + this.state = 2275; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===4) { { { - this.state = 1990; + this.state = 2257; this.match(CypherParser.T__3); - this.state = 1992; + this.state = 2259; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1991; + this.state = 2258; this.match(CypherParser.SP); } } - this.state = 1994; + this.state = 2261; this.oC_PropertyKeyName(); - this.state = 1996; + this.state = 2263; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1995; + this.state = 2262; this.match(CypherParser.SP); } } - this.state = 1998; + this.state = 2265; this.match(CypherParser.COLON); - this.state = 2000; + this.state = 2267; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 1999; + this.state = 2266; this.match(CypherParser.SP); } } - this.state = 2002; + this.state = 2269; this.oC_Expression(); - this.state = 2004; + this.state = 2271; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2003; + this.state = 2270; this.match(CypherParser.SP); } } } } - this.state = 2010; + this.state = 2277; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 2013; + this.state = 2280; this.match(CypherParser.T__9); } } @@ -8121,73 +9151,73 @@ export class CypherParser extends antlr.Parser { } public oC_RelationshipTypes(): OC_RelationshipTypesContext { let localctx: OC_RelationshipTypesContext = new OC_RelationshipTypesContext(this._ctx, this.state); - this.enterRule(localctx, 222, CypherParser.RULE_oC_RelationshipTypes); + this.enterRule(localctx, 250, CypherParser.RULE_oC_RelationshipTypes); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2015; + this.state = 2282; this.match(CypherParser.COLON); - this.state = 2017; + this.state = 2284; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2016; + this.state = 2283; this.match(CypherParser.SP); } } - this.state = 2019; + this.state = 2286; this.oC_RelTypeName(); - this.state = 2033; + this.state = 2300; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 312, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 358, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2021; + this.state = 2288; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2020; + this.state = 2287; this.match(CypherParser.SP); } } - this.state = 2023; + this.state = 2290; this.match(CypherParser.T__10); - this.state = 2025; + this.state = 2292; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===164) { + if (_la===169) { { - this.state = 2024; + this.state = 2291; this.match(CypherParser.COLON); } } - this.state = 2028; + this.state = 2295; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2027; + this.state = 2294; this.match(CypherParser.SP); } } - this.state = 2030; + this.state = 2297; this.oC_RelTypeName(); } } } - this.state = 2035; + this.state = 2302; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 312, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 358, this._ctx); } } } @@ -8207,56 +9237,56 @@ export class CypherParser extends antlr.Parser { } public oC_NodeLabels(): OC_NodeLabelsContext { let localctx: OC_NodeLabelsContext = new OC_NodeLabelsContext(this._ctx, this.state); - this.enterRule(localctx, 224, CypherParser.RULE_oC_NodeLabels); + this.enterRule(localctx, 252, CypherParser.RULE_oC_NodeLabels); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2036; + this.state = 2303; this.match(CypherParser.COLON); - this.state = 2038; + this.state = 2305; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2037; + this.state = 2304; this.match(CypherParser.SP); } } - this.state = 2040; + this.state = 2307; this.oC_LabelName(); - this.state = 2057; + this.state = 2324; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 318, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 364, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2042; + this.state = 2309; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2041; + this.state = 2308; this.match(CypherParser.SP); } } - this.state = 2049; + this.state = 2316; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.T__10: { - this.state = 2044; + this.state = 2311; this.match(CypherParser.T__10); - this.state = 2046; + this.state = 2313; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===164) { + if (_la===169) { { - this.state = 2045; + this.state = 2312; this.match(CypherParser.COLON); } } @@ -8265,31 +9295,31 @@ export class CypherParser extends antlr.Parser { break; case CypherParser.COLON: { - this.state = 2048; + this.state = 2315; this.match(CypherParser.COLON); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2052; + this.state = 2319; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2051; + this.state = 2318; this.match(CypherParser.SP); } } - this.state = 2054; + this.state = 2321; this.oC_LabelName(); } } } - this.state = 2059; + this.state = 2326; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 318, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 364, this._ctx); } } } @@ -8307,72 +9337,72 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_RecursiveDetail(): KU_RecursiveDetailContext { - let localctx: KU_RecursiveDetailContext = new KU_RecursiveDetailContext(this._ctx, this.state); - this.enterRule(localctx, 226, CypherParser.RULE_kU_RecursiveDetail); + public iC_RecursiveDetail(): IC_RecursiveDetailContext { + let localctx: IC_RecursiveDetailContext = new IC_RecursiveDetailContext(this._ctx, this.state); + this.enterRule(localctx, 254, CypherParser.RULE_iC_RecursiveDetail); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2060; + this.state = 2327; this.match(CypherParser.STAR); - this.state = 2065; + this.state = 2332; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 320, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 366, this._ctx) ) { case 1: { - this.state = 2062; + this.state = 2329; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2061; + this.state = 2328; this.match(CypherParser.SP); } } - this.state = 2064; - this.kU_RecursiveType(); + this.state = 2331; + this.iC_RecursiveType(); } break; } - this.state = 2071; + this.state = 2338; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 322, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 368, this._ctx) ) { case 1: { - this.state = 2068; + this.state = 2335; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 321, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 367, this._ctx) ) { case 1: { - this.state = 2067; + this.state = 2334; this.match(CypherParser.SP); } break; } - this.state = 2070; + this.state = 2337; this.oC_RangeLiteral(); } break; } - this.state = 2077; + this.state = 2344; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 324, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 370, this._ctx) ) { case 1: { - this.state = 2074; + this.state = 2341; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2073; + this.state = 2340; this.match(CypherParser.SP); } } - this.state = 2076; - this.kU_RecursiveComprehension(); + this.state = 2343; + this.iC_RecursiveComprehension(); } break; } @@ -8392,98 +9422,98 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_RecursiveType(): KU_RecursiveTypeContext { - let localctx: KU_RecursiveTypeContext = new KU_RecursiveTypeContext(this._ctx, this.state); - this.enterRule(localctx, 228, CypherParser.RULE_kU_RecursiveType); + public iC_RecursiveType(): IC_RecursiveTypeContext { + let localctx: IC_RecursiveTypeContext = new IC_RecursiveTypeContext(this._ctx, this.state); + this.enterRule(localctx, 256, CypherParser.RULE_iC_RecursiveType); let _la: number; try { - this.state = 2103; + this.state = 2370; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 329, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 375, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 2081; + this.state = 2348; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===48) { { - this.state = 2079; + this.state = 2346; this.match(CypherParser.ALL); - this.state = 2080; + this.state = 2347; this.match(CypherParser.SP); } } - this.state = 2083; + this.state = 2350; this.match(CypherParser.WSHORTEST); - this.state = 2085; + this.state = 2352; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2084; + this.state = 2351; this.match(CypherParser.SP); } } - this.state = 2087; + this.state = 2354; this.match(CypherParser.T__1); - this.state = 2089; + this.state = 2356; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2088; + this.state = 2355; this.match(CypherParser.SP); } } - this.state = 2091; + this.state = 2358; this.oC_PropertyKeyName(); - this.state = 2093; + this.state = 2360; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2092; + this.state = 2359; this.match(CypherParser.SP); } } - this.state = 2095; + this.state = 2362; this.match(CypherParser.T__2); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 2097; + this.state = 2364; this.match(CypherParser.SHORTEST); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 2098; + this.state = 2365; this.match(CypherParser.ALL); - this.state = 2099; + this.state = 2366; this.match(CypherParser.SP); - this.state = 2100; + this.state = 2367; this.match(CypherParser.SHORTEST); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 2101; + this.state = 2368; this.match(CypherParser.TRAIL); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 2102; + this.state = 2369; this.match(CypherParser.ACYCLIC); } break; @@ -8505,53 +9535,53 @@ export class CypherParser extends antlr.Parser { } public oC_RangeLiteral(): OC_RangeLiteralContext { let localctx: OC_RangeLiteralContext = new OC_RangeLiteralContext(this._ctx, this.state); - this.enterRule(localctx, 230, CypherParser.RULE_oC_RangeLiteral); + this.enterRule(localctx, 258, CypherParser.RULE_oC_RangeLiteral); let _la: number; try { - this.state = 2119; + this.state = 2386; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 334, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 380, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 2106; + this.state = 2373; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===170) { + if (_la===175) { { - this.state = 2105; + this.state = 2372; this.oC_LowerBound(); } } - this.state = 2109; + this.state = 2376; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2108; + this.state = 2375; this.match(CypherParser.SP); } } - this.state = 2111; + this.state = 2378; this.match(CypherParser.DOTDOT); - this.state = 2113; + this.state = 2380; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 332, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 378, this._ctx) ) { case 1: { - this.state = 2112; + this.state = 2379; this.match(CypherParser.SP); } break; } - this.state = 2116; + this.state = 2383; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===170) { + if (_la===175) { { - this.state = 2115; + this.state = 2382; this.oC_UpperBound(); } } @@ -8561,7 +9591,7 @@ export class CypherParser extends antlr.Parser { case 2: this.enterOuterAlt(localctx, 2); { - this.state = 2118; + this.state = 2385; this.oC_IntegerLiteral(); } break; @@ -8581,86 +9611,86 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_RecursiveComprehension(): KU_RecursiveComprehensionContext { - let localctx: KU_RecursiveComprehensionContext = new KU_RecursiveComprehensionContext(this._ctx, this.state); - this.enterRule(localctx, 232, CypherParser.RULE_kU_RecursiveComprehension); + public iC_RecursiveComprehension(): IC_RecursiveComprehensionContext { + let localctx: IC_RecursiveComprehensionContext = new IC_RecursiveComprehensionContext(this._ctx, this.state); + this.enterRule(localctx, 260, CypherParser.RULE_iC_RecursiveComprehension); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2121; + this.state = 2388; this.match(CypherParser.T__1); - this.state = 2123; + this.state = 2390; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2122; + this.state = 2389; this.match(CypherParser.SP); } } - this.state = 2125; + this.state = 2392; this.oC_Variable(); - this.state = 2127; + this.state = 2394; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2126; + this.state = 2393; this.match(CypherParser.SP); } } - this.state = 2129; + this.state = 2396; this.match(CypherParser.T__3); - this.state = 2131; + this.state = 2398; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2130; + this.state = 2397; this.match(CypherParser.SP); } } - this.state = 2133; + this.state = 2400; this.oC_Variable(); - this.state = 2145; + this.state = 2412; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 341, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 387, this._ctx) ) { case 1: { - this.state = 2135; + this.state = 2402; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2134; + this.state = 2401; this.match(CypherParser.SP); } } - this.state = 2137; + this.state = 2404; this.match(CypherParser.T__10); - this.state = 2139; + this.state = 2406; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2138; + this.state = 2405; this.match(CypherParser.SP); } } - this.state = 2141; + this.state = 2408; this.oC_Where(); - this.state = 2143; + this.state = 2410; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 340, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 386, this._ctx) ) { case 1: { - this.state = 2142; + this.state = 2409; this.match(CypherParser.SP); } break; @@ -8668,65 +9698,65 @@ export class CypherParser extends antlr.Parser { } break; } - this.state = 2166; + this.state = 2433; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===11 || _la===183) { + if (_la===11 || _la===188) { { - this.state = 2148; + this.state = 2415; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2147; + this.state = 2414; this.match(CypherParser.SP); } } - this.state = 2150; + this.state = 2417; this.match(CypherParser.T__10); - this.state = 2152; + this.state = 2419; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2151; + this.state = 2418; this.match(CypherParser.SP); } } - this.state = 2154; - this.kU_RecursiveProjectionItems(); - this.state = 2156; + this.state = 2421; + this.iC_RecursiveProjectionItems(); + this.state = 2423; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2155; + this.state = 2422; this.match(CypherParser.SP); } } - this.state = 2158; + this.state = 2425; this.match(CypherParser.T__3); - this.state = 2160; + this.state = 2427; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2159; + this.state = 2426; this.match(CypherParser.SP); } } - this.state = 2162; - this.kU_RecursiveProjectionItems(); - this.state = 2164; + this.state = 2429; + this.iC_RecursiveProjectionItems(); + this.state = 2431; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2163; + this.state = 2430; this.match(CypherParser.SP); } } @@ -8734,7 +9764,7 @@ export class CypherParser extends antlr.Parser { } } - this.state = 2168; + this.state = 2435; this.match(CypherParser.T__2); } } @@ -8752,46 +9782,46 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_RecursiveProjectionItems(): KU_RecursiveProjectionItemsContext { - let localctx: KU_RecursiveProjectionItemsContext = new KU_RecursiveProjectionItemsContext(this._ctx, this.state); - this.enterRule(localctx, 234, CypherParser.RULE_kU_RecursiveProjectionItems); + public iC_RecursiveProjectionItems(): IC_RecursiveProjectionItemsContext { + let localctx: IC_RecursiveProjectionItemsContext = new IC_RecursiveProjectionItemsContext(this._ctx, this.state); + this.enterRule(localctx, 262, CypherParser.RULE_iC_RecursiveProjectionItems); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2170; + this.state = 2437; this.match(CypherParser.T__8); - this.state = 2172; + this.state = 2439; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 348, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 394, this._ctx) ) { case 1: { - this.state = 2171; + this.state = 2438; this.match(CypherParser.SP); } break; } - this.state = 2175; + this.state = 2442; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 1237024559) !== 0) || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 4155185137) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 3915116575) !== 0) || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 111410759) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 39) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2474049119) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693297) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383483) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 1375675293) !== 0) || ((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 4995) !== 0)) { { - this.state = 2174; + this.state = 2441; this.oC_ProjectionItems(); } } - this.state = 2178; + this.state = 2445; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2177; + this.state = 2444; this.match(CypherParser.SP); } } - this.state = 2180; + this.state = 2447; this.match(CypherParser.T__9); } } @@ -8811,11 +9841,11 @@ export class CypherParser extends antlr.Parser { } public oC_LowerBound(): OC_LowerBoundContext { let localctx: OC_LowerBoundContext = new OC_LowerBoundContext(this._ctx, this.state); - this.enterRule(localctx, 236, CypherParser.RULE_oC_LowerBound); + this.enterRule(localctx, 264, CypherParser.RULE_oC_LowerBound); try { this.enterOuterAlt(localctx, 1); { - this.state = 2182; + this.state = 2449; this.match(CypherParser.DecimalInteger); } } @@ -8835,11 +9865,11 @@ export class CypherParser extends antlr.Parser { } public oC_UpperBound(): OC_UpperBoundContext { let localctx: OC_UpperBoundContext = new OC_UpperBoundContext(this._ctx, this.state); - this.enterRule(localctx, 238, CypherParser.RULE_oC_UpperBound); + this.enterRule(localctx, 266, CypherParser.RULE_oC_UpperBound); try { this.enterOuterAlt(localctx, 1); { - this.state = 2184; + this.state = 2451; this.match(CypherParser.DecimalInteger); } } @@ -8859,12 +9889,25 @@ export class CypherParser extends antlr.Parser { } public oC_LabelName(): OC_LabelNameContext { let localctx: OC_LabelNameContext = new OC_LabelNameContext(this._ctx, this.state); - this.enterRule(localctx, 240, CypherParser.RULE_oC_LabelName); + this.enterRule(localctx, 268, CypherParser.RULE_oC_LabelName); + let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2186; + this.state = 2453; this.oC_SchemaName(); + this.state = 2456; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la===5) { + { + this.state = 2454; + this.match(CypherParser.T__4); + this.state = 2455; + this.oC_SchemaName(); + } + } + } } catch (re) { @@ -8883,11 +9926,11 @@ export class CypherParser extends antlr.Parser { } public oC_RelTypeName(): OC_RelTypeNameContext { let localctx: OC_RelTypeNameContext = new OC_RelTypeNameContext(this._ctx, this.state); - this.enterRule(localctx, 242, CypherParser.RULE_oC_RelTypeName); + this.enterRule(localctx, 270, CypherParser.RULE_oC_RelTypeName); try { this.enterOuterAlt(localctx, 1); { - this.state = 2188; + this.state = 2458; this.oC_SchemaName(); } } @@ -8907,11 +9950,11 @@ export class CypherParser extends antlr.Parser { } public oC_Expression(): OC_ExpressionContext { let localctx: OC_ExpressionContext = new OC_ExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 244, CypherParser.RULE_oC_Expression); + this.enterRule(localctx, 272, CypherParser.RULE_oC_Expression); try { this.enterOuterAlt(localctx, 1); { - this.state = 2190; + this.state = 2460; this.oC_OrExpression(); } } @@ -8931,34 +9974,34 @@ export class CypherParser extends antlr.Parser { } public oC_OrExpression(): OC_OrExpressionContext { let localctx: OC_OrExpressionContext = new OC_OrExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 246, CypherParser.RULE_oC_OrExpression); + this.enterRule(localctx, 274, CypherParser.RULE_oC_OrExpression); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2192; + this.state = 2462; this.oC_XorExpression(); - this.state = 2199; + this.state = 2469; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 351, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 398, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2193; + this.state = 2463; this.match(CypherParser.SP); - this.state = 2194; + this.state = 2464; this.match(CypherParser.OR); - this.state = 2195; + this.state = 2465; this.match(CypherParser.SP); - this.state = 2196; + this.state = 2466; this.oC_XorExpression(); } } } - this.state = 2201; + this.state = 2471; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 351, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 398, this._ctx); } } } @@ -8978,34 +10021,34 @@ export class CypherParser extends antlr.Parser { } public oC_XorExpression(): OC_XorExpressionContext { let localctx: OC_XorExpressionContext = new OC_XorExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 248, CypherParser.RULE_oC_XorExpression); + this.enterRule(localctx, 276, CypherParser.RULE_oC_XorExpression); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2202; + this.state = 2472; this.oC_AndExpression(); - this.state = 2209; + this.state = 2479; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 352, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 399, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2203; + this.state = 2473; this.match(CypherParser.SP); - this.state = 2204; + this.state = 2474; this.match(CypherParser.XOR); - this.state = 2205; + this.state = 2475; this.match(CypherParser.SP); - this.state = 2206; + this.state = 2476; this.oC_AndExpression(); } } } - this.state = 2211; + this.state = 2481; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 352, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 399, this._ctx); } } } @@ -9025,34 +10068,34 @@ export class CypherParser extends antlr.Parser { } public oC_AndExpression(): OC_AndExpressionContext { let localctx: OC_AndExpressionContext = new OC_AndExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 250, CypherParser.RULE_oC_AndExpression); + this.enterRule(localctx, 278, CypherParser.RULE_oC_AndExpression); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2212; + this.state = 2482; this.oC_NotExpression(); - this.state = 2219; + this.state = 2489; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 353, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 400, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2213; + this.state = 2483; this.match(CypherParser.SP); - this.state = 2214; + this.state = 2484; this.match(CypherParser.AND); - this.state = 2215; + this.state = 2485; this.match(CypherParser.SP); - this.state = 2216; + this.state = 2486; this.oC_NotExpression(); } } } - this.state = 2221; + this.state = 2491; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 353, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 400, this._ctx); } } } @@ -9072,36 +10115,36 @@ export class CypherParser extends antlr.Parser { } public oC_NotExpression(): OC_NotExpressionContext { let localctx: OC_NotExpressionContext = new OC_NotExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 252, CypherParser.RULE_oC_NotExpression); + this.enterRule(localctx, 280, CypherParser.RULE_oC_NotExpression); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2228; + this.state = 2498; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===113) { + while (_la===116) { { { - this.state = 2222; + this.state = 2492; this.match(CypherParser.NOT); - this.state = 2224; + this.state = 2494; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2223; + this.state = 2493; this.match(CypherParser.SP); } } } } - this.state = 2230; + this.state = 2500; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2231; + this.state = 2501; this.oC_ComparisonExpression(); } } @@ -9121,47 +10164,47 @@ export class CypherParser extends antlr.Parser { } public oC_ComparisonExpression(): OC_ComparisonExpressionContext { let localctx: OC_ComparisonExpressionContext = new OC_ComparisonExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 254, CypherParser.RULE_oC_ComparisonExpression); + this.enterRule(localctx, 282, CypherParser.RULE_oC_ComparisonExpression); let _la: number; try { let _alt: number; - this.state = 2281; + this.state = 2551; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 366, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 413, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 2233; - this.kU_BitwiseOrOperatorExpression(); - this.state = 2243; + this.state = 2503; + this.iC_BitwiseOrOperatorExpression(); + this.state = 2513; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 358, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 405, this._ctx) ) { case 1: { - this.state = 2235; + this.state = 2505; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2234; + this.state = 2504; this.match(CypherParser.SP); } } - this.state = 2237; - this.kU_ComparisonOperator(); - this.state = 2239; + this.state = 2507; + this.iC_ComparisonOperator(); + this.state = 2509; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2238; + this.state = 2508; this.match(CypherParser.SP); } } - this.state = 2241; - this.kU_BitwiseOrOperatorExpression(); + this.state = 2511; + this.iC_BitwiseOrOperatorExpression(); } break; } @@ -9170,66 +10213,66 @@ export class CypherParser extends antlr.Parser { case 2: this.enterOuterAlt(localctx, 2); { - this.state = 2245; - this.kU_BitwiseOrOperatorExpression(); + this.state = 2515; + this.iC_BitwiseOrOperatorExpression(); { - this.state = 2247; + this.state = 2517; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2246; + this.state = 2516; this.match(CypherParser.SP); } } - this.state = 2249; + this.state = 2519; localctx._INVALID_NOT_EQUAL = this.match(CypherParser.INVALID_NOT_EQUAL); - this.state = 2251; + this.state = 2521; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2250; + this.state = 2520; this.match(CypherParser.SP); } } - this.state = 2253; - this.kU_BitwiseOrOperatorExpression(); + this.state = 2523; + this.iC_BitwiseOrOperatorExpression(); } } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 2257; - this.kU_BitwiseOrOperatorExpression(); - this.state = 2259; + this.state = 2527; + this.iC_BitwiseOrOperatorExpression(); + this.state = 2529; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2258; + this.state = 2528; this.match(CypherParser.SP); } } - this.state = 2261; - this.kU_ComparisonOperator(); - this.state = 2263; + this.state = 2531; + this.iC_ComparisonOperator(); + this.state = 2533; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2262; + this.state = 2532; this.match(CypherParser.SP); } } - this.state = 2265; - this.kU_BitwiseOrOperatorExpression(); - this.state = 2275; + this.state = 2535; + this.iC_BitwiseOrOperatorExpression(); + this.state = 2545; this._errHandler.sync(this); _alt = 1; do { @@ -9237,39 +10280,39 @@ export class CypherParser extends antlr.Parser { case 1: { { - this.state = 2267; + this.state = 2537; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2266; + this.state = 2536; this.match(CypherParser.SP); } } - this.state = 2269; - this.kU_ComparisonOperator(); - this.state = 2271; + this.state = 2539; + this.iC_ComparisonOperator(); + this.state = 2541; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2270; + this.state = 2540; this.match(CypherParser.SP); } } - this.state = 2273; - this.kU_BitwiseOrOperatorExpression(); + this.state = 2543; + this.iC_BitwiseOrOperatorExpression(); } } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2277; + this.state = 2547; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 365, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 412, this._ctx); } while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER); } break; @@ -9289,14 +10332,14 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ComparisonOperator(): KU_ComparisonOperatorContext { - let localctx: KU_ComparisonOperatorContext = new KU_ComparisonOperatorContext(this._ctx, this.state); - this.enterRule(localctx, 256, CypherParser.RULE_kU_ComparisonOperator); + public iC_ComparisonOperator(): IC_ComparisonOperatorContext { + let localctx: IC_ComparisonOperatorContext = new IC_ComparisonOperatorContext(this._ctx, this.state); + this.enterRule(localctx, 284, CypherParser.RULE_iC_ComparisonOperator); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2283; + this.state = 2553; _la = this._input.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 127040) !== 0))) { this._errHandler.recoverInline(this); @@ -9321,53 +10364,53 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_BitwiseOrOperatorExpression(): KU_BitwiseOrOperatorExpressionContext { - let localctx: KU_BitwiseOrOperatorExpressionContext = new KU_BitwiseOrOperatorExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 258, CypherParser.RULE_kU_BitwiseOrOperatorExpression); + public iC_BitwiseOrOperatorExpression(): IC_BitwiseOrOperatorExpressionContext { + let localctx: IC_BitwiseOrOperatorExpressionContext = new IC_BitwiseOrOperatorExpressionContext(this._ctx, this.state); + this.enterRule(localctx, 286, CypherParser.RULE_iC_BitwiseOrOperatorExpression); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2285; - this.kU_BitwiseAndOperatorExpression(); - this.state = 2296; + this.state = 2555; + this.iC_BitwiseAndOperatorExpression(); + this.state = 2566; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 369, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 416, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2287; + this.state = 2557; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2286; + this.state = 2556; this.match(CypherParser.SP); } } - this.state = 2289; + this.state = 2559; this.match(CypherParser.T__10); - this.state = 2291; + this.state = 2561; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2290; + this.state = 2560; this.match(CypherParser.SP); } } - this.state = 2293; - this.kU_BitwiseAndOperatorExpression(); + this.state = 2563; + this.iC_BitwiseAndOperatorExpression(); } } } - this.state = 2298; + this.state = 2568; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 369, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 416, this._ctx); } } } @@ -9385,53 +10428,53 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_BitwiseAndOperatorExpression(): KU_BitwiseAndOperatorExpressionContext { - let localctx: KU_BitwiseAndOperatorExpressionContext = new KU_BitwiseAndOperatorExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 260, CypherParser.RULE_kU_BitwiseAndOperatorExpression); + public iC_BitwiseAndOperatorExpression(): IC_BitwiseAndOperatorExpressionContext { + let localctx: IC_BitwiseAndOperatorExpressionContext = new IC_BitwiseAndOperatorExpressionContext(this._ctx, this.state); + this.enterRule(localctx, 288, CypherParser.RULE_iC_BitwiseAndOperatorExpression); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2299; - this.kU_BitShiftOperatorExpression(); - this.state = 2310; + this.state = 2569; + this.iC_BitShiftOperatorExpression(); + this.state = 2580; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 372, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 419, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2301; + this.state = 2571; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2300; + this.state = 2570; this.match(CypherParser.SP); } } - this.state = 2303; + this.state = 2573; this.match(CypherParser.T__16); - this.state = 2305; + this.state = 2575; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2304; + this.state = 2574; this.match(CypherParser.SP); } } - this.state = 2307; - this.kU_BitShiftOperatorExpression(); + this.state = 2577; + this.iC_BitShiftOperatorExpression(); } } } - this.state = 2312; + this.state = 2582; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 372, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 419, this._ctx); } } } @@ -9449,53 +10492,53 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_BitShiftOperatorExpression(): KU_BitShiftOperatorExpressionContext { - let localctx: KU_BitShiftOperatorExpressionContext = new KU_BitShiftOperatorExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 262, CypherParser.RULE_kU_BitShiftOperatorExpression); + public iC_BitShiftOperatorExpression(): IC_BitShiftOperatorExpressionContext { + let localctx: IC_BitShiftOperatorExpressionContext = new IC_BitShiftOperatorExpressionContext(this._ctx, this.state); + this.enterRule(localctx, 290, CypherParser.RULE_iC_BitShiftOperatorExpression); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2313; + this.state = 2583; this.oC_AddOrSubtractExpression(); - this.state = 2325; + this.state = 2595; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 375, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 422, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2315; + this.state = 2585; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2314; + this.state = 2584; this.match(CypherParser.SP); } } - this.state = 2317; - this.kU_BitShiftOperator(); - this.state = 2319; + this.state = 2587; + this.iC_BitShiftOperator(); + this.state = 2589; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2318; + this.state = 2588; this.match(CypherParser.SP); } } - this.state = 2321; + this.state = 2591; this.oC_AddOrSubtractExpression(); } } } - this.state = 2327; + this.state = 2597; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 375, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 422, this._ctx); } } } @@ -9513,14 +10556,14 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_BitShiftOperator(): KU_BitShiftOperatorContext { - let localctx: KU_BitShiftOperatorContext = new KU_BitShiftOperatorContext(this._ctx, this.state); - this.enterRule(localctx, 264, CypherParser.RULE_kU_BitShiftOperator); + public iC_BitShiftOperator(): IC_BitShiftOperatorContext { + let localctx: IC_BitShiftOperatorContext = new IC_BitShiftOperatorContext(this._ctx, this.state); + this.enterRule(localctx, 292, CypherParser.RULE_iC_BitShiftOperator); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2328; + this.state = 2598; _la = this._input.LA(1); if(!(_la===18 || _la===19)) { this._errHandler.recoverInline(this); @@ -9547,51 +10590,51 @@ export class CypherParser extends antlr.Parser { } public oC_AddOrSubtractExpression(): OC_AddOrSubtractExpressionContext { let localctx: OC_AddOrSubtractExpressionContext = new OC_AddOrSubtractExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 266, CypherParser.RULE_oC_AddOrSubtractExpression); + this.enterRule(localctx, 294, CypherParser.RULE_oC_AddOrSubtractExpression); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2330; + this.state = 2600; this.oC_MultiplyDivideModuloExpression(); - this.state = 2342; + this.state = 2612; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 378, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 425, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2332; + this.state = 2602; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2331; + this.state = 2601; this.match(CypherParser.SP); } } - this.state = 2334; - this.kU_AddOrSubtractOperator(); - this.state = 2336; + this.state = 2604; + this.iC_AddOrSubtractOperator(); + this.state = 2606; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2335; + this.state = 2605; this.match(CypherParser.SP); } } - this.state = 2338; + this.state = 2608; this.oC_MultiplyDivideModuloExpression(); } } } - this.state = 2344; + this.state = 2614; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 378, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 425, this._ctx); } } } @@ -9609,16 +10652,16 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_AddOrSubtractOperator(): KU_AddOrSubtractOperatorContext { - let localctx: KU_AddOrSubtractOperatorContext = new KU_AddOrSubtractOperatorContext(this._ctx, this.state); - this.enterRule(localctx, 268, CypherParser.RULE_kU_AddOrSubtractOperator); + public iC_AddOrSubtractOperator(): IC_AddOrSubtractOperatorContext { + let localctx: IC_AddOrSubtractOperatorContext = new IC_AddOrSubtractOperatorContext(this._ctx, this.state); + this.enterRule(localctx, 296, CypherParser.RULE_iC_AddOrSubtractOperator); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2345; + this.state = 2615; _la = this._input.LA(1); - if(!(_la===20 || _la===166)) { + if(!(_la===20 || _la===171)) { this._errHandler.recoverInline(this); } else { @@ -9643,51 +10686,51 @@ export class CypherParser extends antlr.Parser { } public oC_MultiplyDivideModuloExpression(): OC_MultiplyDivideModuloExpressionContext { let localctx: OC_MultiplyDivideModuloExpressionContext = new OC_MultiplyDivideModuloExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 270, CypherParser.RULE_oC_MultiplyDivideModuloExpression); + this.enterRule(localctx, 298, CypherParser.RULE_oC_MultiplyDivideModuloExpression); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2347; + this.state = 2617; this.oC_PowerOfExpression(); - this.state = 2359; + this.state = 2629; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 381, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 428, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2349; + this.state = 2619; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2348; + this.state = 2618; this.match(CypherParser.SP); } } - this.state = 2351; - this.kU_MultiplyDivideModuloOperator(); - this.state = 2353; + this.state = 2621; + this.iC_MultiplyDivideModuloOperator(); + this.state = 2623; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2352; + this.state = 2622; this.match(CypherParser.SP); } } - this.state = 2355; + this.state = 2625; this.oC_PowerOfExpression(); } } } - this.state = 2361; + this.state = 2631; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 381, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 428, this._ctx); } } } @@ -9705,16 +10748,16 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_MultiplyDivideModuloOperator(): KU_MultiplyDivideModuloOperatorContext { - let localctx: KU_MultiplyDivideModuloOperatorContext = new KU_MultiplyDivideModuloOperatorContext(this._ctx, this.state); - this.enterRule(localctx, 272, CypherParser.RULE_kU_MultiplyDivideModuloOperator); + public iC_MultiplyDivideModuloOperator(): IC_MultiplyDivideModuloOperatorContext { + let localctx: IC_MultiplyDivideModuloOperatorContext = new IC_MultiplyDivideModuloOperatorContext(this._ctx, this.state); + this.enterRule(localctx, 300, CypherParser.RULE_iC_MultiplyDivideModuloOperator); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2362; + this.state = 2632; _la = this._input.LA(1); - if(!(_la===21 || _la===22 || _la===161)) { + if(!(_la===21 || _la===22 || _la===166)) { this._errHandler.recoverInline(this); } else { @@ -9739,51 +10782,51 @@ export class CypherParser extends antlr.Parser { } public oC_PowerOfExpression(): OC_PowerOfExpressionContext { let localctx: OC_PowerOfExpressionContext = new OC_PowerOfExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 274, CypherParser.RULE_oC_PowerOfExpression); + this.enterRule(localctx, 302, CypherParser.RULE_oC_PowerOfExpression); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2364; + this.state = 2634; this.oC_StringListNullOperatorExpression(); - this.state = 2375; + this.state = 2645; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 384, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 431, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2366; + this.state = 2636; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2365; + this.state = 2635; this.match(CypherParser.SP); } } - this.state = 2368; + this.state = 2638; this.match(CypherParser.T__22); - this.state = 2370; + this.state = 2640; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2369; + this.state = 2639; this.match(CypherParser.SP); } } - this.state = 2372; + this.state = 2642; this.oC_StringListNullOperatorExpression(); } } } - this.state = 2377; + this.state = 2647; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 384, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 431, this._ctx); } } } @@ -9803,25 +10846,25 @@ export class CypherParser extends antlr.Parser { } public oC_StringListNullOperatorExpression(): OC_StringListNullOperatorExpressionContext { let localctx: OC_StringListNullOperatorExpressionContext = new OC_StringListNullOperatorExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 276, CypherParser.RULE_oC_StringListNullOperatorExpression); + this.enterRule(localctx, 304, CypherParser.RULE_oC_StringListNullOperatorExpression); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2378; + this.state = 2648; this.oC_UnaryAddSubtractOrFactorialExpression(); - this.state = 2386; + this.state = 2656; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 386, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 433, this._ctx) ) { case 1: { - this.state = 2379; + this.state = 2649; this.oC_StringOperatorExpression(); } break; case 2: { - this.state = 2381; + this.state = 2651; this._errHandler.sync(this); _alt = 1; do { @@ -9829,7 +10872,7 @@ export class CypherParser extends antlr.Parser { case 1: { { - this.state = 2380; + this.state = 2650; this.oC_ListOperatorExpression(); } } @@ -9837,15 +10880,15 @@ export class CypherParser extends antlr.Parser { default: throw new antlr.NoViableAltException(this); } - this.state = 2383; + this.state = 2653; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 385, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 432, this._ctx); } while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER); } break; case 3: { - this.state = 2385; + this.state = 2655; this.oC_NullOperatorExpression(); } break; @@ -9868,31 +10911,31 @@ export class CypherParser extends antlr.Parser { } public oC_ListOperatorExpression(): OC_ListOperatorExpressionContext { let localctx: OC_ListOperatorExpressionContext = new OC_ListOperatorExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 278, CypherParser.RULE_oC_ListOperatorExpression); + this.enterRule(localctx, 306, CypherParser.RULE_oC_ListOperatorExpression); let _la: number; try { - this.state = 2407; + this.state = 2677; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 390, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 437, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 2388; + this.state = 2658; this.match(CypherParser.SP); - this.state = 2389; + this.state = 2659; this.match(CypherParser.IN); - this.state = 2391; + this.state = 2661; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2390; + this.state = 2660; this.match(CypherParser.SP); } } - this.state = 2393; + this.state = 2663; this.oC_PropertyOrLabelsExpression(); } } @@ -9901,11 +10944,11 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 2394; + this.state = 2664; this.match(CypherParser.T__6); - this.state = 2395; + this.state = 2665; this.oC_Expression(); - this.state = 2396; + this.state = 2666; this.match(CypherParser.T__7); } } @@ -9914,38 +10957,38 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 3); { { - this.state = 2398; + this.state = 2668; this.match(CypherParser.T__6); - this.state = 2400; + this.state = 2670; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 1237024559) !== 0) || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 4155185137) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 3915116575) !== 0) || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 111345223) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 39) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2474049119) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693297) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383483) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 1367286685) !== 0) || ((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 4995) !== 0)) { { - this.state = 2399; + this.state = 2669; this.oC_Expression(); } } - this.state = 2402; + this.state = 2672; _la = this._input.LA(1); - if(!(_la===164 || _la===165)) { + if(!(_la===169 || _la===170)) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 2404; + this.state = 2674; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 1237024559) !== 0) || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 4155185137) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 3915116575) !== 0) || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 111345223) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 39) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2474049119) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693297) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383483) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 1367286685) !== 0) || ((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 4995) !== 0)) { { - this.state = 2403; + this.state = 2673; this.oC_Expression(); } } - this.state = 2406; + this.state = 2676; this.match(CypherParser.T__7); } } @@ -9968,30 +11011,30 @@ export class CypherParser extends antlr.Parser { } public oC_StringOperatorExpression(): OC_StringOperatorExpressionContext { let localctx: OC_StringOperatorExpressionContext = new OC_StringOperatorExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 280, CypherParser.RULE_oC_StringOperatorExpression); + this.enterRule(localctx, 308, CypherParser.RULE_oC_StringOperatorExpression); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2420; + this.state = 2690; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 391, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 438, this._ctx) ) { case 1: { - this.state = 2409; + this.state = 2679; this.oC_RegularExpression(); } break; case 2: { { - this.state = 2410; + this.state = 2680; this.match(CypherParser.SP); - this.state = 2411; + this.state = 2681; this.match(CypherParser.STARTS); - this.state = 2412; + this.state = 2682; this.match(CypherParser.SP); - this.state = 2413; + this.state = 2683; this.match(CypherParser.WITH); } } @@ -9999,13 +11042,13 @@ export class CypherParser extends antlr.Parser { case 3: { { - this.state = 2414; + this.state = 2684; this.match(CypherParser.SP); - this.state = 2415; + this.state = 2685; this.match(CypherParser.ENDS); - this.state = 2416; + this.state = 2686; this.match(CypherParser.SP); - this.state = 2417; + this.state = 2687; this.match(CypherParser.WITH); } } @@ -10013,25 +11056,25 @@ export class CypherParser extends antlr.Parser { case 4: { { - this.state = 2418; + this.state = 2688; this.match(CypherParser.SP); - this.state = 2419; + this.state = 2689; this.match(CypherParser.CONTAINS); } } break; } - this.state = 2423; + this.state = 2693; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2422; + this.state = 2692; this.match(CypherParser.SP); } } - this.state = 2425; + this.state = 2695; this.oC_PropertyOrLabelsExpression(); } } @@ -10051,22 +11094,22 @@ export class CypherParser extends antlr.Parser { } public oC_RegularExpression(): OC_RegularExpressionContext { let localctx: OC_RegularExpressionContext = new OC_RegularExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 282, CypherParser.RULE_oC_RegularExpression); + this.enterRule(localctx, 310, CypherParser.RULE_oC_RegularExpression); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2428; + this.state = 2698; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2427; + this.state = 2697; this.match(CypherParser.SP); } } - this.state = 2430; + this.state = 2700; this.match(CypherParser.T__23); } } @@ -10086,22 +11129,22 @@ export class CypherParser extends antlr.Parser { } public oC_NullOperatorExpression(): OC_NullOperatorExpressionContext { let localctx: OC_NullOperatorExpressionContext = new OC_NullOperatorExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 284, CypherParser.RULE_oC_NullOperatorExpression); + this.enterRule(localctx, 312, CypherParser.RULE_oC_NullOperatorExpression); try { - this.state = 2442; + this.state = 2712; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 394, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 441, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 2432; + this.state = 2702; this.match(CypherParser.SP); - this.state = 2433; + this.state = 2703; this.match(CypherParser.IS); - this.state = 2434; + this.state = 2704; this.match(CypherParser.SP); - this.state = 2435; + this.state = 2705; this.match(CypherParser.NULL); } } @@ -10110,17 +11153,17 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 2436; + this.state = 2706; this.match(CypherParser.SP); - this.state = 2437; + this.state = 2707; this.match(CypherParser.IS); - this.state = 2438; + this.state = 2708; this.match(CypherParser.SP); - this.state = 2439; + this.state = 2709; this.match(CypherParser.NOT); - this.state = 2440; + this.state = 2710; this.match(CypherParser.SP); - this.state = 2441; + this.state = 2711; this.match(CypherParser.NULL); } } @@ -10143,53 +11186,53 @@ export class CypherParser extends antlr.Parser { } public oC_UnaryAddSubtractOrFactorialExpression(): OC_UnaryAddSubtractOrFactorialExpressionContext { let localctx: OC_UnaryAddSubtractOrFactorialExpressionContext = new OC_UnaryAddSubtractOrFactorialExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 286, CypherParser.RULE_oC_UnaryAddSubtractOrFactorialExpression); + this.enterRule(localctx, 314, CypherParser.RULE_oC_UnaryAddSubtractOrFactorialExpression); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2450; + this.state = 2720; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===166) { + while (_la===171) { { { - this.state = 2444; + this.state = 2714; this.match(CypherParser.MINUS); - this.state = 2446; + this.state = 2716; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2445; + this.state = 2715; this.match(CypherParser.SP); } } } } - this.state = 2452; + this.state = 2722; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2453; + this.state = 2723; this.oC_PropertyOrLabelsExpression(); - this.state = 2458; + this.state = 2728; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 398, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 445, this._ctx) ) { case 1: { - this.state = 2455; + this.state = 2725; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2454; + this.state = 2724; this.match(CypherParser.SP); } } - this.state = 2457; + this.state = 2727; this.match(CypherParser.FACTORIAL); } break; @@ -10212,39 +11255,39 @@ export class CypherParser extends antlr.Parser { } public oC_PropertyOrLabelsExpression(): OC_PropertyOrLabelsExpressionContext { let localctx: OC_PropertyOrLabelsExpressionContext = new OC_PropertyOrLabelsExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 288, CypherParser.RULE_oC_PropertyOrLabelsExpression); + this.enterRule(localctx, 316, CypherParser.RULE_oC_PropertyOrLabelsExpression); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2460; + this.state = 2730; this.oC_Atom(); - this.state = 2467; + this.state = 2737; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 400, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 447, this._ctx); while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 2462; + this.state = 2732; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2461; + this.state = 2731; this.match(CypherParser.SP); } } - this.state = 2464; + this.state = 2734; this.oC_PropertyLookup(); } } } - this.state = 2469; + this.state = 2739; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 400, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 447, this._ctx); } } } @@ -10264,71 +11307,71 @@ export class CypherParser extends antlr.Parser { } public oC_Atom(): OC_AtomContext { let localctx: OC_AtomContext = new OC_AtomContext(this._ctx, this.state); - this.enterRule(localctx, 290, CypherParser.RULE_oC_Atom); + this.enterRule(localctx, 318, CypherParser.RULE_oC_Atom); try { - this.state = 2479; + this.state = 2749; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 401, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 448, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 2470; + this.state = 2740; this.oC_Literal(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 2471; + this.state = 2741; this.oC_Parameter(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 2472; + this.state = 2742; this.oC_CaseExpression(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 2473; + this.state = 2743; this.oC_ParenthesizedExpression(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 2474; + this.state = 2744; this.oC_FunctionInvocation(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 2475; + this.state = 2745; this.oC_PathPatterns(); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 2476; + this.state = 2746; this.oC_ExistCountSubquery(); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 2477; + this.state = 2747; this.oC_Variable(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 2478; + this.state = 2748; this.oC_Quantifier(); } break; @@ -10350,53 +11393,53 @@ export class CypherParser extends antlr.Parser { } public oC_Quantifier(): OC_QuantifierContext { let localctx: OC_QuantifierContext = new OC_QuantifierContext(this._ctx, this.state); - this.enterRule(localctx, 292, CypherParser.RULE_oC_Quantifier); + this.enterRule(localctx, 320, CypherParser.RULE_oC_Quantifier); let _la: number; try { - this.state = 2537; + this.state = 2807; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.ALL: this.enterOuterAlt(localctx, 1); { { - this.state = 2481; + this.state = 2751; this.match(CypherParser.ALL); - this.state = 2483; + this.state = 2753; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2482; + this.state = 2752; this.match(CypherParser.SP); } } - this.state = 2485; + this.state = 2755; this.match(CypherParser.T__1); - this.state = 2487; + this.state = 2757; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2486; + this.state = 2756; this.match(CypherParser.SP); } } - this.state = 2489; + this.state = 2759; this.oC_FilterExpression(); - this.state = 2491; + this.state = 2761; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2490; + this.state = 2760; this.match(CypherParser.SP); } } - this.state = 2493; + this.state = 2763; this.match(CypherParser.T__2); } } @@ -10405,43 +11448,43 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 2495; + this.state = 2765; this.match(CypherParser.ANY); - this.state = 2497; + this.state = 2767; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2496; + this.state = 2766; this.match(CypherParser.SP); } } - this.state = 2499; + this.state = 2769; this.match(CypherParser.T__1); - this.state = 2501; + this.state = 2771; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2500; + this.state = 2770; this.match(CypherParser.SP); } } - this.state = 2503; + this.state = 2773; this.oC_FilterExpression(); - this.state = 2505; + this.state = 2775; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2504; + this.state = 2774; this.match(CypherParser.SP); } } - this.state = 2507; + this.state = 2777; this.match(CypherParser.T__2); } } @@ -10450,43 +11493,43 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 3); { { - this.state = 2509; + this.state = 2779; this.match(CypherParser.NONE); - this.state = 2511; + this.state = 2781; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2510; + this.state = 2780; this.match(CypherParser.SP); } } - this.state = 2513; + this.state = 2783; this.match(CypherParser.T__1); - this.state = 2515; + this.state = 2785; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2514; + this.state = 2784; this.match(CypherParser.SP); } } - this.state = 2517; + this.state = 2787; this.oC_FilterExpression(); - this.state = 2519; + this.state = 2789; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2518; + this.state = 2788; this.match(CypherParser.SP); } } - this.state = 2521; + this.state = 2791; this.match(CypherParser.T__2); } } @@ -10495,43 +11538,43 @@ export class CypherParser extends antlr.Parser { this.enterOuterAlt(localctx, 4); { { - this.state = 2523; + this.state = 2793; this.match(CypherParser.SINGLE); - this.state = 2525; + this.state = 2795; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2524; + this.state = 2794; this.match(CypherParser.SP); } } - this.state = 2527; + this.state = 2797; this.match(CypherParser.T__1); - this.state = 2529; + this.state = 2799; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2528; + this.state = 2798; this.match(CypherParser.SP); } } - this.state = 2531; + this.state = 2801; this.oC_FilterExpression(); - this.state = 2533; + this.state = 2803; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2532; + this.state = 2802; this.match(CypherParser.SP); } } - this.state = 2535; + this.state = 2805; this.match(CypherParser.T__2); } } @@ -10556,15 +11599,15 @@ export class CypherParser extends antlr.Parser { } public oC_FilterExpression(): OC_FilterExpressionContext { let localctx: OC_FilterExpressionContext = new OC_FilterExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 294, CypherParser.RULE_oC_FilterExpression); + this.enterRule(localctx, 322, CypherParser.RULE_oC_FilterExpression); try { this.enterOuterAlt(localctx, 1); { - this.state = 2539; + this.state = 2809; this.oC_IdInColl(); - this.state = 2540; + this.state = 2810; this.match(CypherParser.SP); - this.state = 2541; + this.state = 2811; this.oC_Where(); } } @@ -10584,19 +11627,19 @@ export class CypherParser extends antlr.Parser { } public oC_IdInColl(): OC_IdInCollContext { let localctx: OC_IdInCollContext = new OC_IdInCollContext(this._ctx, this.state); - this.enterRule(localctx, 296, CypherParser.RULE_oC_IdInColl); + this.enterRule(localctx, 324, CypherParser.RULE_oC_IdInColl); try { this.enterOuterAlt(localctx, 1); { - this.state = 2543; + this.state = 2813; this.oC_Variable(); - this.state = 2544; + this.state = 2814; this.match(CypherParser.SP); - this.state = 2545; + this.state = 2815; this.match(CypherParser.IN); - this.state = 2546; + this.state = 2816; this.match(CypherParser.SP); - this.state = 2547; + this.state = 2817; this.oC_Expression(); } } @@ -10616,9 +11659,9 @@ export class CypherParser extends antlr.Parser { } public oC_Literal(): OC_LiteralContext { let localctx: OC_LiteralContext = new OC_LiteralContext(this._ctx, this.state); - this.enterRule(localctx, 298, CypherParser.RULE_oC_Literal); + this.enterRule(localctx, 326, CypherParser.RULE_oC_Literal); try { - this.state = 2555; + this.state = 2825; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.DecimalInteger: @@ -10626,14 +11669,14 @@ export class CypherParser extends antlr.Parser { case CypherParser.RegularDecimalReal: this.enterOuterAlt(localctx, 1); { - this.state = 2549; + this.state = 2819; this.oC_NumberLiteral(); } break; case CypherParser.StringLiteral: this.enterOuterAlt(localctx, 2); { - this.state = 2550; + this.state = 2820; this.match(CypherParser.StringLiteral); } break; @@ -10641,29 +11684,29 @@ export class CypherParser extends antlr.Parser { case CypherParser.TRUE: this.enterOuterAlt(localctx, 3); { - this.state = 2551; + this.state = 2821; this.oC_BooleanLiteral(); } break; case CypherParser.NULL: this.enterOuterAlt(localctx, 4); { - this.state = 2552; + this.state = 2822; this.match(CypherParser.NULL); } break; case CypherParser.T__6: this.enterOuterAlt(localctx, 5); { - this.state = 2553; + this.state = 2823; this.oC_ListLiteral(); } break; case CypherParser.T__8: this.enterOuterAlt(localctx, 6); { - this.state = 2554; - this.kU_StructLiteral(); + this.state = 2824; + this.iC_StructLiteral(); } break; default: @@ -10686,14 +11729,14 @@ export class CypherParser extends antlr.Parser { } public oC_BooleanLiteral(): OC_BooleanLiteralContext { let localctx: OC_BooleanLiteralContext = new OC_BooleanLiteralContext(this._ctx, this.state); - this.enterRule(localctx, 300, CypherParser.RULE_oC_BooleanLiteral); + this.enterRule(localctx, 328, CypherParser.RULE_oC_BooleanLiteral); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2557; + this.state = 2827; _la = this._input.LA(1); - if(!(_la===86 || _la===141)) { + if(!(_la===87 || _la===146)) { this._errHandler.recoverInline(this); } else { @@ -10718,68 +11761,68 @@ export class CypherParser extends antlr.Parser { } public oC_ListLiteral(): OC_ListLiteralContext { let localctx: OC_ListLiteralContext = new OC_ListLiteralContext(this._ctx, this.state); - this.enterRule(localctx, 302, CypherParser.RULE_oC_ListLiteral); + this.enterRule(localctx, 330, CypherParser.RULE_oC_ListLiteral); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2559; + this.state = 2829; this.match(CypherParser.T__6); - this.state = 2561; + this.state = 2831; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2560; + this.state = 2830; this.match(CypherParser.SP); } } - this.state = 2576; + this.state = 2846; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 1237024559) !== 0) || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 4155185137) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 3915116575) !== 0) || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 111345223) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 39) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2474049119) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693297) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383483) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 1367286685) !== 0) || ((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 4995) !== 0)) { { - this.state = 2563; + this.state = 2833; this.oC_Expression(); - this.state = 2565; + this.state = 2835; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2564; + this.state = 2834; this.match(CypherParser.SP); } } - this.state = 2573; + this.state = 2843; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===4) { { { - this.state = 2567; - this.kU_ListEntry(); - this.state = 2569; + this.state = 2837; + this.iC_ListEntry(); + this.state = 2839; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2568; + this.state = 2838; this.match(CypherParser.SP); } } } } - this.state = 2575; + this.state = 2845; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 2578; + this.state = 2848; this.match(CypherParser.T__7); } } @@ -10797,31 +11840,31 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_ListEntry(): KU_ListEntryContext { - let localctx: KU_ListEntryContext = new KU_ListEntryContext(this._ctx, this.state); - this.enterRule(localctx, 304, CypherParser.RULE_kU_ListEntry); + public iC_ListEntry(): IC_ListEntryContext { + let localctx: IC_ListEntryContext = new IC_ListEntryContext(this._ctx, this.state); + this.enterRule(localctx, 332, CypherParser.RULE_iC_ListEntry); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2580; + this.state = 2850; this.match(CypherParser.T__3); - this.state = 2582; + this.state = 2852; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 421, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 468, this._ctx) ) { case 1: { - this.state = 2581; + this.state = 2851; this.match(CypherParser.SP); } break; } - this.state = 2585; + this.state = 2855; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 1237024559) !== 0) || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 4155185137) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 3915116575) !== 0) || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 111345223) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 39) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2474049119) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693297) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383483) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 1367286685) !== 0) || ((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 4995) !== 0)) { { - this.state = 2584; + this.state = 2854; this.oC_Expression(); } } @@ -10842,74 +11885,74 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_StructLiteral(): KU_StructLiteralContext { - let localctx: KU_StructLiteralContext = new KU_StructLiteralContext(this._ctx, this.state); - this.enterRule(localctx, 306, CypherParser.RULE_kU_StructLiteral); + public iC_StructLiteral(): IC_StructLiteralContext { + let localctx: IC_StructLiteralContext = new IC_StructLiteralContext(this._ctx, this.state); + this.enterRule(localctx, 334, CypherParser.RULE_iC_StructLiteral); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2587; + this.state = 2857; this.match(CypherParser.T__8); - this.state = 2589; + this.state = 2859; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2588; + this.state = 2858; this.match(CypherParser.SP); } } - this.state = 2591; - this.kU_StructField(); - this.state = 2593; + this.state = 2861; + this.iC_StructField(); + this.state = 2863; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2592; + this.state = 2862; this.match(CypherParser.SP); } } - this.state = 2605; + this.state = 2875; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===4) { { { - this.state = 2595; + this.state = 2865; this.match(CypherParser.T__3); - this.state = 2597; + this.state = 2867; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2596; + this.state = 2866; this.match(CypherParser.SP); } } - this.state = 2599; - this.kU_StructField(); - this.state = 2601; + this.state = 2869; + this.iC_StructField(); + this.state = 2871; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2600; + this.state = 2870; this.match(CypherParser.SP); } } } } - this.state = 2607; + this.state = 2877; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2608; + this.state = 2878; this.match(CypherParser.T__9); } } @@ -10927,18 +11970,19 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_StructField(): KU_StructFieldContext { - let localctx: KU_StructFieldContext = new KU_StructFieldContext(this._ctx, this.state); - this.enterRule(localctx, 308, CypherParser.RULE_kU_StructField); + public iC_StructField(): IC_StructFieldContext { + let localctx: IC_StructFieldContext = new IC_StructFieldContext(this._ctx, this.state); + this.enterRule(localctx, 336, CypherParser.RULE_iC_StructField); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2612; + this.state = 2882; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.ADD: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -11003,42 +12047,42 @@ export class CypherParser extends antlr.Parser { case CypherParser.UnescapedSymbolicName: case CypherParser.EscapedSymbolicName: { - this.state = 2610; + this.state = 2880; this.oC_SymbolicName(); } break; case CypherParser.StringLiteral: { - this.state = 2611; + this.state = 2881; this.match(CypherParser.StringLiteral); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2615; + this.state = 2885; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2614; + this.state = 2884; this.match(CypherParser.SP); } } - this.state = 2617; + this.state = 2887; this.match(CypherParser.COLON); - this.state = 2619; + this.state = 2889; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2618; + this.state = 2888; this.match(CypherParser.SP); } } - this.state = 2621; + this.state = 2891; this.oC_Expression(); } } @@ -11058,36 +12102,36 @@ export class CypherParser extends antlr.Parser { } public oC_ParenthesizedExpression(): OC_ParenthesizedExpressionContext { let localctx: OC_ParenthesizedExpressionContext = new OC_ParenthesizedExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 310, CypherParser.RULE_oC_ParenthesizedExpression); + this.enterRule(localctx, 338, CypherParser.RULE_oC_ParenthesizedExpression); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2623; + this.state = 2893; this.match(CypherParser.T__1); - this.state = 2625; + this.state = 2895; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2624; + this.state = 2894; this.match(CypherParser.SP); } } - this.state = 2627; + this.state = 2897; this.oC_Expression(); - this.state = 2629; + this.state = 2899; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2628; + this.state = 2898; this.match(CypherParser.SP); } } - this.state = 2631; + this.state = 2901; this.match(CypherParser.T__2); } } @@ -11107,194 +12151,194 @@ export class CypherParser extends antlr.Parser { } public oC_FunctionInvocation(): OC_FunctionInvocationContext { let localctx: OC_FunctionInvocationContext = new OC_FunctionInvocationContext(this._ctx, this.state); - this.enterRule(localctx, 312, CypherParser.RULE_oC_FunctionInvocation); + this.enterRule(localctx, 340, CypherParser.RULE_oC_FunctionInvocation); let _la: number; try { - this.state = 2710; + this.state = 2980; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 452, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 499, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 2633; + this.state = 2903; this.match(CypherParser.COUNT); - this.state = 2635; + this.state = 2905; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2634; + this.state = 2904; this.match(CypherParser.SP); } } - this.state = 2637; + this.state = 2907; this.match(CypherParser.T__1); - this.state = 2639; + this.state = 2909; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2638; + this.state = 2908; this.match(CypherParser.SP); } } - this.state = 2641; + this.state = 2911; this.match(CypherParser.STAR); - this.state = 2643; + this.state = 2913; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2642; + this.state = 2912; this.match(CypherParser.SP); } } - this.state = 2645; + this.state = 2915; this.match(CypherParser.T__2); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 2646; + this.state = 2916; this.match(CypherParser.CAST); - this.state = 2648; + this.state = 2918; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2647; + this.state = 2917; this.match(CypherParser.SP); } } - this.state = 2650; + this.state = 2920; this.match(CypherParser.T__1); - this.state = 2652; + this.state = 2922; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2651; + this.state = 2921; this.match(CypherParser.SP); } } - this.state = 2654; - this.kU_FunctionParameter(); - this.state = 2656; + this.state = 2924; + this.iC_FunctionParameter(); + this.state = 2926; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2655; + this.state = 2925; this.match(CypherParser.SP); } } - this.state = 2668; + this.state = 2938; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.AS: { { - this.state = 2658; + this.state = 2928; this.match(CypherParser.AS); - this.state = 2660; + this.state = 2930; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2659; + this.state = 2929; this.match(CypherParser.SP); } } - this.state = 2662; - this.kU_DataType(0); + this.state = 2932; + this.iC_DataType(0); } } break; case CypherParser.T__3: { { - this.state = 2663; + this.state = 2933; this.match(CypherParser.T__3); - this.state = 2665; + this.state = 2935; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2664; + this.state = 2934; this.match(CypherParser.SP); } } - this.state = 2667; - this.kU_FunctionParameter(); + this.state = 2937; + this.iC_FunctionParameter(); } } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2671; + this.state = 2941; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2670; + this.state = 2940; this.match(CypherParser.SP); } } - this.state = 2673; + this.state = 2943; this.match(CypherParser.T__2); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 2675; + this.state = 2945; this.oC_FunctionName(); - this.state = 2677; + this.state = 2947; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2676; + this.state = 2946; this.match(CypherParser.SP); } } - this.state = 2679; + this.state = 2949; this.match(CypherParser.T__1); - this.state = 2681; + this.state = 2951; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2680; + this.state = 2950; this.match(CypherParser.SP); } } - this.state = 2687; + this.state = 2957; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===77) { + if (_la===78) { { - this.state = 2683; + this.state = 2953; this.match(CypherParser.DISTINCT); - this.state = 2685; + this.state = 2955; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2684; + this.state = 2954; this.match(CypherParser.SP); } } @@ -11302,63 +12346,63 @@ export class CypherParser extends antlr.Parser { } } - this.state = 2706; + this.state = 2976; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 1237024559) !== 0) || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 4155185137) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 3915116575) !== 0) || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 111345223) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 39) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 33555076) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2474049119) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693297) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383483) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 1367286685) !== 0) || ((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 4995) !== 0)) { { - this.state = 2689; - this.kU_FunctionParameter(); - this.state = 2691; + this.state = 2959; + this.iC_FunctionParameter(); + this.state = 2961; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2690; + this.state = 2960; this.match(CypherParser.SP); } } - this.state = 2703; + this.state = 2973; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===4) { { { - this.state = 2693; + this.state = 2963; this.match(CypherParser.T__3); - this.state = 2695; + this.state = 2965; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2694; + this.state = 2964; this.match(CypherParser.SP); } } - this.state = 2697; - this.kU_FunctionParameter(); - this.state = 2699; + this.state = 2967; + this.iC_FunctionParameter(); + this.state = 2969; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2698; + this.state = 2968; this.match(CypherParser.SP); } } } } - this.state = 2705; + this.state = 2975; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 2708; + this.state = 2978; this.match(CypherParser.T__2); } break; @@ -11380,11 +12424,11 @@ export class CypherParser extends antlr.Parser { } public oC_FunctionName(): OC_FunctionNameContext { let localctx: OC_FunctionNameContext = new OC_FunctionNameContext(this._ctx, this.state); - this.enterRule(localctx, 314, CypherParser.RULE_oC_FunctionName); + this.enterRule(localctx, 342, CypherParser.RULE_oC_FunctionName); try { this.enterOuterAlt(localctx, 1); { - this.state = 2712; + this.state = 2982; this.oC_SymbolicName(); } } @@ -11402,44 +12446,44 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_FunctionParameter(): KU_FunctionParameterContext { - let localctx: KU_FunctionParameterContext = new KU_FunctionParameterContext(this._ctx, this.state); - this.enterRule(localctx, 316, CypherParser.RULE_kU_FunctionParameter); + public iC_FunctionParameter(): IC_FunctionParameterContext { + let localctx: IC_FunctionParameterContext = new IC_FunctionParameterContext(this._ctx, this.state); + this.enterRule(localctx, 344, CypherParser.RULE_iC_FunctionParameter); let _la: number; try { - this.state = 2727; + this.state = 2997; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 456, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 503, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 2723; + this.state = 2993; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 455, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 502, this._ctx) ) { case 1: { - this.state = 2714; + this.state = 2984; this.oC_SymbolicName(); - this.state = 2716; + this.state = 2986; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2715; + this.state = 2985; this.match(CypherParser.SP); } } - this.state = 2718; + this.state = 2988; this.match(CypherParser.COLON); - this.state = 2719; + this.state = 2989; this.match(CypherParser.T__5); - this.state = 2721; + this.state = 2991; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2720; + this.state = 2990; this.match(CypherParser.SP); } } @@ -11447,15 +12491,15 @@ export class CypherParser extends antlr.Parser { } break; } - this.state = 2725; + this.state = 2995; this.oC_Expression(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 2726; - this.kU_LambdaParameter(); + this.state = 2996; + this.iC_LambdaParameter(); } break; } @@ -11474,47 +12518,47 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_LambdaParameter(): KU_LambdaParameterContext { - let localctx: KU_LambdaParameterContext = new KU_LambdaParameterContext(this._ctx, this.state); - this.enterRule(localctx, 318, CypherParser.RULE_kU_LambdaParameter); + public iC_LambdaParameter(): IC_LambdaParameterContext { + let localctx: IC_LambdaParameterContext = new IC_LambdaParameterContext(this._ctx, this.state); + this.enterRule(localctx, 346, CypherParser.RULE_iC_LambdaParameter); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2729; - this.kU_LambdaVars(); - this.state = 2731; + this.state = 2999; + this.iC_LambdaVars(); + this.state = 3001; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2730; + this.state = 3000; this.match(CypherParser.SP); } } - this.state = 2733; + this.state = 3003; this.match(CypherParser.MINUS); - this.state = 2734; + this.state = 3004; this.match(CypherParser.T__14); - this.state = 2736; + this.state = 3006; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2735; + this.state = 3005; this.match(CypherParser.SP); } } - this.state = 2738; + this.state = 3008; this.oC_Expression(); - this.state = 2740; + this.state = 3010; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 459, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 506, this._ctx) ) { case 1: { - this.state = 2739; + this.state = 3009; this.match(CypherParser.SP); } break; @@ -11535,16 +12579,17 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_LambdaVars(): KU_LambdaVarsContext { - let localctx: KU_LambdaVarsContext = new KU_LambdaVarsContext(this._ctx, this.state); - this.enterRule(localctx, 320, CypherParser.RULE_kU_LambdaVars); + public iC_LambdaVars(): IC_LambdaVarsContext { + let localctx: IC_LambdaVarsContext = new IC_LambdaVarsContext(this._ctx, this.state); + this.enterRule(localctx, 348, CypherParser.RULE_iC_LambdaVars); let _la: number; try { - this.state = 2766; + this.state = 3036; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.ADD: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -11610,74 +12655,74 @@ export class CypherParser extends antlr.Parser { case CypherParser.EscapedSymbolicName: this.enterOuterAlt(localctx, 1); { - this.state = 2742; + this.state = 3012; this.oC_SymbolicName(); } break; case CypherParser.T__1: this.enterOuterAlt(localctx, 2); { - this.state = 2743; + this.state = 3013; this.match(CypherParser.T__1); - this.state = 2745; + this.state = 3015; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2744; + this.state = 3014; this.match(CypherParser.SP); } } - this.state = 2747; + this.state = 3017; this.oC_SymbolicName(); - this.state = 2749; + this.state = 3019; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2748; + this.state = 3018; this.match(CypherParser.SP); } } - this.state = 2761; + this.state = 3031; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===4) { { { - this.state = 2751; + this.state = 3021; this.match(CypherParser.T__3); - this.state = 2753; + this.state = 3023; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2752; + this.state = 3022; this.match(CypherParser.SP); } } - this.state = 2755; + this.state = 3025; this.oC_SymbolicName(); - this.state = 2757; + this.state = 3027; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2756; + this.state = 3026; this.match(CypherParser.SP); } } } } - this.state = 2763; + this.state = 3033; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2764; + this.state = 3034; this.match(CypherParser.T__2); } break; @@ -11701,15 +12746,15 @@ export class CypherParser extends antlr.Parser { } public oC_PathPatterns(): OC_PathPatternsContext { let localctx: OC_PathPatternsContext = new OC_PathPatternsContext(this._ctx, this.state); - this.enterRule(localctx, 322, CypherParser.RULE_oC_PathPatterns); + this.enterRule(localctx, 350, CypherParser.RULE_oC_PathPatterns); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2768; + this.state = 3038; this.oC_NodePattern(); - this.state = 2773; + this.state = 3043; this._errHandler.sync(this); _alt = 1; do { @@ -11717,17 +12762,17 @@ export class CypherParser extends antlr.Parser { case 1: { { - this.state = 2770; + this.state = 3040; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2769; + this.state = 3039; this.match(CypherParser.SP); } } - this.state = 2772; + this.state = 3042; this.oC_PatternElementChain(); } } @@ -11735,9 +12780,9 @@ export class CypherParser extends antlr.Parser { default: throw new antlr.NoViableAltException(this); } - this.state = 2775; + this.state = 3045; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 467, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 514, this._ctx); } while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -11757,107 +12802,107 @@ export class CypherParser extends antlr.Parser { } public oC_ExistCountSubquery(): OC_ExistCountSubqueryContext { let localctx: OC_ExistCountSubqueryContext = new OC_ExistCountSubqueryContext(this._ctx, this.state); - this.enterRule(localctx, 324, CypherParser.RULE_oC_ExistCountSubquery); + this.enterRule(localctx, 352, CypherParser.RULE_oC_ExistCountSubquery); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2777; + this.state = 3047; _la = this._input.LA(1); - if(!(_la===67 || _la===82)) { + if(!(_la===68 || _la===83)) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 2779; + this.state = 3049; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2778; + this.state = 3048; this.match(CypherParser.SP); } } - this.state = 2781; + this.state = 3051; this.match(CypherParser.T__8); - this.state = 2783; + this.state = 3053; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2782; + this.state = 3052; this.match(CypherParser.SP); } } - this.state = 2785; + this.state = 3055; this.match(CypherParser.MATCH); - this.state = 2787; + this.state = 3057; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2786; + this.state = 3056; this.match(CypherParser.SP); } } - this.state = 2789; + this.state = 3059; this.oC_Pattern(); - this.state = 2794; + this.state = 3064; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 472, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 519, this._ctx) ) { case 1: { - this.state = 2791; + this.state = 3061; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2790; + this.state = 3060; this.match(CypherParser.SP); } } - this.state = 2793; + this.state = 3063; this.oC_Where(); } break; } - this.state = 2800; + this.state = 3070; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 474, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 521, this._ctx) ) { case 1: { - this.state = 2797; + this.state = 3067; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2796; + this.state = 3066; this.match(CypherParser.SP); } } - this.state = 2799; - this.kU_Hint(); + this.state = 3069; + this.iC_Hint(); } break; } - this.state = 2803; + this.state = 3073; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2802; + this.state = 3072; this.match(CypherParser.SP); } } - this.state = 2805; + this.state = 3075; this.match(CypherParser.T__9); } } @@ -11877,28 +12922,29 @@ export class CypherParser extends antlr.Parser { } public oC_PropertyLookup(): OC_PropertyLookupContext { let localctx: OC_PropertyLookupContext = new OC_PropertyLookupContext(this._ctx, this.state); - this.enterRule(localctx, 326, CypherParser.RULE_oC_PropertyLookup); + this.enterRule(localctx, 354, CypherParser.RULE_oC_PropertyLookup); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2807; + this.state = 3077; this.match(CypherParser.T__4); - this.state = 2809; + this.state = 3079; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2808; + this.state = 3078; this.match(CypherParser.SP); } } - this.state = 2813; + this.state = 3083; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.ADD: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -11963,13 +13009,13 @@ export class CypherParser extends antlr.Parser { case CypherParser.UnescapedSymbolicName: case CypherParser.EscapedSymbolicName: { - this.state = 2811; + this.state = 3081; this.oC_PropertyKeyName(); } break; case CypherParser.STAR: { - this.state = 2812; + this.state = 3082; this.match(CypherParser.STAR); } break; @@ -11994,21 +13040,21 @@ export class CypherParser extends antlr.Parser { } public oC_CaseExpression(): OC_CaseExpressionContext { let localctx: OC_CaseExpressionContext = new OC_CaseExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 328, CypherParser.RULE_oC_CaseExpression); + this.enterRule(localctx, 356, CypherParser.RULE_oC_CaseExpression); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2837; + this.state = 3107; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 483, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 530, this._ctx) ) { case 1: { { - this.state = 2815; + this.state = 3085; this.match(CypherParser.CASE); - this.state = 2820; + this.state = 3090; this._errHandler.sync(this); _alt = 1; do { @@ -12016,17 +13062,17 @@ export class CypherParser extends antlr.Parser { case 1: { { - this.state = 2817; + this.state = 3087; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2816; + this.state = 3086; this.match(CypherParser.SP); } } - this.state = 2819; + this.state = 3089; this.oC_CaseAlternative(); } } @@ -12034,9 +13080,9 @@ export class CypherParser extends antlr.Parser { default: throw new antlr.NoViableAltException(this); } - this.state = 2822; + this.state = 3092; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 479, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 526, this._ctx); } while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -12044,21 +13090,21 @@ export class CypherParser extends antlr.Parser { case 2: { { - this.state = 2824; + this.state = 3094; this.match(CypherParser.CASE); - this.state = 2826; + this.state = 3096; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2825; + this.state = 3095; this.match(CypherParser.SP); } } - this.state = 2828; + this.state = 3098; this.oC_Expression(); - this.state = 2833; + this.state = 3103; this._errHandler.sync(this); _alt = 1; do { @@ -12066,17 +13112,17 @@ export class CypherParser extends antlr.Parser { case 1: { { - this.state = 2830; + this.state = 3100; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2829; + this.state = 3099; this.match(CypherParser.SP); } } - this.state = 2832; + this.state = 3102; this.oC_CaseAlternative(); } } @@ -12084,57 +13130,57 @@ export class CypherParser extends antlr.Parser { default: throw new antlr.NoViableAltException(this); } - this.state = 2835; + this.state = 3105; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 482, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 529, this._ctx); } while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER); } } break; } - this.state = 2847; + this.state = 3117; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 486, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 533, this._ctx) ) { case 1: { - this.state = 2840; + this.state = 3110; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2839; + this.state = 3109; this.match(CypherParser.SP); } } - this.state = 2842; + this.state = 3112; this.match(CypherParser.ELSE); - this.state = 2844; + this.state = 3114; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2843; + this.state = 3113; this.match(CypherParser.SP); } } - this.state = 2846; + this.state = 3116; this.oC_Expression(); } break; } - this.state = 2850; + this.state = 3120; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2849; + this.state = 3119; this.match(CypherParser.SP); } } - this.state = 2852; + this.state = 3122; this.match(CypherParser.END); } } @@ -12154,48 +13200,48 @@ export class CypherParser extends antlr.Parser { } public oC_CaseAlternative(): OC_CaseAlternativeContext { let localctx: OC_CaseAlternativeContext = new OC_CaseAlternativeContext(this._ctx, this.state); - this.enterRule(localctx, 330, CypherParser.RULE_oC_CaseAlternative); + this.enterRule(localctx, 358, CypherParser.RULE_oC_CaseAlternative); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2854; + this.state = 3124; this.match(CypherParser.WHEN); - this.state = 2856; + this.state = 3126; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2855; + this.state = 3125; this.match(CypherParser.SP); } } - this.state = 2858; + this.state = 3128; this.oC_Expression(); - this.state = 2860; + this.state = 3130; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2859; + this.state = 3129; this.match(CypherParser.SP); } } - this.state = 2862; + this.state = 3132; this.match(CypherParser.THEN); - this.state = 2864; + this.state = 3134; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2863; + this.state = 3133; this.match(CypherParser.SP); } } - this.state = 2866; + this.state = 3136; this.oC_Expression(); } } @@ -12215,11 +13261,11 @@ export class CypherParser extends antlr.Parser { } public oC_Variable(): OC_VariableContext { let localctx: OC_VariableContext = new OC_VariableContext(this._ctx, this.state); - this.enterRule(localctx, 332, CypherParser.RULE_oC_Variable); + this.enterRule(localctx, 360, CypherParser.RULE_oC_Variable); try { this.enterOuterAlt(localctx, 1); { - this.state = 2868; + this.state = 3138; this.oC_SymbolicName(); } } @@ -12239,23 +13285,23 @@ export class CypherParser extends antlr.Parser { } public oC_NumberLiteral(): OC_NumberLiteralContext { let localctx: OC_NumberLiteralContext = new OC_NumberLiteralContext(this._ctx, this.state); - this.enterRule(localctx, 334, CypherParser.RULE_oC_NumberLiteral); + this.enterRule(localctx, 362, CypherParser.RULE_oC_NumberLiteral); try { - this.state = 2872; + this.state = 3142; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.ExponentDecimalReal: case CypherParser.RegularDecimalReal: this.enterOuterAlt(localctx, 1); { - this.state = 2870; + this.state = 3140; this.oC_DoubleLiteral(); } break; case CypherParser.DecimalInteger: this.enterOuterAlt(localctx, 2); { - this.state = 2871; + this.state = 3141; this.oC_IntegerLiteral(); } break; @@ -12279,17 +13325,18 @@ export class CypherParser extends antlr.Parser { } public oC_Parameter(): OC_ParameterContext { let localctx: OC_ParameterContext = new OC_ParameterContext(this._ctx, this.state); - this.enterRule(localctx, 336, CypherParser.RULE_oC_Parameter); + this.enterRule(localctx, 364, CypherParser.RULE_oC_Parameter); try { this.enterOuterAlt(localctx, 1); { - this.state = 2874; + this.state = 3144; this.match(CypherParser.T__24); - this.state = 2877; + this.state = 3147; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.ADD: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -12354,13 +13401,13 @@ export class CypherParser extends antlr.Parser { case CypherParser.UnescapedSymbolicName: case CypherParser.EscapedSymbolicName: { - this.state = 2875; + this.state = 3145; this.oC_SymbolicName(); } break; case CypherParser.DecimalInteger: { - this.state = 2876; + this.state = 3146; this.match(CypherParser.DecimalInteger); } break; @@ -12385,24 +13432,24 @@ export class CypherParser extends antlr.Parser { } public oC_PropertyExpression(): OC_PropertyExpressionContext { let localctx: OC_PropertyExpressionContext = new OC_PropertyExpressionContext(this._ctx, this.state); - this.enterRule(localctx, 338, CypherParser.RULE_oC_PropertyExpression); + this.enterRule(localctx, 366, CypherParser.RULE_oC_PropertyExpression); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2879; + this.state = 3149; this.oC_Atom(); - this.state = 2881; + this.state = 3151; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===183) { + if (_la===188) { { - this.state = 2880; + this.state = 3150; this.match(CypherParser.SP); } } - this.state = 2883; + this.state = 3153; this.oC_PropertyLookup(); } } @@ -12422,12 +13469,12 @@ export class CypherParser extends antlr.Parser { } public oC_PropertyKeyName(): OC_PropertyKeyNameContext { let localctx: OC_PropertyKeyNameContext = new OC_PropertyKeyNameContext(this._ctx, this.state); - this.enterRule(localctx, 340, CypherParser.RULE_oC_PropertyKeyName); + this.enterRule(localctx, 368, CypherParser.RULE_oC_PropertyKeyName); try { this.enterOuterAlt(localctx, 1); { - this.state = 2885; - this.oC_SchemaName(); + this.state = 3155; + this.oC_SymbolicName(); } } catch (re) { @@ -12446,11 +13493,11 @@ export class CypherParser extends antlr.Parser { } public oC_IntegerLiteral(): OC_IntegerLiteralContext { let localctx: OC_IntegerLiteralContext = new OC_IntegerLiteralContext(this._ctx, this.state); - this.enterRule(localctx, 342, CypherParser.RULE_oC_IntegerLiteral); + this.enterRule(localctx, 370, CypherParser.RULE_oC_IntegerLiteral); try { this.enterOuterAlt(localctx, 1); { - this.state = 2887; + this.state = 3157; this.match(CypherParser.DecimalInteger); } } @@ -12470,14 +13517,14 @@ export class CypherParser extends antlr.Parser { } public oC_DoubleLiteral(): OC_DoubleLiteralContext { let localctx: OC_DoubleLiteralContext = new OC_DoubleLiteralContext(this._ctx, this.state); - this.enterRule(localctx, 344, CypherParser.RULE_oC_DoubleLiteral); + this.enterRule(localctx, 372, CypherParser.RULE_oC_DoubleLiteral); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2889; + this.state = 3159; _la = this._input.LA(1); - if(!(_la===177 || _la===178)) { + if(!(_la===182 || _la===183)) { this._errHandler.recoverInline(this); } else { @@ -12502,12 +13549,24 @@ export class CypherParser extends antlr.Parser { } public oC_SchemaName(): OC_SchemaNameContext { let localctx: OC_SchemaNameContext = new OC_SchemaNameContext(this._ctx, this.state); - this.enterRule(localctx, 346, CypherParser.RULE_oC_SchemaName); + this.enterRule(localctx, 374, CypherParser.RULE_oC_SchemaName); try { this.enterOuterAlt(localctx, 1); { - this.state = 2891; + this.state = 3161; this.oC_SymbolicName(); + this.state = 3164; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 541, this._ctx) ) { + case 1: + { + this.state = 3162; + this.match(CypherParser.T__4); + this.state = 3163; + this.oC_SymbolicName(); + } + break; + } } } catch (re) { @@ -12526,34 +13585,35 @@ export class CypherParser extends antlr.Parser { } public oC_SymbolicName(): OC_SymbolicNameContext { let localctx: OC_SymbolicNameContext = new OC_SymbolicNameContext(this._ctx, this.state); - this.enterRule(localctx, 348, CypherParser.RULE_oC_SymbolicName); + this.enterRule(localctx, 376, CypherParser.RULE_oC_SymbolicName); try { - this.state = 2898; + this.state = 3171; this._errHandler.sync(this); switch (this._input.LA(1)) { case CypherParser.UnescapedSymbolicName: this.enterOuterAlt(localctx, 1); { - this.state = 2893; + this.state = 3166; this.match(CypherParser.UnescapedSymbolicName); } break; case CypherParser.EscapedSymbolicName: this.enterOuterAlt(localctx, 2); { - this.state = 2894; + this.state = 3167; localctx._EscapedSymbolicName = this.match(CypherParser.EscapedSymbolicName); } break; case CypherParser.HexLetter: this.enterOuterAlt(localctx, 3); { - this.state = 2896; + this.state = 3169; this.match(CypherParser.HexLetter); } break; case CypherParser.ADD: case CypherParser.ALTER: + case CypherParser.ANALYZE: case CypherParser.AS: case CypherParser.ATTACH: case CypherParser.BEGIN: @@ -12616,8 +13676,8 @@ export class CypherParser extends antlr.Parser { case CypherParser.L_SKIP: this.enterOuterAlt(localctx, 4); { - this.state = 2897; - this.kU_NonReservedKeywords(); + this.state = 3170; + this.iC_NonReservedKeywords(); } break; default: @@ -12638,16 +13698,16 @@ export class CypherParser extends antlr.Parser { } return localctx; } - public kU_NonReservedKeywords(): KU_NonReservedKeywordsContext { - let localctx: KU_NonReservedKeywordsContext = new KU_NonReservedKeywordsContext(this._ctx, this.state); - this.enterRule(localctx, 350, CypherParser.RULE_kU_NonReservedKeywords); + public iC_NonReservedKeywords(): IC_NonReservedKeywordsContext { + let localctx: IC_NonReservedKeywordsContext = new IC_NonReservedKeywordsContext(this._ctx, this.state); + this.enterRule(localctx, 378, CypherParser.RULE_iC_NonReservedKeywords); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2900; + this.state = 3173; _la = this._input.LA(1); - if(!(((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 2765989781) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 935155895) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 298489279) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 191) !== 0))) { + if(!(((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237012269) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 3735693025) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 700383259) !== 0) || ((((_la - 143)) & ~0x1F) === 0 && ((1 << (_la - 143)) & 25043861) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -12672,12 +13732,12 @@ export class CypherParser extends antlr.Parser { } public oC_LeftArrowHead(): OC_LeftArrowHeadContext { let localctx: OC_LeftArrowHeadContext = new OC_LeftArrowHeadContext(this._ctx, this.state); - this.enterRule(localctx, 352, CypherParser.RULE_oC_LeftArrowHead); + this.enterRule(localctx, 380, CypherParser.RULE_oC_LeftArrowHead); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2902; + this.state = 3175; _la = this._input.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1006641152) !== 0))) { this._errHandler.recoverInline(this); @@ -12704,12 +13764,12 @@ export class CypherParser extends antlr.Parser { } public oC_RightArrowHead(): OC_RightArrowHeadContext { let localctx: OC_RightArrowHeadContext = new OC_RightArrowHeadContext(this._ctx, this.state); - this.enterRule(localctx, 354, CypherParser.RULE_oC_RightArrowHead); + this.enterRule(localctx, 382, CypherParser.RULE_oC_RightArrowHead); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2904; + this.state = 3177; _la = this._input.LA(1); if(!(((((_la - 15)) & ~0x1F) === 0 && ((1 << (_la - 15)) & 491521) !== 0))) { this._errHandler.recoverInline(this); @@ -12736,14 +13796,14 @@ export class CypherParser extends antlr.Parser { } public oC_Dash(): OC_DashContext { let localctx: OC_DashContext = new OC_DashContext(this._ctx, this.state); - this.enterRule(localctx, 356, CypherParser.RULE_oC_Dash); + this.enterRule(localctx, 384, CypherParser.RULE_oC_Dash); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2906; + this.state = 3179; _la = this._input.LA(1); - if(!(((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2047) !== 0) || _la===166)) { + if(!(((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2047) !== 0) || _la===171)) { this._errHandler.recoverInline(this); } else { @@ -12769,21 +13829,21 @@ export class CypherParser extends antlr.Parser { public override sempred(localctx: antlr.RuleContext, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { - case 57: - return this.kU_DataType_sempred(localctx as KU_DataTypeContext, predIndex); - case 84: - return this.kU_JoinNode_sempred(localctx as KU_JoinNodeContext, predIndex); + case 71: + return this.iC_DataType_sempred(localctx as IC_DataTypeContext, predIndex); + case 98: + return this.iC_JoinNode_sempred(localctx as IC_JoinNodeContext, predIndex); } return true; } - private kU_DataType_sempred(localctx: KU_DataTypeContext, predIndex: number): boolean { + private iC_DataType_sempred(localctx: IC_DataTypeContext, predIndex: number): boolean { switch (predIndex) { case 0: return this.precpred(this._ctx, 5); } return true; } - private kU_JoinNode_sempred(localctx: KU_JoinNodeContext, predIndex: number): boolean { + private iC_JoinNode_sempred(localctx: IC_JoinNodeContext, predIndex: number): boolean { switch (predIndex) { case 1: return this.precpred(this._ctx, 4); @@ -12794,7 +13854,7 @@ export class CypherParser extends antlr.Parser { } public static readonly _serializedATN: number[] = [ - 4,1,186,2909,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,1,191,3182,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, @@ -12823,1230 +13883,1354 @@ export class CypherParser extends antlr.Parser { 2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164, 7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169, 2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175, - 7,175,2,176,7,176,2,177,7,177,2,178,7,178,1,0,1,0,3,0,361,8,0,1, - 0,1,0,3,0,365,8,0,1,0,5,0,368,8,0,10,0,12,0,371,9,0,1,0,3,0,374, - 8,0,1,0,1,0,1,1,3,1,379,8,1,1,1,3,1,382,8,1,1,1,1,1,3,1,386,8,1, - 1,1,3,1,389,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,413,8,2,1,3,1,3,1,3, - 1,3,3,3,419,8,3,1,3,1,3,1,3,1,3,1,3,3,3,426,8,3,1,3,1,3,3,3,430, - 8,3,1,3,1,3,3,3,434,8,3,1,3,1,3,3,3,438,8,3,1,4,3,4,441,8,4,1,4, - 1,4,3,4,445,8,4,1,4,1,4,3,4,449,8,4,1,4,1,4,3,4,453,8,4,1,4,5,4, - 456,8,4,10,4,12,4,459,9,4,1,4,3,4,462,8,4,3,4,464,8,4,1,4,1,4,1, - 5,1,5,1,5,3,5,471,8,5,1,5,1,5,3,5,475,8,5,1,5,1,5,1,5,1,5,1,5,1, - 5,1,5,3,5,484,8,5,1,5,1,5,1,5,3,5,489,8,5,1,6,1,6,1,6,1,6,1,6,1, - 6,1,6,1,6,3,6,499,8,6,1,6,1,6,3,6,503,8,6,1,6,1,6,3,6,507,8,6,1, - 6,5,6,510,8,6,10,6,12,6,513,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7, - 1,7,1,7,3,7,525,8,7,1,7,1,7,3,7,529,8,7,1,7,1,7,1,7,1,7,1,7,1,7, - 3,7,537,8,7,1,7,1,7,3,7,541,8,7,1,7,1,7,3,7,545,8,7,1,7,1,7,3,7, - 549,8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,557,8,8,1,8,1,8,3,8,561,8,8, - 1,8,1,8,3,8,565,8,8,1,8,1,8,3,8,569,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,3,10,584,8,10,1,10,1,10,1,10, - 3,10,589,8,10,1,10,1,10,1,10,1,10,3,10,595,8,10,1,10,1,10,3,10,599, - 8,10,1,10,3,10,602,8,10,1,10,3,10,605,8,10,1,10,1,10,1,11,1,11,3, - 11,611,8,11,1,11,1,11,3,11,615,8,11,1,11,5,11,618,8,11,10,11,12, - 11,621,9,11,3,11,623,8,11,1,11,1,11,1,11,3,11,628,8,11,1,12,1,12, - 3,12,632,8,12,1,12,1,12,3,12,636,8,12,1,12,5,12,639,8,12,10,12,12, - 12,642,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,15,1,15,1, - 15,1,15,3,15,656,8,15,1,15,1,15,3,15,660,8,15,1,15,1,15,1,15,1,15, - 1,15,3,15,667,8,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16, - 1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,3,17,687,8,17,1,17, - 1,17,3,17,691,8,17,1,17,3,17,694,8,17,1,17,3,17,697,8,17,1,17,3, - 17,700,8,17,1,17,3,17,703,8,17,1,17,1,17,3,17,707,8,17,1,17,5,17, - 710,8,17,10,17,12,17,713,9,17,1,17,3,17,716,8,17,1,17,1,17,1,17, - 1,17,1,17,1,17,1,18,1,18,3,18,726,8,18,1,18,1,18,3,18,730,8,18,1, - 18,5,18,733,8,18,10,18,12,18,736,9,18,1,19,1,19,3,19,740,8,19,1, - 19,1,19,1,19,3,19,745,8,19,1,19,1,19,1,20,1,20,3,20,751,8,20,1,20, - 1,20,3,20,755,8,20,1,20,1,20,3,20,759,8,20,1,20,5,20,762,8,20,10, - 20,12,20,765,9,20,1,20,1,20,1,20,1,20,3,20,771,8,20,1,20,1,20,3, - 20,775,8,20,1,20,1,20,3,20,779,8,20,1,20,3,20,782,8,20,1,21,1,21, - 1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22, - 3,22,799,8,22,1,22,1,22,3,22,803,8,22,1,22,1,22,3,22,807,8,22,1, - 22,1,22,3,22,811,8,22,1,22,1,22,3,22,815,8,22,1,22,3,22,818,8,22, - 1,22,3,22,821,8,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,829,8,22,1, - 23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,838,8,23,1,23,1,23,3,23,842, - 8,23,1,23,1,23,1,23,3,23,847,8,23,1,23,1,23,3,23,851,8,23,1,23,1, - 23,3,23,855,8,23,1,23,1,23,3,23,859,8,23,1,23,1,23,3,23,863,8,23, - 3,23,865,8,23,1,23,1,23,3,23,869,8,23,1,23,1,23,3,23,873,8,23,3, - 23,875,8,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,883,8,23,1,23,1,23, - 1,23,3,23,888,8,23,1,23,1,23,3,23,892,8,23,1,23,1,23,3,23,896,8, - 23,1,23,1,23,3,23,900,8,23,1,24,1,24,3,24,904,8,24,1,24,1,24,3,24, - 908,8,24,1,24,5,24,911,8,24,10,24,12,24,914,9,24,1,25,1,25,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,3,26, - 931,8,26,1,26,1,26,1,26,5,26,936,8,26,10,26,12,26,939,9,26,1,27, - 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,951,8,27,1,28, - 1,28,1,28,1,28,1,28,3,28,958,8,28,1,29,1,29,1,29,1,29,1,29,1,29, - 1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,974,8,30,1,30,1,30, - 3,30,978,8,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,987,8,31,1, - 31,1,31,1,32,1,32,1,32,1,32,3,32,995,8,32,1,32,3,32,998,8,32,1,32, - 1,32,1,33,1,33,1,33,1,33,1,33,1,33,3,33,1008,8,33,1,33,3,33,1011, - 8,33,1,34,1,34,1,34,1,34,1,34,1,34,3,34,1019,8,34,1,34,3,34,1022, - 8,34,1,35,1,35,1,35,1,35,3,35,1028,8,35,1,35,3,35,1031,8,35,1,35, - 1,35,1,36,1,36,3,36,1037,8,36,1,36,1,36,1,37,1,37,1,37,1,37,1,38, - 1,38,1,38,1,38,1,38,1,38,1,38,3,38,1052,8,38,1,38,1,38,1,39,1,39, - 1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,3,40, - 1070,8,40,1,41,1,41,1,41,1,41,1,41,3,41,1077,8,41,1,41,1,41,1,41, - 1,41,1,41,3,41,1084,8,41,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43, - 1,43,3,43,1095,8,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,45, - 1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,3,46, - 1118,8,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,3,47,1127,8,47,1,47, - 1,47,1,48,1,48,3,48,1133,8,48,1,48,1,48,3,48,1137,8,48,1,48,5,48, - 1140,8,48,10,48,12,48,1143,9,48,1,49,1,49,1,49,1,49,1,50,1,50,3, - 50,1151,8,50,1,50,1,50,3,50,1155,8,50,1,50,5,50,1158,8,50,10,50, - 12,50,1161,9,50,1,51,1,51,1,51,3,51,1166,8,51,1,51,1,51,1,51,1,51, - 3,51,1172,8,51,1,52,1,52,1,52,1,52,3,52,1178,8,52,1,52,1,52,3,52, - 1182,8,52,1,52,1,52,3,52,1186,8,52,1,52,1,52,1,53,1,53,3,53,1192, - 8,53,1,53,1,53,3,53,1196,8,53,1,53,1,53,3,53,1200,8,53,1,53,1,53, - 1,54,1,54,3,54,1206,8,54,1,54,1,54,3,54,1210,8,54,1,54,1,54,3,54, - 1214,8,54,1,54,1,54,1,55,1,55,3,55,1220,8,55,1,55,1,55,3,55,1224, - 8,55,1,55,1,55,3,55,1228,8,55,1,55,1,55,3,55,1232,8,55,1,55,1,55, - 3,55,1236,8,55,1,55,1,55,1,56,1,56,3,56,1242,8,56,1,56,1,56,3,56, - 1246,8,56,1,56,1,56,3,56,1250,8,56,1,56,1,56,3,56,1254,8,56,1,56, - 1,56,3,56,1258,8,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,3,57, - 1268,8,57,1,57,1,57,5,57,1272,8,57,10,57,12,57,1275,9,57,1,58,1, - 58,5,58,1279,8,58,10,58,12,58,1282,9,58,1,59,1,59,3,59,1286,8,59, - 1,59,1,59,1,60,1,60,3,60,1292,8,60,1,61,1,61,1,61,3,61,1297,8,61, - 1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63, - 1,63,1,63,3,63,1314,8,63,1,64,1,64,1,64,1,64,3,64,1320,8,64,1,65, - 1,65,1,65,1,65,3,65,1326,8,65,1,65,1,65,3,65,1330,8,65,1,66,1,66, - 3,66,1334,8,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,1343,8,66, - 1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,70,1,70,3,70, - 1357,8,70,1,70,5,70,1360,8,70,10,70,12,70,1363,9,70,1,70,1,70,3, - 70,1367,8,70,4,70,1369,8,70,11,70,12,70,1370,1,70,1,70,1,70,3,70, - 1376,8,70,1,71,1,71,1,71,1,71,3,71,1382,8,71,1,71,1,71,1,71,3,71, - 1387,8,71,1,71,3,71,1390,8,71,1,72,1,72,3,72,1394,8,72,1,73,1,73, - 3,73,1398,8,73,5,73,1400,8,73,10,73,12,73,1403,9,73,1,73,1,73,1, - 73,3,73,1408,8,73,5,73,1410,8,73,10,73,12,73,1413,9,73,1,73,1,73, - 3,73,1417,8,73,1,73,5,73,1420,8,73,10,73,12,73,1423,9,73,1,73,3, - 73,1426,8,73,1,73,3,73,1429,8,73,3,73,1431,8,73,1,74,1,74,3,74,1435, - 8,74,4,74,1437,8,74,11,74,12,74,1438,1,74,1,74,1,75,1,75,3,75,1445, - 8,75,5,75,1447,8,75,10,75,12,75,1450,9,75,1,75,1,75,3,75,1454,8, - 75,5,75,1456,8,75,10,75,12,75,1459,9,75,1,75,1,75,1,76,1,76,1,76, - 1,76,3,76,1467,8,76,1,77,1,77,1,77,1,77,3,77,1473,8,77,1,78,1,78, - 1,78,1,78,1,78,1,78,3,78,1481,8,78,1,78,1,78,3,78,1485,8,78,1,78, - 1,78,3,78,1489,8,78,1,78,1,78,3,78,1493,8,78,1,78,1,78,1,78,1,78, - 1,78,3,78,1500,8,78,1,78,1,78,3,78,1504,8,78,1,78,1,78,3,78,1508, - 8,78,1,78,1,78,3,78,1512,8,78,1,78,3,78,1515,8,78,1,78,3,78,1518, - 8,78,1,79,1,79,1,79,1,79,1,79,3,79,1525,8,79,1,79,1,79,1,80,1,80, - 3,80,1531,8,80,1,80,1,80,3,80,1535,8,80,1,80,5,80,1538,8,80,10,80, - 12,80,1541,9,80,1,81,1,81,1,81,1,81,3,81,1547,8,81,1,81,3,81,1550, - 8,81,1,81,3,81,1553,8,81,1,81,1,81,1,81,3,81,1558,8,81,1,82,1,82, - 3,82,1562,8,82,1,82,1,82,3,82,1566,8,82,1,82,1,82,1,82,3,82,1571, - 8,82,1,82,1,82,3,82,1575,8,82,1,83,1,83,1,83,1,83,1,84,1,84,1,84, - 3,84,1584,8,84,1,84,1,84,3,84,1588,8,84,1,84,1,84,1,84,3,84,1593, - 8,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,4,84,1605, - 8,84,11,84,12,84,1606,5,84,1609,8,84,10,84,12,84,1612,9,84,1,85, - 1,85,3,85,1616,8,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,3,86, - 1626,8,86,1,86,1,86,1,87,1,87,3,87,1632,8,87,1,87,1,87,1,87,5,87, - 1637,8,87,10,87,12,87,1640,9,87,1,88,1,88,1,88,1,88,1,88,1,88,1, - 88,1,88,1,88,1,88,3,88,1652,8,88,1,89,1,89,3,89,1656,8,89,1,89,1, - 89,3,89,1660,8,89,1,89,1,89,3,89,1664,8,89,1,89,5,89,1667,8,89,10, - 89,12,89,1670,9,89,1,89,1,89,3,89,1674,8,89,1,89,1,89,3,89,1678, - 8,89,1,89,1,89,3,89,1682,8,89,1,89,1,89,3,89,1686,8,89,1,90,1,90, - 3,90,1690,8,90,1,90,1,90,3,90,1694,8,90,1,90,1,90,1,91,1,91,3,91, - 1700,8,91,1,91,1,91,3,91,1704,8,91,1,91,1,91,3,91,1708,8,91,1,91, - 1,91,3,91,1712,8,91,1,91,5,91,1715,8,91,10,91,12,91,1718,9,91,1, - 92,1,92,1,92,3,92,1723,8,92,1,92,3,92,1726,8,92,1,93,1,93,1,93,1, - 94,3,94,1732,8,94,1,94,3,94,1735,8,94,1,94,1,94,1,94,1,94,3,94,1741, - 8,94,1,94,1,94,3,94,1745,8,94,1,94,1,94,3,94,1749,8,94,1,95,1,95, - 3,95,1753,8,95,1,95,1,95,3,95,1757,8,95,1,95,5,95,1760,8,95,10,95, - 12,95,1763,9,95,1,95,1,95,3,95,1767,8,95,1,95,1,95,3,95,1771,8,95, - 1,95,5,95,1774,8,95,10,95,12,95,1777,9,95,3,95,1779,8,95,1,96,1, - 96,1,96,1,96,1,96,1,96,1,96,3,96,1788,8,96,1,97,1,97,1,97,1,97,1, - 97,1,97,1,97,3,97,1797,8,97,1,97,5,97,1800,8,97,10,97,12,97,1803, - 9,97,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,100,1,100,3,100,1815, - 8,100,1,100,3,100,1818,8,100,1,101,1,101,1,101,1,101,1,102,1,102, - 3,102,1826,8,102,1,102,1,102,3,102,1830,8,102,1,102,5,102,1833,8, - 102,10,102,12,102,1836,9,102,1,103,1,103,3,103,1840,8,103,1,103, - 1,103,3,103,1844,8,103,1,103,1,103,1,103,3,103,1849,8,103,1,104, - 1,104,1,105,1,105,3,105,1855,8,105,1,105,5,105,1858,8,105,10,105, - 12,105,1861,9,105,1,105,1,105,1,105,1,105,3,105,1867,8,105,1,106, - 1,106,3,106,1871,8,106,1,106,1,106,3,106,1875,8,106,3,106,1877,8, - 106,1,106,1,106,3,106,1881,8,106,3,106,1883,8,106,1,106,1,106,3, - 106,1887,8,106,3,106,1889,8,106,1,106,1,106,1,107,1,107,3,107,1895, - 8,107,1,107,1,107,1,108,1,108,3,108,1901,8,108,1,108,1,108,3,108, - 1905,8,108,1,108,3,108,1908,8,108,1,108,3,108,1911,8,108,1,108,1, - 108,1,108,1,108,3,108,1917,8,108,1,108,3,108,1920,8,108,1,108,3, - 108,1923,8,108,1,108,1,108,3,108,1927,8,108,1,108,1,108,1,108,1, - 108,3,108,1933,8,108,1,108,3,108,1936,8,108,1,108,3,108,1939,8,108, - 1,108,1,108,3,108,1943,8,108,1,109,1,109,3,109,1947,8,109,1,109, - 1,109,3,109,1951,8,109,3,109,1953,8,109,1,109,1,109,3,109,1957,8, - 109,3,109,1959,8,109,1,109,1,109,3,109,1963,8,109,3,109,1965,8,109, - 1,109,1,109,3,109,1969,8,109,3,109,1971,8,109,1,109,1,109,1,110, - 1,110,3,110,1977,8,110,1,110,1,110,3,110,1981,8,110,1,110,1,110, - 3,110,1985,8,110,1,110,1,110,3,110,1989,8,110,1,110,1,110,3,110, - 1993,8,110,1,110,1,110,3,110,1997,8,110,1,110,1,110,3,110,2001,8, - 110,1,110,1,110,3,110,2005,8,110,5,110,2007,8,110,10,110,12,110, - 2010,9,110,3,110,2012,8,110,1,110,1,110,1,111,1,111,3,111,2018,8, - 111,1,111,1,111,3,111,2022,8,111,1,111,1,111,3,111,2026,8,111,1, - 111,3,111,2029,8,111,1,111,5,111,2032,8,111,10,111,12,111,2035,9, - 111,1,112,1,112,3,112,2039,8,112,1,112,1,112,3,112,2043,8,112,1, - 112,1,112,3,112,2047,8,112,1,112,3,112,2050,8,112,1,112,3,112,2053, - 8,112,1,112,5,112,2056,8,112,10,112,12,112,2059,9,112,1,113,1,113, - 3,113,2063,8,113,1,113,3,113,2066,8,113,1,113,3,113,2069,8,113,1, - 113,3,113,2072,8,113,1,113,3,113,2075,8,113,1,113,3,113,2078,8,113, - 1,114,1,114,3,114,2082,8,114,1,114,1,114,3,114,2086,8,114,1,114, - 1,114,3,114,2090,8,114,1,114,1,114,3,114,2094,8,114,1,114,1,114, - 1,114,1,114,1,114,1,114,1,114,1,114,3,114,2104,8,114,1,115,3,115, - 2107,8,115,1,115,3,115,2110,8,115,1,115,1,115,3,115,2114,8,115,1, - 115,3,115,2117,8,115,1,115,3,115,2120,8,115,1,116,1,116,3,116,2124, - 8,116,1,116,1,116,3,116,2128,8,116,1,116,1,116,3,116,2132,8,116, - 1,116,1,116,3,116,2136,8,116,1,116,1,116,3,116,2140,8,116,1,116, - 1,116,3,116,2144,8,116,3,116,2146,8,116,1,116,3,116,2149,8,116,1, - 116,1,116,3,116,2153,8,116,1,116,1,116,3,116,2157,8,116,1,116,1, - 116,3,116,2161,8,116,1,116,1,116,3,116,2165,8,116,3,116,2167,8,116, - 1,116,1,116,1,117,1,117,3,117,2173,8,117,1,117,3,117,2176,8,117, - 1,117,3,117,2179,8,117,1,117,1,117,1,118,1,118,1,119,1,119,1,120, - 1,120,1,121,1,121,1,122,1,122,1,123,1,123,1,123,1,123,1,123,5,123, - 2198,8,123,10,123,12,123,2201,9,123,1,124,1,124,1,124,1,124,1,124, - 5,124,2208,8,124,10,124,12,124,2211,9,124,1,125,1,125,1,125,1,125, - 1,125,5,125,2218,8,125,10,125,12,125,2221,9,125,1,126,1,126,3,126, - 2225,8,126,5,126,2227,8,126,10,126,12,126,2230,9,126,1,126,1,126, - 1,127,1,127,3,127,2236,8,127,1,127,1,127,3,127,2240,8,127,1,127, - 1,127,3,127,2244,8,127,1,127,1,127,3,127,2248,8,127,1,127,1,127, - 3,127,2252,8,127,1,127,1,127,1,127,1,127,1,127,1,127,3,127,2260, - 8,127,1,127,1,127,3,127,2264,8,127,1,127,1,127,3,127,2268,8,127, - 1,127,1,127,3,127,2272,8,127,1,127,1,127,4,127,2276,8,127,11,127, - 12,127,2277,1,127,1,127,3,127,2282,8,127,1,128,1,128,1,129,1,129, - 3,129,2288,8,129,1,129,1,129,3,129,2292,8,129,1,129,5,129,2295,8, - 129,10,129,12,129,2298,9,129,1,130,1,130,3,130,2302,8,130,1,130, - 1,130,3,130,2306,8,130,1,130,5,130,2309,8,130,10,130,12,130,2312, - 9,130,1,131,1,131,3,131,2316,8,131,1,131,1,131,3,131,2320,8,131, - 1,131,1,131,5,131,2324,8,131,10,131,12,131,2327,9,131,1,132,1,132, - 1,133,1,133,3,133,2333,8,133,1,133,1,133,3,133,2337,8,133,1,133, - 1,133,5,133,2341,8,133,10,133,12,133,2344,9,133,1,134,1,134,1,135, - 1,135,3,135,2350,8,135,1,135,1,135,3,135,2354,8,135,1,135,1,135, - 5,135,2358,8,135,10,135,12,135,2361,9,135,1,136,1,136,1,137,1,137, - 3,137,2367,8,137,1,137,1,137,3,137,2371,8,137,1,137,5,137,2374,8, - 137,10,137,12,137,2377,9,137,1,138,1,138,1,138,4,138,2382,8,138, - 11,138,12,138,2383,1,138,3,138,2387,8,138,1,139,1,139,1,139,3,139, - 2392,8,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,3,139,2401, - 8,139,1,139,1,139,3,139,2405,8,139,1,139,3,139,2408,8,139,1,140, - 1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,3,140, - 2421,8,140,1,140,3,140,2424,8,140,1,140,1,140,1,141,3,141,2429,8, - 141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, - 1,142,1,142,3,142,2443,8,142,1,143,1,143,3,143,2447,8,143,5,143, - 2449,8,143,10,143,12,143,2452,9,143,1,143,1,143,3,143,2456,8,143, - 1,143,3,143,2459,8,143,1,144,1,144,3,144,2463,8,144,1,144,5,144, - 2466,8,144,10,144,12,144,2469,9,144,1,145,1,145,1,145,1,145,1,145, - 1,145,1,145,1,145,1,145,3,145,2480,8,145,1,146,1,146,3,146,2484, - 8,146,1,146,1,146,3,146,2488,8,146,1,146,1,146,3,146,2492,8,146, - 1,146,1,146,1,146,1,146,3,146,2498,8,146,1,146,1,146,3,146,2502, - 8,146,1,146,1,146,3,146,2506,8,146,1,146,1,146,1,146,1,146,3,146, - 2512,8,146,1,146,1,146,3,146,2516,8,146,1,146,1,146,3,146,2520,8, - 146,1,146,1,146,1,146,1,146,3,146,2526,8,146,1,146,1,146,3,146,2530, - 8,146,1,146,1,146,3,146,2534,8,146,1,146,1,146,3,146,2538,8,146, - 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,149, - 1,149,1,149,1,149,1,149,1,149,3,149,2556,8,149,1,150,1,150,1,151, - 1,151,3,151,2562,8,151,1,151,1,151,3,151,2566,8,151,1,151,1,151, - 3,151,2570,8,151,5,151,2572,8,151,10,151,12,151,2575,9,151,3,151, - 2577,8,151,1,151,1,151,1,152,1,152,3,152,2583,8,152,1,152,3,152, - 2586,8,152,1,153,1,153,3,153,2590,8,153,1,153,1,153,3,153,2594,8, - 153,1,153,1,153,3,153,2598,8,153,1,153,1,153,3,153,2602,8,153,5, - 153,2604,8,153,10,153,12,153,2607,9,153,1,153,1,153,1,154,1,154, - 3,154,2613,8,154,1,154,3,154,2616,8,154,1,154,1,154,3,154,2620,8, - 154,1,154,1,154,1,155,1,155,3,155,2626,8,155,1,155,1,155,3,155,2630, - 8,155,1,155,1,155,1,156,1,156,3,156,2636,8,156,1,156,1,156,3,156, - 2640,8,156,1,156,1,156,3,156,2644,8,156,1,156,1,156,1,156,3,156, - 2649,8,156,1,156,1,156,3,156,2653,8,156,1,156,1,156,3,156,2657,8, - 156,1,156,1,156,3,156,2661,8,156,1,156,1,156,1,156,3,156,2666,8, - 156,1,156,3,156,2669,8,156,1,156,3,156,2672,8,156,1,156,1,156,1, - 156,1,156,3,156,2678,8,156,1,156,1,156,3,156,2682,8,156,1,156,1, - 156,3,156,2686,8,156,3,156,2688,8,156,1,156,1,156,3,156,2692,8,156, - 1,156,1,156,3,156,2696,8,156,1,156,1,156,3,156,2700,8,156,5,156, - 2702,8,156,10,156,12,156,2705,9,156,3,156,2707,8,156,1,156,1,156, - 3,156,2711,8,156,1,157,1,157,1,158,1,158,3,158,2717,8,158,1,158, - 1,158,1,158,3,158,2722,8,158,3,158,2724,8,158,1,158,1,158,3,158, - 2728,8,158,1,159,1,159,3,159,2732,8,159,1,159,1,159,1,159,3,159, - 2737,8,159,1,159,1,159,3,159,2741,8,159,1,160,1,160,1,160,3,160, - 2746,8,160,1,160,1,160,3,160,2750,8,160,1,160,1,160,3,160,2754,8, - 160,1,160,1,160,3,160,2758,8,160,5,160,2760,8,160,10,160,12,160, - 2763,9,160,1,160,1,160,3,160,2767,8,160,1,161,1,161,3,161,2771,8, - 161,1,161,4,161,2774,8,161,11,161,12,161,2775,1,162,1,162,3,162, - 2780,8,162,1,162,1,162,3,162,2784,8,162,1,162,1,162,3,162,2788,8, - 162,1,162,1,162,3,162,2792,8,162,1,162,3,162,2795,8,162,1,162,3, - 162,2798,8,162,1,162,3,162,2801,8,162,1,162,3,162,2804,8,162,1,162, - 1,162,1,163,1,163,3,163,2810,8,163,1,163,1,163,3,163,2814,8,163, - 1,164,1,164,3,164,2818,8,164,1,164,4,164,2821,8,164,11,164,12,164, - 2822,1,164,1,164,3,164,2827,8,164,1,164,1,164,3,164,2831,8,164,1, - 164,4,164,2834,8,164,11,164,12,164,2835,3,164,2838,8,164,1,164,3, - 164,2841,8,164,1,164,1,164,3,164,2845,8,164,1,164,3,164,2848,8,164, - 1,164,3,164,2851,8,164,1,164,1,164,1,165,1,165,3,165,2857,8,165, - 1,165,1,165,3,165,2861,8,165,1,165,1,165,3,165,2865,8,165,1,165, - 1,165,1,166,1,166,1,167,1,167,3,167,2873,8,167,1,168,1,168,1,168, - 3,168,2878,8,168,1,169,1,169,3,169,2882,8,169,1,169,1,169,1,170, - 1,170,1,171,1,171,1,172,1,172,1,173,1,173,1,174,1,174,1,174,1,174, - 1,174,3,174,2899,8,174,1,175,1,175,1,176,1,176,1,177,1,177,1,178, - 1,178,1,178,0,2,114,168,179,0,2,4,6,8,10,12,14,16,18,20,22,24,26, - 28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70, - 72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110, - 112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142, - 144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174, - 176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206, - 208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238, - 240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270, - 272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302, - 304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334, - 336,338,340,342,344,346,348,350,352,354,356,0,14,3,0,105,105,130, - 130,136,136,2,0,52,53,74,75,2,0,6,6,12,16,1,0,18,19,2,0,20,20,166, - 166,2,0,21,22,161,161,1,0,164,165,2,0,86,86,141,141,2,0,67,67,82, - 82,1,0,177,178,31,0,47,47,49,49,51,51,54,57,60,60,62,63,65,67,69, - 70,73,73,76,76,78,78,83,85,87,88,90,90,94,95,97,97,99,99,101,104, - 106,109,111,112,123,128,130,131,133,133,135,135,138,138,140,140, - 142,142,145,147,151,151,155,160,162,162,2,0,13,13,26,29,2,0,15,15, - 30,33,2,0,34,44,166,166,3294,0,358,1,0,0,0,2,378,1,0,0,0,4,412,1, - 0,0,0,6,414,1,0,0,0,8,440,1,0,0,0,10,488,1,0,0,0,12,490,1,0,0,0, - 14,520,1,0,0,0,16,550,1,0,0,0,18,570,1,0,0,0,20,576,1,0,0,0,22,627, - 1,0,0,0,24,629,1,0,0,0,26,643,1,0,0,0,28,647,1,0,0,0,30,666,1,0, - 0,0,32,668,1,0,0,0,34,680,1,0,0,0,36,723,1,0,0,0,38,737,1,0,0,0, - 40,781,1,0,0,0,42,783,1,0,0,0,44,789,1,0,0,0,46,830,1,0,0,0,48,901, - 1,0,0,0,50,915,1,0,0,0,52,923,1,0,0,0,54,940,1,0,0,0,56,957,1,0, - 0,0,58,959,1,0,0,0,60,966,1,0,0,0,62,979,1,0,0,0,64,990,1,0,0,0, - 66,1010,1,0,0,0,68,1021,1,0,0,0,70,1023,1,0,0,0,72,1036,1,0,0,0, - 74,1040,1,0,0,0,76,1044,1,0,0,0,78,1055,1,0,0,0,80,1069,1,0,0,0, - 82,1071,1,0,0,0,84,1085,1,0,0,0,86,1089,1,0,0,0,88,1098,1,0,0,0, - 90,1104,1,0,0,0,92,1112,1,0,0,0,94,1121,1,0,0,0,96,1130,1,0,0,0, - 98,1144,1,0,0,0,100,1148,1,0,0,0,102,1162,1,0,0,0,104,1173,1,0,0, - 0,106,1189,1,0,0,0,108,1203,1,0,0,0,110,1217,1,0,0,0,112,1239,1, - 0,0,0,114,1267,1,0,0,0,116,1276,1,0,0,0,118,1283,1,0,0,0,120,1291, - 1,0,0,0,122,1293,1,0,0,0,124,1298,1,0,0,0,126,1313,1,0,0,0,128,1319, - 1,0,0,0,130,1321,1,0,0,0,132,1333,1,0,0,0,134,1344,1,0,0,0,136,1348, - 1,0,0,0,138,1352,1,0,0,0,140,1375,1,0,0,0,142,1389,1,0,0,0,144,1393, - 1,0,0,0,146,1430,1,0,0,0,148,1436,1,0,0,0,150,1448,1,0,0,0,152,1466, - 1,0,0,0,154,1472,1,0,0,0,156,1474,1,0,0,0,158,1524,1,0,0,0,160,1528, - 1,0,0,0,162,1542,1,0,0,0,164,1561,1,0,0,0,166,1576,1,0,0,0,168,1592, - 1,0,0,0,170,1613,1,0,0,0,172,1623,1,0,0,0,174,1629,1,0,0,0,176,1651, - 1,0,0,0,178,1685,1,0,0,0,180,1687,1,0,0,0,182,1699,1,0,0,0,184,1719, - 1,0,0,0,186,1727,1,0,0,0,188,1734,1,0,0,0,190,1778,1,0,0,0,192,1787, - 1,0,0,0,194,1789,1,0,0,0,196,1804,1,0,0,0,198,1808,1,0,0,0,200,1812, - 1,0,0,0,202,1819,1,0,0,0,204,1823,1,0,0,0,206,1848,1,0,0,0,208,1850, - 1,0,0,0,210,1866,1,0,0,0,212,1868,1,0,0,0,214,1892,1,0,0,0,216,1942, - 1,0,0,0,218,1944,1,0,0,0,220,1974,1,0,0,0,222,2015,1,0,0,0,224,2036, - 1,0,0,0,226,2060,1,0,0,0,228,2103,1,0,0,0,230,2119,1,0,0,0,232,2121, - 1,0,0,0,234,2170,1,0,0,0,236,2182,1,0,0,0,238,2184,1,0,0,0,240,2186, - 1,0,0,0,242,2188,1,0,0,0,244,2190,1,0,0,0,246,2192,1,0,0,0,248,2202, - 1,0,0,0,250,2212,1,0,0,0,252,2228,1,0,0,0,254,2281,1,0,0,0,256,2283, - 1,0,0,0,258,2285,1,0,0,0,260,2299,1,0,0,0,262,2313,1,0,0,0,264,2328, - 1,0,0,0,266,2330,1,0,0,0,268,2345,1,0,0,0,270,2347,1,0,0,0,272,2362, - 1,0,0,0,274,2364,1,0,0,0,276,2378,1,0,0,0,278,2407,1,0,0,0,280,2420, - 1,0,0,0,282,2428,1,0,0,0,284,2442,1,0,0,0,286,2450,1,0,0,0,288,2460, - 1,0,0,0,290,2479,1,0,0,0,292,2537,1,0,0,0,294,2539,1,0,0,0,296,2543, - 1,0,0,0,298,2555,1,0,0,0,300,2557,1,0,0,0,302,2559,1,0,0,0,304,2580, - 1,0,0,0,306,2587,1,0,0,0,308,2612,1,0,0,0,310,2623,1,0,0,0,312,2710, - 1,0,0,0,314,2712,1,0,0,0,316,2727,1,0,0,0,318,2729,1,0,0,0,320,2766, - 1,0,0,0,322,2768,1,0,0,0,324,2777,1,0,0,0,326,2807,1,0,0,0,328,2837, - 1,0,0,0,330,2854,1,0,0,0,332,2868,1,0,0,0,334,2872,1,0,0,0,336,2874, - 1,0,0,0,338,2879,1,0,0,0,340,2885,1,0,0,0,342,2887,1,0,0,0,344,2889, - 1,0,0,0,346,2891,1,0,0,0,348,2898,1,0,0,0,350,2900,1,0,0,0,352,2902, - 1,0,0,0,354,2904,1,0,0,0,356,2906,1,0,0,0,358,369,3,2,1,0,359,361, - 5,183,0,0,360,359,1,0,0,0,360,361,1,0,0,0,361,362,1,0,0,0,362,364, - 5,1,0,0,363,365,5,183,0,0,364,363,1,0,0,0,364,365,1,0,0,0,365,366, - 1,0,0,0,366,368,3,2,1,0,367,360,1,0,0,0,368,371,1,0,0,0,369,367, - 1,0,0,0,369,370,1,0,0,0,370,373,1,0,0,0,371,369,1,0,0,0,372,374, - 5,183,0,0,373,372,1,0,0,0,373,374,1,0,0,0,374,375,1,0,0,0,375,376, - 5,0,0,1,376,1,1,0,0,0,377,379,3,120,60,0,378,377,1,0,0,0,378,379, - 1,0,0,0,379,381,1,0,0,0,380,382,5,183,0,0,381,380,1,0,0,0,381,382, - 1,0,0,0,382,383,1,0,0,0,383,388,3,4,2,0,384,386,5,183,0,0,385,384, - 1,0,0,0,385,386,1,0,0,0,386,387,1,0,0,0,387,389,5,1,0,0,388,385, - 1,0,0,0,388,389,1,0,0,0,389,3,1,0,0,0,390,413,3,138,69,0,391,413, - 3,60,30,0,392,413,3,62,31,0,393,413,3,44,22,0,394,413,3,46,23,0, - 395,413,3,52,26,0,396,413,3,54,27,0,397,413,3,76,38,0,398,413,3, - 78,39,0,399,413,3,6,3,0,400,413,3,12,6,0,401,413,3,14,7,0,402,413, - 3,30,15,0,403,413,3,34,17,0,404,413,3,32,16,0,405,413,3,126,63,0, - 406,413,3,128,64,0,407,413,3,16,8,0,408,413,3,18,9,0,409,413,3,20, - 10,0,410,413,3,26,13,0,411,413,3,28,14,0,412,390,1,0,0,0,412,391, - 1,0,0,0,412,392,1,0,0,0,412,393,1,0,0,0,412,394,1,0,0,0,412,395, - 1,0,0,0,412,396,1,0,0,0,412,397,1,0,0,0,412,398,1,0,0,0,412,399, - 1,0,0,0,412,400,1,0,0,0,412,401,1,0,0,0,412,402,1,0,0,0,412,403, - 1,0,0,0,412,404,1,0,0,0,412,405,1,0,0,0,412,406,1,0,0,0,412,407, - 1,0,0,0,412,408,1,0,0,0,412,409,1,0,0,0,412,410,1,0,0,0,412,411, - 1,0,0,0,413,5,1,0,0,0,414,415,5,66,0,0,415,416,5,183,0,0,416,418, - 3,346,173,0,417,419,3,8,4,0,418,417,1,0,0,0,418,419,1,0,0,0,419, - 420,1,0,0,0,420,421,5,183,0,0,421,422,5,87,0,0,422,423,5,183,0,0, - 423,437,3,10,5,0,424,426,5,183,0,0,425,424,1,0,0,0,425,426,1,0,0, - 0,426,427,1,0,0,0,427,429,5,2,0,0,428,430,5,183,0,0,429,428,1,0, - 0,0,429,430,1,0,0,0,430,431,1,0,0,0,431,433,3,24,12,0,432,434,5, - 183,0,0,433,432,1,0,0,0,433,434,1,0,0,0,434,435,1,0,0,0,435,436, - 5,3,0,0,436,438,1,0,0,0,437,425,1,0,0,0,437,438,1,0,0,0,438,7,1, - 0,0,0,439,441,5,183,0,0,440,439,1,0,0,0,440,441,1,0,0,0,441,442, - 1,0,0,0,442,444,5,2,0,0,443,445,5,183,0,0,444,443,1,0,0,0,444,445, - 1,0,0,0,445,463,1,0,0,0,446,457,3,346,173,0,447,449,5,183,0,0,448, - 447,1,0,0,0,448,449,1,0,0,0,449,450,1,0,0,0,450,452,5,4,0,0,451, - 453,5,183,0,0,452,451,1,0,0,0,452,453,1,0,0,0,453,454,1,0,0,0,454, - 456,3,346,173,0,455,448,1,0,0,0,456,459,1,0,0,0,457,455,1,0,0,0, - 457,458,1,0,0,0,458,461,1,0,0,0,459,457,1,0,0,0,460,462,5,183,0, - 0,461,460,1,0,0,0,461,462,1,0,0,0,462,464,1,0,0,0,463,446,1,0,0, - 0,463,464,1,0,0,0,464,465,1,0,0,0,465,466,5,3,0,0,466,9,1,0,0,0, - 467,489,3,40,20,0,468,470,5,2,0,0,469,471,5,183,0,0,470,469,1,0, - 0,0,470,471,1,0,0,0,471,472,1,0,0,0,472,474,3,138,69,0,473,475,5, - 183,0,0,474,473,1,0,0,0,474,475,1,0,0,0,475,476,1,0,0,0,476,477, - 5,3,0,0,477,489,1,0,0,0,478,489,3,336,168,0,479,489,3,332,166,0, - 480,481,3,332,166,0,481,483,5,5,0,0,482,484,5,183,0,0,483,482,1, - 0,0,0,483,484,1,0,0,0,484,485,1,0,0,0,485,486,3,346,173,0,486,489, - 1,0,0,0,487,489,3,312,156,0,488,467,1,0,0,0,488,468,1,0,0,0,488, - 478,1,0,0,0,488,479,1,0,0,0,488,480,1,0,0,0,488,487,1,0,0,0,489, - 11,1,0,0,0,490,491,5,66,0,0,491,492,5,183,0,0,492,493,3,346,173, - 0,493,494,5,183,0,0,494,495,5,87,0,0,495,496,5,183,0,0,496,498,5, - 2,0,0,497,499,5,183,0,0,498,497,1,0,0,0,498,499,1,0,0,0,499,500, - 1,0,0,0,500,511,5,168,0,0,501,503,5,183,0,0,502,501,1,0,0,0,502, - 503,1,0,0,0,503,504,1,0,0,0,504,506,5,4,0,0,505,507,5,183,0,0,506, - 505,1,0,0,0,506,507,1,0,0,0,507,508,1,0,0,0,508,510,5,168,0,0,509, - 502,1,0,0,0,510,513,1,0,0,0,511,509,1,0,0,0,511,512,1,0,0,0,512, - 514,1,0,0,0,513,511,1,0,0,0,514,515,5,3,0,0,515,516,5,183,0,0,516, - 517,5,56,0,0,517,518,5,183,0,0,518,519,5,61,0,0,519,13,1,0,0,0,520, - 521,5,66,0,0,521,522,5,183,0,0,522,524,5,2,0,0,523,525,5,183,0,0, - 524,523,1,0,0,0,524,525,1,0,0,0,525,526,1,0,0,0,526,528,3,138,69, - 0,527,529,5,183,0,0,528,527,1,0,0,0,528,529,1,0,0,0,529,530,1,0, - 0,0,530,531,5,3,0,0,531,532,5,183,0,0,532,533,5,138,0,0,533,534, - 5,183,0,0,534,548,5,168,0,0,535,537,5,183,0,0,536,535,1,0,0,0,536, - 537,1,0,0,0,537,538,1,0,0,0,538,540,5,2,0,0,539,541,5,183,0,0,540, - 539,1,0,0,0,540,541,1,0,0,0,541,542,1,0,0,0,542,544,3,24,12,0,543, - 545,5,183,0,0,544,543,1,0,0,0,544,545,1,0,0,0,545,546,1,0,0,0,546, - 547,5,3,0,0,547,549,1,0,0,0,548,536,1,0,0,0,548,549,1,0,0,0,549, - 15,1,0,0,0,550,551,5,84,0,0,551,552,5,183,0,0,552,553,5,70,0,0,553, - 554,5,183,0,0,554,568,5,168,0,0,555,557,5,183,0,0,556,555,1,0,0, - 0,556,557,1,0,0,0,557,558,1,0,0,0,558,560,5,2,0,0,559,561,5,183, - 0,0,560,559,1,0,0,0,560,561,1,0,0,0,561,562,1,0,0,0,562,564,3,24, - 12,0,563,565,5,183,0,0,564,563,1,0,0,0,564,565,1,0,0,0,565,566,1, - 0,0,0,566,567,5,3,0,0,567,569,1,0,0,0,568,556,1,0,0,0,568,569,1, - 0,0,0,569,17,1,0,0,0,570,571,5,94,0,0,571,572,5,183,0,0,572,573, - 5,70,0,0,573,574,5,183,0,0,574,575,5,168,0,0,575,19,1,0,0,0,576, - 577,5,54,0,0,577,578,5,183,0,0,578,583,5,168,0,0,579,580,5,183,0, - 0,580,581,5,51,0,0,581,582,5,183,0,0,582,584,3,346,173,0,583,579, - 1,0,0,0,583,584,1,0,0,0,584,585,1,0,0,0,585,586,5,183,0,0,586,588, - 5,2,0,0,587,589,5,183,0,0,588,587,1,0,0,0,588,589,1,0,0,0,589,590, - 1,0,0,0,590,591,5,71,0,0,591,592,5,183,0,0,592,601,3,348,174,0,593, - 595,5,183,0,0,594,593,1,0,0,0,594,595,1,0,0,0,595,596,1,0,0,0,596, - 598,5,4,0,0,597,599,5,183,0,0,598,597,1,0,0,0,598,599,1,0,0,0,599, - 600,1,0,0,0,600,602,3,24,12,0,601,594,1,0,0,0,601,602,1,0,0,0,602, - 604,1,0,0,0,603,605,5,183,0,0,604,603,1,0,0,0,604,605,1,0,0,0,605, - 606,1,0,0,0,606,607,5,3,0,0,607,21,1,0,0,0,608,622,3,348,174,0,609, - 611,5,183,0,0,610,609,1,0,0,0,610,611,1,0,0,0,611,612,1,0,0,0,612, - 614,5,6,0,0,613,615,5,183,0,0,614,613,1,0,0,0,614,615,1,0,0,0,615, - 623,1,0,0,0,616,618,5,183,0,0,617,616,1,0,0,0,618,621,1,0,0,0,619, - 617,1,0,0,0,619,620,1,0,0,0,620,623,1,0,0,0,621,619,1,0,0,0,622, - 610,1,0,0,0,622,619,1,0,0,0,623,624,1,0,0,0,624,625,3,298,149,0, - 625,628,1,0,0,0,626,628,3,348,174,0,627,608,1,0,0,0,627,626,1,0, - 0,0,628,23,1,0,0,0,629,640,3,22,11,0,630,632,5,183,0,0,631,630,1, - 0,0,0,631,632,1,0,0,0,632,633,1,0,0,0,633,635,5,4,0,0,634,636,5, - 183,0,0,635,634,1,0,0,0,635,636,1,0,0,0,636,637,1,0,0,0,637,639, - 3,22,11,0,638,631,1,0,0,0,639,642,1,0,0,0,640,638,1,0,0,0,640,641, - 1,0,0,0,641,25,1,0,0,0,642,640,1,0,0,0,643,644,5,76,0,0,644,645, - 5,183,0,0,645,646,3,346,173,0,646,27,1,0,0,0,647,648,5,147,0,0,648, - 649,5,183,0,0,649,650,3,346,173,0,650,29,1,0,0,0,651,652,5,57,0, - 0,652,653,5,183,0,0,653,655,3,348,174,0,654,656,5,183,0,0,655,654, - 1,0,0,0,655,656,1,0,0,0,656,657,1,0,0,0,657,659,5,6,0,0,658,660, - 5,183,0,0,659,658,1,0,0,0,659,660,1,0,0,0,660,661,1,0,0,0,661,662, - 3,244,122,0,662,667,1,0,0,0,663,664,5,57,0,0,664,665,5,183,0,0,665, - 667,3,312,156,0,666,651,1,0,0,0,666,663,1,0,0,0,667,31,1,0,0,0,668, - 669,5,62,0,0,669,670,5,183,0,0,670,671,5,116,0,0,671,672,5,183,0, - 0,672,673,5,136,0,0,673,674,5,183,0,0,674,675,3,346,173,0,675,676, - 5,183,0,0,676,677,5,99,0,0,677,678,5,183,0,0,678,679,5,168,0,0,679, - 33,1,0,0,0,680,681,5,68,0,0,681,682,5,183,0,0,682,683,5,105,0,0, - 683,684,5,183,0,0,684,686,3,314,157,0,685,687,5,183,0,0,686,685, - 1,0,0,0,686,687,1,0,0,0,687,688,1,0,0,0,688,690,5,2,0,0,689,691, - 5,183,0,0,690,689,1,0,0,0,690,691,1,0,0,0,691,693,1,0,0,0,692,694, - 3,36,18,0,693,692,1,0,0,0,693,694,1,0,0,0,694,696,1,0,0,0,695,697, - 5,183,0,0,696,695,1,0,0,0,696,697,1,0,0,0,697,699,1,0,0,0,698,700, - 3,38,19,0,699,698,1,0,0,0,699,700,1,0,0,0,700,711,1,0,0,0,701,703, - 5,183,0,0,702,701,1,0,0,0,702,703,1,0,0,0,703,704,1,0,0,0,704,706, - 5,4,0,0,705,707,5,183,0,0,706,705,1,0,0,0,706,707,1,0,0,0,707,708, - 1,0,0,0,708,710,3,38,19,0,709,702,1,0,0,0,710,713,1,0,0,0,711,709, - 1,0,0,0,711,712,1,0,0,0,712,715,1,0,0,0,713,711,1,0,0,0,714,716, - 5,183,0,0,715,714,1,0,0,0,715,716,1,0,0,0,716,717,1,0,0,0,717,718, - 5,3,0,0,718,719,5,183,0,0,719,720,5,51,0,0,720,721,5,183,0,0,721, - 722,3,244,122,0,722,35,1,0,0,0,723,734,3,348,174,0,724,726,5,183, - 0,0,725,724,1,0,0,0,725,726,1,0,0,0,726,727,1,0,0,0,727,729,5,4, - 0,0,728,730,5,183,0,0,729,728,1,0,0,0,729,730,1,0,0,0,730,731,1, - 0,0,0,731,733,3,348,174,0,732,725,1,0,0,0,733,736,1,0,0,0,734,732, - 1,0,0,0,734,735,1,0,0,0,735,37,1,0,0,0,736,734,1,0,0,0,737,739,3, - 348,174,0,738,740,5,183,0,0,739,738,1,0,0,0,739,740,1,0,0,0,740, - 741,1,0,0,0,741,742,5,164,0,0,742,744,5,6,0,0,743,745,5,183,0,0, - 744,743,1,0,0,0,744,745,1,0,0,0,745,746,1,0,0,0,746,747,3,298,149, - 0,747,39,1,0,0,0,748,750,5,7,0,0,749,751,5,183,0,0,750,749,1,0,0, - 0,750,751,1,0,0,0,751,752,1,0,0,0,752,763,5,168,0,0,753,755,5,183, - 0,0,754,753,1,0,0,0,754,755,1,0,0,0,755,756,1,0,0,0,756,758,5,4, - 0,0,757,759,5,183,0,0,758,757,1,0,0,0,758,759,1,0,0,0,759,760,1, - 0,0,0,760,762,5,168,0,0,761,754,1,0,0,0,762,765,1,0,0,0,763,761, - 1,0,0,0,763,764,1,0,0,0,764,766,1,0,0,0,765,763,1,0,0,0,766,782, - 5,8,0,0,767,782,5,168,0,0,768,770,5,89,0,0,769,771,5,183,0,0,770, - 769,1,0,0,0,770,771,1,0,0,0,771,772,1,0,0,0,772,774,5,2,0,0,773, - 775,5,183,0,0,774,773,1,0,0,0,774,775,1,0,0,0,775,776,1,0,0,0,776, - 778,5,168,0,0,777,779,5,183,0,0,778,777,1,0,0,0,778,779,1,0,0,0, - 779,780,1,0,0,0,780,782,5,3,0,0,781,748,1,0,0,0,781,767,1,0,0,0, - 781,768,1,0,0,0,782,41,1,0,0,0,783,784,5,95,0,0,784,785,5,183,0, - 0,785,786,5,113,0,0,786,787,5,183,0,0,787,788,5,82,0,0,788,43,1, - 0,0,0,789,790,5,68,0,0,790,791,5,183,0,0,791,792,5,112,0,0,792,793, - 5,183,0,0,793,794,5,136,0,0,794,798,5,183,0,0,795,796,3,42,21,0, - 796,797,5,183,0,0,797,799,1,0,0,0,798,795,1,0,0,0,798,799,1,0,0, - 0,799,800,1,0,0,0,800,828,3,346,173,0,801,803,5,183,0,0,802,801, - 1,0,0,0,802,803,1,0,0,0,803,804,1,0,0,0,804,806,5,2,0,0,805,807, - 5,183,0,0,806,805,1,0,0,0,806,807,1,0,0,0,807,808,1,0,0,0,808,810, - 3,100,50,0,809,811,5,183,0,0,810,809,1,0,0,0,810,811,1,0,0,0,811, - 817,1,0,0,0,812,814,5,4,0,0,813,815,5,183,0,0,814,813,1,0,0,0,814, - 815,1,0,0,0,815,816,1,0,0,0,816,818,3,104,52,0,817,812,1,0,0,0,817, - 818,1,0,0,0,818,820,1,0,0,0,819,821,5,183,0,0,820,819,1,0,0,0,820, - 821,1,0,0,0,821,822,1,0,0,0,822,823,5,3,0,0,823,829,1,0,0,0,824, - 825,5,183,0,0,825,826,5,51,0,0,826,827,5,183,0,0,827,829,3,138,69, - 0,828,802,1,0,0,0,828,824,1,0,0,0,829,45,1,0,0,0,830,831,5,68,0, - 0,831,832,5,183,0,0,832,833,5,125,0,0,833,834,5,183,0,0,834,837, - 5,136,0,0,835,836,5,183,0,0,836,838,5,91,0,0,837,835,1,0,0,0,837, - 838,1,0,0,0,838,841,1,0,0,0,839,840,5,183,0,0,840,842,3,42,21,0, - 841,839,1,0,0,0,841,842,1,0,0,0,842,843,1,0,0,0,843,844,5,183,0, - 0,844,846,3,346,173,0,845,847,5,183,0,0,846,845,1,0,0,0,846,847, - 1,0,0,0,847,848,1,0,0,0,848,850,5,2,0,0,849,851,5,183,0,0,850,849, - 1,0,0,0,850,851,1,0,0,0,851,852,1,0,0,0,852,854,3,48,24,0,853,855, - 5,183,0,0,854,853,1,0,0,0,854,855,1,0,0,0,855,882,1,0,0,0,856,858, - 5,4,0,0,857,859,5,183,0,0,858,857,1,0,0,0,858,859,1,0,0,0,859,860, - 1,0,0,0,860,862,3,100,50,0,861,863,5,183,0,0,862,861,1,0,0,0,862, - 863,1,0,0,0,863,865,1,0,0,0,864,856,1,0,0,0,864,865,1,0,0,0,865, - 874,1,0,0,0,866,868,5,4,0,0,867,869,5,183,0,0,868,867,1,0,0,0,868, - 869,1,0,0,0,869,870,1,0,0,0,870,872,3,348,174,0,871,873,5,183,0, - 0,872,871,1,0,0,0,872,873,1,0,0,0,873,875,1,0,0,0,874,866,1,0,0, - 0,874,875,1,0,0,0,875,876,1,0,0,0,876,883,5,3,0,0,877,878,5,3,0, - 0,878,879,5,183,0,0,879,880,5,51,0,0,880,881,5,183,0,0,881,883,3, - 138,69,0,882,864,1,0,0,0,882,877,1,0,0,0,883,899,1,0,0,0,884,885, - 5,183,0,0,885,887,5,150,0,0,886,888,5,183,0,0,887,886,1,0,0,0,887, - 888,1,0,0,0,888,889,1,0,0,0,889,891,5,2,0,0,890,892,5,183,0,0,891, - 890,1,0,0,0,891,892,1,0,0,0,892,893,1,0,0,0,893,895,3,24,12,0,894, - 896,5,183,0,0,895,894,1,0,0,0,895,896,1,0,0,0,896,897,1,0,0,0,897, - 898,5,3,0,0,898,900,1,0,0,0,899,884,1,0,0,0,899,900,1,0,0,0,900, - 47,1,0,0,0,901,912,3,50,25,0,902,904,5,183,0,0,903,902,1,0,0,0,903, - 904,1,0,0,0,904,905,1,0,0,0,905,907,5,4,0,0,906,908,5,183,0,0,907, - 906,1,0,0,0,907,908,1,0,0,0,908,909,1,0,0,0,909,911,3,50,25,0,910, - 903,1,0,0,0,911,914,1,0,0,0,912,910,1,0,0,0,912,913,1,0,0,0,913, - 49,1,0,0,0,914,912,1,0,0,0,915,916,5,87,0,0,916,917,5,183,0,0,917, - 918,3,346,173,0,918,919,5,183,0,0,919,920,5,138,0,0,920,921,5,183, - 0,0,921,922,3,346,173,0,922,51,1,0,0,0,923,924,5,68,0,0,924,925, - 5,183,0,0,925,926,5,130,0,0,926,930,5,183,0,0,927,928,3,42,21,0, - 928,929,5,183,0,0,929,931,1,0,0,0,930,927,1,0,0,0,930,931,1,0,0, - 0,931,932,1,0,0,0,932,937,3,346,173,0,933,934,5,183,0,0,934,936, - 3,56,28,0,935,933,1,0,0,0,936,939,1,0,0,0,937,935,1,0,0,0,937,938, - 1,0,0,0,938,53,1,0,0,0,939,937,1,0,0,0,940,941,5,68,0,0,941,942, - 5,183,0,0,942,943,5,142,0,0,943,944,5,183,0,0,944,945,3,346,173, - 0,945,946,5,183,0,0,946,947,5,51,0,0,947,948,5,183,0,0,948,950,3, - 114,57,0,949,951,5,183,0,0,950,949,1,0,0,0,950,951,1,0,0,0,951,55, - 1,0,0,0,952,958,3,64,32,0,953,958,3,66,33,0,954,958,3,68,34,0,955, - 958,3,70,35,0,956,958,3,72,36,0,957,952,1,0,0,0,957,953,1,0,0,0, - 957,954,1,0,0,0,957,955,1,0,0,0,957,956,1,0,0,0,958,57,1,0,0,0,959, - 960,5,183,0,0,960,961,5,150,0,0,961,962,5,183,0,0,962,963,5,157, - 0,0,963,964,5,183,0,0,964,965,5,168,0,0,965,59,1,0,0,0,966,967,5, - 68,0,0,967,968,5,183,0,0,968,969,5,156,0,0,969,973,5,183,0,0,970, - 971,3,42,21,0,971,972,5,183,0,0,972,974,1,0,0,0,973,970,1,0,0,0, - 973,974,1,0,0,0,974,975,1,0,0,0,975,977,3,332,166,0,976,978,3,58, - 29,0,977,976,1,0,0,0,977,978,1,0,0,0,978,61,1,0,0,0,979,980,5,68, - 0,0,980,981,5,183,0,0,981,982,5,158,0,0,982,986,5,183,0,0,983,984, - 3,42,21,0,984,985,5,183,0,0,985,987,1,0,0,0,986,983,1,0,0,0,986, - 987,1,0,0,0,987,988,1,0,0,0,988,989,3,332,166,0,989,63,1,0,0,0,990, - 991,5,97,0,0,991,994,5,183,0,0,992,993,5,56,0,0,993,995,5,183,0, - 0,994,992,1,0,0,0,994,995,1,0,0,0,995,997,1,0,0,0,996,998,5,166, - 0,0,997,996,1,0,0,0,997,998,1,0,0,0,998,999,1,0,0,0,999,1000,3,342, - 171,0,1000,65,1,0,0,0,1001,1002,5,111,0,0,1002,1003,5,183,0,0,1003, - 1011,5,109,0,0,1004,1005,5,109,0,0,1005,1007,5,183,0,0,1006,1008, - 5,166,0,0,1007,1006,1,0,0,0,1007,1008,1,0,0,0,1008,1009,1,0,0,0, - 1009,1011,3,342,171,0,1010,1001,1,0,0,0,1010,1004,1,0,0,0,1011,67, - 1,0,0,0,1012,1013,5,111,0,0,1013,1014,5,183,0,0,1014,1022,5,107, - 0,0,1015,1016,5,107,0,0,1016,1018,5,183,0,0,1017,1019,5,166,0,0, - 1018,1017,1,0,0,0,1018,1019,1,0,0,0,1019,1020,1,0,0,0,1020,1022, - 3,342,171,0,1021,1012,1,0,0,0,1021,1015,1,0,0,0,1022,69,1,0,0,0, - 1023,1024,5,133,0,0,1024,1027,5,183,0,0,1025,1026,5,150,0,0,1026, - 1028,5,183,0,0,1027,1025,1,0,0,0,1027,1028,1,0,0,0,1028,1030,1,0, - 0,0,1029,1031,5,166,0,0,1030,1029,1,0,0,0,1030,1031,1,0,0,0,1031, - 1032,1,0,0,0,1032,1033,3,342,171,0,1033,71,1,0,0,0,1034,1035,5,111, - 0,0,1035,1037,5,183,0,0,1036,1034,1,0,0,0,1036,1037,1,0,0,0,1037, - 1038,1,0,0,0,1038,1039,5,69,0,0,1039,73,1,0,0,0,1040,1041,5,95,0, - 0,1041,1042,5,183,0,0,1042,1043,5,82,0,0,1043,75,1,0,0,0,1044,1045, - 5,78,0,0,1045,1046,5,183,0,0,1046,1047,7,0,0,0,1047,1051,5,183,0, - 0,1048,1049,3,74,37,0,1049,1050,5,183,0,0,1050,1052,1,0,0,0,1051, - 1048,1,0,0,0,1051,1052,1,0,0,0,1052,1053,1,0,0,0,1053,1054,3,346, - 173,0,1054,77,1,0,0,0,1055,1056,5,49,0,0,1056,1057,5,183,0,0,1057, - 1058,5,136,0,0,1058,1059,5,183,0,0,1059,1060,3,346,173,0,1060,1061, - 5,183,0,0,1061,1062,3,80,40,0,1062,79,1,0,0,0,1063,1070,3,82,41, - 0,1064,1070,3,86,43,0,1065,1070,3,88,44,0,1066,1070,3,90,45,0,1067, - 1070,3,92,46,0,1068,1070,3,94,47,0,1069,1063,1,0,0,0,1069,1064,1, - 0,0,0,1069,1065,1,0,0,0,1069,1066,1,0,0,0,1069,1067,1,0,0,0,1069, - 1068,1,0,0,0,1070,81,1,0,0,0,1071,1072,5,47,0,0,1072,1076,5,183, - 0,0,1073,1074,3,42,21,0,1074,1075,5,183,0,0,1075,1077,1,0,0,0,1076, - 1073,1,0,0,0,1076,1077,1,0,0,0,1077,1078,1,0,0,0,1078,1079,3,340, - 170,0,1079,1080,5,183,0,0,1080,1083,3,114,57,0,1081,1082,5,183,0, - 0,1082,1084,3,84,42,0,1083,1081,1,0,0,0,1083,1084,1,0,0,0,1084,83, - 1,0,0,0,1085,1086,5,72,0,0,1086,1087,5,183,0,0,1087,1088,3,244,122, - 0,1088,85,1,0,0,0,1089,1090,5,78,0,0,1090,1094,5,183,0,0,1091,1092, - 3,74,37,0,1092,1093,5,183,0,0,1093,1095,1,0,0,0,1094,1091,1,0,0, - 0,1094,1095,1,0,0,0,1095,1096,1,0,0,0,1096,1097,3,340,170,0,1097, - 87,1,0,0,0,1098,1099,5,126,0,0,1099,1100,5,183,0,0,1100,1101,5,138, - 0,0,1101,1102,5,183,0,0,1102,1103,3,346,173,0,1103,89,1,0,0,0,1104, - 1105,5,126,0,0,1105,1106,5,183,0,0,1106,1107,3,340,170,0,1107,1108, - 5,183,0,0,1108,1109,5,138,0,0,1109,1110,5,183,0,0,1110,1111,3,340, - 170,0,1111,91,1,0,0,0,1112,1113,5,47,0,0,1113,1117,5,183,0,0,1114, - 1115,3,42,21,0,1115,1116,5,183,0,0,1116,1118,1,0,0,0,1117,1114,1, - 0,0,0,1117,1118,1,0,0,0,1118,1119,1,0,0,0,1119,1120,3,50,25,0,1120, - 93,1,0,0,0,1121,1122,5,78,0,0,1122,1126,5,183,0,0,1123,1124,3,74, - 37,0,1124,1125,5,183,0,0,1125,1127,1,0,0,0,1126,1123,1,0,0,0,1126, - 1127,1,0,0,0,1127,1128,1,0,0,0,1128,1129,3,50,25,0,1129,95,1,0,0, - 0,1130,1141,3,98,49,0,1131,1133,5,183,0,0,1132,1131,1,0,0,0,1132, - 1133,1,0,0,0,1133,1134,1,0,0,0,1134,1136,5,4,0,0,1135,1137,5,183, - 0,0,1136,1135,1,0,0,0,1136,1137,1,0,0,0,1137,1138,1,0,0,0,1138,1140, - 3,98,49,0,1139,1132,1,0,0,0,1140,1143,1,0,0,0,1141,1139,1,0,0,0, - 1141,1142,1,0,0,0,1142,97,1,0,0,0,1143,1141,1,0,0,0,1144,1145,3, - 340,170,0,1145,1146,5,183,0,0,1146,1147,3,114,57,0,1147,99,1,0,0, - 0,1148,1159,3,102,51,0,1149,1151,5,183,0,0,1150,1149,1,0,0,0,1150, - 1151,1,0,0,0,1151,1152,1,0,0,0,1152,1154,5,4,0,0,1153,1155,5,183, - 0,0,1154,1153,1,0,0,0,1154,1155,1,0,0,0,1155,1156,1,0,0,0,1156,1158, - 3,102,51,0,1157,1150,1,0,0,0,1158,1161,1,0,0,0,1159,1157,1,0,0,0, - 1159,1160,1,0,0,0,1160,101,1,0,0,0,1161,1159,1,0,0,0,1162,1165,3, - 98,49,0,1163,1164,5,183,0,0,1164,1166,3,84,42,0,1165,1163,1,0,0, - 0,1165,1166,1,0,0,0,1166,1171,1,0,0,0,1167,1168,5,183,0,0,1168,1169, - 5,121,0,0,1169,1170,5,183,0,0,1170,1172,5,101,0,0,1171,1167,1,0, - 0,0,1171,1172,1,0,0,0,1172,103,1,0,0,0,1173,1174,5,121,0,0,1174, - 1175,5,183,0,0,1175,1177,5,101,0,0,1176,1178,5,183,0,0,1177,1176, - 1,0,0,0,1177,1178,1,0,0,0,1178,1179,1,0,0,0,1179,1181,5,2,0,0,1180, - 1182,5,183,0,0,1181,1180,1,0,0,0,1181,1182,1,0,0,0,1182,1183,1,0, - 0,0,1183,1185,3,340,170,0,1184,1186,5,183,0,0,1185,1184,1,0,0,0, - 1185,1186,1,0,0,0,1186,1187,1,0,0,0,1187,1188,5,3,0,0,1188,105,1, - 0,0,0,1189,1191,5,143,0,0,1190,1192,5,183,0,0,1191,1190,1,0,0,0, - 1191,1192,1,0,0,0,1192,1193,1,0,0,0,1193,1195,5,2,0,0,1194,1196, - 5,183,0,0,1195,1194,1,0,0,0,1195,1196,1,0,0,0,1196,1197,1,0,0,0, - 1197,1199,3,96,48,0,1198,1200,5,183,0,0,1199,1198,1,0,0,0,1199,1200, - 1,0,0,0,1200,1201,1,0,0,0,1201,1202,5,3,0,0,1202,107,1,0,0,0,1203, - 1205,5,135,0,0,1204,1206,5,183,0,0,1205,1204,1,0,0,0,1205,1206,1, - 0,0,0,1206,1207,1,0,0,0,1207,1209,5,2,0,0,1208,1210,5,183,0,0,1209, - 1208,1,0,0,0,1209,1210,1,0,0,0,1210,1211,1,0,0,0,1211,1213,3,96, - 48,0,1212,1214,5,183,0,0,1213,1212,1,0,0,0,1213,1214,1,0,0,0,1214, - 1215,1,0,0,0,1215,1216,5,3,0,0,1216,109,1,0,0,0,1217,1219,5,159, - 0,0,1218,1220,5,183,0,0,1219,1218,1,0,0,0,1219,1220,1,0,0,0,1220, - 1221,1,0,0,0,1221,1223,5,2,0,0,1222,1224,5,183,0,0,1223,1222,1,0, - 0,0,1223,1224,1,0,0,0,1224,1225,1,0,0,0,1225,1227,3,114,57,0,1226, - 1228,5,183,0,0,1227,1226,1,0,0,0,1227,1228,1,0,0,0,1228,1229,1,0, - 0,0,1229,1231,5,4,0,0,1230,1232,5,183,0,0,1231,1230,1,0,0,0,1231, - 1232,1,0,0,0,1232,1233,1,0,0,0,1233,1235,3,114,57,0,1234,1236,5, - 183,0,0,1235,1234,1,0,0,0,1235,1236,1,0,0,0,1236,1237,1,0,0,0,1237, - 1238,5,3,0,0,1238,111,1,0,0,0,1239,1241,5,160,0,0,1240,1242,5,183, - 0,0,1241,1240,1,0,0,0,1241,1242,1,0,0,0,1242,1243,1,0,0,0,1243,1245, - 5,2,0,0,1244,1246,5,183,0,0,1245,1244,1,0,0,0,1245,1246,1,0,0,0, - 1246,1247,1,0,0,0,1247,1249,3,342,171,0,1248,1250,5,183,0,0,1249, - 1248,1,0,0,0,1249,1250,1,0,0,0,1250,1251,1,0,0,0,1251,1253,5,4,0, - 0,1252,1254,5,183,0,0,1253,1252,1,0,0,0,1253,1254,1,0,0,0,1254,1255, - 1,0,0,0,1255,1257,3,342,171,0,1256,1258,5,183,0,0,1257,1256,1,0, - 0,0,1257,1258,1,0,0,0,1258,1259,1,0,0,0,1259,1260,5,3,0,0,1260,113, - 1,0,0,0,1261,1262,6,57,-1,0,1262,1268,3,348,174,0,1263,1268,3,106, - 53,0,1264,1268,3,108,54,0,1265,1268,3,110,55,0,1266,1268,3,112,56, - 0,1267,1261,1,0,0,0,1267,1263,1,0,0,0,1267,1264,1,0,0,0,1267,1265, - 1,0,0,0,1267,1266,1,0,0,0,1268,1273,1,0,0,0,1269,1270,10,5,0,0,1270, - 1272,3,116,58,0,1271,1269,1,0,0,0,1272,1275,1,0,0,0,1273,1271,1, - 0,0,0,1273,1274,1,0,0,0,1274,115,1,0,0,0,1275,1273,1,0,0,0,1276, - 1280,3,118,59,0,1277,1279,3,118,59,0,1278,1277,1,0,0,0,1279,1282, - 1,0,0,0,1280,1278,1,0,0,0,1280,1281,1,0,0,0,1281,117,1,0,0,0,1282, - 1280,1,0,0,0,1283,1285,5,7,0,0,1284,1286,3,342,171,0,1285,1284,1, - 0,0,0,1285,1286,1,0,0,0,1286,1287,1,0,0,0,1287,1288,5,8,0,0,1288, - 119,1,0,0,0,1289,1292,3,122,61,0,1290,1292,3,124,62,0,1291,1289, - 1,0,0,0,1291,1290,1,0,0,0,1292,121,1,0,0,0,1293,1296,5,83,0,0,1294, - 1295,5,183,0,0,1295,1297,5,104,0,0,1296,1294,1,0,0,0,1296,1297,1, - 0,0,0,1297,123,1,0,0,0,1298,1299,5,122,0,0,1299,125,1,0,0,0,1300, - 1301,5,55,0,0,1301,1302,5,183,0,0,1302,1314,5,140,0,0,1303,1304, - 5,55,0,0,1304,1305,5,183,0,0,1305,1306,5,140,0,0,1306,1307,5,183, - 0,0,1307,1308,5,124,0,0,1308,1309,5,183,0,0,1309,1314,5,117,0,0, - 1310,1314,5,63,0,0,1311,1314,5,128,0,0,1312,1314,5,60,0,0,1313,1300, - 1,0,0,0,1313,1303,1,0,0,0,1313,1310,1,0,0,0,1313,1311,1,0,0,0,1313, - 1312,1,0,0,0,1314,127,1,0,0,0,1315,1320,3,130,65,0,1316,1320,3,132, - 66,0,1317,1320,3,134,67,0,1318,1320,3,136,68,0,1319,1315,1,0,0,0, - 1319,1316,1,0,0,0,1319,1317,1,0,0,0,1319,1318,1,0,0,0,1320,129,1, - 0,0,0,1321,1322,5,103,0,0,1322,1325,5,183,0,0,1323,1324,5,85,0,0, - 1324,1326,5,183,0,0,1325,1323,1,0,0,0,1325,1326,1,0,0,0,1326,1329, - 1,0,0,0,1327,1330,5,168,0,0,1328,1330,3,332,166,0,1329,1327,1,0, - 0,0,1329,1328,1,0,0,0,1330,131,1,0,0,0,1331,1332,5,88,0,0,1332,1334, - 5,183,0,0,1333,1331,1,0,0,0,1333,1334,1,0,0,0,1334,1335,1,0,0,0, - 1335,1336,5,98,0,0,1336,1337,5,183,0,0,1337,1342,3,332,166,0,1338, - 1339,5,183,0,0,1339,1340,5,87,0,0,1340,1341,5,183,0,0,1341,1343, - 5,168,0,0,1342,1338,1,0,0,0,1342,1343,1,0,0,0,1343,133,1,0,0,0,1344, - 1345,5,145,0,0,1345,1346,5,183,0,0,1346,1347,3,332,166,0,1347,135, - 1,0,0,0,1348,1349,5,146,0,0,1349,1350,5,183,0,0,1350,1351,3,332, - 166,0,1351,137,1,0,0,0,1352,1353,3,140,70,0,1353,139,1,0,0,0,1354, - 1361,3,144,72,0,1355,1357,5,183,0,0,1356,1355,1,0,0,0,1356,1357, - 1,0,0,0,1357,1358,1,0,0,0,1358,1360,3,142,71,0,1359,1356,1,0,0,0, - 1360,1363,1,0,0,0,1361,1359,1,0,0,0,1361,1362,1,0,0,0,1362,1376, - 1,0,0,0,1363,1361,1,0,0,0,1364,1366,3,186,93,0,1365,1367,5,183,0, - 0,1366,1365,1,0,0,0,1366,1367,1,0,0,0,1367,1369,1,0,0,0,1368,1364, - 1,0,0,0,1369,1370,1,0,0,0,1370,1368,1,0,0,0,1370,1371,1,0,0,0,1371, - 1372,1,0,0,0,1372,1373,3,144,72,0,1373,1374,6,70,-1,0,1374,1376, - 1,0,0,0,1375,1354,1,0,0,0,1375,1368,1,0,0,0,1376,141,1,0,0,0,1377, - 1378,5,143,0,0,1378,1379,5,183,0,0,1379,1381,5,48,0,0,1380,1382, - 5,183,0,0,1381,1380,1,0,0,0,1381,1382,1,0,0,0,1382,1383,1,0,0,0, - 1383,1390,3,144,72,0,1384,1386,5,143,0,0,1385,1387,5,183,0,0,1386, - 1385,1,0,0,0,1386,1387,1,0,0,0,1387,1388,1,0,0,0,1388,1390,3,144, - 72,0,1389,1377,1,0,0,0,1389,1384,1,0,0,0,1390,143,1,0,0,0,1391,1394, - 3,146,73,0,1392,1394,3,148,74,0,1393,1391,1,0,0,0,1393,1392,1,0, - 0,0,1394,145,1,0,0,0,1395,1397,3,154,77,0,1396,1398,5,183,0,0,1397, - 1396,1,0,0,0,1397,1398,1,0,0,0,1398,1400,1,0,0,0,1399,1395,1,0,0, - 0,1400,1403,1,0,0,0,1401,1399,1,0,0,0,1401,1402,1,0,0,0,1402,1404, - 1,0,0,0,1403,1401,1,0,0,0,1404,1431,3,186,93,0,1405,1407,3,154,77, - 0,1406,1408,5,183,0,0,1407,1406,1,0,0,0,1407,1408,1,0,0,0,1408,1410, - 1,0,0,0,1409,1405,1,0,0,0,1410,1413,1,0,0,0,1411,1409,1,0,0,0,1411, - 1412,1,0,0,0,1412,1414,1,0,0,0,1413,1411,1,0,0,0,1414,1421,3,152, - 76,0,1415,1417,5,183,0,0,1416,1415,1,0,0,0,1416,1417,1,0,0,0,1417, - 1418,1,0,0,0,1418,1420,3,152,76,0,1419,1416,1,0,0,0,1420,1423,1, - 0,0,0,1421,1419,1,0,0,0,1421,1422,1,0,0,0,1422,1428,1,0,0,0,1423, - 1421,1,0,0,0,1424,1426,5,183,0,0,1425,1424,1,0,0,0,1425,1426,1,0, - 0,0,1426,1427,1,0,0,0,1427,1429,3,186,93,0,1428,1425,1,0,0,0,1428, - 1429,1,0,0,0,1429,1431,1,0,0,0,1430,1401,1,0,0,0,1430,1411,1,0,0, - 0,1431,147,1,0,0,0,1432,1434,3,150,75,0,1433,1435,5,183,0,0,1434, - 1433,1,0,0,0,1434,1435,1,0,0,0,1435,1437,1,0,0,0,1436,1432,1,0,0, - 0,1437,1438,1,0,0,0,1438,1436,1,0,0,0,1438,1439,1,0,0,0,1439,1440, - 1,0,0,0,1440,1441,3,146,73,0,1441,149,1,0,0,0,1442,1444,3,154,77, - 0,1443,1445,5,183,0,0,1444,1443,1,0,0,0,1444,1445,1,0,0,0,1445,1447, - 1,0,0,0,1446,1442,1,0,0,0,1447,1450,1,0,0,0,1448,1446,1,0,0,0,1448, - 1449,1,0,0,0,1449,1457,1,0,0,0,1450,1448,1,0,0,0,1451,1453,3,152, - 76,0,1452,1454,5,183,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,1456,1459,1,0,0,0,1457,1455,1,0,0, - 0,1457,1458,1,0,0,0,1458,1460,1,0,0,0,1459,1457,1,0,0,0,1460,1461, - 3,184,92,0,1461,151,1,0,0,0,1462,1467,3,172,86,0,1463,1467,3,174, - 87,0,1464,1467,3,178,89,0,1465,1467,3,182,91,0,1466,1462,1,0,0,0, - 1466,1463,1,0,0,0,1466,1464,1,0,0,0,1466,1465,1,0,0,0,1467,153,1, - 0,0,0,1468,1473,3,164,82,0,1469,1473,3,170,85,0,1470,1473,3,162, - 81,0,1471,1473,3,156,78,0,1472,1468,1,0,0,0,1472,1469,1,0,0,0,1472, - 1470,1,0,0,0,1472,1471,1,0,0,0,1473,155,1,0,0,0,1474,1492,5,103, - 0,0,1475,1476,5,183,0,0,1476,1477,5,150,0,0,1477,1478,5,183,0,0, - 1478,1480,5,92,0,0,1479,1481,5,183,0,0,1480,1479,1,0,0,0,1480,1481, - 1,0,0,0,1481,1482,1,0,0,0,1482,1484,5,2,0,0,1483,1485,5,183,0,0, - 1484,1483,1,0,0,0,1484,1485,1,0,0,0,1485,1486,1,0,0,0,1486,1488, - 3,96,48,0,1487,1489,5,183,0,0,1488,1487,1,0,0,0,1488,1489,1,0,0, - 0,1489,1490,1,0,0,0,1490,1491,5,3,0,0,1491,1493,1,0,0,0,1492,1475, - 1,0,0,0,1492,1493,1,0,0,0,1493,1494,1,0,0,0,1494,1495,5,183,0,0, - 1495,1496,5,87,0,0,1496,1497,5,183,0,0,1497,1511,3,10,5,0,1498,1500, - 5,183,0,0,1499,1498,1,0,0,0,1499,1500,1,0,0,0,1500,1501,1,0,0,0, - 1501,1503,5,2,0,0,1502,1504,5,183,0,0,1503,1502,1,0,0,0,1503,1504, - 1,0,0,0,1504,1505,1,0,0,0,1505,1507,3,24,12,0,1506,1508,5,183,0, - 0,1507,1506,1,0,0,0,1507,1508,1,0,0,0,1508,1509,1,0,0,0,1509,1510, - 5,3,0,0,1510,1512,1,0,0,0,1511,1499,1,0,0,0,1511,1512,1,0,0,0,1512, - 1517,1,0,0,0,1513,1515,5,183,0,0,1514,1513,1,0,0,0,1514,1515,1,0, - 0,0,1515,1516,1,0,0,0,1516,1518,3,202,101,0,1517,1514,1,0,0,0,1517, - 1518,1,0,0,0,1518,157,1,0,0,0,1519,1520,3,332,166,0,1520,1521,5, - 183,0,0,1521,1522,5,51,0,0,1522,1523,5,183,0,0,1523,1525,1,0,0,0, - 1524,1519,1,0,0,0,1524,1525,1,0,0,0,1525,1526,1,0,0,0,1526,1527, - 3,332,166,0,1527,159,1,0,0,0,1528,1539,3,158,79,0,1529,1531,5,183, - 0,0,1530,1529,1,0,0,0,1530,1531,1,0,0,0,1531,1532,1,0,0,0,1532,1534, - 5,4,0,0,1533,1535,5,183,0,0,1534,1533,1,0,0,0,1534,1535,1,0,0,0, - 1535,1536,1,0,0,0,1536,1538,3,158,79,0,1537,1530,1,0,0,0,1538,1541, - 1,0,0,0,1539,1537,1,0,0,0,1539,1540,1,0,0,0,1540,161,1,0,0,0,1541, - 1539,1,0,0,0,1542,1543,5,57,0,0,1543,1544,5,183,0,0,1544,1549,3, - 312,156,0,1545,1547,5,183,0,0,1546,1545,1,0,0,0,1546,1547,1,0,0, - 0,1547,1548,1,0,0,0,1548,1550,3,202,101,0,1549,1546,1,0,0,0,1549, - 1550,1,0,0,0,1550,1557,1,0,0,0,1551,1553,5,183,0,0,1552,1551,1,0, - 0,0,1552,1553,1,0,0,0,1553,1554,1,0,0,0,1554,1555,5,155,0,0,1555, - 1556,5,183,0,0,1556,1558,3,160,80,0,1557,1552,1,0,0,0,1557,1558, - 1,0,0,0,1558,163,1,0,0,0,1559,1560,5,118,0,0,1560,1562,5,183,0,0, - 1561,1559,1,0,0,0,1561,1562,1,0,0,0,1562,1563,1,0,0,0,1563,1565, - 5,106,0,0,1564,1566,5,183,0,0,1565,1564,1,0,0,0,1565,1566,1,0,0, - 0,1566,1567,1,0,0,0,1567,1570,3,204,102,0,1568,1569,5,183,0,0,1569, - 1571,3,202,101,0,1570,1568,1,0,0,0,1570,1571,1,0,0,0,1571,1574,1, - 0,0,0,1572,1573,5,183,0,0,1573,1575,3,166,83,0,1574,1572,1,0,0,0, - 1574,1575,1,0,0,0,1575,165,1,0,0,0,1576,1577,5,93,0,0,1577,1578, - 5,183,0,0,1578,1579,3,168,84,0,1579,167,1,0,0,0,1580,1581,6,84,-1, - 0,1581,1583,5,2,0,0,1582,1584,5,183,0,0,1583,1582,1,0,0,0,1583,1584, - 1,0,0,0,1584,1585,1,0,0,0,1585,1587,3,168,84,0,1586,1588,5,183,0, - 0,1587,1586,1,0,0,0,1587,1588,1,0,0,0,1588,1589,1,0,0,0,1589,1590, - 5,3,0,0,1590,1593,1,0,0,0,1591,1593,3,346,173,0,1592,1580,1,0,0, - 0,1592,1591,1,0,0,0,1593,1610,1,0,0,0,1594,1595,10,4,0,0,1595,1596, - 5,183,0,0,1596,1597,5,100,0,0,1597,1598,5,183,0,0,1598,1609,3,168, - 84,5,1599,1604,10,3,0,0,1600,1601,5,183,0,0,1601,1602,5,110,0,0, - 1602,1603,5,183,0,0,1603,1605,3,346,173,0,1604,1600,1,0,0,0,1605, - 1606,1,0,0,0,1606,1604,1,0,0,0,1606,1607,1,0,0,0,1607,1609,1,0,0, - 0,1608,1594,1,0,0,0,1608,1599,1,0,0,0,1609,1612,1,0,0,0,1610,1608, - 1,0,0,0,1610,1611,1,0,0,0,1611,169,1,0,0,0,1612,1610,1,0,0,0,1613, - 1615,5,144,0,0,1614,1616,5,183,0,0,1615,1614,1,0,0,0,1615,1616,1, - 0,0,0,1616,1617,1,0,0,0,1617,1618,3,244,122,0,1618,1619,5,183,0, - 0,1619,1620,5,51,0,0,1620,1621,5,183,0,0,1621,1622,3,332,166,0,1622, - 171,1,0,0,0,1623,1625,5,68,0,0,1624,1626,5,183,0,0,1625,1624,1,0, - 0,0,1625,1626,1,0,0,0,1626,1627,1,0,0,0,1627,1628,3,204,102,0,1628, - 173,1,0,0,0,1629,1631,5,108,0,0,1630,1632,5,183,0,0,1631,1630,1, - 0,0,0,1631,1632,1,0,0,0,1632,1633,1,0,0,0,1633,1638,3,204,102,0, - 1634,1635,5,183,0,0,1635,1637,3,176,88,0,1636,1634,1,0,0,0,1637, - 1640,1,0,0,0,1638,1636,1,0,0,0,1638,1639,1,0,0,0,1639,175,1,0,0, - 0,1640,1638,1,0,0,0,1641,1642,5,116,0,0,1642,1643,5,183,0,0,1643, - 1644,5,106,0,0,1644,1645,5,183,0,0,1645,1652,3,178,89,0,1646,1647, - 5,116,0,0,1647,1648,5,183,0,0,1648,1649,5,68,0,0,1649,1650,5,183, - 0,0,1650,1652,3,178,89,0,1651,1641,1,0,0,0,1651,1646,1,0,0,0,1652, - 177,1,0,0,0,1653,1655,5,131,0,0,1654,1656,5,183,0,0,1655,1654,1, - 0,0,0,1655,1656,1,0,0,0,1656,1657,1,0,0,0,1657,1668,3,180,90,0,1658, - 1660,5,183,0,0,1659,1658,1,0,0,0,1659,1660,1,0,0,0,1660,1661,1,0, - 0,0,1661,1663,5,4,0,0,1662,1664,5,183,0,0,1663,1662,1,0,0,0,1663, - 1664,1,0,0,0,1664,1665,1,0,0,0,1665,1667,3,180,90,0,1666,1659,1, - 0,0,0,1667,1670,1,0,0,0,1668,1666,1,0,0,0,1668,1669,1,0,0,0,1669, - 1686,1,0,0,0,1670,1668,1,0,0,0,1671,1673,5,131,0,0,1672,1674,5,183, - 0,0,1673,1672,1,0,0,0,1673,1674,1,0,0,0,1674,1675,1,0,0,0,1675,1677, - 3,290,145,0,1676,1678,5,183,0,0,1677,1676,1,0,0,0,1677,1678,1,0, - 0,0,1678,1679,1,0,0,0,1679,1681,5,6,0,0,1680,1682,5,183,0,0,1681, - 1680,1,0,0,0,1681,1682,1,0,0,0,1682,1683,1,0,0,0,1683,1684,3,220, - 110,0,1684,1686,1,0,0,0,1685,1653,1,0,0,0,1685,1671,1,0,0,0,1686, - 179,1,0,0,0,1687,1689,3,338,169,0,1688,1690,5,183,0,0,1689,1688, - 1,0,0,0,1689,1690,1,0,0,0,1690,1691,1,0,0,0,1691,1693,5,6,0,0,1692, - 1694,5,183,0,0,1693,1692,1,0,0,0,1693,1694,1,0,0,0,1694,1695,1,0, - 0,0,1695,1696,3,244,122,0,1696,181,1,0,0,0,1697,1698,5,76,0,0,1698, - 1700,5,183,0,0,1699,1697,1,0,0,0,1699,1700,1,0,0,0,1700,1701,1,0, - 0,0,1701,1703,5,73,0,0,1702,1704,5,183,0,0,1703,1702,1,0,0,0,1703, - 1704,1,0,0,0,1704,1705,1,0,0,0,1705,1716,3,244,122,0,1706,1708,5, - 183,0,0,1707,1706,1,0,0,0,1707,1708,1,0,0,0,1708,1709,1,0,0,0,1709, - 1711,5,4,0,0,1710,1712,5,183,0,0,1711,1710,1,0,0,0,1711,1712,1,0, - 0,0,1712,1713,1,0,0,0,1713,1715,3,244,122,0,1714,1707,1,0,0,0,1715, - 1718,1,0,0,0,1716,1714,1,0,0,0,1716,1717,1,0,0,0,1717,183,1,0,0, - 0,1718,1716,1,0,0,0,1719,1720,5,150,0,0,1720,1725,3,188,94,0,1721, - 1723,5,183,0,0,1722,1721,1,0,0,0,1722,1723,1,0,0,0,1723,1724,1,0, - 0,0,1724,1726,3,202,101,0,1725,1722,1,0,0,0,1725,1726,1,0,0,0,1726, - 185,1,0,0,0,1727,1728,5,127,0,0,1728,1729,3,188,94,0,1729,187,1, - 0,0,0,1730,1732,5,183,0,0,1731,1730,1,0,0,0,1731,1732,1,0,0,0,1732, - 1733,1,0,0,0,1733,1735,5,77,0,0,1734,1731,1,0,0,0,1734,1735,1,0, - 0,0,1735,1736,1,0,0,0,1736,1737,5,183,0,0,1737,1740,3,190,95,0,1738, - 1739,5,183,0,0,1739,1741,3,194,97,0,1740,1738,1,0,0,0,1740,1741, - 1,0,0,0,1741,1744,1,0,0,0,1742,1743,5,183,0,0,1743,1745,3,196,98, - 0,1744,1742,1,0,0,0,1744,1745,1,0,0,0,1745,1748,1,0,0,0,1746,1747, - 5,183,0,0,1747,1749,3,198,99,0,1748,1746,1,0,0,0,1748,1749,1,0,0, - 0,1749,189,1,0,0,0,1750,1761,5,161,0,0,1751,1753,5,183,0,0,1752, - 1751,1,0,0,0,1752,1753,1,0,0,0,1753,1754,1,0,0,0,1754,1756,5,4,0, - 0,1755,1757,5,183,0,0,1756,1755,1,0,0,0,1756,1757,1,0,0,0,1757,1758, - 1,0,0,0,1758,1760,3,192,96,0,1759,1752,1,0,0,0,1760,1763,1,0,0,0, - 1761,1759,1,0,0,0,1761,1762,1,0,0,0,1762,1779,1,0,0,0,1763,1761, - 1,0,0,0,1764,1775,3,192,96,0,1765,1767,5,183,0,0,1766,1765,1,0,0, - 0,1766,1767,1,0,0,0,1767,1768,1,0,0,0,1768,1770,5,4,0,0,1769,1771, - 5,183,0,0,1770,1769,1,0,0,0,1770,1771,1,0,0,0,1771,1772,1,0,0,0, - 1772,1774,3,192,96,0,1773,1766,1,0,0,0,1774,1777,1,0,0,0,1775,1773, - 1,0,0,0,1775,1776,1,0,0,0,1776,1779,1,0,0,0,1777,1775,1,0,0,0,1778, - 1750,1,0,0,0,1778,1764,1,0,0,0,1779,191,1,0,0,0,1780,1781,3,244, - 122,0,1781,1782,5,183,0,0,1782,1783,5,51,0,0,1783,1784,5,183,0,0, - 1784,1785,3,332,166,0,1785,1788,1,0,0,0,1786,1788,3,244,122,0,1787, - 1780,1,0,0,0,1787,1786,1,0,0,0,1788,193,1,0,0,0,1789,1790,5,120, - 0,0,1790,1791,5,183,0,0,1791,1792,5,56,0,0,1792,1793,5,183,0,0,1793, - 1801,3,200,100,0,1794,1796,5,4,0,0,1795,1797,5,183,0,0,1796,1795, - 1,0,0,0,1796,1797,1,0,0,0,1797,1798,1,0,0,0,1798,1800,3,200,100, - 0,1799,1794,1,0,0,0,1800,1803,1,0,0,0,1801,1799,1,0,0,0,1801,1802, - 1,0,0,0,1802,195,1,0,0,0,1803,1801,1,0,0,0,1804,1805,5,162,0,0,1805, - 1806,5,183,0,0,1806,1807,3,244,122,0,1807,197,1,0,0,0,1808,1809, - 5,102,0,0,1809,1810,5,183,0,0,1810,1811,3,244,122,0,1811,199,1,0, - 0,0,1812,1817,3,244,122,0,1813,1815,5,183,0,0,1814,1813,1,0,0,0, - 1814,1815,1,0,0,0,1815,1816,1,0,0,0,1816,1818,7,1,0,0,1817,1814, - 1,0,0,0,1817,1818,1,0,0,0,1818,201,1,0,0,0,1819,1820,5,149,0,0,1820, - 1821,5,183,0,0,1821,1822,3,244,122,0,1822,203,1,0,0,0,1823,1834, - 3,206,103,0,1824,1826,5,183,0,0,1825,1824,1,0,0,0,1825,1826,1,0, - 0,0,1826,1827,1,0,0,0,1827,1829,5,4,0,0,1828,1830,5,183,0,0,1829, - 1828,1,0,0,0,1829,1830,1,0,0,0,1830,1831,1,0,0,0,1831,1833,3,206, - 103,0,1832,1825,1,0,0,0,1833,1836,1,0,0,0,1834,1832,1,0,0,0,1834, - 1835,1,0,0,0,1835,205,1,0,0,0,1836,1834,1,0,0,0,1837,1839,3,332, - 166,0,1838,1840,5,183,0,0,1839,1838,1,0,0,0,1839,1840,1,0,0,0,1840, - 1841,1,0,0,0,1841,1843,5,6,0,0,1842,1844,5,183,0,0,1843,1842,1,0, - 0,0,1843,1844,1,0,0,0,1844,1845,1,0,0,0,1845,1846,3,208,104,0,1846, - 1849,1,0,0,0,1847,1849,3,208,104,0,1848,1837,1,0,0,0,1848,1847,1, - 0,0,0,1849,207,1,0,0,0,1850,1851,3,210,105,0,1851,209,1,0,0,0,1852, - 1859,3,212,106,0,1853,1855,5,183,0,0,1854,1853,1,0,0,0,1854,1855, - 1,0,0,0,1855,1856,1,0,0,0,1856,1858,3,214,107,0,1857,1854,1,0,0, - 0,1858,1861,1,0,0,0,1859,1857,1,0,0,0,1859,1860,1,0,0,0,1860,1867, - 1,0,0,0,1861,1859,1,0,0,0,1862,1863,5,2,0,0,1863,1864,3,210,105, - 0,1864,1865,5,3,0,0,1865,1867,1,0,0,0,1866,1852,1,0,0,0,1866,1862, - 1,0,0,0,1867,211,1,0,0,0,1868,1870,5,2,0,0,1869,1871,5,183,0,0,1870, - 1869,1,0,0,0,1870,1871,1,0,0,0,1871,1876,1,0,0,0,1872,1874,3,332, - 166,0,1873,1875,5,183,0,0,1874,1873,1,0,0,0,1874,1875,1,0,0,0,1875, - 1877,1,0,0,0,1876,1872,1,0,0,0,1876,1877,1,0,0,0,1877,1882,1,0,0, - 0,1878,1880,3,224,112,0,1879,1881,5,183,0,0,1880,1879,1,0,0,0,1880, - 1881,1,0,0,0,1881,1883,1,0,0,0,1882,1878,1,0,0,0,1882,1883,1,0,0, - 0,1883,1888,1,0,0,0,1884,1886,3,220,110,0,1885,1887,5,183,0,0,1886, - 1885,1,0,0,0,1886,1887,1,0,0,0,1887,1889,1,0,0,0,1888,1884,1,0,0, - 0,1888,1889,1,0,0,0,1889,1890,1,0,0,0,1890,1891,5,3,0,0,1891,213, - 1,0,0,0,1892,1894,3,216,108,0,1893,1895,5,183,0,0,1894,1893,1,0, - 0,0,1894,1895,1,0,0,0,1895,1896,1,0,0,0,1896,1897,3,212,106,0,1897, - 215,1,0,0,0,1898,1900,3,352,176,0,1899,1901,5,183,0,0,1900,1899, - 1,0,0,0,1900,1901,1,0,0,0,1901,1902,1,0,0,0,1902,1904,3,356,178, - 0,1903,1905,5,183,0,0,1904,1903,1,0,0,0,1904,1905,1,0,0,0,1905,1907, - 1,0,0,0,1906,1908,3,218,109,0,1907,1906,1,0,0,0,1907,1908,1,0,0, - 0,1908,1910,1,0,0,0,1909,1911,5,183,0,0,1910,1909,1,0,0,0,1910,1911, - 1,0,0,0,1911,1912,1,0,0,0,1912,1913,3,356,178,0,1913,1943,1,0,0, - 0,1914,1916,3,356,178,0,1915,1917,5,183,0,0,1916,1915,1,0,0,0,1916, - 1917,1,0,0,0,1917,1919,1,0,0,0,1918,1920,3,218,109,0,1919,1918,1, - 0,0,0,1919,1920,1,0,0,0,1920,1922,1,0,0,0,1921,1923,5,183,0,0,1922, - 1921,1,0,0,0,1922,1923,1,0,0,0,1923,1924,1,0,0,0,1924,1926,3,356, - 178,0,1925,1927,5,183,0,0,1926,1925,1,0,0,0,1926,1927,1,0,0,0,1927, - 1928,1,0,0,0,1928,1929,3,354,177,0,1929,1943,1,0,0,0,1930,1932,3, - 356,178,0,1931,1933,5,183,0,0,1932,1931,1,0,0,0,1932,1933,1,0,0, - 0,1933,1935,1,0,0,0,1934,1936,3,218,109,0,1935,1934,1,0,0,0,1935, - 1936,1,0,0,0,1936,1938,1,0,0,0,1937,1939,5,183,0,0,1938,1937,1,0, - 0,0,1938,1939,1,0,0,0,1939,1940,1,0,0,0,1940,1941,3,356,178,0,1941, - 1943,1,0,0,0,1942,1898,1,0,0,0,1942,1914,1,0,0,0,1942,1930,1,0,0, - 0,1943,217,1,0,0,0,1944,1946,5,7,0,0,1945,1947,5,183,0,0,1946,1945, - 1,0,0,0,1946,1947,1,0,0,0,1947,1952,1,0,0,0,1948,1950,3,332,166, - 0,1949,1951,5,183,0,0,1950,1949,1,0,0,0,1950,1951,1,0,0,0,1951,1953, - 1,0,0,0,1952,1948,1,0,0,0,1952,1953,1,0,0,0,1953,1958,1,0,0,0,1954, - 1956,3,222,111,0,1955,1957,5,183,0,0,1956,1955,1,0,0,0,1956,1957, - 1,0,0,0,1957,1959,1,0,0,0,1958,1954,1,0,0,0,1958,1959,1,0,0,0,1959, - 1964,1,0,0,0,1960,1962,3,226,113,0,1961,1963,5,183,0,0,1962,1961, - 1,0,0,0,1962,1963,1,0,0,0,1963,1965,1,0,0,0,1964,1960,1,0,0,0,1964, - 1965,1,0,0,0,1965,1970,1,0,0,0,1966,1968,3,220,110,0,1967,1969,5, - 183,0,0,1968,1967,1,0,0,0,1968,1969,1,0,0,0,1969,1971,1,0,0,0,1970, - 1966,1,0,0,0,1970,1971,1,0,0,0,1971,1972,1,0,0,0,1972,1973,5,8,0, - 0,1973,219,1,0,0,0,1974,1976,5,9,0,0,1975,1977,5,183,0,0,1976,1975, - 1,0,0,0,1976,1977,1,0,0,0,1977,2011,1,0,0,0,1978,1980,3,340,170, - 0,1979,1981,5,183,0,0,1980,1979,1,0,0,0,1980,1981,1,0,0,0,1981,1982, - 1,0,0,0,1982,1984,5,164,0,0,1983,1985,5,183,0,0,1984,1983,1,0,0, - 0,1984,1985,1,0,0,0,1985,1986,1,0,0,0,1986,1988,3,244,122,0,1987, - 1989,5,183,0,0,1988,1987,1,0,0,0,1988,1989,1,0,0,0,1989,2008,1,0, - 0,0,1990,1992,5,4,0,0,1991,1993,5,183,0,0,1992,1991,1,0,0,0,1992, - 1993,1,0,0,0,1993,1994,1,0,0,0,1994,1996,3,340,170,0,1995,1997,5, - 183,0,0,1996,1995,1,0,0,0,1996,1997,1,0,0,0,1997,1998,1,0,0,0,1998, - 2000,5,164,0,0,1999,2001,5,183,0,0,2000,1999,1,0,0,0,2000,2001,1, - 0,0,0,2001,2002,1,0,0,0,2002,2004,3,244,122,0,2003,2005,5,183,0, - 0,2004,2003,1,0,0,0,2004,2005,1,0,0,0,2005,2007,1,0,0,0,2006,1990, - 1,0,0,0,2007,2010,1,0,0,0,2008,2006,1,0,0,0,2008,2009,1,0,0,0,2009, - 2012,1,0,0,0,2010,2008,1,0,0,0,2011,1978,1,0,0,0,2011,2012,1,0,0, - 0,2012,2013,1,0,0,0,2013,2014,5,10,0,0,2014,221,1,0,0,0,2015,2017, - 5,164,0,0,2016,2018,5,183,0,0,2017,2016,1,0,0,0,2017,2018,1,0,0, - 0,2018,2019,1,0,0,0,2019,2033,3,242,121,0,2020,2022,5,183,0,0,2021, - 2020,1,0,0,0,2021,2022,1,0,0,0,2022,2023,1,0,0,0,2023,2025,5,11, - 0,0,2024,2026,5,164,0,0,2025,2024,1,0,0,0,2025,2026,1,0,0,0,2026, - 2028,1,0,0,0,2027,2029,5,183,0,0,2028,2027,1,0,0,0,2028,2029,1,0, - 0,0,2029,2030,1,0,0,0,2030,2032,3,242,121,0,2031,2021,1,0,0,0,2032, - 2035,1,0,0,0,2033,2031,1,0,0,0,2033,2034,1,0,0,0,2034,223,1,0,0, - 0,2035,2033,1,0,0,0,2036,2038,5,164,0,0,2037,2039,5,183,0,0,2038, - 2037,1,0,0,0,2038,2039,1,0,0,0,2039,2040,1,0,0,0,2040,2057,3,240, - 120,0,2041,2043,5,183,0,0,2042,2041,1,0,0,0,2042,2043,1,0,0,0,2043, - 2049,1,0,0,0,2044,2046,5,11,0,0,2045,2047,5,164,0,0,2046,2045,1, - 0,0,0,2046,2047,1,0,0,0,2047,2050,1,0,0,0,2048,2050,5,164,0,0,2049, - 2044,1,0,0,0,2049,2048,1,0,0,0,2050,2052,1,0,0,0,2051,2053,5,183, - 0,0,2052,2051,1,0,0,0,2052,2053,1,0,0,0,2053,2054,1,0,0,0,2054,2056, - 3,240,120,0,2055,2042,1,0,0,0,2056,2059,1,0,0,0,2057,2055,1,0,0, - 0,2057,2058,1,0,0,0,2058,225,1,0,0,0,2059,2057,1,0,0,0,2060,2065, - 5,161,0,0,2061,2063,5,183,0,0,2062,2061,1,0,0,0,2062,2063,1,0,0, - 0,2063,2064,1,0,0,0,2064,2066,3,228,114,0,2065,2062,1,0,0,0,2065, - 2066,1,0,0,0,2066,2071,1,0,0,0,2067,2069,5,183,0,0,2068,2067,1,0, - 0,0,2068,2069,1,0,0,0,2069,2070,1,0,0,0,2070,2072,3,230,115,0,2071, - 2068,1,0,0,0,2071,2072,1,0,0,0,2072,2077,1,0,0,0,2073,2075,5,183, - 0,0,2074,2073,1,0,0,0,2074,2075,1,0,0,0,2075,2076,1,0,0,0,2076,2078, - 3,232,116,0,2077,2074,1,0,0,0,2077,2078,1,0,0,0,2078,227,1,0,0,0, - 2079,2080,5,48,0,0,2080,2082,5,183,0,0,2081,2079,1,0,0,0,2081,2082, - 1,0,0,0,2082,2083,1,0,0,0,2083,2085,5,152,0,0,2084,2086,5,183,0, - 0,2085,2084,1,0,0,0,2085,2086,1,0,0,0,2086,2087,1,0,0,0,2087,2089, - 5,2,0,0,2088,2090,5,183,0,0,2089,2088,1,0,0,0,2089,2090,1,0,0,0, - 2090,2091,1,0,0,0,2091,2093,3,340,170,0,2092,2094,5,183,0,0,2093, - 2092,1,0,0,0,2093,2094,1,0,0,0,2094,2095,1,0,0,0,2095,2096,5,3,0, - 0,2096,2104,1,0,0,0,2097,2104,5,132,0,0,2098,2099,5,48,0,0,2099, - 2100,5,183,0,0,2100,2104,5,132,0,0,2101,2104,5,139,0,0,2102,2104, - 5,45,0,0,2103,2081,1,0,0,0,2103,2097,1,0,0,0,2103,2098,1,0,0,0,2103, - 2101,1,0,0,0,2103,2102,1,0,0,0,2104,229,1,0,0,0,2105,2107,3,236, - 118,0,2106,2105,1,0,0,0,2106,2107,1,0,0,0,2107,2109,1,0,0,0,2108, - 2110,5,183,0,0,2109,2108,1,0,0,0,2109,2110,1,0,0,0,2110,2111,1,0, - 0,0,2111,2113,5,165,0,0,2112,2114,5,183,0,0,2113,2112,1,0,0,0,2113, - 2114,1,0,0,0,2114,2116,1,0,0,0,2115,2117,3,238,119,0,2116,2115,1, - 0,0,0,2116,2117,1,0,0,0,2117,2120,1,0,0,0,2118,2120,3,342,171,0, - 2119,2106,1,0,0,0,2119,2118,1,0,0,0,2120,231,1,0,0,0,2121,2123,5, - 2,0,0,2122,2124,5,183,0,0,2123,2122,1,0,0,0,2123,2124,1,0,0,0,2124, - 2125,1,0,0,0,2125,2127,3,332,166,0,2126,2128,5,183,0,0,2127,2126, - 1,0,0,0,2127,2128,1,0,0,0,2128,2129,1,0,0,0,2129,2131,5,4,0,0,2130, - 2132,5,183,0,0,2131,2130,1,0,0,0,2131,2132,1,0,0,0,2132,2133,1,0, - 0,0,2133,2145,3,332,166,0,2134,2136,5,183,0,0,2135,2134,1,0,0,0, - 2135,2136,1,0,0,0,2136,2137,1,0,0,0,2137,2139,5,11,0,0,2138,2140, - 5,183,0,0,2139,2138,1,0,0,0,2139,2140,1,0,0,0,2140,2141,1,0,0,0, - 2141,2143,3,202,101,0,2142,2144,5,183,0,0,2143,2142,1,0,0,0,2143, - 2144,1,0,0,0,2144,2146,1,0,0,0,2145,2135,1,0,0,0,2145,2146,1,0,0, - 0,2146,2166,1,0,0,0,2147,2149,5,183,0,0,2148,2147,1,0,0,0,2148,2149, - 1,0,0,0,2149,2150,1,0,0,0,2150,2152,5,11,0,0,2151,2153,5,183,0,0, - 2152,2151,1,0,0,0,2152,2153,1,0,0,0,2153,2154,1,0,0,0,2154,2156, - 3,234,117,0,2155,2157,5,183,0,0,2156,2155,1,0,0,0,2156,2157,1,0, - 0,0,2157,2158,1,0,0,0,2158,2160,5,4,0,0,2159,2161,5,183,0,0,2160, - 2159,1,0,0,0,2160,2161,1,0,0,0,2161,2162,1,0,0,0,2162,2164,3,234, - 117,0,2163,2165,5,183,0,0,2164,2163,1,0,0,0,2164,2165,1,0,0,0,2165, - 2167,1,0,0,0,2166,2148,1,0,0,0,2166,2167,1,0,0,0,2167,2168,1,0,0, - 0,2168,2169,5,3,0,0,2169,233,1,0,0,0,2170,2172,5,9,0,0,2171,2173, - 5,183,0,0,2172,2171,1,0,0,0,2172,2173,1,0,0,0,2173,2175,1,0,0,0, - 2174,2176,3,190,95,0,2175,2174,1,0,0,0,2175,2176,1,0,0,0,2176,2178, - 1,0,0,0,2177,2179,5,183,0,0,2178,2177,1,0,0,0,2178,2179,1,0,0,0, - 2179,2180,1,0,0,0,2180,2181,5,10,0,0,2181,235,1,0,0,0,2182,2183, - 5,170,0,0,2183,237,1,0,0,0,2184,2185,5,170,0,0,2185,239,1,0,0,0, - 2186,2187,3,346,173,0,2187,241,1,0,0,0,2188,2189,3,346,173,0,2189, - 243,1,0,0,0,2190,2191,3,246,123,0,2191,245,1,0,0,0,2192,2199,3,248, - 124,0,2193,2194,5,183,0,0,2194,2195,5,119,0,0,2195,2196,5,183,0, - 0,2196,2198,3,248,124,0,2197,2193,1,0,0,0,2198,2201,1,0,0,0,2199, - 2197,1,0,0,0,2199,2200,1,0,0,0,2200,247,1,0,0,0,2201,2199,1,0,0, - 0,2202,2209,3,250,125,0,2203,2204,5,183,0,0,2204,2205,5,153,0,0, - 2205,2206,5,183,0,0,2206,2208,3,250,125,0,2207,2203,1,0,0,0,2208, - 2211,1,0,0,0,2209,2207,1,0,0,0,2209,2210,1,0,0,0,2210,249,1,0,0, - 0,2211,2209,1,0,0,0,2212,2219,3,252,126,0,2213,2214,5,183,0,0,2214, - 2215,5,50,0,0,2215,2216,5,183,0,0,2216,2218,3,252,126,0,2217,2213, - 1,0,0,0,2218,2221,1,0,0,0,2219,2217,1,0,0,0,2219,2220,1,0,0,0,2220, - 251,1,0,0,0,2221,2219,1,0,0,0,2222,2224,5,113,0,0,2223,2225,5,183, - 0,0,2224,2223,1,0,0,0,2224,2225,1,0,0,0,2225,2227,1,0,0,0,2226,2222, - 1,0,0,0,2227,2230,1,0,0,0,2228,2226,1,0,0,0,2228,2229,1,0,0,0,2229, - 2231,1,0,0,0,2230,2228,1,0,0,0,2231,2232,3,254,127,0,2232,253,1, - 0,0,0,2233,2243,3,258,129,0,2234,2236,5,183,0,0,2235,2234,1,0,0, - 0,2235,2236,1,0,0,0,2236,2237,1,0,0,0,2237,2239,3,256,128,0,2238, - 2240,5,183,0,0,2239,2238,1,0,0,0,2239,2240,1,0,0,0,2240,2241,1,0, - 0,0,2241,2242,3,258,129,0,2242,2244,1,0,0,0,2243,2235,1,0,0,0,2243, - 2244,1,0,0,0,2244,2282,1,0,0,0,2245,2247,3,258,129,0,2246,2248,5, - 183,0,0,2247,2246,1,0,0,0,2247,2248,1,0,0,0,2248,2249,1,0,0,0,2249, - 2251,5,163,0,0,2250,2252,5,183,0,0,2251,2250,1,0,0,0,2251,2252,1, - 0,0,0,2252,2253,1,0,0,0,2253,2254,3,258,129,0,2254,2255,1,0,0,0, - 2255,2256,6,127,-1,0,2256,2282,1,0,0,0,2257,2259,3,258,129,0,2258, - 2260,5,183,0,0,2259,2258,1,0,0,0,2259,2260,1,0,0,0,2260,2261,1,0, - 0,0,2261,2263,3,256,128,0,2262,2264,5,183,0,0,2263,2262,1,0,0,0, - 2263,2264,1,0,0,0,2264,2265,1,0,0,0,2265,2275,3,258,129,0,2266,2268, - 5,183,0,0,2267,2266,1,0,0,0,2267,2268,1,0,0,0,2268,2269,1,0,0,0, - 2269,2271,3,256,128,0,2270,2272,5,183,0,0,2271,2270,1,0,0,0,2271, - 2272,1,0,0,0,2272,2273,1,0,0,0,2273,2274,3,258,129,0,2274,2276,1, - 0,0,0,2275,2267,1,0,0,0,2276,2277,1,0,0,0,2277,2275,1,0,0,0,2277, - 2278,1,0,0,0,2278,2279,1,0,0,0,2279,2280,6,127,-1,0,2280,2282,1, - 0,0,0,2281,2233,1,0,0,0,2281,2245,1,0,0,0,2281,2257,1,0,0,0,2282, - 255,1,0,0,0,2283,2284,7,2,0,0,2284,257,1,0,0,0,2285,2296,3,260,130, - 0,2286,2288,5,183,0,0,2287,2286,1,0,0,0,2287,2288,1,0,0,0,2288,2289, - 1,0,0,0,2289,2291,5,11,0,0,2290,2292,5,183,0,0,2291,2290,1,0,0,0, - 2291,2292,1,0,0,0,2292,2293,1,0,0,0,2293,2295,3,260,130,0,2294,2287, - 1,0,0,0,2295,2298,1,0,0,0,2296,2294,1,0,0,0,2296,2297,1,0,0,0,2297, - 259,1,0,0,0,2298,2296,1,0,0,0,2299,2310,3,262,131,0,2300,2302,5, - 183,0,0,2301,2300,1,0,0,0,2301,2302,1,0,0,0,2302,2303,1,0,0,0,2303, - 2305,5,17,0,0,2304,2306,5,183,0,0,2305,2304,1,0,0,0,2305,2306,1, - 0,0,0,2306,2307,1,0,0,0,2307,2309,3,262,131,0,2308,2301,1,0,0,0, - 2309,2312,1,0,0,0,2310,2308,1,0,0,0,2310,2311,1,0,0,0,2311,261,1, - 0,0,0,2312,2310,1,0,0,0,2313,2325,3,266,133,0,2314,2316,5,183,0, - 0,2315,2314,1,0,0,0,2315,2316,1,0,0,0,2316,2317,1,0,0,0,2317,2319, - 3,264,132,0,2318,2320,5,183,0,0,2319,2318,1,0,0,0,2319,2320,1,0, - 0,0,2320,2321,1,0,0,0,2321,2322,3,266,133,0,2322,2324,1,0,0,0,2323, - 2315,1,0,0,0,2324,2327,1,0,0,0,2325,2323,1,0,0,0,2325,2326,1,0,0, - 0,2326,263,1,0,0,0,2327,2325,1,0,0,0,2328,2329,7,3,0,0,2329,265, - 1,0,0,0,2330,2342,3,270,135,0,2331,2333,5,183,0,0,2332,2331,1,0, - 0,0,2332,2333,1,0,0,0,2333,2334,1,0,0,0,2334,2336,3,268,134,0,2335, - 2337,5,183,0,0,2336,2335,1,0,0,0,2336,2337,1,0,0,0,2337,2338,1,0, - 0,0,2338,2339,3,270,135,0,2339,2341,1,0,0,0,2340,2332,1,0,0,0,2341, - 2344,1,0,0,0,2342,2340,1,0,0,0,2342,2343,1,0,0,0,2343,267,1,0,0, - 0,2344,2342,1,0,0,0,2345,2346,7,4,0,0,2346,269,1,0,0,0,2347,2359, - 3,274,137,0,2348,2350,5,183,0,0,2349,2348,1,0,0,0,2349,2350,1,0, - 0,0,2350,2351,1,0,0,0,2351,2353,3,272,136,0,2352,2354,5,183,0,0, - 2353,2352,1,0,0,0,2353,2354,1,0,0,0,2354,2355,1,0,0,0,2355,2356, - 3,274,137,0,2356,2358,1,0,0,0,2357,2349,1,0,0,0,2358,2361,1,0,0, - 0,2359,2357,1,0,0,0,2359,2360,1,0,0,0,2360,271,1,0,0,0,2361,2359, - 1,0,0,0,2362,2363,7,5,0,0,2363,273,1,0,0,0,2364,2375,3,276,138,0, - 2365,2367,5,183,0,0,2366,2365,1,0,0,0,2366,2367,1,0,0,0,2367,2368, - 1,0,0,0,2368,2370,5,23,0,0,2369,2371,5,183,0,0,2370,2369,1,0,0,0, - 2370,2371,1,0,0,0,2371,2372,1,0,0,0,2372,2374,3,276,138,0,2373,2366, - 1,0,0,0,2374,2377,1,0,0,0,2375,2373,1,0,0,0,2375,2376,1,0,0,0,2376, - 275,1,0,0,0,2377,2375,1,0,0,0,2378,2386,3,286,143,0,2379,2387,3, - 280,140,0,2380,2382,3,278,139,0,2381,2380,1,0,0,0,2382,2383,1,0, - 0,0,2383,2381,1,0,0,0,2383,2384,1,0,0,0,2384,2387,1,0,0,0,2385,2387, - 3,284,142,0,2386,2379,1,0,0,0,2386,2381,1,0,0,0,2386,2385,1,0,0, - 0,2386,2387,1,0,0,0,2387,277,1,0,0,0,2388,2389,5,183,0,0,2389,2391, - 5,96,0,0,2390,2392,5,183,0,0,2391,2390,1,0,0,0,2391,2392,1,0,0,0, - 2392,2393,1,0,0,0,2393,2408,3,288,144,0,2394,2395,5,7,0,0,2395,2396, - 3,244,122,0,2396,2397,5,8,0,0,2397,2408,1,0,0,0,2398,2400,5,7,0, - 0,2399,2401,3,244,122,0,2400,2399,1,0,0,0,2400,2401,1,0,0,0,2401, - 2402,1,0,0,0,2402,2404,7,6,0,0,2403,2405,3,244,122,0,2404,2403,1, - 0,0,0,2404,2405,1,0,0,0,2405,2406,1,0,0,0,2406,2408,5,8,0,0,2407, - 2388,1,0,0,0,2407,2394,1,0,0,0,2407,2398,1,0,0,0,2408,279,1,0,0, - 0,2409,2421,3,282,141,0,2410,2411,5,183,0,0,2411,2412,5,134,0,0, - 2412,2413,5,183,0,0,2413,2421,5,150,0,0,2414,2415,5,183,0,0,2415, - 2416,5,81,0,0,2416,2417,5,183,0,0,2417,2421,5,150,0,0,2418,2419, - 5,183,0,0,2419,2421,5,65,0,0,2420,2409,1,0,0,0,2420,2410,1,0,0,0, - 2420,2414,1,0,0,0,2420,2418,1,0,0,0,2421,2423,1,0,0,0,2422,2424, - 5,183,0,0,2423,2422,1,0,0,0,2423,2424,1,0,0,0,2424,2425,1,0,0,0, - 2425,2426,3,288,144,0,2426,281,1,0,0,0,2427,2429,5,183,0,0,2428, - 2427,1,0,0,0,2428,2429,1,0,0,0,2429,2430,1,0,0,0,2430,2431,5,24, - 0,0,2431,283,1,0,0,0,2432,2433,5,183,0,0,2433,2434,5,99,0,0,2434, - 2435,5,183,0,0,2435,2443,5,115,0,0,2436,2437,5,183,0,0,2437,2438, - 5,99,0,0,2438,2439,5,183,0,0,2439,2440,5,113,0,0,2440,2441,5,183, - 0,0,2441,2443,5,115,0,0,2442,2432,1,0,0,0,2442,2436,1,0,0,0,2443, - 285,1,0,0,0,2444,2446,5,166,0,0,2445,2447,5,183,0,0,2446,2445,1, - 0,0,0,2446,2447,1,0,0,0,2447,2449,1,0,0,0,2448,2444,1,0,0,0,2449, - 2452,1,0,0,0,2450,2448,1,0,0,0,2450,2451,1,0,0,0,2451,2453,1,0,0, - 0,2452,2450,1,0,0,0,2453,2458,3,288,144,0,2454,2456,5,183,0,0,2455, - 2454,1,0,0,0,2455,2456,1,0,0,0,2456,2457,1,0,0,0,2457,2459,5,167, - 0,0,2458,2455,1,0,0,0,2458,2459,1,0,0,0,2459,287,1,0,0,0,2460,2467, - 3,290,145,0,2461,2463,5,183,0,0,2462,2461,1,0,0,0,2462,2463,1,0, - 0,0,2463,2464,1,0,0,0,2464,2466,3,326,163,0,2465,2462,1,0,0,0,2466, - 2469,1,0,0,0,2467,2465,1,0,0,0,2467,2468,1,0,0,0,2468,289,1,0,0, - 0,2469,2467,1,0,0,0,2470,2480,3,298,149,0,2471,2480,3,336,168,0, - 2472,2480,3,328,164,0,2473,2480,3,310,155,0,2474,2480,3,312,156, - 0,2475,2480,3,322,161,0,2476,2480,3,324,162,0,2477,2480,3,332,166, - 0,2478,2480,3,292,146,0,2479,2470,1,0,0,0,2479,2471,1,0,0,0,2479, - 2472,1,0,0,0,2479,2473,1,0,0,0,2479,2474,1,0,0,0,2479,2475,1,0,0, - 0,2479,2476,1,0,0,0,2479,2477,1,0,0,0,2479,2478,1,0,0,0,2480,291, - 1,0,0,0,2481,2483,5,48,0,0,2482,2484,5,183,0,0,2483,2482,1,0,0,0, - 2483,2484,1,0,0,0,2484,2485,1,0,0,0,2485,2487,5,2,0,0,2486,2488, - 5,183,0,0,2487,2486,1,0,0,0,2487,2488,1,0,0,0,2488,2489,1,0,0,0, - 2489,2491,3,294,147,0,2490,2492,5,183,0,0,2491,2490,1,0,0,0,2491, - 2492,1,0,0,0,2492,2493,1,0,0,0,2493,2494,5,3,0,0,2494,2538,1,0,0, - 0,2495,2497,5,46,0,0,2496,2498,5,183,0,0,2497,2496,1,0,0,0,2497, - 2498,1,0,0,0,2498,2499,1,0,0,0,2499,2501,5,2,0,0,2500,2502,5,183, - 0,0,2501,2500,1,0,0,0,2501,2502,1,0,0,0,2502,2503,1,0,0,0,2503,2505, - 3,294,147,0,2504,2506,5,183,0,0,2505,2504,1,0,0,0,2505,2506,1,0, - 0,0,2506,2507,1,0,0,0,2507,2508,5,3,0,0,2508,2538,1,0,0,0,2509,2511, - 5,114,0,0,2510,2512,5,183,0,0,2511,2510,1,0,0,0,2511,2512,1,0,0, - 0,2512,2513,1,0,0,0,2513,2515,5,2,0,0,2514,2516,5,183,0,0,2515,2514, - 1,0,0,0,2515,2516,1,0,0,0,2516,2517,1,0,0,0,2517,2519,3,294,147, - 0,2518,2520,5,183,0,0,2519,2518,1,0,0,0,2519,2520,1,0,0,0,2520,2521, - 1,0,0,0,2521,2522,5,3,0,0,2522,2538,1,0,0,0,2523,2525,5,154,0,0, - 2524,2526,5,183,0,0,2525,2524,1,0,0,0,2525,2526,1,0,0,0,2526,2527, - 1,0,0,0,2527,2529,5,2,0,0,2528,2530,5,183,0,0,2529,2528,1,0,0,0, - 2529,2530,1,0,0,0,2530,2531,1,0,0,0,2531,2533,3,294,147,0,2532,2534, - 5,183,0,0,2533,2532,1,0,0,0,2533,2534,1,0,0,0,2534,2535,1,0,0,0, - 2535,2536,5,3,0,0,2536,2538,1,0,0,0,2537,2481,1,0,0,0,2537,2495, - 1,0,0,0,2537,2509,1,0,0,0,2537,2523,1,0,0,0,2538,293,1,0,0,0,2539, - 2540,3,296,148,0,2540,2541,5,183,0,0,2541,2542,3,202,101,0,2542, - 295,1,0,0,0,2543,2544,3,332,166,0,2544,2545,5,183,0,0,2545,2546, - 5,96,0,0,2546,2547,5,183,0,0,2547,2548,3,244,122,0,2548,297,1,0, - 0,0,2549,2556,3,334,167,0,2550,2556,5,168,0,0,2551,2556,3,300,150, - 0,2552,2556,5,115,0,0,2553,2556,3,302,151,0,2554,2556,3,306,153, - 0,2555,2549,1,0,0,0,2555,2550,1,0,0,0,2555,2551,1,0,0,0,2555,2552, - 1,0,0,0,2555,2553,1,0,0,0,2555,2554,1,0,0,0,2556,299,1,0,0,0,2557, - 2558,7,7,0,0,2558,301,1,0,0,0,2559,2561,5,7,0,0,2560,2562,5,183, - 0,0,2561,2560,1,0,0,0,2561,2562,1,0,0,0,2562,2576,1,0,0,0,2563,2565, - 3,244,122,0,2564,2566,5,183,0,0,2565,2564,1,0,0,0,2565,2566,1,0, - 0,0,2566,2573,1,0,0,0,2567,2569,3,304,152,0,2568,2570,5,183,0,0, - 2569,2568,1,0,0,0,2569,2570,1,0,0,0,2570,2572,1,0,0,0,2571,2567, - 1,0,0,0,2572,2575,1,0,0,0,2573,2571,1,0,0,0,2573,2574,1,0,0,0,2574, - 2577,1,0,0,0,2575,2573,1,0,0,0,2576,2563,1,0,0,0,2576,2577,1,0,0, - 0,2577,2578,1,0,0,0,2578,2579,5,8,0,0,2579,303,1,0,0,0,2580,2582, - 5,4,0,0,2581,2583,5,183,0,0,2582,2581,1,0,0,0,2582,2583,1,0,0,0, - 2583,2585,1,0,0,0,2584,2586,3,244,122,0,2585,2584,1,0,0,0,2585,2586, - 1,0,0,0,2586,305,1,0,0,0,2587,2589,5,9,0,0,2588,2590,5,183,0,0,2589, - 2588,1,0,0,0,2589,2590,1,0,0,0,2590,2591,1,0,0,0,2591,2593,3,308, - 154,0,2592,2594,5,183,0,0,2593,2592,1,0,0,0,2593,2594,1,0,0,0,2594, - 2605,1,0,0,0,2595,2597,5,4,0,0,2596,2598,5,183,0,0,2597,2596,1,0, - 0,0,2597,2598,1,0,0,0,2598,2599,1,0,0,0,2599,2601,3,308,154,0,2600, - 2602,5,183,0,0,2601,2600,1,0,0,0,2601,2602,1,0,0,0,2602,2604,1,0, - 0,0,2603,2595,1,0,0,0,2604,2607,1,0,0,0,2605,2603,1,0,0,0,2605,2606, - 1,0,0,0,2606,2608,1,0,0,0,2607,2605,1,0,0,0,2608,2609,5,10,0,0,2609, - 307,1,0,0,0,2610,2613,3,348,174,0,2611,2613,5,168,0,0,2612,2610, - 1,0,0,0,2612,2611,1,0,0,0,2613,2615,1,0,0,0,2614,2616,5,183,0,0, - 2615,2614,1,0,0,0,2615,2616,1,0,0,0,2616,2617,1,0,0,0,2617,2619, - 5,164,0,0,2618,2620,5,183,0,0,2619,2618,1,0,0,0,2619,2620,1,0,0, - 0,2620,2621,1,0,0,0,2621,2622,3,244,122,0,2622,309,1,0,0,0,2623, - 2625,5,2,0,0,2624,2626,5,183,0,0,2625,2624,1,0,0,0,2625,2626,1,0, - 0,0,2626,2627,1,0,0,0,2627,2629,3,244,122,0,2628,2630,5,183,0,0, - 2629,2628,1,0,0,0,2629,2630,1,0,0,0,2630,2631,1,0,0,0,2631,2632, - 5,3,0,0,2632,311,1,0,0,0,2633,2635,5,67,0,0,2634,2636,5,183,0,0, - 2635,2634,1,0,0,0,2635,2636,1,0,0,0,2636,2637,1,0,0,0,2637,2639, - 5,2,0,0,2638,2640,5,183,0,0,2639,2638,1,0,0,0,2639,2640,1,0,0,0, - 2640,2641,1,0,0,0,2641,2643,5,161,0,0,2642,2644,5,183,0,0,2643,2642, - 1,0,0,0,2643,2644,1,0,0,0,2644,2645,1,0,0,0,2645,2711,5,3,0,0,2646, - 2648,5,59,0,0,2647,2649,5,183,0,0,2648,2647,1,0,0,0,2648,2649,1, - 0,0,0,2649,2650,1,0,0,0,2650,2652,5,2,0,0,2651,2653,5,183,0,0,2652, - 2651,1,0,0,0,2652,2653,1,0,0,0,2653,2654,1,0,0,0,2654,2656,3,316, - 158,0,2655,2657,5,183,0,0,2656,2655,1,0,0,0,2656,2657,1,0,0,0,2657, - 2668,1,0,0,0,2658,2660,5,51,0,0,2659,2661,5,183,0,0,2660,2659,1, - 0,0,0,2660,2661,1,0,0,0,2661,2662,1,0,0,0,2662,2669,3,114,57,0,2663, - 2665,5,4,0,0,2664,2666,5,183,0,0,2665,2664,1,0,0,0,2665,2666,1,0, - 0,0,2666,2667,1,0,0,0,2667,2669,3,316,158,0,2668,2658,1,0,0,0,2668, - 2663,1,0,0,0,2669,2671,1,0,0,0,2670,2672,5,183,0,0,2671,2670,1,0, - 0,0,2671,2672,1,0,0,0,2672,2673,1,0,0,0,2673,2674,5,3,0,0,2674,2711, - 1,0,0,0,2675,2677,3,314,157,0,2676,2678,5,183,0,0,2677,2676,1,0, - 0,0,2677,2678,1,0,0,0,2678,2679,1,0,0,0,2679,2681,5,2,0,0,2680,2682, - 5,183,0,0,2681,2680,1,0,0,0,2681,2682,1,0,0,0,2682,2687,1,0,0,0, - 2683,2685,5,77,0,0,2684,2686,5,183,0,0,2685,2684,1,0,0,0,2685,2686, - 1,0,0,0,2686,2688,1,0,0,0,2687,2683,1,0,0,0,2687,2688,1,0,0,0,2688, - 2706,1,0,0,0,2689,2691,3,316,158,0,2690,2692,5,183,0,0,2691,2690, - 1,0,0,0,2691,2692,1,0,0,0,2692,2703,1,0,0,0,2693,2695,5,4,0,0,2694, - 2696,5,183,0,0,2695,2694,1,0,0,0,2695,2696,1,0,0,0,2696,2697,1,0, - 0,0,2697,2699,3,316,158,0,2698,2700,5,183,0,0,2699,2698,1,0,0,0, - 2699,2700,1,0,0,0,2700,2702,1,0,0,0,2701,2693,1,0,0,0,2702,2705, - 1,0,0,0,2703,2701,1,0,0,0,2703,2704,1,0,0,0,2704,2707,1,0,0,0,2705, - 2703,1,0,0,0,2706,2689,1,0,0,0,2706,2707,1,0,0,0,2707,2708,1,0,0, - 0,2708,2709,5,3,0,0,2709,2711,1,0,0,0,2710,2633,1,0,0,0,2710,2646, - 1,0,0,0,2710,2675,1,0,0,0,2711,313,1,0,0,0,2712,2713,3,348,174,0, - 2713,315,1,0,0,0,2714,2716,3,348,174,0,2715,2717,5,183,0,0,2716, - 2715,1,0,0,0,2716,2717,1,0,0,0,2717,2718,1,0,0,0,2718,2719,5,164, - 0,0,2719,2721,5,6,0,0,2720,2722,5,183,0,0,2721,2720,1,0,0,0,2721, - 2722,1,0,0,0,2722,2724,1,0,0,0,2723,2714,1,0,0,0,2723,2724,1,0,0, - 0,2724,2725,1,0,0,0,2725,2728,3,244,122,0,2726,2728,3,318,159,0, - 2727,2723,1,0,0,0,2727,2726,1,0,0,0,2728,317,1,0,0,0,2729,2731,3, - 320,160,0,2730,2732,5,183,0,0,2731,2730,1,0,0,0,2731,2732,1,0,0, - 0,2732,2733,1,0,0,0,2733,2734,5,166,0,0,2734,2736,5,15,0,0,2735, - 2737,5,183,0,0,2736,2735,1,0,0,0,2736,2737,1,0,0,0,2737,2738,1,0, - 0,0,2738,2740,3,244,122,0,2739,2741,5,183,0,0,2740,2739,1,0,0,0, - 2740,2741,1,0,0,0,2741,319,1,0,0,0,2742,2767,3,348,174,0,2743,2745, - 5,2,0,0,2744,2746,5,183,0,0,2745,2744,1,0,0,0,2745,2746,1,0,0,0, - 2746,2747,1,0,0,0,2747,2749,3,348,174,0,2748,2750,5,183,0,0,2749, - 2748,1,0,0,0,2749,2750,1,0,0,0,2750,2761,1,0,0,0,2751,2753,5,4,0, - 0,2752,2754,5,183,0,0,2753,2752,1,0,0,0,2753,2754,1,0,0,0,2754,2755, - 1,0,0,0,2755,2757,3,348,174,0,2756,2758,5,183,0,0,2757,2756,1,0, - 0,0,2757,2758,1,0,0,0,2758,2760,1,0,0,0,2759,2751,1,0,0,0,2760,2763, - 1,0,0,0,2761,2759,1,0,0,0,2761,2762,1,0,0,0,2762,2764,1,0,0,0,2763, - 2761,1,0,0,0,2764,2765,5,3,0,0,2765,2767,1,0,0,0,2766,2742,1,0,0, - 0,2766,2743,1,0,0,0,2767,321,1,0,0,0,2768,2773,3,212,106,0,2769, - 2771,5,183,0,0,2770,2769,1,0,0,0,2770,2771,1,0,0,0,2771,2772,1,0, - 0,0,2772,2774,3,214,107,0,2773,2770,1,0,0,0,2774,2775,1,0,0,0,2775, - 2773,1,0,0,0,2775,2776,1,0,0,0,2776,323,1,0,0,0,2777,2779,7,8,0, - 0,2778,2780,5,183,0,0,2779,2778,1,0,0,0,2779,2780,1,0,0,0,2780,2781, - 1,0,0,0,2781,2783,5,9,0,0,2782,2784,5,183,0,0,2783,2782,1,0,0,0, - 2783,2784,1,0,0,0,2784,2785,1,0,0,0,2785,2787,5,106,0,0,2786,2788, - 5,183,0,0,2787,2786,1,0,0,0,2787,2788,1,0,0,0,2788,2789,1,0,0,0, - 2789,2794,3,204,102,0,2790,2792,5,183,0,0,2791,2790,1,0,0,0,2791, - 2792,1,0,0,0,2792,2793,1,0,0,0,2793,2795,3,202,101,0,2794,2791,1, - 0,0,0,2794,2795,1,0,0,0,2795,2800,1,0,0,0,2796,2798,5,183,0,0,2797, - 2796,1,0,0,0,2797,2798,1,0,0,0,2798,2799,1,0,0,0,2799,2801,3,166, - 83,0,2800,2797,1,0,0,0,2800,2801,1,0,0,0,2801,2803,1,0,0,0,2802, - 2804,5,183,0,0,2803,2802,1,0,0,0,2803,2804,1,0,0,0,2804,2805,1,0, - 0,0,2805,2806,5,10,0,0,2806,325,1,0,0,0,2807,2809,5,5,0,0,2808,2810, - 5,183,0,0,2809,2808,1,0,0,0,2809,2810,1,0,0,0,2810,2813,1,0,0,0, - 2811,2814,3,340,170,0,2812,2814,5,161,0,0,2813,2811,1,0,0,0,2813, - 2812,1,0,0,0,2814,327,1,0,0,0,2815,2820,5,58,0,0,2816,2818,5,183, - 0,0,2817,2816,1,0,0,0,2817,2818,1,0,0,0,2818,2819,1,0,0,0,2819,2821, - 3,330,165,0,2820,2817,1,0,0,0,2821,2822,1,0,0,0,2822,2820,1,0,0, - 0,2822,2823,1,0,0,0,2823,2838,1,0,0,0,2824,2826,5,58,0,0,2825,2827, - 5,183,0,0,2826,2825,1,0,0,0,2826,2827,1,0,0,0,2827,2828,1,0,0,0, - 2828,2833,3,244,122,0,2829,2831,5,183,0,0,2830,2829,1,0,0,0,2830, - 2831,1,0,0,0,2831,2832,1,0,0,0,2832,2834,3,330,165,0,2833,2830,1, - 0,0,0,2834,2835,1,0,0,0,2835,2833,1,0,0,0,2835,2836,1,0,0,0,2836, - 2838,1,0,0,0,2837,2815,1,0,0,0,2837,2824,1,0,0,0,2838,2847,1,0,0, - 0,2839,2841,5,183,0,0,2840,2839,1,0,0,0,2840,2841,1,0,0,0,2841,2842, - 1,0,0,0,2842,2844,5,79,0,0,2843,2845,5,183,0,0,2844,2843,1,0,0,0, - 2844,2845,1,0,0,0,2845,2846,1,0,0,0,2846,2848,3,244,122,0,2847,2840, - 1,0,0,0,2847,2848,1,0,0,0,2848,2850,1,0,0,0,2849,2851,5,183,0,0, - 2850,2849,1,0,0,0,2850,2851,1,0,0,0,2851,2852,1,0,0,0,2852,2853, - 5,80,0,0,2853,329,1,0,0,0,2854,2856,5,148,0,0,2855,2857,5,183,0, - 0,2856,2855,1,0,0,0,2856,2857,1,0,0,0,2857,2858,1,0,0,0,2858,2860, - 3,244,122,0,2859,2861,5,183,0,0,2860,2859,1,0,0,0,2860,2861,1,0, - 0,0,2861,2862,1,0,0,0,2862,2864,5,137,0,0,2863,2865,5,183,0,0,2864, - 2863,1,0,0,0,2864,2865,1,0,0,0,2865,2866,1,0,0,0,2866,2867,3,244, - 122,0,2867,331,1,0,0,0,2868,2869,3,348,174,0,2869,333,1,0,0,0,2870, - 2873,3,344,172,0,2871,2873,3,342,171,0,2872,2870,1,0,0,0,2872,2871, - 1,0,0,0,2873,335,1,0,0,0,2874,2877,5,25,0,0,2875,2878,3,348,174, - 0,2876,2878,5,170,0,0,2877,2875,1,0,0,0,2877,2876,1,0,0,0,2878,337, - 1,0,0,0,2879,2881,3,290,145,0,2880,2882,5,183,0,0,2881,2880,1,0, - 0,0,2881,2882,1,0,0,0,2882,2883,1,0,0,0,2883,2884,3,326,163,0,2884, - 339,1,0,0,0,2885,2886,3,346,173,0,2886,341,1,0,0,0,2887,2888,5,170, - 0,0,2888,343,1,0,0,0,2889,2890,7,9,0,0,2890,345,1,0,0,0,2891,2892, - 3,348,174,0,2892,347,1,0,0,0,2893,2899,5,179,0,0,2894,2895,5,182, - 0,0,2895,2899,6,174,-1,0,2896,2899,5,171,0,0,2897,2899,3,350,175, - 0,2898,2893,1,0,0,0,2898,2894,1,0,0,0,2898,2896,1,0,0,0,2898,2897, - 1,0,0,0,2899,349,1,0,0,0,2900,2901,7,10,0,0,2901,351,1,0,0,0,2902, - 2903,7,11,0,0,2903,353,1,0,0,0,2904,2905,7,12,0,0,2905,355,1,0,0, - 0,2906,2907,7,13,0,0,2907,357,1,0,0,0,495,360,364,369,373,378,381, - 385,388,412,418,425,429,433,437,440,444,448,452,457,461,463,470, - 474,483,488,498,502,506,511,524,528,536,540,544,548,556,560,564, - 568,583,588,594,598,601,604,610,614,619,622,627,631,635,640,655, - 659,666,686,690,693,696,699,702,706,711,715,725,729,734,739,744, - 750,754,758,763,770,774,778,781,798,802,806,810,814,817,820,828, - 837,841,846,850,854,858,862,864,868,872,874,882,887,891,895,899, - 903,907,912,930,937,950,957,973,977,986,994,997,1007,1010,1018,1021, - 1027,1030,1036,1051,1069,1076,1083,1094,1117,1126,1132,1136,1141, - 1150,1154,1159,1165,1171,1177,1181,1185,1191,1195,1199,1205,1209, - 1213,1219,1223,1227,1231,1235,1241,1245,1249,1253,1257,1267,1273, - 1280,1285,1291,1296,1313,1319,1325,1329,1333,1342,1356,1361,1366, - 1370,1375,1381,1386,1389,1393,1397,1401,1407,1411,1416,1421,1425, - 1428,1430,1434,1438,1444,1448,1453,1457,1466,1472,1480,1484,1488, - 1492,1499,1503,1507,1511,1514,1517,1524,1530,1534,1539,1546,1549, - 1552,1557,1561,1565,1570,1574,1583,1587,1592,1606,1608,1610,1615, - 1625,1631,1638,1651,1655,1659,1663,1668,1673,1677,1681,1685,1689, - 1693,1699,1703,1707,1711,1716,1722,1725,1731,1734,1740,1744,1748, - 1752,1756,1761,1766,1770,1775,1778,1787,1796,1801,1814,1817,1825, - 1829,1834,1839,1843,1848,1854,1859,1866,1870,1874,1876,1880,1882, - 1886,1888,1894,1900,1904,1907,1910,1916,1919,1922,1926,1932,1935, - 1938,1942,1946,1950,1952,1956,1958,1962,1964,1968,1970,1976,1980, - 1984,1988,1992,1996,2000,2004,2008,2011,2017,2021,2025,2028,2033, - 2038,2042,2046,2049,2052,2057,2062,2065,2068,2071,2074,2077,2081, - 2085,2089,2093,2103,2106,2109,2113,2116,2119,2123,2127,2131,2135, - 2139,2143,2145,2148,2152,2156,2160,2164,2166,2172,2175,2178,2199, - 2209,2219,2224,2228,2235,2239,2243,2247,2251,2259,2263,2267,2271, - 2277,2281,2287,2291,2296,2301,2305,2310,2315,2319,2325,2332,2336, - 2342,2349,2353,2359,2366,2370,2375,2383,2386,2391,2400,2404,2407, - 2420,2423,2428,2442,2446,2450,2455,2458,2462,2467,2479,2483,2487, - 2491,2497,2501,2505,2511,2515,2519,2525,2529,2533,2537,2555,2561, - 2565,2569,2573,2576,2582,2585,2589,2593,2597,2601,2605,2612,2615, - 2619,2625,2629,2635,2639,2643,2648,2652,2656,2660,2665,2668,2671, - 2677,2681,2685,2687,2691,2695,2699,2703,2706,2710,2716,2721,2723, - 2727,2731,2736,2740,2745,2749,2753,2757,2761,2766,2770,2775,2779, - 2783,2787,2791,2794,2797,2800,2803,2809,2813,2817,2822,2826,2830, - 2835,2837,2840,2844,2847,2850,2856,2860,2864,2872,2877,2881,2898 + 7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180, + 2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186, + 7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191, + 2,192,7,192,1,0,1,0,3,0,389,8,0,1,0,1,0,3,0,393,8,0,1,0,5,0,396, + 8,0,10,0,12,0,399,9,0,1,0,3,0,402,8,0,1,0,1,0,1,1,3,1,407,8,1,1, + 1,3,1,410,8,1,1,1,1,1,3,1,414,8,1,1,1,3,1,417,8,1,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,445,8,2,1,3,1,3,1,3,1,3,3,3,451,8, + 3,1,3,1,3,1,3,1,3,1,3,3,3,458,8,3,1,3,1,3,3,3,462,8,3,1,3,1,3,3, + 3,466,8,3,1,3,1,3,3,3,470,8,3,1,4,3,4,473,8,4,1,4,1,4,3,4,477,8, + 4,1,4,1,4,3,4,481,8,4,1,4,1,4,3,4,485,8,4,1,4,5,4,488,8,4,10,4,12, + 4,491,9,4,1,4,3,4,494,8,4,3,4,496,8,4,1,4,1,4,1,5,1,5,1,5,3,5,503, + 8,5,1,5,1,5,3,5,507,8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,516,8,5, + 1,5,1,5,1,5,3,5,521,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,531, + 8,6,1,6,1,6,3,6,535,8,6,1,6,1,6,3,6,539,8,6,1,6,5,6,542,8,6,10,6, + 12,6,545,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,557,8,7, + 1,7,1,7,3,7,561,8,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,569,8,7,1,7,1,7, + 3,7,573,8,7,1,7,1,7,3,7,577,8,7,1,7,1,7,3,7,581,8,7,1,8,1,8,1,8, + 1,8,1,8,1,8,3,8,589,8,8,1,8,1,8,3,8,593,8,8,1,8,1,8,3,8,597,8,8, + 1,8,1,8,3,8,601,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,3,10,616,8,10,1,10,1,10,1,10,3,10,621,8,10,1,10,1, + 10,1,10,1,10,3,10,627,8,10,1,10,1,10,3,10,631,8,10,1,10,3,10,634, + 8,10,1,10,3,10,637,8,10,1,10,1,10,1,11,1,11,3,11,643,8,11,1,11,1, + 11,3,11,647,8,11,1,11,5,11,650,8,11,10,11,12,11,653,9,11,3,11,655, + 8,11,1,11,1,11,3,11,659,8,11,1,11,3,11,662,8,11,1,11,3,11,665,8, + 11,1,12,1,12,3,12,669,8,12,1,12,1,12,3,12,673,8,12,1,12,1,12,1,13, + 1,13,3,13,679,8,13,1,13,1,13,3,13,683,8,13,1,13,5,13,686,8,13,10, + 13,12,13,689,9,13,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,3,16,706,8,16,1,17,1,17,1,17,1,17,1, + 17,1,17,1,18,1,18,1,18,3,18,717,8,18,1,19,1,19,1,19,1,19,3,19,723, + 8,19,1,19,1,19,3,19,727,8,19,1,19,1,19,1,19,1,19,1,19,3,19,734,8, + 19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, + 21,1,21,1,21,1,21,1,21,1,21,3,21,754,8,21,1,21,1,21,3,21,758,8,21, + 1,21,3,21,761,8,21,1,21,3,21,764,8,21,1,21,3,21,767,8,21,1,21,3, + 21,770,8,21,1,21,1,21,3,21,774,8,21,1,21,5,21,777,8,21,10,21,12, + 21,780,9,21,1,21,3,21,783,8,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22, + 1,22,3,22,793,8,22,1,22,1,22,3,22,797,8,22,1,22,5,22,800,8,22,10, + 22,12,22,803,9,22,1,23,1,23,3,23,807,8,23,1,23,1,23,1,23,3,23,812, + 8,23,1,23,1,23,1,24,1,24,3,24,818,8,24,1,24,1,24,3,24,822,8,24,1, + 24,1,24,3,24,826,8,24,1,24,5,24,829,8,24,10,24,12,24,832,9,24,1, + 24,1,24,1,24,1,24,3,24,838,8,24,1,24,1,24,3,24,842,8,24,1,24,1,24, + 3,24,846,8,24,1,24,3,24,849,8,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,26,3,26,866,8,26,1,26,1, + 26,3,26,870,8,26,1,26,1,26,3,26,874,8,26,1,26,1,26,3,26,878,8,26, + 1,26,1,26,3,26,882,8,26,1,26,3,26,885,8,26,1,26,3,26,888,8,26,1, + 26,1,26,1,26,1,26,1,26,1,26,3,26,896,8,26,1,26,1,26,1,26,3,26,901, + 8,26,1,26,1,26,3,26,905,8,26,1,26,1,26,3,26,909,8,26,1,26,1,26,3, + 26,913,8,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,922,8,27,1,27, + 1,27,3,27,926,8,27,1,27,1,27,1,27,3,27,931,8,27,1,27,1,27,3,27,935, + 8,27,1,27,1,27,3,27,939,8,27,1,27,1,27,3,27,943,8,27,1,27,1,27,3, + 27,947,8,27,3,27,949,8,27,1,27,1,27,3,27,953,8,27,1,27,1,27,3,27, + 957,8,27,3,27,959,8,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,967,8, + 27,1,27,1,27,1,27,3,27,972,8,27,1,27,1,27,3,27,976,8,27,1,27,1,27, + 3,27,980,8,27,1,27,1,27,3,27,984,8,27,1,28,1,28,1,28,3,28,989,8, + 28,1,28,1,28,1,28,1,28,3,28,995,8,28,1,28,1,28,3,28,999,8,28,1,28, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1012,8,28, + 1,28,1,28,3,28,1016,8,28,1,28,3,28,1019,8,28,1,28,3,28,1022,8,28, + 1,28,3,28,1025,8,28,1,29,1,29,3,29,1029,8,29,1,30,1,30,3,30,1033, + 8,30,1,30,3,30,1036,8,30,1,30,3,30,1039,8,30,1,30,1,30,3,30,1043, + 8,30,1,30,1,30,3,30,1047,8,30,1,30,1,30,1,31,1,31,3,31,1053,8,31, + 1,31,1,31,3,31,1057,8,31,1,31,1,31,3,31,1061,8,31,1,31,1,31,3,31, + 1065,8,31,1,31,1,31,1,32,1,32,3,32,1071,8,32,1,32,1,32,3,32,1075, + 8,32,1,32,1,32,3,32,1079,8,32,1,32,1,32,3,32,1083,8,32,1,32,1,32, + 1,33,1,33,3,33,1089,8,33,1,33,1,33,3,33,1093,8,33,1,33,5,33,1096, + 8,33,10,33,12,33,1099,9,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1, + 34,1,34,3,34,1110,8,34,1,35,1,35,3,35,1114,8,35,1,35,1,35,3,35,1118, + 8,35,1,35,5,35,1121,8,35,10,35,12,35,1124,9,35,1,36,1,36,1,36,1, + 36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,1141, + 8,37,1,37,1,37,1,37,5,37,1146,8,37,10,37,12,37,1149,9,37,1,38,1, + 38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1161,8,38,1,39,1, + 39,1,39,1,39,1,39,3,39,1168,8,39,1,40,1,40,1,40,1,40,1,40,1,40,1, + 40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1184,8,41,1,41,1,41,3, + 41,1188,8,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,3,42,1197,8,42,1, + 42,1,42,1,43,1,43,1,43,1,43,3,43,1205,8,43,1,43,3,43,1208,8,43,1, + 43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1218,8,44,1,44,3,44,1221, + 8,44,1,45,1,45,1,45,1,45,1,45,1,45,3,45,1229,8,45,1,45,3,45,1232, + 8,45,1,46,1,46,1,46,1,46,3,46,1238,8,46,1,46,3,46,1241,8,46,1,46, + 1,46,1,47,1,47,3,47,1247,8,47,1,47,1,47,1,48,1,48,1,48,1,48,1,49, + 1,49,1,49,1,49,1,49,1,49,1,49,3,49,1262,8,49,1,49,1,49,1,49,1,49, + 1,49,1,49,1,49,1,49,3,49,1272,8,49,1,49,3,49,1275,8,49,1,50,1,50, + 3,50,1279,8,50,1,50,1,50,3,50,1283,8,50,1,50,1,50,1,51,1,51,1,51, + 1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52, + 1302,8,52,1,53,1,53,1,53,1,53,1,53,3,53,1309,8,53,1,53,1,53,1,53, + 1,53,1,53,3,53,1316,8,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55, + 1,55,3,55,1327,8,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57, + 1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,3,58, + 1350,8,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,3,59,1359,8,59,1,59, + 1,59,1,60,1,60,1,60,1,60,1,60,1,60,3,60,1369,8,60,1,60,1,60,3,60, + 1373,8,60,1,60,1,60,3,60,1377,8,60,1,60,1,60,3,60,1381,8,60,1,60, + 5,60,1384,8,60,10,60,12,60,1387,9,60,1,60,3,60,1390,8,60,1,60,1, + 60,1,61,1,61,1,61,1,61,1,62,1,62,3,62,1400,8,62,1,62,1,62,3,62,1404, + 8,62,1,62,5,62,1407,8,62,10,62,12,62,1410,9,62,1,63,1,63,1,63,1, + 63,1,64,1,64,3,64,1418,8,64,1,64,1,64,3,64,1422,8,64,1,64,5,64,1425, + 8,64,10,64,12,64,1428,9,64,1,65,1,65,1,65,3,65,1433,8,65,1,65,1, + 65,1,65,1,65,3,65,1439,8,65,1,66,1,66,1,66,1,66,3,66,1445,8,66,1, + 66,1,66,3,66,1449,8,66,1,66,1,66,3,66,1453,8,66,1,66,1,66,1,67,1, + 67,3,67,1459,8,67,1,67,1,67,3,67,1463,8,67,1,67,1,67,3,67,1467,8, + 67,1,67,1,67,1,68,1,68,3,68,1473,8,68,1,68,1,68,3,68,1477,8,68,1, + 68,1,68,3,68,1481,8,68,1,68,1,68,1,69,1,69,3,69,1487,8,69,1,69,1, + 69,3,69,1491,8,69,1,69,1,69,3,69,1495,8,69,1,69,1,69,3,69,1499,8, + 69,1,69,1,69,3,69,1503,8,69,1,69,1,69,1,70,1,70,3,70,1509,8,70,1, + 70,1,70,3,70,1513,8,70,1,70,1,70,3,70,1517,8,70,1,70,1,70,3,70,1521, + 8,70,1,70,1,70,3,70,1525,8,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71, + 1,71,3,71,1535,8,71,1,71,1,71,5,71,1539,8,71,10,71,12,71,1542,9, + 71,1,72,1,72,5,72,1546,8,72,10,72,12,72,1549,9,72,1,73,1,73,3,73, + 1553,8,73,1,73,1,73,1,74,1,74,3,74,1559,8,74,1,75,1,75,1,75,3,75, + 1564,8,75,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77, + 1,77,1,77,1,77,1,77,3,77,1581,8,77,1,78,1,78,1,78,1,78,3,78,1587, + 8,78,1,79,1,79,1,79,1,79,3,79,1593,8,79,1,79,1,79,3,79,1597,8,79, + 1,80,1,80,3,80,1601,8,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,3,80, + 1610,8,80,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,83,1,83,1,84, + 1,84,3,84,1624,8,84,1,84,5,84,1627,8,84,10,84,12,84,1630,9,84,1, + 84,1,84,3,84,1634,8,84,4,84,1636,8,84,11,84,12,84,1637,1,84,1,84, + 1,84,3,84,1643,8,84,1,85,1,85,1,85,1,85,3,85,1649,8,85,1,85,1,85, + 1,85,3,85,1654,8,85,1,85,3,85,1657,8,85,1,86,1,86,3,86,1661,8,86, + 1,87,1,87,3,87,1665,8,87,5,87,1667,8,87,10,87,12,87,1670,9,87,1, + 87,1,87,1,87,3,87,1675,8,87,5,87,1677,8,87,10,87,12,87,1680,9,87, + 1,87,1,87,3,87,1684,8,87,1,87,5,87,1687,8,87,10,87,12,87,1690,9, + 87,1,87,3,87,1693,8,87,1,87,3,87,1696,8,87,3,87,1698,8,87,1,88,1, + 88,3,88,1702,8,88,4,88,1704,8,88,11,88,12,88,1705,1,88,1,88,1,89, + 1,89,3,89,1712,8,89,5,89,1714,8,89,10,89,12,89,1717,9,89,1,89,1, + 89,3,89,1721,8,89,5,89,1723,8,89,10,89,12,89,1726,9,89,1,89,1,89, + 1,90,1,90,1,90,1,90,3,90,1734,8,90,1,91,1,91,1,91,1,91,3,91,1740, + 8,91,1,92,1,92,1,92,1,92,1,92,1,92,3,92,1748,8,92,1,92,1,92,3,92, + 1752,8,92,1,92,1,92,3,92,1756,8,92,1,92,1,92,3,92,1760,8,92,1,92, + 1,92,1,92,1,92,1,92,3,92,1767,8,92,1,92,1,92,3,92,1771,8,92,1,92, + 1,92,3,92,1775,8,92,1,92,1,92,3,92,1779,8,92,1,92,3,92,1782,8,92, + 1,92,3,92,1785,8,92,1,93,1,93,1,93,1,93,1,93,3,93,1792,8,93,1,93, + 1,93,1,94,1,94,3,94,1798,8,94,1,94,1,94,3,94,1802,8,94,1,94,5,94, + 1805,8,94,10,94,12,94,1808,9,94,1,95,1,95,1,95,1,95,3,95,1814,8, + 95,1,95,3,95,1817,8,95,1,95,3,95,1820,8,95,1,95,1,95,1,95,3,95,1825, + 8,95,1,96,1,96,3,96,1829,8,96,1,96,1,96,3,96,1833,8,96,1,96,1,96, + 1,96,3,96,1838,8,96,1,96,1,96,3,96,1842,8,96,1,97,1,97,1,97,1,97, + 1,98,1,98,1,98,3,98,1851,8,98,1,98,1,98,3,98,1855,8,98,1,98,1,98, + 1,98,3,98,1860,8,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98, + 1,98,4,98,1872,8,98,11,98,12,98,1873,5,98,1876,8,98,10,98,12,98, + 1879,9,98,1,99,1,99,3,99,1883,8,99,1,99,1,99,1,99,1,99,1,99,1,99, + 1,100,1,100,3,100,1893,8,100,1,100,1,100,1,101,1,101,3,101,1899, + 8,101,1,101,1,101,1,101,5,101,1904,8,101,10,101,12,101,1907,9,101, + 1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,3,102, + 1919,8,102,1,103,1,103,3,103,1923,8,103,1,103,1,103,3,103,1927,8, + 103,1,103,1,103,3,103,1931,8,103,1,103,5,103,1934,8,103,10,103,12, + 103,1937,9,103,1,103,1,103,3,103,1941,8,103,1,103,1,103,3,103,1945, + 8,103,1,103,1,103,3,103,1949,8,103,1,103,1,103,3,103,1953,8,103, + 1,104,1,104,3,104,1957,8,104,1,104,1,104,3,104,1961,8,104,1,104, + 1,104,1,105,1,105,3,105,1967,8,105,1,105,1,105,3,105,1971,8,105, + 1,105,1,105,3,105,1975,8,105,1,105,1,105,3,105,1979,8,105,1,105, + 5,105,1982,8,105,10,105,12,105,1985,9,105,1,106,1,106,1,106,3,106, + 1990,8,106,1,106,3,106,1993,8,106,1,107,1,107,1,107,1,108,3,108, + 1999,8,108,1,108,3,108,2002,8,108,1,108,1,108,1,108,1,108,3,108, + 2008,8,108,1,108,1,108,3,108,2012,8,108,1,108,1,108,3,108,2016,8, + 108,1,109,1,109,3,109,2020,8,109,1,109,1,109,3,109,2024,8,109,1, + 109,5,109,2027,8,109,10,109,12,109,2030,9,109,1,109,1,109,3,109, + 2034,8,109,1,109,1,109,3,109,2038,8,109,1,109,5,109,2041,8,109,10, + 109,12,109,2044,9,109,3,109,2046,8,109,1,110,1,110,1,110,1,110,1, + 110,1,110,1,110,3,110,2055,8,110,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,3,111,2064,8,111,1,111,5,111,2067,8,111,10,111,12,111, + 2070,9,111,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,114, + 1,114,3,114,2082,8,114,1,114,3,114,2085,8,114,1,115,1,115,1,115, + 1,115,1,116,1,116,3,116,2093,8,116,1,116,1,116,3,116,2097,8,116, + 1,116,5,116,2100,8,116,10,116,12,116,2103,9,116,1,117,1,117,3,117, + 2107,8,117,1,117,1,117,3,117,2111,8,117,1,117,1,117,1,117,3,117, + 2116,8,117,1,118,1,118,1,119,1,119,3,119,2122,8,119,1,119,5,119, + 2125,8,119,10,119,12,119,2128,9,119,1,119,1,119,1,119,1,119,3,119, + 2134,8,119,1,120,1,120,3,120,2138,8,120,1,120,1,120,3,120,2142,8, + 120,3,120,2144,8,120,1,120,1,120,3,120,2148,8,120,3,120,2150,8,120, + 1,120,1,120,3,120,2154,8,120,3,120,2156,8,120,1,120,1,120,1,121, + 1,121,3,121,2162,8,121,1,121,1,121,1,122,1,122,3,122,2168,8,122, + 1,122,1,122,3,122,2172,8,122,1,122,3,122,2175,8,122,1,122,3,122, + 2178,8,122,1,122,1,122,1,122,1,122,3,122,2184,8,122,1,122,3,122, + 2187,8,122,1,122,3,122,2190,8,122,1,122,1,122,3,122,2194,8,122,1, + 122,1,122,1,122,1,122,3,122,2200,8,122,1,122,3,122,2203,8,122,1, + 122,3,122,2206,8,122,1,122,1,122,3,122,2210,8,122,1,123,1,123,3, + 123,2214,8,123,1,123,1,123,3,123,2218,8,123,3,123,2220,8,123,1,123, + 1,123,3,123,2224,8,123,3,123,2226,8,123,1,123,1,123,3,123,2230,8, + 123,3,123,2232,8,123,1,123,1,123,3,123,2236,8,123,3,123,2238,8,123, + 1,123,1,123,1,124,1,124,3,124,2244,8,124,1,124,1,124,3,124,2248, + 8,124,1,124,1,124,3,124,2252,8,124,1,124,1,124,3,124,2256,8,124, + 1,124,1,124,3,124,2260,8,124,1,124,1,124,3,124,2264,8,124,1,124, + 1,124,3,124,2268,8,124,1,124,1,124,3,124,2272,8,124,5,124,2274,8, + 124,10,124,12,124,2277,9,124,3,124,2279,8,124,1,124,1,124,1,125, + 1,125,3,125,2285,8,125,1,125,1,125,3,125,2289,8,125,1,125,1,125, + 3,125,2293,8,125,1,125,3,125,2296,8,125,1,125,5,125,2299,8,125,10, + 125,12,125,2302,9,125,1,126,1,126,3,126,2306,8,126,1,126,1,126,3, + 126,2310,8,126,1,126,1,126,3,126,2314,8,126,1,126,3,126,2317,8,126, + 1,126,3,126,2320,8,126,1,126,5,126,2323,8,126,10,126,12,126,2326, + 9,126,1,127,1,127,3,127,2330,8,127,1,127,3,127,2333,8,127,1,127, + 3,127,2336,8,127,1,127,3,127,2339,8,127,1,127,3,127,2342,8,127,1, + 127,3,127,2345,8,127,1,128,1,128,3,128,2349,8,128,1,128,1,128,3, + 128,2353,8,128,1,128,1,128,3,128,2357,8,128,1,128,1,128,3,128,2361, + 8,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,2371, + 8,128,1,129,3,129,2374,8,129,1,129,3,129,2377,8,129,1,129,1,129, + 3,129,2381,8,129,1,129,3,129,2384,8,129,1,129,3,129,2387,8,129,1, + 130,1,130,3,130,2391,8,130,1,130,1,130,3,130,2395,8,130,1,130,1, + 130,3,130,2399,8,130,1,130,1,130,3,130,2403,8,130,1,130,1,130,3, + 130,2407,8,130,1,130,1,130,3,130,2411,8,130,3,130,2413,8,130,1,130, + 3,130,2416,8,130,1,130,1,130,3,130,2420,8,130,1,130,1,130,3,130, + 2424,8,130,1,130,1,130,3,130,2428,8,130,1,130,1,130,3,130,2432,8, + 130,3,130,2434,8,130,1,130,1,130,1,131,1,131,3,131,2440,8,131,1, + 131,3,131,2443,8,131,1,131,3,131,2446,8,131,1,131,1,131,1,132,1, + 132,1,133,1,133,1,134,1,134,1,134,3,134,2457,8,134,1,135,1,135,1, + 136,1,136,1,137,1,137,1,137,1,137,1,137,5,137,2468,8,137,10,137, + 12,137,2471,9,137,1,138,1,138,1,138,1,138,1,138,5,138,2478,8,138, + 10,138,12,138,2481,9,138,1,139,1,139,1,139,1,139,1,139,5,139,2488, + 8,139,10,139,12,139,2491,9,139,1,140,1,140,3,140,2495,8,140,5,140, + 2497,8,140,10,140,12,140,2500,9,140,1,140,1,140,1,141,1,141,3,141, + 2506,8,141,1,141,1,141,3,141,2510,8,141,1,141,1,141,3,141,2514,8, + 141,1,141,1,141,3,141,2518,8,141,1,141,1,141,3,141,2522,8,141,1, + 141,1,141,1,141,1,141,1,141,1,141,3,141,2530,8,141,1,141,1,141,3, + 141,2534,8,141,1,141,1,141,3,141,2538,8,141,1,141,1,141,3,141,2542, + 8,141,1,141,1,141,4,141,2546,8,141,11,141,12,141,2547,1,141,1,141, + 3,141,2552,8,141,1,142,1,142,1,143,1,143,3,143,2558,8,143,1,143, + 1,143,3,143,2562,8,143,1,143,5,143,2565,8,143,10,143,12,143,2568, + 9,143,1,144,1,144,3,144,2572,8,144,1,144,1,144,3,144,2576,8,144, + 1,144,5,144,2579,8,144,10,144,12,144,2582,9,144,1,145,1,145,3,145, + 2586,8,145,1,145,1,145,3,145,2590,8,145,1,145,1,145,5,145,2594,8, + 145,10,145,12,145,2597,9,145,1,146,1,146,1,147,1,147,3,147,2603, + 8,147,1,147,1,147,3,147,2607,8,147,1,147,1,147,5,147,2611,8,147, + 10,147,12,147,2614,9,147,1,148,1,148,1,149,1,149,3,149,2620,8,149, + 1,149,1,149,3,149,2624,8,149,1,149,1,149,5,149,2628,8,149,10,149, + 12,149,2631,9,149,1,150,1,150,1,151,1,151,3,151,2637,8,151,1,151, + 1,151,3,151,2641,8,151,1,151,5,151,2644,8,151,10,151,12,151,2647, + 9,151,1,152,1,152,1,152,4,152,2652,8,152,11,152,12,152,2653,1,152, + 3,152,2657,8,152,1,153,1,153,1,153,3,153,2662,8,153,1,153,1,153, + 1,153,1,153,1,153,1,153,1,153,3,153,2671,8,153,1,153,1,153,3,153, + 2675,8,153,1,153,3,153,2678,8,153,1,154,1,154,1,154,1,154,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,3,154,2691,8,154,1,154,3,154, + 2694,8,154,1,154,1,154,1,155,3,155,2699,8,155,1,155,1,155,1,156, + 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2713, + 8,156,1,157,1,157,3,157,2717,8,157,5,157,2719,8,157,10,157,12,157, + 2722,9,157,1,157,1,157,3,157,2726,8,157,1,157,3,157,2729,8,157,1, + 158,1,158,3,158,2733,8,158,1,158,5,158,2736,8,158,10,158,12,158, + 2739,9,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159, + 3,159,2750,8,159,1,160,1,160,3,160,2754,8,160,1,160,1,160,3,160, + 2758,8,160,1,160,1,160,3,160,2762,8,160,1,160,1,160,1,160,1,160, + 3,160,2768,8,160,1,160,1,160,3,160,2772,8,160,1,160,1,160,3,160, + 2776,8,160,1,160,1,160,1,160,1,160,3,160,2782,8,160,1,160,1,160, + 3,160,2786,8,160,1,160,1,160,3,160,2790,8,160,1,160,1,160,1,160, + 1,160,3,160,2796,8,160,1,160,1,160,3,160,2800,8,160,1,160,1,160, + 3,160,2804,8,160,1,160,1,160,3,160,2808,8,160,1,161,1,161,1,161, + 1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163, + 1,163,1,163,3,163,2826,8,163,1,164,1,164,1,165,1,165,3,165,2832, + 8,165,1,165,1,165,3,165,2836,8,165,1,165,1,165,3,165,2840,8,165, + 5,165,2842,8,165,10,165,12,165,2845,9,165,3,165,2847,8,165,1,165, + 1,165,1,166,1,166,3,166,2853,8,166,1,166,3,166,2856,8,166,1,167, + 1,167,3,167,2860,8,167,1,167,1,167,3,167,2864,8,167,1,167,1,167, + 3,167,2868,8,167,1,167,1,167,3,167,2872,8,167,5,167,2874,8,167,10, + 167,12,167,2877,9,167,1,167,1,167,1,168,1,168,3,168,2883,8,168,1, + 168,3,168,2886,8,168,1,168,1,168,3,168,2890,8,168,1,168,1,168,1, + 169,1,169,3,169,2896,8,169,1,169,1,169,3,169,2900,8,169,1,169,1, + 169,1,170,1,170,3,170,2906,8,170,1,170,1,170,3,170,2910,8,170,1, + 170,1,170,3,170,2914,8,170,1,170,1,170,1,170,3,170,2919,8,170,1, + 170,1,170,3,170,2923,8,170,1,170,1,170,3,170,2927,8,170,1,170,1, + 170,3,170,2931,8,170,1,170,1,170,1,170,3,170,2936,8,170,1,170,3, + 170,2939,8,170,1,170,3,170,2942,8,170,1,170,1,170,1,170,1,170,3, + 170,2948,8,170,1,170,1,170,3,170,2952,8,170,1,170,1,170,3,170,2956, + 8,170,3,170,2958,8,170,1,170,1,170,3,170,2962,8,170,1,170,1,170, + 3,170,2966,8,170,1,170,1,170,3,170,2970,8,170,5,170,2972,8,170,10, + 170,12,170,2975,9,170,3,170,2977,8,170,1,170,1,170,3,170,2981,8, + 170,1,171,1,171,1,172,1,172,3,172,2987,8,172,1,172,1,172,1,172,3, + 172,2992,8,172,3,172,2994,8,172,1,172,1,172,3,172,2998,8,172,1,173, + 1,173,3,173,3002,8,173,1,173,1,173,1,173,3,173,3007,8,173,1,173, + 1,173,3,173,3011,8,173,1,174,1,174,1,174,3,174,3016,8,174,1,174, + 1,174,3,174,3020,8,174,1,174,1,174,3,174,3024,8,174,1,174,1,174, + 3,174,3028,8,174,5,174,3030,8,174,10,174,12,174,3033,9,174,1,174, + 1,174,3,174,3037,8,174,1,175,1,175,3,175,3041,8,175,1,175,4,175, + 3044,8,175,11,175,12,175,3045,1,176,1,176,3,176,3050,8,176,1,176, + 1,176,3,176,3054,8,176,1,176,1,176,3,176,3058,8,176,1,176,1,176, + 3,176,3062,8,176,1,176,3,176,3065,8,176,1,176,3,176,3068,8,176,1, + 176,3,176,3071,8,176,1,176,3,176,3074,8,176,1,176,1,176,1,177,1, + 177,3,177,3080,8,177,1,177,1,177,3,177,3084,8,177,1,178,1,178,3, + 178,3088,8,178,1,178,4,178,3091,8,178,11,178,12,178,3092,1,178,1, + 178,3,178,3097,8,178,1,178,1,178,3,178,3101,8,178,1,178,4,178,3104, + 8,178,11,178,12,178,3105,3,178,3108,8,178,1,178,3,178,3111,8,178, + 1,178,1,178,3,178,3115,8,178,1,178,3,178,3118,8,178,1,178,3,178, + 3121,8,178,1,178,1,178,1,179,1,179,3,179,3127,8,179,1,179,1,179, + 3,179,3131,8,179,1,179,1,179,3,179,3135,8,179,1,179,1,179,1,180, + 1,180,1,181,1,181,3,181,3143,8,181,1,182,1,182,1,182,3,182,3148, + 8,182,1,183,1,183,3,183,3152,8,183,1,183,1,183,1,184,1,184,1,185, + 1,185,1,186,1,186,1,187,1,187,1,187,3,187,3165,8,187,1,188,1,188, + 1,188,1,188,1,188,3,188,3172,8,188,1,189,1,189,1,190,1,190,1,191, + 1,191,1,192,1,192,1,192,0,2,142,196,193,0,2,4,6,8,10,12,14,16,18, + 20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62, + 64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104, + 106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136, + 138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168, + 170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200, + 202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232, + 234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264, + 266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296, + 298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328, + 330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360, + 362,364,366,368,370,372,374,376,378,380,382,384,0,15,4,0,92,92,108, + 108,134,134,141,141,2,0,53,53,75,75,2,0,53,54,75,76,2,0,6,6,12,16, + 1,0,18,19,2,0,20,20,171,171,2,0,21,22,166,166,1,0,169,170,2,0,87, + 87,146,146,2,0,68,68,83,83,1,0,182,183,32,0,47,47,49,50,52,52,55, + 58,61,61,63,64,66,68,70,71,74,74,77,77,79,79,84,86,88,89,92,92,96, + 96,98,98,100,100,102,102,104,107,109,112,114,115,127,132,134,135, + 138,138,140,140,143,143,145,145,147,147,150,152,156,156,160,165, + 167,167,2,0,13,13,26,29,2,0,15,15,30,33,2,0,34,44,171,171,3606,0, + 386,1,0,0,0,2,406,1,0,0,0,4,444,1,0,0,0,6,446,1,0,0,0,8,472,1,0, + 0,0,10,520,1,0,0,0,12,522,1,0,0,0,14,552,1,0,0,0,16,582,1,0,0,0, + 18,602,1,0,0,0,20,608,1,0,0,0,22,664,1,0,0,0,24,666,1,0,0,0,26,676, + 1,0,0,0,28,690,1,0,0,0,30,694,1,0,0,0,32,698,1,0,0,0,34,707,1,0, + 0,0,36,713,1,0,0,0,38,733,1,0,0,0,40,735,1,0,0,0,42,747,1,0,0,0, + 44,790,1,0,0,0,46,804,1,0,0,0,48,848,1,0,0,0,50,850,1,0,0,0,52,856, + 1,0,0,0,54,914,1,0,0,0,56,985,1,0,0,0,58,1028,1,0,0,0,60,1030,1, + 0,0,0,62,1050,1,0,0,0,64,1068,1,0,0,0,66,1086,1,0,0,0,68,1100,1, + 0,0,0,70,1111,1,0,0,0,72,1125,1,0,0,0,74,1133,1,0,0,0,76,1150,1, + 0,0,0,78,1167,1,0,0,0,80,1169,1,0,0,0,82,1176,1,0,0,0,84,1189,1, + 0,0,0,86,1200,1,0,0,0,88,1220,1,0,0,0,90,1231,1,0,0,0,92,1233,1, + 0,0,0,94,1246,1,0,0,0,96,1250,1,0,0,0,98,1274,1,0,0,0,100,1276,1, + 0,0,0,102,1286,1,0,0,0,104,1301,1,0,0,0,106,1303,1,0,0,0,108,1317, + 1,0,0,0,110,1321,1,0,0,0,112,1330,1,0,0,0,114,1336,1,0,0,0,116,1344, + 1,0,0,0,118,1353,1,0,0,0,120,1362,1,0,0,0,122,1393,1,0,0,0,124,1397, + 1,0,0,0,126,1411,1,0,0,0,128,1415,1,0,0,0,130,1429,1,0,0,0,132,1440, + 1,0,0,0,134,1456,1,0,0,0,136,1470,1,0,0,0,138,1484,1,0,0,0,140,1506, + 1,0,0,0,142,1534,1,0,0,0,144,1543,1,0,0,0,146,1550,1,0,0,0,148,1558, + 1,0,0,0,150,1560,1,0,0,0,152,1565,1,0,0,0,154,1580,1,0,0,0,156,1586, + 1,0,0,0,158,1588,1,0,0,0,160,1600,1,0,0,0,162,1611,1,0,0,0,164,1615, + 1,0,0,0,166,1619,1,0,0,0,168,1642,1,0,0,0,170,1656,1,0,0,0,172,1660, + 1,0,0,0,174,1697,1,0,0,0,176,1703,1,0,0,0,178,1715,1,0,0,0,180,1733, + 1,0,0,0,182,1739,1,0,0,0,184,1741,1,0,0,0,186,1791,1,0,0,0,188,1795, + 1,0,0,0,190,1809,1,0,0,0,192,1828,1,0,0,0,194,1843,1,0,0,0,196,1859, + 1,0,0,0,198,1880,1,0,0,0,200,1890,1,0,0,0,202,1896,1,0,0,0,204,1918, + 1,0,0,0,206,1952,1,0,0,0,208,1954,1,0,0,0,210,1966,1,0,0,0,212,1986, + 1,0,0,0,214,1994,1,0,0,0,216,2001,1,0,0,0,218,2045,1,0,0,0,220,2054, + 1,0,0,0,222,2056,1,0,0,0,224,2071,1,0,0,0,226,2075,1,0,0,0,228,2079, + 1,0,0,0,230,2086,1,0,0,0,232,2090,1,0,0,0,234,2115,1,0,0,0,236,2117, + 1,0,0,0,238,2133,1,0,0,0,240,2135,1,0,0,0,242,2159,1,0,0,0,244,2209, + 1,0,0,0,246,2211,1,0,0,0,248,2241,1,0,0,0,250,2282,1,0,0,0,252,2303, + 1,0,0,0,254,2327,1,0,0,0,256,2370,1,0,0,0,258,2386,1,0,0,0,260,2388, + 1,0,0,0,262,2437,1,0,0,0,264,2449,1,0,0,0,266,2451,1,0,0,0,268,2453, + 1,0,0,0,270,2458,1,0,0,0,272,2460,1,0,0,0,274,2462,1,0,0,0,276,2472, + 1,0,0,0,278,2482,1,0,0,0,280,2498,1,0,0,0,282,2551,1,0,0,0,284,2553, + 1,0,0,0,286,2555,1,0,0,0,288,2569,1,0,0,0,290,2583,1,0,0,0,292,2598, + 1,0,0,0,294,2600,1,0,0,0,296,2615,1,0,0,0,298,2617,1,0,0,0,300,2632, + 1,0,0,0,302,2634,1,0,0,0,304,2648,1,0,0,0,306,2677,1,0,0,0,308,2690, + 1,0,0,0,310,2698,1,0,0,0,312,2712,1,0,0,0,314,2720,1,0,0,0,316,2730, + 1,0,0,0,318,2749,1,0,0,0,320,2807,1,0,0,0,322,2809,1,0,0,0,324,2813, + 1,0,0,0,326,2825,1,0,0,0,328,2827,1,0,0,0,330,2829,1,0,0,0,332,2850, + 1,0,0,0,334,2857,1,0,0,0,336,2882,1,0,0,0,338,2893,1,0,0,0,340,2980, + 1,0,0,0,342,2982,1,0,0,0,344,2997,1,0,0,0,346,2999,1,0,0,0,348,3036, + 1,0,0,0,350,3038,1,0,0,0,352,3047,1,0,0,0,354,3077,1,0,0,0,356,3107, + 1,0,0,0,358,3124,1,0,0,0,360,3138,1,0,0,0,362,3142,1,0,0,0,364,3144, + 1,0,0,0,366,3149,1,0,0,0,368,3155,1,0,0,0,370,3157,1,0,0,0,372,3159, + 1,0,0,0,374,3161,1,0,0,0,376,3171,1,0,0,0,378,3173,1,0,0,0,380,3175, + 1,0,0,0,382,3177,1,0,0,0,384,3179,1,0,0,0,386,397,3,2,1,0,387,389, + 5,188,0,0,388,387,1,0,0,0,388,389,1,0,0,0,389,390,1,0,0,0,390,392, + 5,1,0,0,391,393,5,188,0,0,392,391,1,0,0,0,392,393,1,0,0,0,393,394, + 1,0,0,0,394,396,3,2,1,0,395,388,1,0,0,0,396,399,1,0,0,0,397,395, + 1,0,0,0,397,398,1,0,0,0,398,401,1,0,0,0,399,397,1,0,0,0,400,402, + 5,188,0,0,401,400,1,0,0,0,401,402,1,0,0,0,402,403,1,0,0,0,403,404, + 5,0,0,1,404,1,1,0,0,0,405,407,3,148,74,0,406,405,1,0,0,0,406,407, + 1,0,0,0,407,409,1,0,0,0,408,410,5,188,0,0,409,408,1,0,0,0,409,410, + 1,0,0,0,410,411,1,0,0,0,411,416,3,4,2,0,412,414,5,188,0,0,413,412, + 1,0,0,0,413,414,1,0,0,0,414,415,1,0,0,0,415,417,5,1,0,0,416,413, + 1,0,0,0,416,417,1,0,0,0,417,3,1,0,0,0,418,445,3,166,83,0,419,445, + 3,36,18,0,420,445,3,82,41,0,421,445,3,84,42,0,422,445,3,52,26,0, + 423,445,3,54,27,0,424,445,3,56,28,0,425,445,3,74,37,0,426,445,3, + 76,38,0,427,445,3,98,49,0,428,445,3,102,51,0,429,445,3,6,3,0,430, + 445,3,12,6,0,431,445,3,14,7,0,432,445,3,38,19,0,433,445,3,42,21, + 0,434,445,3,40,20,0,435,445,3,154,77,0,436,445,3,156,78,0,437,445, + 3,16,8,0,438,445,3,18,9,0,439,445,3,20,10,0,440,445,3,28,14,0,441, + 445,3,30,15,0,442,445,3,32,16,0,443,445,3,34,17,0,444,418,1,0,0, + 0,444,419,1,0,0,0,444,420,1,0,0,0,444,421,1,0,0,0,444,422,1,0,0, + 0,444,423,1,0,0,0,444,424,1,0,0,0,444,425,1,0,0,0,444,426,1,0,0, + 0,444,427,1,0,0,0,444,428,1,0,0,0,444,429,1,0,0,0,444,430,1,0,0, + 0,444,431,1,0,0,0,444,432,1,0,0,0,444,433,1,0,0,0,444,434,1,0,0, + 0,444,435,1,0,0,0,444,436,1,0,0,0,444,437,1,0,0,0,444,438,1,0,0, + 0,444,439,1,0,0,0,444,440,1,0,0,0,444,441,1,0,0,0,444,442,1,0,0, + 0,444,443,1,0,0,0,445,5,1,0,0,0,446,447,5,67,0,0,447,448,5,188,0, + 0,448,450,3,374,187,0,449,451,3,8,4,0,450,449,1,0,0,0,450,451,1, + 0,0,0,451,452,1,0,0,0,452,453,5,188,0,0,453,454,5,88,0,0,454,455, + 5,188,0,0,455,469,3,10,5,0,456,458,5,188,0,0,457,456,1,0,0,0,457, + 458,1,0,0,0,458,459,1,0,0,0,459,461,5,2,0,0,460,462,5,188,0,0,461, + 460,1,0,0,0,461,462,1,0,0,0,462,463,1,0,0,0,463,465,3,26,13,0,464, + 466,5,188,0,0,465,464,1,0,0,0,465,466,1,0,0,0,466,467,1,0,0,0,467, + 468,5,3,0,0,468,470,1,0,0,0,469,457,1,0,0,0,469,470,1,0,0,0,470, + 7,1,0,0,0,471,473,5,188,0,0,472,471,1,0,0,0,472,473,1,0,0,0,473, + 474,1,0,0,0,474,476,5,2,0,0,475,477,5,188,0,0,476,475,1,0,0,0,476, + 477,1,0,0,0,477,495,1,0,0,0,478,489,3,374,187,0,479,481,5,188,0, + 0,480,479,1,0,0,0,480,481,1,0,0,0,481,482,1,0,0,0,482,484,5,4,0, + 0,483,485,5,188,0,0,484,483,1,0,0,0,484,485,1,0,0,0,485,486,1,0, + 0,0,486,488,3,374,187,0,487,480,1,0,0,0,488,491,1,0,0,0,489,487, + 1,0,0,0,489,490,1,0,0,0,490,493,1,0,0,0,491,489,1,0,0,0,492,494, + 5,188,0,0,493,492,1,0,0,0,493,494,1,0,0,0,494,496,1,0,0,0,495,478, + 1,0,0,0,495,496,1,0,0,0,496,497,1,0,0,0,497,498,5,3,0,0,498,9,1, + 0,0,0,499,521,3,48,24,0,500,502,5,2,0,0,501,503,5,188,0,0,502,501, + 1,0,0,0,502,503,1,0,0,0,503,504,1,0,0,0,504,506,3,166,83,0,505,507, + 5,188,0,0,506,505,1,0,0,0,506,507,1,0,0,0,507,508,1,0,0,0,508,509, + 5,3,0,0,509,521,1,0,0,0,510,521,3,364,182,0,511,521,3,360,180,0, + 512,513,3,360,180,0,513,515,5,5,0,0,514,516,5,188,0,0,515,514,1, + 0,0,0,515,516,1,0,0,0,516,517,1,0,0,0,517,518,3,374,187,0,518,521, + 1,0,0,0,519,521,3,340,170,0,520,499,1,0,0,0,520,500,1,0,0,0,520, + 510,1,0,0,0,520,511,1,0,0,0,520,512,1,0,0,0,520,519,1,0,0,0,521, + 11,1,0,0,0,522,523,5,67,0,0,523,524,5,188,0,0,524,525,3,374,187, + 0,525,526,5,188,0,0,526,527,5,88,0,0,527,528,5,188,0,0,528,530,5, + 2,0,0,529,531,5,188,0,0,530,529,1,0,0,0,530,531,1,0,0,0,531,532, + 1,0,0,0,532,543,5,173,0,0,533,535,5,188,0,0,534,533,1,0,0,0,534, + 535,1,0,0,0,535,536,1,0,0,0,536,538,5,4,0,0,537,539,5,188,0,0,538, + 537,1,0,0,0,538,539,1,0,0,0,539,540,1,0,0,0,540,542,5,173,0,0,541, + 534,1,0,0,0,542,545,1,0,0,0,543,541,1,0,0,0,543,544,1,0,0,0,544, + 546,1,0,0,0,545,543,1,0,0,0,546,547,5,3,0,0,547,548,5,188,0,0,548, + 549,5,57,0,0,549,550,5,188,0,0,550,551,5,62,0,0,551,13,1,0,0,0,552, + 553,5,67,0,0,553,554,5,188,0,0,554,556,5,2,0,0,555,557,5,188,0,0, + 556,555,1,0,0,0,556,557,1,0,0,0,557,558,1,0,0,0,558,560,3,166,83, + 0,559,561,5,188,0,0,560,559,1,0,0,0,560,561,1,0,0,0,561,562,1,0, + 0,0,562,563,5,3,0,0,563,564,5,188,0,0,564,565,5,143,0,0,565,566, + 5,188,0,0,566,580,5,173,0,0,567,569,5,188,0,0,568,567,1,0,0,0,568, + 569,1,0,0,0,569,570,1,0,0,0,570,572,5,2,0,0,571,573,5,188,0,0,572, + 571,1,0,0,0,572,573,1,0,0,0,573,574,1,0,0,0,574,576,3,26,13,0,575, + 577,5,188,0,0,576,575,1,0,0,0,576,577,1,0,0,0,577,578,1,0,0,0,578, + 579,5,3,0,0,579,581,1,0,0,0,580,568,1,0,0,0,580,581,1,0,0,0,581, + 15,1,0,0,0,582,583,5,85,0,0,583,584,5,188,0,0,584,585,5,71,0,0,585, + 586,5,188,0,0,586,600,5,173,0,0,587,589,5,188,0,0,588,587,1,0,0, + 0,588,589,1,0,0,0,589,590,1,0,0,0,590,592,5,2,0,0,591,593,5,188, + 0,0,592,591,1,0,0,0,592,593,1,0,0,0,593,594,1,0,0,0,594,596,3,26, + 13,0,595,597,5,188,0,0,596,595,1,0,0,0,596,597,1,0,0,0,597,598,1, + 0,0,0,598,599,5,3,0,0,599,601,1,0,0,0,600,588,1,0,0,0,600,601,1, + 0,0,0,601,17,1,0,0,0,602,603,5,96,0,0,603,604,5,188,0,0,604,605, + 5,71,0,0,605,606,5,188,0,0,606,607,5,173,0,0,607,19,1,0,0,0,608, + 609,5,55,0,0,609,610,5,188,0,0,610,615,5,173,0,0,611,612,5,188,0, + 0,612,613,5,52,0,0,613,614,5,188,0,0,614,616,3,374,187,0,615,611, + 1,0,0,0,615,616,1,0,0,0,616,617,1,0,0,0,617,618,5,188,0,0,618,620, + 5,2,0,0,619,621,5,188,0,0,620,619,1,0,0,0,620,621,1,0,0,0,621,622, + 1,0,0,0,622,623,5,72,0,0,623,624,5,188,0,0,624,633,3,376,188,0,625, + 627,5,188,0,0,626,625,1,0,0,0,626,627,1,0,0,0,627,628,1,0,0,0,628, + 630,5,4,0,0,629,631,5,188,0,0,630,629,1,0,0,0,630,631,1,0,0,0,631, + 632,1,0,0,0,632,634,3,26,13,0,633,626,1,0,0,0,633,634,1,0,0,0,634, + 636,1,0,0,0,635,637,5,188,0,0,636,635,1,0,0,0,636,637,1,0,0,0,637, + 638,1,0,0,0,638,639,5,3,0,0,639,21,1,0,0,0,640,654,3,376,188,0,641, + 643,5,188,0,0,642,641,1,0,0,0,642,643,1,0,0,0,643,644,1,0,0,0,644, + 646,5,6,0,0,645,647,5,188,0,0,646,645,1,0,0,0,646,647,1,0,0,0,647, + 655,1,0,0,0,648,650,5,188,0,0,649,648,1,0,0,0,650,653,1,0,0,0,651, + 649,1,0,0,0,651,652,1,0,0,0,652,655,1,0,0,0,653,651,1,0,0,0,654, + 642,1,0,0,0,654,651,1,0,0,0,655,656,1,0,0,0,656,661,3,326,163,0, + 657,659,5,188,0,0,658,657,1,0,0,0,658,659,1,0,0,0,659,660,1,0,0, + 0,660,662,3,24,12,0,661,658,1,0,0,0,661,662,1,0,0,0,662,665,1,0, + 0,0,663,665,3,376,188,0,664,640,1,0,0,0,664,663,1,0,0,0,665,23,1, + 0,0,0,666,668,5,2,0,0,667,669,5,188,0,0,668,667,1,0,0,0,668,669, + 1,0,0,0,669,670,1,0,0,0,670,672,3,376,188,0,671,673,5,188,0,0,672, + 671,1,0,0,0,672,673,1,0,0,0,673,674,1,0,0,0,674,675,5,3,0,0,675, + 25,1,0,0,0,676,687,3,22,11,0,677,679,5,188,0,0,678,677,1,0,0,0,678, + 679,1,0,0,0,679,680,1,0,0,0,680,682,5,4,0,0,681,683,5,188,0,0,682, + 681,1,0,0,0,682,683,1,0,0,0,683,684,1,0,0,0,684,686,3,22,11,0,685, + 678,1,0,0,0,686,689,1,0,0,0,687,685,1,0,0,0,687,688,1,0,0,0,688, + 27,1,0,0,0,689,687,1,0,0,0,690,691,5,77,0,0,691,692,5,188,0,0,692, + 693,3,374,187,0,693,29,1,0,0,0,694,695,5,152,0,0,695,696,5,188,0, + 0,696,697,3,374,187,0,697,31,1,0,0,0,698,699,5,69,0,0,699,700,5, + 188,0,0,700,701,5,92,0,0,701,702,5,188,0,0,702,705,3,374,187,0,703, + 704,5,188,0,0,704,706,5,46,0,0,705,703,1,0,0,0,705,706,1,0,0,0,706, + 33,1,0,0,0,707,708,5,152,0,0,708,709,5,188,0,0,709,710,5,92,0,0, + 710,711,5,188,0,0,711,712,3,374,187,0,712,35,1,0,0,0,713,716,5,50, + 0,0,714,715,5,188,0,0,715,717,3,374,187,0,716,714,1,0,0,0,716,717, + 1,0,0,0,717,37,1,0,0,0,718,719,5,58,0,0,719,720,5,188,0,0,720,722, + 3,376,188,0,721,723,5,188,0,0,722,721,1,0,0,0,722,723,1,0,0,0,723, + 724,1,0,0,0,724,726,5,6,0,0,725,727,5,188,0,0,726,725,1,0,0,0,726, + 727,1,0,0,0,727,728,1,0,0,0,728,729,3,272,136,0,729,734,1,0,0,0, + 730,731,5,58,0,0,731,732,5,188,0,0,732,734,3,340,170,0,733,718,1, + 0,0,0,733,730,1,0,0,0,734,39,1,0,0,0,735,736,5,63,0,0,736,737,5, + 188,0,0,737,738,5,119,0,0,738,739,5,188,0,0,739,740,5,141,0,0,740, + 741,5,188,0,0,741,742,3,374,187,0,742,743,5,188,0,0,743,744,5,102, + 0,0,744,745,5,188,0,0,745,746,5,173,0,0,746,41,1,0,0,0,747,748,5, + 69,0,0,748,749,5,188,0,0,749,750,5,108,0,0,750,751,5,188,0,0,751, + 753,3,342,171,0,752,754,5,188,0,0,753,752,1,0,0,0,753,754,1,0,0, + 0,754,755,1,0,0,0,755,757,5,2,0,0,756,758,5,188,0,0,757,756,1,0, + 0,0,757,758,1,0,0,0,758,760,1,0,0,0,759,761,3,44,22,0,760,759,1, + 0,0,0,760,761,1,0,0,0,761,763,1,0,0,0,762,764,5,188,0,0,763,762, + 1,0,0,0,763,764,1,0,0,0,764,766,1,0,0,0,765,767,3,46,23,0,766,765, + 1,0,0,0,766,767,1,0,0,0,767,778,1,0,0,0,768,770,5,188,0,0,769,768, + 1,0,0,0,769,770,1,0,0,0,770,771,1,0,0,0,771,773,5,4,0,0,772,774, + 5,188,0,0,773,772,1,0,0,0,773,774,1,0,0,0,774,775,1,0,0,0,775,777, + 3,46,23,0,776,769,1,0,0,0,777,780,1,0,0,0,778,776,1,0,0,0,778,779, + 1,0,0,0,779,782,1,0,0,0,780,778,1,0,0,0,781,783,5,188,0,0,782,781, + 1,0,0,0,782,783,1,0,0,0,783,784,1,0,0,0,784,785,5,3,0,0,785,786, + 5,188,0,0,786,787,5,52,0,0,787,788,5,188,0,0,788,789,3,272,136,0, + 789,43,1,0,0,0,790,801,3,376,188,0,791,793,5,188,0,0,792,791,1,0, + 0,0,792,793,1,0,0,0,793,794,1,0,0,0,794,796,5,4,0,0,795,797,5,188, + 0,0,796,795,1,0,0,0,796,797,1,0,0,0,797,798,1,0,0,0,798,800,3,376, + 188,0,799,792,1,0,0,0,800,803,1,0,0,0,801,799,1,0,0,0,801,802,1, + 0,0,0,802,45,1,0,0,0,803,801,1,0,0,0,804,806,3,376,188,0,805,807, + 5,188,0,0,806,805,1,0,0,0,806,807,1,0,0,0,807,808,1,0,0,0,808,809, + 5,169,0,0,809,811,5,6,0,0,810,812,5,188,0,0,811,810,1,0,0,0,811, + 812,1,0,0,0,812,813,1,0,0,0,813,814,3,326,163,0,814,47,1,0,0,0,815, + 817,5,7,0,0,816,818,5,188,0,0,817,816,1,0,0,0,817,818,1,0,0,0,818, + 819,1,0,0,0,819,830,5,173,0,0,820,822,5,188,0,0,821,820,1,0,0,0, + 821,822,1,0,0,0,822,823,1,0,0,0,823,825,5,4,0,0,824,826,5,188,0, + 0,825,824,1,0,0,0,825,826,1,0,0,0,826,827,1,0,0,0,827,829,5,173, + 0,0,828,821,1,0,0,0,829,832,1,0,0,0,830,828,1,0,0,0,830,831,1,0, + 0,0,831,833,1,0,0,0,832,830,1,0,0,0,833,849,5,8,0,0,834,849,5,173, + 0,0,835,837,5,91,0,0,836,838,5,188,0,0,837,836,1,0,0,0,837,838,1, + 0,0,0,838,839,1,0,0,0,839,841,5,2,0,0,840,842,5,188,0,0,841,840, + 1,0,0,0,841,842,1,0,0,0,842,843,1,0,0,0,843,845,5,173,0,0,844,846, + 5,188,0,0,845,844,1,0,0,0,845,846,1,0,0,0,846,847,1,0,0,0,847,849, + 5,3,0,0,848,815,1,0,0,0,848,834,1,0,0,0,848,835,1,0,0,0,849,49,1, + 0,0,0,850,851,5,98,0,0,851,852,5,188,0,0,852,853,5,116,0,0,853,854, + 5,188,0,0,854,855,5,83,0,0,855,51,1,0,0,0,856,857,5,69,0,0,857,858, + 5,188,0,0,858,859,5,115,0,0,859,860,5,188,0,0,860,861,5,141,0,0, + 861,865,5,188,0,0,862,863,3,50,25,0,863,864,5,188,0,0,864,866,1, + 0,0,0,865,862,1,0,0,0,865,866,1,0,0,0,866,867,1,0,0,0,867,895,3, + 374,187,0,868,870,5,188,0,0,869,868,1,0,0,0,869,870,1,0,0,0,870, + 871,1,0,0,0,871,873,5,2,0,0,872,874,5,188,0,0,873,872,1,0,0,0,873, + 874,1,0,0,0,874,875,1,0,0,0,875,877,3,128,64,0,876,878,5,188,0,0, + 877,876,1,0,0,0,877,878,1,0,0,0,878,884,1,0,0,0,879,881,5,4,0,0, + 880,882,5,188,0,0,881,880,1,0,0,0,881,882,1,0,0,0,882,883,1,0,0, + 0,883,885,3,132,66,0,884,879,1,0,0,0,884,885,1,0,0,0,885,887,1,0, + 0,0,886,888,5,188,0,0,887,886,1,0,0,0,887,888,1,0,0,0,888,889,1, + 0,0,0,889,890,5,3,0,0,890,896,1,0,0,0,891,892,5,188,0,0,892,893, + 5,52,0,0,893,894,5,188,0,0,894,896,3,166,83,0,895,869,1,0,0,0,895, + 891,1,0,0,0,896,912,1,0,0,0,897,898,5,188,0,0,898,900,5,155,0,0, + 899,901,5,188,0,0,900,899,1,0,0,0,900,901,1,0,0,0,901,902,1,0,0, + 0,902,904,5,2,0,0,903,905,5,188,0,0,904,903,1,0,0,0,904,905,1,0, + 0,0,905,906,1,0,0,0,906,908,3,26,13,0,907,909,5,188,0,0,908,907, + 1,0,0,0,908,909,1,0,0,0,909,910,1,0,0,0,910,911,5,3,0,0,911,913, + 1,0,0,0,912,897,1,0,0,0,912,913,1,0,0,0,913,53,1,0,0,0,914,915,5, + 69,0,0,915,916,5,188,0,0,916,917,5,129,0,0,917,918,5,188,0,0,918, + 921,5,141,0,0,919,920,5,188,0,0,920,922,5,93,0,0,921,919,1,0,0,0, + 921,922,1,0,0,0,922,925,1,0,0,0,923,924,5,188,0,0,924,926,3,50,25, + 0,925,923,1,0,0,0,925,926,1,0,0,0,926,927,1,0,0,0,927,928,5,188, + 0,0,928,930,3,374,187,0,929,931,5,188,0,0,930,929,1,0,0,0,930,931, + 1,0,0,0,931,932,1,0,0,0,932,934,5,2,0,0,933,935,5,188,0,0,934,933, + 1,0,0,0,934,935,1,0,0,0,935,936,1,0,0,0,936,938,3,66,33,0,937,939, + 5,188,0,0,938,937,1,0,0,0,938,939,1,0,0,0,939,966,1,0,0,0,940,942, + 5,4,0,0,941,943,5,188,0,0,942,941,1,0,0,0,942,943,1,0,0,0,943,944, + 1,0,0,0,944,946,3,128,64,0,945,947,5,188,0,0,946,945,1,0,0,0,946, + 947,1,0,0,0,947,949,1,0,0,0,948,940,1,0,0,0,948,949,1,0,0,0,949, + 958,1,0,0,0,950,952,5,4,0,0,951,953,5,188,0,0,952,951,1,0,0,0,952, + 953,1,0,0,0,953,954,1,0,0,0,954,956,3,376,188,0,955,957,5,188,0, + 0,956,955,1,0,0,0,956,957,1,0,0,0,957,959,1,0,0,0,958,950,1,0,0, + 0,958,959,1,0,0,0,959,960,1,0,0,0,960,967,5,3,0,0,961,962,5,3,0, + 0,962,963,5,188,0,0,963,964,5,52,0,0,964,965,5,188,0,0,965,967,3, + 166,83,0,966,948,1,0,0,0,966,961,1,0,0,0,967,983,1,0,0,0,968,969, + 5,188,0,0,969,971,5,155,0,0,970,972,5,188,0,0,971,970,1,0,0,0,971, + 972,1,0,0,0,972,973,1,0,0,0,973,975,5,2,0,0,974,976,5,188,0,0,975, + 974,1,0,0,0,975,976,1,0,0,0,976,977,1,0,0,0,977,979,3,26,13,0,978, + 980,5,188,0,0,979,978,1,0,0,0,979,980,1,0,0,0,980,981,1,0,0,0,981, + 982,5,3,0,0,982,984,1,0,0,0,983,968,1,0,0,0,983,984,1,0,0,0,984, + 55,1,0,0,0,985,988,5,69,0,0,986,987,5,188,0,0,987,989,3,376,188, + 0,988,986,1,0,0,0,988,989,1,0,0,0,989,990,1,0,0,0,990,991,5,188, + 0,0,991,994,5,97,0,0,992,993,5,188,0,0,993,995,3,374,187,0,994,992, + 1,0,0,0,994,995,1,0,0,0,995,998,1,0,0,0,996,997,5,188,0,0,997,999, + 3,50,25,0,998,996,1,0,0,0,998,999,1,0,0,0,999,1000,1,0,0,0,1000, + 1001,5,188,0,0,1001,1002,5,90,0,0,1002,1003,5,188,0,0,1003,1004, + 3,58,29,0,1004,1005,5,188,0,0,1005,1006,5,119,0,0,1006,1007,5,188, + 0,0,1007,1024,3,64,32,0,1008,1009,5,188,0,0,1009,1011,5,121,0,0, + 1010,1012,5,188,0,0,1011,1010,1,0,0,0,1011,1012,1,0,0,0,1012,1013, + 1,0,0,0,1013,1015,5,9,0,0,1014,1016,5,188,0,0,1015,1014,1,0,0,0, + 1015,1016,1,0,0,0,1016,1018,1,0,0,0,1017,1019,3,26,13,0,1018,1017, + 1,0,0,0,1018,1019,1,0,0,0,1019,1021,1,0,0,0,1020,1022,5,188,0,0, + 1021,1020,1,0,0,0,1021,1022,1,0,0,0,1022,1023,1,0,0,0,1023,1025, + 5,10,0,0,1024,1008,1,0,0,0,1024,1025,1,0,0,0,1025,57,1,0,0,0,1026, + 1029,3,60,30,0,1027,1029,3,62,31,0,1028,1026,1,0,0,0,1028,1027,1, + 0,0,0,1029,59,1,0,0,0,1030,1032,5,2,0,0,1031,1033,5,188,0,0,1032, + 1031,1,0,0,0,1032,1033,1,0,0,0,1033,1035,1,0,0,0,1034,1036,3,360, + 180,0,1035,1034,1,0,0,0,1035,1036,1,0,0,0,1036,1038,1,0,0,0,1037, + 1039,5,188,0,0,1038,1037,1,0,0,0,1038,1039,1,0,0,0,1039,1040,1,0, + 0,0,1040,1042,5,169,0,0,1041,1043,5,188,0,0,1042,1041,1,0,0,0,1042, + 1043,1,0,0,0,1043,1044,1,0,0,0,1044,1046,3,268,134,0,1045,1047,5, + 188,0,0,1046,1045,1,0,0,0,1046,1047,1,0,0,0,1047,1048,1,0,0,0,1048, + 1049,5,3,0,0,1049,61,1,0,0,0,1050,1052,5,2,0,0,1051,1053,5,188,0, + 0,1052,1051,1,0,0,0,1052,1053,1,0,0,0,1053,1054,1,0,0,0,1054,1056, + 5,3,0,0,1055,1057,5,188,0,0,1056,1055,1,0,0,0,1056,1057,1,0,0,0, + 1057,1058,1,0,0,0,1058,1060,3,244,122,0,1059,1061,5,188,0,0,1060, + 1059,1,0,0,0,1060,1061,1,0,0,0,1061,1062,1,0,0,0,1062,1064,5,2,0, + 0,1063,1065,5,188,0,0,1064,1063,1,0,0,0,1064,1065,1,0,0,0,1065,1066, + 1,0,0,0,1066,1067,5,3,0,0,1067,63,1,0,0,0,1068,1070,5,2,0,0,1069, + 1071,5,188,0,0,1070,1069,1,0,0,0,1070,1071,1,0,0,0,1071,1072,1,0, + 0,0,1072,1074,3,360,180,0,1073,1075,5,188,0,0,1074,1073,1,0,0,0, + 1074,1075,1,0,0,0,1075,1076,1,0,0,0,1076,1078,5,5,0,0,1077,1079, + 5,188,0,0,1078,1077,1,0,0,0,1078,1079,1,0,0,0,1079,1080,1,0,0,0, + 1080,1082,3,368,184,0,1081,1083,5,188,0,0,1082,1081,1,0,0,0,1082, + 1083,1,0,0,0,1083,1084,1,0,0,0,1084,1085,5,3,0,0,1085,65,1,0,0,0, + 1086,1097,3,68,34,0,1087,1089,5,188,0,0,1088,1087,1,0,0,0,1088,1089, + 1,0,0,0,1089,1090,1,0,0,0,1090,1092,5,4,0,0,1091,1093,5,188,0,0, + 1092,1091,1,0,0,0,1092,1093,1,0,0,0,1093,1094,1,0,0,0,1094,1096, + 3,68,34,0,1095,1088,1,0,0,0,1096,1099,1,0,0,0,1097,1095,1,0,0,0, + 1097,1098,1,0,0,0,1098,67,1,0,0,0,1099,1097,1,0,0,0,1100,1101,5, + 88,0,0,1101,1102,5,188,0,0,1102,1103,3,374,187,0,1103,1104,5,188, + 0,0,1104,1105,5,143,0,0,1105,1106,5,188,0,0,1106,1109,3,374,187, + 0,1107,1108,5,188,0,0,1108,1110,3,376,188,0,1109,1107,1,0,0,0,1109, + 1110,1,0,0,0,1110,69,1,0,0,0,1111,1122,3,72,36,0,1112,1114,5,188, + 0,0,1113,1112,1,0,0,0,1113,1114,1,0,0,0,1114,1115,1,0,0,0,1115,1117, + 5,4,0,0,1116,1118,5,188,0,0,1117,1116,1,0,0,0,1117,1118,1,0,0,0, + 1118,1119,1,0,0,0,1119,1121,3,72,36,0,1120,1113,1,0,0,0,1121,1124, + 1,0,0,0,1122,1120,1,0,0,0,1122,1123,1,0,0,0,1123,71,1,0,0,0,1124, + 1122,1,0,0,0,1125,1126,5,88,0,0,1126,1127,5,188,0,0,1127,1128,3, + 374,187,0,1128,1129,5,188,0,0,1129,1130,5,143,0,0,1130,1131,5,188, + 0,0,1131,1132,3,374,187,0,1132,73,1,0,0,0,1133,1134,5,69,0,0,1134, + 1135,5,188,0,0,1135,1136,5,134,0,0,1136,1140,5,188,0,0,1137,1138, + 3,50,25,0,1138,1139,5,188,0,0,1139,1141,1,0,0,0,1140,1137,1,0,0, + 0,1140,1141,1,0,0,0,1141,1142,1,0,0,0,1142,1147,3,374,187,0,1143, + 1144,5,188,0,0,1144,1146,3,78,39,0,1145,1143,1,0,0,0,1146,1149,1, + 0,0,0,1147,1145,1,0,0,0,1147,1148,1,0,0,0,1148,75,1,0,0,0,1149,1147, + 1,0,0,0,1150,1151,5,69,0,0,1151,1152,5,188,0,0,1152,1153,5,147,0, + 0,1153,1154,5,188,0,0,1154,1155,3,374,187,0,1155,1156,5,188,0,0, + 1156,1157,5,52,0,0,1157,1158,5,188,0,0,1158,1160,3,142,71,0,1159, + 1161,5,188,0,0,1160,1159,1,0,0,0,1160,1161,1,0,0,0,1161,77,1,0,0, + 0,1162,1168,3,86,43,0,1163,1168,3,88,44,0,1164,1168,3,90,45,0,1165, + 1168,3,92,46,0,1166,1168,3,94,47,0,1167,1162,1,0,0,0,1167,1163,1, + 0,0,0,1167,1164,1,0,0,0,1167,1165,1,0,0,0,1167,1166,1,0,0,0,1168, + 79,1,0,0,0,1169,1170,5,188,0,0,1170,1171,5,155,0,0,1171,1172,5,188, + 0,0,1172,1173,5,162,0,0,1173,1174,5,188,0,0,1174,1175,5,173,0,0, + 1175,81,1,0,0,0,1176,1177,5,69,0,0,1177,1178,5,188,0,0,1178,1179, + 5,161,0,0,1179,1183,5,188,0,0,1180,1181,3,50,25,0,1181,1182,5,188, + 0,0,1182,1184,1,0,0,0,1183,1180,1,0,0,0,1183,1184,1,0,0,0,1184,1185, + 1,0,0,0,1185,1187,3,360,180,0,1186,1188,3,80,40,0,1187,1186,1,0, + 0,0,1187,1188,1,0,0,0,1188,83,1,0,0,0,1189,1190,5,69,0,0,1190,1191, + 5,188,0,0,1191,1192,5,163,0,0,1192,1196,5,188,0,0,1193,1194,3,50, + 25,0,1194,1195,5,188,0,0,1195,1197,1,0,0,0,1196,1193,1,0,0,0,1196, + 1197,1,0,0,0,1197,1198,1,0,0,0,1198,1199,3,360,180,0,1199,85,1,0, + 0,0,1200,1201,5,100,0,0,1201,1204,5,188,0,0,1202,1203,5,57,0,0,1203, + 1205,5,188,0,0,1204,1202,1,0,0,0,1204,1205,1,0,0,0,1205,1207,1,0, + 0,0,1206,1208,5,171,0,0,1207,1206,1,0,0,0,1207,1208,1,0,0,0,1208, + 1209,1,0,0,0,1209,1210,3,370,185,0,1210,87,1,0,0,0,1211,1212,5,114, + 0,0,1212,1213,5,188,0,0,1213,1221,5,112,0,0,1214,1215,5,112,0,0, + 1215,1217,5,188,0,0,1216,1218,5,171,0,0,1217,1216,1,0,0,0,1217,1218, + 1,0,0,0,1218,1219,1,0,0,0,1219,1221,3,370,185,0,1220,1211,1,0,0, + 0,1220,1214,1,0,0,0,1221,89,1,0,0,0,1222,1223,5,114,0,0,1223,1224, + 5,188,0,0,1224,1232,5,110,0,0,1225,1226,5,110,0,0,1226,1228,5,188, + 0,0,1227,1229,5,171,0,0,1228,1227,1,0,0,0,1228,1229,1,0,0,0,1229, + 1230,1,0,0,0,1230,1232,3,370,185,0,1231,1222,1,0,0,0,1231,1225,1, + 0,0,0,1232,91,1,0,0,0,1233,1234,5,138,0,0,1234,1237,5,188,0,0,1235, + 1236,5,155,0,0,1236,1238,5,188,0,0,1237,1235,1,0,0,0,1237,1238,1, + 0,0,0,1238,1240,1,0,0,0,1239,1241,5,171,0,0,1240,1239,1,0,0,0,1240, + 1241,1,0,0,0,1241,1242,1,0,0,0,1242,1243,3,370,185,0,1243,93,1,0, + 0,0,1244,1245,5,114,0,0,1245,1247,5,188,0,0,1246,1244,1,0,0,0,1246, + 1247,1,0,0,0,1247,1248,1,0,0,0,1248,1249,5,70,0,0,1249,95,1,0,0, + 0,1250,1251,5,98,0,0,1251,1252,5,188,0,0,1252,1253,5,83,0,0,1253, + 97,1,0,0,0,1254,1255,5,79,0,0,1255,1256,5,188,0,0,1256,1257,7,0, + 0,0,1257,1261,5,188,0,0,1258,1259,3,96,48,0,1259,1260,5,188,0,0, + 1260,1262,1,0,0,0,1261,1258,1,0,0,0,1261,1262,1,0,0,0,1262,1263, + 1,0,0,0,1263,1275,3,374,187,0,1264,1265,5,79,0,0,1265,1266,5,188, + 0,0,1266,1267,5,97,0,0,1267,1271,5,188,0,0,1268,1269,3,96,48,0,1269, + 1270,5,188,0,0,1270,1272,1,0,0,0,1271,1268,1,0,0,0,1271,1272,1,0, + 0,0,1272,1273,1,0,0,0,1273,1275,3,100,50,0,1274,1254,1,0,0,0,1274, + 1264,1,0,0,0,1275,99,1,0,0,0,1276,1278,3,374,187,0,1277,1279,5,188, + 0,0,1278,1277,1,0,0,0,1278,1279,1,0,0,0,1279,1280,1,0,0,0,1280,1282, + 5,5,0,0,1281,1283,5,188,0,0,1282,1281,1,0,0,0,1282,1283,1,0,0,0, + 1283,1284,1,0,0,0,1284,1285,3,374,187,0,1285,101,1,0,0,0,1286,1287, + 5,49,0,0,1287,1288,5,188,0,0,1288,1289,5,141,0,0,1289,1290,5,188, + 0,0,1290,1291,3,374,187,0,1291,1292,5,188,0,0,1292,1293,3,104,52, + 0,1293,103,1,0,0,0,1294,1302,3,106,53,0,1295,1302,3,110,55,0,1296, + 1302,3,112,56,0,1297,1302,3,114,57,0,1298,1302,3,116,58,0,1299,1302, + 3,118,59,0,1300,1302,3,120,60,0,1301,1294,1,0,0,0,1301,1295,1,0, + 0,0,1301,1296,1,0,0,0,1301,1297,1,0,0,0,1301,1298,1,0,0,0,1301,1299, + 1,0,0,0,1301,1300,1,0,0,0,1302,105,1,0,0,0,1303,1304,5,47,0,0,1304, + 1308,5,188,0,0,1305,1306,3,50,25,0,1306,1307,5,188,0,0,1307,1309, + 1,0,0,0,1308,1305,1,0,0,0,1308,1309,1,0,0,0,1309,1310,1,0,0,0,1310, + 1311,3,368,184,0,1311,1312,5,188,0,0,1312,1315,3,142,71,0,1313,1314, + 5,188,0,0,1314,1316,3,108,54,0,1315,1313,1,0,0,0,1315,1316,1,0,0, + 0,1316,107,1,0,0,0,1317,1318,5,73,0,0,1318,1319,5,188,0,0,1319,1320, + 3,272,136,0,1320,109,1,0,0,0,1321,1322,5,79,0,0,1322,1326,5,188, + 0,0,1323,1324,3,96,48,0,1324,1325,5,188,0,0,1325,1327,1,0,0,0,1326, + 1323,1,0,0,0,1326,1327,1,0,0,0,1327,1328,1,0,0,0,1328,1329,3,368, + 184,0,1329,111,1,0,0,0,1330,1331,5,130,0,0,1331,1332,5,188,0,0,1332, + 1333,5,143,0,0,1333,1334,5,188,0,0,1334,1335,3,374,187,0,1335,113, + 1,0,0,0,1336,1337,5,130,0,0,1337,1338,5,188,0,0,1338,1339,3,368, + 184,0,1339,1340,5,188,0,0,1340,1341,5,143,0,0,1341,1342,5,188,0, + 0,1342,1343,3,368,184,0,1343,115,1,0,0,0,1344,1345,5,47,0,0,1345, + 1349,5,188,0,0,1346,1347,3,50,25,0,1347,1348,5,188,0,0,1348,1350, + 1,0,0,0,1349,1346,1,0,0,0,1349,1350,1,0,0,0,1350,1351,1,0,0,0,1351, + 1352,3,72,36,0,1352,117,1,0,0,0,1353,1354,5,79,0,0,1354,1358,5,188, + 0,0,1355,1356,3,96,48,0,1356,1357,5,188,0,0,1357,1359,1,0,0,0,1358, + 1355,1,0,0,0,1358,1359,1,0,0,0,1359,1360,1,0,0,0,1360,1361,3,72, + 36,0,1361,119,1,0,0,0,1362,1363,5,135,0,0,1363,1364,5,188,0,0,1364, + 1365,5,136,0,0,1365,1366,5,188,0,0,1366,1368,5,57,0,0,1367,1369, + 5,188,0,0,1368,1367,1,0,0,0,1368,1369,1,0,0,0,1369,1370,1,0,0,0, + 1370,1372,5,2,0,0,1371,1373,5,188,0,0,1372,1371,1,0,0,0,1372,1373, + 1,0,0,0,1373,1374,1,0,0,0,1374,1385,3,122,61,0,1375,1377,5,188,0, + 0,1376,1375,1,0,0,0,1376,1377,1,0,0,0,1377,1378,1,0,0,0,1378,1380, + 5,4,0,0,1379,1381,5,188,0,0,1380,1379,1,0,0,0,1380,1381,1,0,0,0, + 1381,1382,1,0,0,0,1382,1384,3,122,61,0,1383,1376,1,0,0,0,1384,1387, + 1,0,0,0,1385,1383,1,0,0,0,1385,1386,1,0,0,0,1386,1389,1,0,0,0,1387, + 1385,1,0,0,0,1388,1390,5,188,0,0,1389,1388,1,0,0,0,1389,1390,1,0, + 0,0,1390,1391,1,0,0,0,1391,1392,5,3,0,0,1392,121,1,0,0,0,1393,1394, + 3,368,184,0,1394,1395,5,188,0,0,1395,1396,7,1,0,0,1396,123,1,0,0, + 0,1397,1408,3,126,63,0,1398,1400,5,188,0,0,1399,1398,1,0,0,0,1399, + 1400,1,0,0,0,1400,1401,1,0,0,0,1401,1403,5,4,0,0,1402,1404,5,188, + 0,0,1403,1402,1,0,0,0,1403,1404,1,0,0,0,1404,1405,1,0,0,0,1405,1407, + 3,126,63,0,1406,1399,1,0,0,0,1407,1410,1,0,0,0,1408,1406,1,0,0,0, + 1408,1409,1,0,0,0,1409,125,1,0,0,0,1410,1408,1,0,0,0,1411,1412,3, + 368,184,0,1412,1413,5,188,0,0,1413,1414,3,142,71,0,1414,127,1,0, + 0,0,1415,1426,3,130,65,0,1416,1418,5,188,0,0,1417,1416,1,0,0,0,1417, + 1418,1,0,0,0,1418,1419,1,0,0,0,1419,1421,5,4,0,0,1420,1422,5,188, + 0,0,1421,1420,1,0,0,0,1421,1422,1,0,0,0,1422,1423,1,0,0,0,1423,1425, + 3,130,65,0,1424,1417,1,0,0,0,1425,1428,1,0,0,0,1426,1424,1,0,0,0, + 1426,1427,1,0,0,0,1427,129,1,0,0,0,1428,1426,1,0,0,0,1429,1432,3, + 126,63,0,1430,1431,5,188,0,0,1431,1433,3,108,54,0,1432,1430,1,0, + 0,0,1432,1433,1,0,0,0,1433,1438,1,0,0,0,1434,1435,5,188,0,0,1435, + 1436,5,125,0,0,1436,1437,5,188,0,0,1437,1439,5,104,0,0,1438,1434, + 1,0,0,0,1438,1439,1,0,0,0,1439,131,1,0,0,0,1440,1441,5,125,0,0,1441, + 1442,5,188,0,0,1442,1444,5,104,0,0,1443,1445,5,188,0,0,1444,1443, + 1,0,0,0,1444,1445,1,0,0,0,1445,1446,1,0,0,0,1446,1448,5,2,0,0,1447, + 1449,5,188,0,0,1448,1447,1,0,0,0,1448,1449,1,0,0,0,1449,1450,1,0, + 0,0,1450,1452,3,368,184,0,1451,1453,5,188,0,0,1452,1451,1,0,0,0, + 1452,1453,1,0,0,0,1453,1454,1,0,0,0,1454,1455,5,3,0,0,1455,133,1, + 0,0,0,1456,1458,5,148,0,0,1457,1459,5,188,0,0,1458,1457,1,0,0,0, + 1458,1459,1,0,0,0,1459,1460,1,0,0,0,1460,1462,5,2,0,0,1461,1463, + 5,188,0,0,1462,1461,1,0,0,0,1462,1463,1,0,0,0,1463,1464,1,0,0,0, + 1464,1466,3,124,62,0,1465,1467,5,188,0,0,1466,1465,1,0,0,0,1466, + 1467,1,0,0,0,1467,1468,1,0,0,0,1468,1469,5,3,0,0,1469,135,1,0,0, + 0,1470,1472,5,140,0,0,1471,1473,5,188,0,0,1472,1471,1,0,0,0,1472, + 1473,1,0,0,0,1473,1474,1,0,0,0,1474,1476,5,2,0,0,1475,1477,5,188, + 0,0,1476,1475,1,0,0,0,1476,1477,1,0,0,0,1477,1478,1,0,0,0,1478,1480, + 3,124,62,0,1479,1481,5,188,0,0,1480,1479,1,0,0,0,1480,1481,1,0,0, + 0,1481,1482,1,0,0,0,1482,1483,5,3,0,0,1483,137,1,0,0,0,1484,1486, + 5,164,0,0,1485,1487,5,188,0,0,1486,1485,1,0,0,0,1486,1487,1,0,0, + 0,1487,1488,1,0,0,0,1488,1490,5,2,0,0,1489,1491,5,188,0,0,1490,1489, + 1,0,0,0,1490,1491,1,0,0,0,1491,1492,1,0,0,0,1492,1494,3,142,71,0, + 1493,1495,5,188,0,0,1494,1493,1,0,0,0,1494,1495,1,0,0,0,1495,1496, + 1,0,0,0,1496,1498,5,4,0,0,1497,1499,5,188,0,0,1498,1497,1,0,0,0, + 1498,1499,1,0,0,0,1499,1500,1,0,0,0,1500,1502,3,142,71,0,1501,1503, + 5,188,0,0,1502,1501,1,0,0,0,1502,1503,1,0,0,0,1503,1504,1,0,0,0, + 1504,1505,5,3,0,0,1505,139,1,0,0,0,1506,1508,5,165,0,0,1507,1509, + 5,188,0,0,1508,1507,1,0,0,0,1508,1509,1,0,0,0,1509,1510,1,0,0,0, + 1510,1512,5,2,0,0,1511,1513,5,188,0,0,1512,1511,1,0,0,0,1512,1513, + 1,0,0,0,1513,1514,1,0,0,0,1514,1516,3,370,185,0,1515,1517,5,188, + 0,0,1516,1515,1,0,0,0,1516,1517,1,0,0,0,1517,1518,1,0,0,0,1518,1520, + 5,4,0,0,1519,1521,5,188,0,0,1520,1519,1,0,0,0,1520,1521,1,0,0,0, + 1521,1522,1,0,0,0,1522,1524,3,370,185,0,1523,1525,5,188,0,0,1524, + 1523,1,0,0,0,1524,1525,1,0,0,0,1525,1526,1,0,0,0,1526,1527,5,3,0, + 0,1527,141,1,0,0,0,1528,1529,6,71,-1,0,1529,1535,3,376,188,0,1530, + 1535,3,134,67,0,1531,1535,3,136,68,0,1532,1535,3,138,69,0,1533,1535, + 3,140,70,0,1534,1528,1,0,0,0,1534,1530,1,0,0,0,1534,1531,1,0,0,0, + 1534,1532,1,0,0,0,1534,1533,1,0,0,0,1535,1540,1,0,0,0,1536,1537, + 10,5,0,0,1537,1539,3,144,72,0,1538,1536,1,0,0,0,1539,1542,1,0,0, + 0,1540,1538,1,0,0,0,1540,1541,1,0,0,0,1541,143,1,0,0,0,1542,1540, + 1,0,0,0,1543,1547,3,146,73,0,1544,1546,3,146,73,0,1545,1544,1,0, + 0,0,1546,1549,1,0,0,0,1547,1545,1,0,0,0,1547,1548,1,0,0,0,1548,145, + 1,0,0,0,1549,1547,1,0,0,0,1550,1552,5,7,0,0,1551,1553,3,370,185, + 0,1552,1551,1,0,0,0,1552,1553,1,0,0,0,1553,1554,1,0,0,0,1554,1555, + 5,8,0,0,1555,147,1,0,0,0,1556,1559,3,150,75,0,1557,1559,3,152,76, + 0,1558,1556,1,0,0,0,1558,1557,1,0,0,0,1559,149,1,0,0,0,1560,1563, + 5,84,0,0,1561,1562,5,188,0,0,1562,1564,5,107,0,0,1563,1561,1,0,0, + 0,1563,1564,1,0,0,0,1564,151,1,0,0,0,1565,1566,5,126,0,0,1566,153, + 1,0,0,0,1567,1568,5,56,0,0,1568,1569,5,188,0,0,1569,1581,5,145,0, + 0,1570,1571,5,56,0,0,1571,1572,5,188,0,0,1572,1573,5,145,0,0,1573, + 1574,5,188,0,0,1574,1575,5,128,0,0,1575,1576,5,188,0,0,1576,1581, + 5,120,0,0,1577,1581,5,64,0,0,1578,1581,5,132,0,0,1579,1581,5,61, + 0,0,1580,1567,1,0,0,0,1580,1570,1,0,0,0,1580,1577,1,0,0,0,1580,1578, + 1,0,0,0,1580,1579,1,0,0,0,1581,155,1,0,0,0,1582,1587,3,158,79,0, + 1583,1587,3,160,80,0,1584,1587,3,162,81,0,1585,1587,3,164,82,0,1586, + 1582,1,0,0,0,1586,1583,1,0,0,0,1586,1584,1,0,0,0,1586,1585,1,0,0, + 0,1587,157,1,0,0,0,1588,1589,5,106,0,0,1589,1592,5,188,0,0,1590, + 1591,5,86,0,0,1591,1593,5,188,0,0,1592,1590,1,0,0,0,1592,1593,1, + 0,0,0,1593,1596,1,0,0,0,1594,1597,5,173,0,0,1595,1597,3,360,180, + 0,1596,1594,1,0,0,0,1596,1595,1,0,0,0,1597,159,1,0,0,0,1598,1599, + 5,89,0,0,1599,1601,5,188,0,0,1600,1598,1,0,0,0,1600,1601,1,0,0,0, + 1601,1602,1,0,0,0,1602,1603,5,101,0,0,1603,1604,5,188,0,0,1604,1609, + 3,360,180,0,1605,1606,5,188,0,0,1606,1607,5,88,0,0,1607,1608,5,188, + 0,0,1608,1610,5,173,0,0,1609,1605,1,0,0,0,1609,1610,1,0,0,0,1610, + 161,1,0,0,0,1611,1612,5,150,0,0,1612,1613,5,188,0,0,1613,1614,3, + 360,180,0,1614,163,1,0,0,0,1615,1616,5,151,0,0,1616,1617,5,188,0, + 0,1617,1618,3,360,180,0,1618,165,1,0,0,0,1619,1620,3,168,84,0,1620, + 167,1,0,0,0,1621,1628,3,172,86,0,1622,1624,5,188,0,0,1623,1622,1, + 0,0,0,1623,1624,1,0,0,0,1624,1625,1,0,0,0,1625,1627,3,170,85,0,1626, + 1623,1,0,0,0,1627,1630,1,0,0,0,1628,1626,1,0,0,0,1628,1629,1,0,0, + 0,1629,1643,1,0,0,0,1630,1628,1,0,0,0,1631,1633,3,214,107,0,1632, + 1634,5,188,0,0,1633,1632,1,0,0,0,1633,1634,1,0,0,0,1634,1636,1,0, + 0,0,1635,1631,1,0,0,0,1636,1637,1,0,0,0,1637,1635,1,0,0,0,1637,1638, + 1,0,0,0,1638,1639,1,0,0,0,1639,1640,3,172,86,0,1640,1641,6,84,-1, + 0,1641,1643,1,0,0,0,1642,1621,1,0,0,0,1642,1635,1,0,0,0,1643,169, + 1,0,0,0,1644,1645,5,148,0,0,1645,1646,5,188,0,0,1646,1648,5,48,0, + 0,1647,1649,5,188,0,0,1648,1647,1,0,0,0,1648,1649,1,0,0,0,1649,1650, + 1,0,0,0,1650,1657,3,172,86,0,1651,1653,5,148,0,0,1652,1654,5,188, + 0,0,1653,1652,1,0,0,0,1653,1654,1,0,0,0,1654,1655,1,0,0,0,1655,1657, + 3,172,86,0,1656,1644,1,0,0,0,1656,1651,1,0,0,0,1657,171,1,0,0,0, + 1658,1661,3,174,87,0,1659,1661,3,176,88,0,1660,1658,1,0,0,0,1660, + 1659,1,0,0,0,1661,173,1,0,0,0,1662,1664,3,182,91,0,1663,1665,5,188, + 0,0,1664,1663,1,0,0,0,1664,1665,1,0,0,0,1665,1667,1,0,0,0,1666,1662, + 1,0,0,0,1667,1670,1,0,0,0,1668,1666,1,0,0,0,1668,1669,1,0,0,0,1669, + 1671,1,0,0,0,1670,1668,1,0,0,0,1671,1698,3,214,107,0,1672,1674,3, + 182,91,0,1673,1675,5,188,0,0,1674,1673,1,0,0,0,1674,1675,1,0,0,0, + 1675,1677,1,0,0,0,1676,1672,1,0,0,0,1677,1680,1,0,0,0,1678,1676, + 1,0,0,0,1678,1679,1,0,0,0,1679,1681,1,0,0,0,1680,1678,1,0,0,0,1681, + 1688,3,180,90,0,1682,1684,5,188,0,0,1683,1682,1,0,0,0,1683,1684, + 1,0,0,0,1684,1685,1,0,0,0,1685,1687,3,180,90,0,1686,1683,1,0,0,0, + 1687,1690,1,0,0,0,1688,1686,1,0,0,0,1688,1689,1,0,0,0,1689,1695, + 1,0,0,0,1690,1688,1,0,0,0,1691,1693,5,188,0,0,1692,1691,1,0,0,0, + 1692,1693,1,0,0,0,1693,1694,1,0,0,0,1694,1696,3,214,107,0,1695,1692, + 1,0,0,0,1695,1696,1,0,0,0,1696,1698,1,0,0,0,1697,1668,1,0,0,0,1697, + 1678,1,0,0,0,1698,175,1,0,0,0,1699,1701,3,178,89,0,1700,1702,5,188, + 0,0,1701,1700,1,0,0,0,1701,1702,1,0,0,0,1702,1704,1,0,0,0,1703,1699, + 1,0,0,0,1704,1705,1,0,0,0,1705,1703,1,0,0,0,1705,1706,1,0,0,0,1706, + 1707,1,0,0,0,1707,1708,3,174,87,0,1708,177,1,0,0,0,1709,1711,3,182, + 91,0,1710,1712,5,188,0,0,1711,1710,1,0,0,0,1711,1712,1,0,0,0,1712, + 1714,1,0,0,0,1713,1709,1,0,0,0,1714,1717,1,0,0,0,1715,1713,1,0,0, + 0,1715,1716,1,0,0,0,1716,1724,1,0,0,0,1717,1715,1,0,0,0,1718,1720, + 3,180,90,0,1719,1721,5,188,0,0,1720,1719,1,0,0,0,1720,1721,1,0,0, + 0,1721,1723,1,0,0,0,1722,1718,1,0,0,0,1723,1726,1,0,0,0,1724,1722, + 1,0,0,0,1724,1725,1,0,0,0,1725,1727,1,0,0,0,1726,1724,1,0,0,0,1727, + 1728,3,212,106,0,1728,179,1,0,0,0,1729,1734,3,200,100,0,1730,1734, + 3,202,101,0,1731,1734,3,206,103,0,1732,1734,3,210,105,0,1733,1729, + 1,0,0,0,1733,1730,1,0,0,0,1733,1731,1,0,0,0,1733,1732,1,0,0,0,1734, + 181,1,0,0,0,1735,1740,3,192,96,0,1736,1740,3,198,99,0,1737,1740, + 3,190,95,0,1738,1740,3,184,92,0,1739,1735,1,0,0,0,1739,1736,1,0, + 0,0,1739,1737,1,0,0,0,1739,1738,1,0,0,0,1740,183,1,0,0,0,1741,1759, + 5,106,0,0,1742,1743,5,188,0,0,1743,1744,5,155,0,0,1744,1745,5,188, + 0,0,1745,1747,5,94,0,0,1746,1748,5,188,0,0,1747,1746,1,0,0,0,1747, + 1748,1,0,0,0,1748,1749,1,0,0,0,1749,1751,5,2,0,0,1750,1752,5,188, + 0,0,1751,1750,1,0,0,0,1751,1752,1,0,0,0,1752,1753,1,0,0,0,1753,1755, + 3,124,62,0,1754,1756,5,188,0,0,1755,1754,1,0,0,0,1755,1756,1,0,0, + 0,1756,1757,1,0,0,0,1757,1758,5,3,0,0,1758,1760,1,0,0,0,1759,1742, + 1,0,0,0,1759,1760,1,0,0,0,1760,1761,1,0,0,0,1761,1762,5,188,0,0, + 1762,1763,5,88,0,0,1763,1764,5,188,0,0,1764,1778,3,10,5,0,1765,1767, + 5,188,0,0,1766,1765,1,0,0,0,1766,1767,1,0,0,0,1767,1768,1,0,0,0, + 1768,1770,5,2,0,0,1769,1771,5,188,0,0,1770,1769,1,0,0,0,1770,1771, + 1,0,0,0,1771,1772,1,0,0,0,1772,1774,3,26,13,0,1773,1775,5,188,0, + 0,1774,1773,1,0,0,0,1774,1775,1,0,0,0,1775,1776,1,0,0,0,1776,1777, + 5,3,0,0,1777,1779,1,0,0,0,1778,1766,1,0,0,0,1778,1779,1,0,0,0,1779, + 1784,1,0,0,0,1780,1782,5,188,0,0,1781,1780,1,0,0,0,1781,1782,1,0, + 0,0,1782,1783,1,0,0,0,1783,1785,3,230,115,0,1784,1781,1,0,0,0,1784, + 1785,1,0,0,0,1785,185,1,0,0,0,1786,1787,3,360,180,0,1787,1788,5, + 188,0,0,1788,1789,5,52,0,0,1789,1790,5,188,0,0,1790,1792,1,0,0,0, + 1791,1786,1,0,0,0,1791,1792,1,0,0,0,1792,1793,1,0,0,0,1793,1794, + 3,360,180,0,1794,187,1,0,0,0,1795,1806,3,186,93,0,1796,1798,5,188, + 0,0,1797,1796,1,0,0,0,1797,1798,1,0,0,0,1798,1799,1,0,0,0,1799,1801, + 5,4,0,0,1800,1802,5,188,0,0,1801,1800,1,0,0,0,1801,1802,1,0,0,0, + 1802,1803,1,0,0,0,1803,1805,3,186,93,0,1804,1797,1,0,0,0,1805,1808, + 1,0,0,0,1806,1804,1,0,0,0,1806,1807,1,0,0,0,1807,189,1,0,0,0,1808, + 1806,1,0,0,0,1809,1810,5,58,0,0,1810,1811,5,188,0,0,1811,1816,3, + 340,170,0,1812,1814,5,188,0,0,1813,1812,1,0,0,0,1813,1814,1,0,0, + 0,1814,1815,1,0,0,0,1815,1817,3,230,115,0,1816,1813,1,0,0,0,1816, + 1817,1,0,0,0,1817,1824,1,0,0,0,1818,1820,5,188,0,0,1819,1818,1,0, + 0,0,1819,1820,1,0,0,0,1820,1821,1,0,0,0,1821,1822,5,160,0,0,1822, + 1823,5,188,0,0,1823,1825,3,188,94,0,1824,1819,1,0,0,0,1824,1825, + 1,0,0,0,1825,191,1,0,0,0,1826,1827,5,122,0,0,1827,1829,5,188,0,0, + 1828,1826,1,0,0,0,1828,1829,1,0,0,0,1829,1830,1,0,0,0,1830,1832, + 5,109,0,0,1831,1833,5,188,0,0,1832,1831,1,0,0,0,1832,1833,1,0,0, + 0,1833,1834,1,0,0,0,1834,1837,3,232,116,0,1835,1836,5,188,0,0,1836, + 1838,3,230,115,0,1837,1835,1,0,0,0,1837,1838,1,0,0,0,1838,1841,1, + 0,0,0,1839,1840,5,188,0,0,1840,1842,3,194,97,0,1841,1839,1,0,0,0, + 1841,1842,1,0,0,0,1842,193,1,0,0,0,1843,1844,5,95,0,0,1844,1845, + 5,188,0,0,1845,1846,3,196,98,0,1846,195,1,0,0,0,1847,1848,6,98,-1, + 0,1848,1850,5,2,0,0,1849,1851,5,188,0,0,1850,1849,1,0,0,0,1850,1851, + 1,0,0,0,1851,1852,1,0,0,0,1852,1854,3,196,98,0,1853,1855,5,188,0, + 0,1854,1853,1,0,0,0,1854,1855,1,0,0,0,1855,1856,1,0,0,0,1856,1857, + 5,3,0,0,1857,1860,1,0,0,0,1858,1860,3,374,187,0,1859,1847,1,0,0, + 0,1859,1858,1,0,0,0,1860,1877,1,0,0,0,1861,1862,10,4,0,0,1862,1863, + 5,188,0,0,1863,1864,5,103,0,0,1864,1865,5,188,0,0,1865,1876,3,196, + 98,5,1866,1871,10,3,0,0,1867,1868,5,188,0,0,1868,1869,5,113,0,0, + 1869,1870,5,188,0,0,1870,1872,3,374,187,0,1871,1867,1,0,0,0,1872, + 1873,1,0,0,0,1873,1871,1,0,0,0,1873,1874,1,0,0,0,1874,1876,1,0,0, + 0,1875,1861,1,0,0,0,1875,1866,1,0,0,0,1876,1879,1,0,0,0,1877,1875, + 1,0,0,0,1877,1878,1,0,0,0,1878,197,1,0,0,0,1879,1877,1,0,0,0,1880, + 1882,5,149,0,0,1881,1883,5,188,0,0,1882,1881,1,0,0,0,1882,1883,1, + 0,0,0,1883,1884,1,0,0,0,1884,1885,3,272,136,0,1885,1886,5,188,0, + 0,1886,1887,5,52,0,0,1887,1888,5,188,0,0,1888,1889,3,360,180,0,1889, + 199,1,0,0,0,1890,1892,5,69,0,0,1891,1893,5,188,0,0,1892,1891,1,0, + 0,0,1892,1893,1,0,0,0,1893,1894,1,0,0,0,1894,1895,3,232,116,0,1895, + 201,1,0,0,0,1896,1898,5,111,0,0,1897,1899,5,188,0,0,1898,1897,1, + 0,0,0,1898,1899,1,0,0,0,1899,1900,1,0,0,0,1900,1905,3,232,116,0, + 1901,1902,5,188,0,0,1902,1904,3,204,102,0,1903,1901,1,0,0,0,1904, + 1907,1,0,0,0,1905,1903,1,0,0,0,1905,1906,1,0,0,0,1906,203,1,0,0, + 0,1907,1905,1,0,0,0,1908,1909,5,119,0,0,1909,1910,5,188,0,0,1910, + 1911,5,109,0,0,1911,1912,5,188,0,0,1912,1919,3,206,103,0,1913,1914, + 5,119,0,0,1914,1915,5,188,0,0,1915,1916,5,69,0,0,1916,1917,5,188, + 0,0,1917,1919,3,206,103,0,1918,1908,1,0,0,0,1918,1913,1,0,0,0,1919, + 205,1,0,0,0,1920,1922,5,135,0,0,1921,1923,5,188,0,0,1922,1921,1, + 0,0,0,1922,1923,1,0,0,0,1923,1924,1,0,0,0,1924,1935,3,208,104,0, + 1925,1927,5,188,0,0,1926,1925,1,0,0,0,1926,1927,1,0,0,0,1927,1928, + 1,0,0,0,1928,1930,5,4,0,0,1929,1931,5,188,0,0,1930,1929,1,0,0,0, + 1930,1931,1,0,0,0,1931,1932,1,0,0,0,1932,1934,3,208,104,0,1933,1926, + 1,0,0,0,1934,1937,1,0,0,0,1935,1933,1,0,0,0,1935,1936,1,0,0,0,1936, + 1953,1,0,0,0,1937,1935,1,0,0,0,1938,1940,5,135,0,0,1939,1941,5,188, + 0,0,1940,1939,1,0,0,0,1940,1941,1,0,0,0,1941,1942,1,0,0,0,1942,1944, + 3,318,159,0,1943,1945,5,188,0,0,1944,1943,1,0,0,0,1944,1945,1,0, + 0,0,1945,1946,1,0,0,0,1946,1948,5,6,0,0,1947,1949,5,188,0,0,1948, + 1947,1,0,0,0,1948,1949,1,0,0,0,1949,1950,1,0,0,0,1950,1951,3,248, + 124,0,1951,1953,1,0,0,0,1952,1920,1,0,0,0,1952,1938,1,0,0,0,1953, + 207,1,0,0,0,1954,1956,3,366,183,0,1955,1957,5,188,0,0,1956,1955, + 1,0,0,0,1956,1957,1,0,0,0,1957,1958,1,0,0,0,1958,1960,5,6,0,0,1959, + 1961,5,188,0,0,1960,1959,1,0,0,0,1960,1961,1,0,0,0,1961,1962,1,0, + 0,0,1962,1963,3,272,136,0,1963,209,1,0,0,0,1964,1965,5,77,0,0,1965, + 1967,5,188,0,0,1966,1964,1,0,0,0,1966,1967,1,0,0,0,1967,1968,1,0, + 0,0,1968,1970,5,74,0,0,1969,1971,5,188,0,0,1970,1969,1,0,0,0,1970, + 1971,1,0,0,0,1971,1972,1,0,0,0,1972,1983,3,272,136,0,1973,1975,5, + 188,0,0,1974,1973,1,0,0,0,1974,1975,1,0,0,0,1975,1976,1,0,0,0,1976, + 1978,5,4,0,0,1977,1979,5,188,0,0,1978,1977,1,0,0,0,1978,1979,1,0, + 0,0,1979,1980,1,0,0,0,1980,1982,3,272,136,0,1981,1974,1,0,0,0,1982, + 1985,1,0,0,0,1983,1981,1,0,0,0,1983,1984,1,0,0,0,1984,211,1,0,0, + 0,1985,1983,1,0,0,0,1986,1987,5,155,0,0,1987,1992,3,216,108,0,1988, + 1990,5,188,0,0,1989,1988,1,0,0,0,1989,1990,1,0,0,0,1990,1991,1,0, + 0,0,1991,1993,3,230,115,0,1992,1989,1,0,0,0,1992,1993,1,0,0,0,1993, + 213,1,0,0,0,1994,1995,5,131,0,0,1995,1996,3,216,108,0,1996,215,1, + 0,0,0,1997,1999,5,188,0,0,1998,1997,1,0,0,0,1998,1999,1,0,0,0,1999, + 2000,1,0,0,0,2000,2002,5,78,0,0,2001,1998,1,0,0,0,2001,2002,1,0, + 0,0,2002,2003,1,0,0,0,2003,2004,5,188,0,0,2004,2007,3,218,109,0, + 2005,2006,5,188,0,0,2006,2008,3,222,111,0,2007,2005,1,0,0,0,2007, + 2008,1,0,0,0,2008,2011,1,0,0,0,2009,2010,5,188,0,0,2010,2012,3,224, + 112,0,2011,2009,1,0,0,0,2011,2012,1,0,0,0,2012,2015,1,0,0,0,2013, + 2014,5,188,0,0,2014,2016,3,226,113,0,2015,2013,1,0,0,0,2015,2016, + 1,0,0,0,2016,217,1,0,0,0,2017,2028,5,166,0,0,2018,2020,5,188,0,0, + 2019,2018,1,0,0,0,2019,2020,1,0,0,0,2020,2021,1,0,0,0,2021,2023, + 5,4,0,0,2022,2024,5,188,0,0,2023,2022,1,0,0,0,2023,2024,1,0,0,0, + 2024,2025,1,0,0,0,2025,2027,3,220,110,0,2026,2019,1,0,0,0,2027,2030, + 1,0,0,0,2028,2026,1,0,0,0,2028,2029,1,0,0,0,2029,2046,1,0,0,0,2030, + 2028,1,0,0,0,2031,2042,3,220,110,0,2032,2034,5,188,0,0,2033,2032, + 1,0,0,0,2033,2034,1,0,0,0,2034,2035,1,0,0,0,2035,2037,5,4,0,0,2036, + 2038,5,188,0,0,2037,2036,1,0,0,0,2037,2038,1,0,0,0,2038,2039,1,0, + 0,0,2039,2041,3,220,110,0,2040,2033,1,0,0,0,2041,2044,1,0,0,0,2042, + 2040,1,0,0,0,2042,2043,1,0,0,0,2043,2046,1,0,0,0,2044,2042,1,0,0, + 0,2045,2017,1,0,0,0,2045,2031,1,0,0,0,2046,219,1,0,0,0,2047,2048, + 3,272,136,0,2048,2049,5,188,0,0,2049,2050,5,52,0,0,2050,2051,5,188, + 0,0,2051,2052,3,360,180,0,2052,2055,1,0,0,0,2053,2055,3,272,136, + 0,2054,2047,1,0,0,0,2054,2053,1,0,0,0,2055,221,1,0,0,0,2056,2057, + 5,124,0,0,2057,2058,5,188,0,0,2058,2059,5,57,0,0,2059,2060,5,188, + 0,0,2060,2068,3,228,114,0,2061,2063,5,4,0,0,2062,2064,5,188,0,0, + 2063,2062,1,0,0,0,2063,2064,1,0,0,0,2064,2065,1,0,0,0,2065,2067, + 3,228,114,0,2066,2061,1,0,0,0,2067,2070,1,0,0,0,2068,2066,1,0,0, + 0,2068,2069,1,0,0,0,2069,223,1,0,0,0,2070,2068,1,0,0,0,2071,2072, + 5,167,0,0,2072,2073,5,188,0,0,2073,2074,3,272,136,0,2074,225,1,0, + 0,0,2075,2076,5,105,0,0,2076,2077,5,188,0,0,2077,2078,3,272,136, + 0,2078,227,1,0,0,0,2079,2084,3,272,136,0,2080,2082,5,188,0,0,2081, + 2080,1,0,0,0,2081,2082,1,0,0,0,2082,2083,1,0,0,0,2083,2085,7,2,0, + 0,2084,2081,1,0,0,0,2084,2085,1,0,0,0,2085,229,1,0,0,0,2086,2087, + 5,154,0,0,2087,2088,5,188,0,0,2088,2089,3,272,136,0,2089,231,1,0, + 0,0,2090,2101,3,234,117,0,2091,2093,5,188,0,0,2092,2091,1,0,0,0, + 2092,2093,1,0,0,0,2093,2094,1,0,0,0,2094,2096,5,4,0,0,2095,2097, + 5,188,0,0,2096,2095,1,0,0,0,2096,2097,1,0,0,0,2097,2098,1,0,0,0, + 2098,2100,3,234,117,0,2099,2092,1,0,0,0,2100,2103,1,0,0,0,2101,2099, + 1,0,0,0,2101,2102,1,0,0,0,2102,233,1,0,0,0,2103,2101,1,0,0,0,2104, + 2106,3,360,180,0,2105,2107,5,188,0,0,2106,2105,1,0,0,0,2106,2107, + 1,0,0,0,2107,2108,1,0,0,0,2108,2110,5,6,0,0,2109,2111,5,188,0,0, + 2110,2109,1,0,0,0,2110,2111,1,0,0,0,2111,2112,1,0,0,0,2112,2113, + 3,236,118,0,2113,2116,1,0,0,0,2114,2116,3,236,118,0,2115,2104,1, + 0,0,0,2115,2114,1,0,0,0,2116,235,1,0,0,0,2117,2118,3,238,119,0,2118, + 237,1,0,0,0,2119,2126,3,240,120,0,2120,2122,5,188,0,0,2121,2120, + 1,0,0,0,2121,2122,1,0,0,0,2122,2123,1,0,0,0,2123,2125,3,242,121, + 0,2124,2121,1,0,0,0,2125,2128,1,0,0,0,2126,2124,1,0,0,0,2126,2127, + 1,0,0,0,2127,2134,1,0,0,0,2128,2126,1,0,0,0,2129,2130,5,2,0,0,2130, + 2131,3,238,119,0,2131,2132,5,3,0,0,2132,2134,1,0,0,0,2133,2119,1, + 0,0,0,2133,2129,1,0,0,0,2134,239,1,0,0,0,2135,2137,5,2,0,0,2136, + 2138,5,188,0,0,2137,2136,1,0,0,0,2137,2138,1,0,0,0,2138,2143,1,0, + 0,0,2139,2141,3,360,180,0,2140,2142,5,188,0,0,2141,2140,1,0,0,0, + 2141,2142,1,0,0,0,2142,2144,1,0,0,0,2143,2139,1,0,0,0,2143,2144, + 1,0,0,0,2144,2149,1,0,0,0,2145,2147,3,252,126,0,2146,2148,5,188, + 0,0,2147,2146,1,0,0,0,2147,2148,1,0,0,0,2148,2150,1,0,0,0,2149,2145, + 1,0,0,0,2149,2150,1,0,0,0,2150,2155,1,0,0,0,2151,2153,3,248,124, + 0,2152,2154,5,188,0,0,2153,2152,1,0,0,0,2153,2154,1,0,0,0,2154,2156, + 1,0,0,0,2155,2151,1,0,0,0,2155,2156,1,0,0,0,2156,2157,1,0,0,0,2157, + 2158,5,3,0,0,2158,241,1,0,0,0,2159,2161,3,244,122,0,2160,2162,5, + 188,0,0,2161,2160,1,0,0,0,2161,2162,1,0,0,0,2162,2163,1,0,0,0,2163, + 2164,3,240,120,0,2164,243,1,0,0,0,2165,2167,3,380,190,0,2166,2168, + 5,188,0,0,2167,2166,1,0,0,0,2167,2168,1,0,0,0,2168,2169,1,0,0,0, + 2169,2171,3,384,192,0,2170,2172,5,188,0,0,2171,2170,1,0,0,0,2171, + 2172,1,0,0,0,2172,2174,1,0,0,0,2173,2175,3,246,123,0,2174,2173,1, + 0,0,0,2174,2175,1,0,0,0,2175,2177,1,0,0,0,2176,2178,5,188,0,0,2177, + 2176,1,0,0,0,2177,2178,1,0,0,0,2178,2179,1,0,0,0,2179,2180,3,384, + 192,0,2180,2210,1,0,0,0,2181,2183,3,384,192,0,2182,2184,5,188,0, + 0,2183,2182,1,0,0,0,2183,2184,1,0,0,0,2184,2186,1,0,0,0,2185,2187, + 3,246,123,0,2186,2185,1,0,0,0,2186,2187,1,0,0,0,2187,2189,1,0,0, + 0,2188,2190,5,188,0,0,2189,2188,1,0,0,0,2189,2190,1,0,0,0,2190,2191, + 1,0,0,0,2191,2193,3,384,192,0,2192,2194,5,188,0,0,2193,2192,1,0, + 0,0,2193,2194,1,0,0,0,2194,2195,1,0,0,0,2195,2196,3,382,191,0,2196, + 2210,1,0,0,0,2197,2199,3,384,192,0,2198,2200,5,188,0,0,2199,2198, + 1,0,0,0,2199,2200,1,0,0,0,2200,2202,1,0,0,0,2201,2203,3,246,123, + 0,2202,2201,1,0,0,0,2202,2203,1,0,0,0,2203,2205,1,0,0,0,2204,2206, + 5,188,0,0,2205,2204,1,0,0,0,2205,2206,1,0,0,0,2206,2207,1,0,0,0, + 2207,2208,3,384,192,0,2208,2210,1,0,0,0,2209,2165,1,0,0,0,2209,2181, + 1,0,0,0,2209,2197,1,0,0,0,2210,245,1,0,0,0,2211,2213,5,7,0,0,2212, + 2214,5,188,0,0,2213,2212,1,0,0,0,2213,2214,1,0,0,0,2214,2219,1,0, + 0,0,2215,2217,3,360,180,0,2216,2218,5,188,0,0,2217,2216,1,0,0,0, + 2217,2218,1,0,0,0,2218,2220,1,0,0,0,2219,2215,1,0,0,0,2219,2220, + 1,0,0,0,2220,2225,1,0,0,0,2221,2223,3,250,125,0,2222,2224,5,188, + 0,0,2223,2222,1,0,0,0,2223,2224,1,0,0,0,2224,2226,1,0,0,0,2225,2221, + 1,0,0,0,2225,2226,1,0,0,0,2226,2231,1,0,0,0,2227,2229,3,254,127, + 0,2228,2230,5,188,0,0,2229,2228,1,0,0,0,2229,2230,1,0,0,0,2230,2232, + 1,0,0,0,2231,2227,1,0,0,0,2231,2232,1,0,0,0,2232,2237,1,0,0,0,2233, + 2235,3,248,124,0,2234,2236,5,188,0,0,2235,2234,1,0,0,0,2235,2236, + 1,0,0,0,2236,2238,1,0,0,0,2237,2233,1,0,0,0,2237,2238,1,0,0,0,2238, + 2239,1,0,0,0,2239,2240,5,8,0,0,2240,247,1,0,0,0,2241,2243,5,9,0, + 0,2242,2244,5,188,0,0,2243,2242,1,0,0,0,2243,2244,1,0,0,0,2244,2278, + 1,0,0,0,2245,2247,3,368,184,0,2246,2248,5,188,0,0,2247,2246,1,0, + 0,0,2247,2248,1,0,0,0,2248,2249,1,0,0,0,2249,2251,5,169,0,0,2250, + 2252,5,188,0,0,2251,2250,1,0,0,0,2251,2252,1,0,0,0,2252,2253,1,0, + 0,0,2253,2255,3,272,136,0,2254,2256,5,188,0,0,2255,2254,1,0,0,0, + 2255,2256,1,0,0,0,2256,2275,1,0,0,0,2257,2259,5,4,0,0,2258,2260, + 5,188,0,0,2259,2258,1,0,0,0,2259,2260,1,0,0,0,2260,2261,1,0,0,0, + 2261,2263,3,368,184,0,2262,2264,5,188,0,0,2263,2262,1,0,0,0,2263, + 2264,1,0,0,0,2264,2265,1,0,0,0,2265,2267,5,169,0,0,2266,2268,5,188, + 0,0,2267,2266,1,0,0,0,2267,2268,1,0,0,0,2268,2269,1,0,0,0,2269,2271, + 3,272,136,0,2270,2272,5,188,0,0,2271,2270,1,0,0,0,2271,2272,1,0, + 0,0,2272,2274,1,0,0,0,2273,2257,1,0,0,0,2274,2277,1,0,0,0,2275,2273, + 1,0,0,0,2275,2276,1,0,0,0,2276,2279,1,0,0,0,2277,2275,1,0,0,0,2278, + 2245,1,0,0,0,2278,2279,1,0,0,0,2279,2280,1,0,0,0,2280,2281,5,10, + 0,0,2281,249,1,0,0,0,2282,2284,5,169,0,0,2283,2285,5,188,0,0,2284, + 2283,1,0,0,0,2284,2285,1,0,0,0,2285,2286,1,0,0,0,2286,2300,3,270, + 135,0,2287,2289,5,188,0,0,2288,2287,1,0,0,0,2288,2289,1,0,0,0,2289, + 2290,1,0,0,0,2290,2292,5,11,0,0,2291,2293,5,169,0,0,2292,2291,1, + 0,0,0,2292,2293,1,0,0,0,2293,2295,1,0,0,0,2294,2296,5,188,0,0,2295, + 2294,1,0,0,0,2295,2296,1,0,0,0,2296,2297,1,0,0,0,2297,2299,3,270, + 135,0,2298,2288,1,0,0,0,2299,2302,1,0,0,0,2300,2298,1,0,0,0,2300, + 2301,1,0,0,0,2301,251,1,0,0,0,2302,2300,1,0,0,0,2303,2305,5,169, + 0,0,2304,2306,5,188,0,0,2305,2304,1,0,0,0,2305,2306,1,0,0,0,2306, + 2307,1,0,0,0,2307,2324,3,268,134,0,2308,2310,5,188,0,0,2309,2308, + 1,0,0,0,2309,2310,1,0,0,0,2310,2316,1,0,0,0,2311,2313,5,11,0,0,2312, + 2314,5,169,0,0,2313,2312,1,0,0,0,2313,2314,1,0,0,0,2314,2317,1,0, + 0,0,2315,2317,5,169,0,0,2316,2311,1,0,0,0,2316,2315,1,0,0,0,2317, + 2319,1,0,0,0,2318,2320,5,188,0,0,2319,2318,1,0,0,0,2319,2320,1,0, + 0,0,2320,2321,1,0,0,0,2321,2323,3,268,134,0,2322,2309,1,0,0,0,2323, + 2326,1,0,0,0,2324,2322,1,0,0,0,2324,2325,1,0,0,0,2325,253,1,0,0, + 0,2326,2324,1,0,0,0,2327,2332,5,166,0,0,2328,2330,5,188,0,0,2329, + 2328,1,0,0,0,2329,2330,1,0,0,0,2330,2331,1,0,0,0,2331,2333,3,256, + 128,0,2332,2329,1,0,0,0,2332,2333,1,0,0,0,2333,2338,1,0,0,0,2334, + 2336,5,188,0,0,2335,2334,1,0,0,0,2335,2336,1,0,0,0,2336,2337,1,0, + 0,0,2337,2339,3,258,129,0,2338,2335,1,0,0,0,2338,2339,1,0,0,0,2339, + 2344,1,0,0,0,2340,2342,5,188,0,0,2341,2340,1,0,0,0,2341,2342,1,0, + 0,0,2342,2343,1,0,0,0,2343,2345,3,260,130,0,2344,2341,1,0,0,0,2344, + 2345,1,0,0,0,2345,255,1,0,0,0,2346,2347,5,48,0,0,2347,2349,5,188, + 0,0,2348,2346,1,0,0,0,2348,2349,1,0,0,0,2349,2350,1,0,0,0,2350,2352, + 5,157,0,0,2351,2353,5,188,0,0,2352,2351,1,0,0,0,2352,2353,1,0,0, + 0,2353,2354,1,0,0,0,2354,2356,5,2,0,0,2355,2357,5,188,0,0,2356,2355, + 1,0,0,0,2356,2357,1,0,0,0,2357,2358,1,0,0,0,2358,2360,3,368,184, + 0,2359,2361,5,188,0,0,2360,2359,1,0,0,0,2360,2361,1,0,0,0,2361,2362, + 1,0,0,0,2362,2363,5,3,0,0,2363,2371,1,0,0,0,2364,2371,5,137,0,0, + 2365,2366,5,48,0,0,2366,2367,5,188,0,0,2367,2371,5,137,0,0,2368, + 2371,5,144,0,0,2369,2371,5,45,0,0,2370,2348,1,0,0,0,2370,2364,1, + 0,0,0,2370,2365,1,0,0,0,2370,2368,1,0,0,0,2370,2369,1,0,0,0,2371, + 257,1,0,0,0,2372,2374,3,264,132,0,2373,2372,1,0,0,0,2373,2374,1, + 0,0,0,2374,2376,1,0,0,0,2375,2377,5,188,0,0,2376,2375,1,0,0,0,2376, + 2377,1,0,0,0,2377,2378,1,0,0,0,2378,2380,5,170,0,0,2379,2381,5,188, + 0,0,2380,2379,1,0,0,0,2380,2381,1,0,0,0,2381,2383,1,0,0,0,2382,2384, + 3,266,133,0,2383,2382,1,0,0,0,2383,2384,1,0,0,0,2384,2387,1,0,0, + 0,2385,2387,3,370,185,0,2386,2373,1,0,0,0,2386,2385,1,0,0,0,2387, + 259,1,0,0,0,2388,2390,5,2,0,0,2389,2391,5,188,0,0,2390,2389,1,0, + 0,0,2390,2391,1,0,0,0,2391,2392,1,0,0,0,2392,2394,3,360,180,0,2393, + 2395,5,188,0,0,2394,2393,1,0,0,0,2394,2395,1,0,0,0,2395,2396,1,0, + 0,0,2396,2398,5,4,0,0,2397,2399,5,188,0,0,2398,2397,1,0,0,0,2398, + 2399,1,0,0,0,2399,2400,1,0,0,0,2400,2412,3,360,180,0,2401,2403,5, + 188,0,0,2402,2401,1,0,0,0,2402,2403,1,0,0,0,2403,2404,1,0,0,0,2404, + 2406,5,11,0,0,2405,2407,5,188,0,0,2406,2405,1,0,0,0,2406,2407,1, + 0,0,0,2407,2408,1,0,0,0,2408,2410,3,230,115,0,2409,2411,5,188,0, + 0,2410,2409,1,0,0,0,2410,2411,1,0,0,0,2411,2413,1,0,0,0,2412,2402, + 1,0,0,0,2412,2413,1,0,0,0,2413,2433,1,0,0,0,2414,2416,5,188,0,0, + 2415,2414,1,0,0,0,2415,2416,1,0,0,0,2416,2417,1,0,0,0,2417,2419, + 5,11,0,0,2418,2420,5,188,0,0,2419,2418,1,0,0,0,2419,2420,1,0,0,0, + 2420,2421,1,0,0,0,2421,2423,3,262,131,0,2422,2424,5,188,0,0,2423, + 2422,1,0,0,0,2423,2424,1,0,0,0,2424,2425,1,0,0,0,2425,2427,5,4,0, + 0,2426,2428,5,188,0,0,2427,2426,1,0,0,0,2427,2428,1,0,0,0,2428,2429, + 1,0,0,0,2429,2431,3,262,131,0,2430,2432,5,188,0,0,2431,2430,1,0, + 0,0,2431,2432,1,0,0,0,2432,2434,1,0,0,0,2433,2415,1,0,0,0,2433,2434, + 1,0,0,0,2434,2435,1,0,0,0,2435,2436,5,3,0,0,2436,261,1,0,0,0,2437, + 2439,5,9,0,0,2438,2440,5,188,0,0,2439,2438,1,0,0,0,2439,2440,1,0, + 0,0,2440,2442,1,0,0,0,2441,2443,3,218,109,0,2442,2441,1,0,0,0,2442, + 2443,1,0,0,0,2443,2445,1,0,0,0,2444,2446,5,188,0,0,2445,2444,1,0, + 0,0,2445,2446,1,0,0,0,2446,2447,1,0,0,0,2447,2448,5,10,0,0,2448, + 263,1,0,0,0,2449,2450,5,175,0,0,2450,265,1,0,0,0,2451,2452,5,175, + 0,0,2452,267,1,0,0,0,2453,2456,3,374,187,0,2454,2455,5,5,0,0,2455, + 2457,3,374,187,0,2456,2454,1,0,0,0,2456,2457,1,0,0,0,2457,269,1, + 0,0,0,2458,2459,3,374,187,0,2459,271,1,0,0,0,2460,2461,3,274,137, + 0,2461,273,1,0,0,0,2462,2469,3,276,138,0,2463,2464,5,188,0,0,2464, + 2465,5,123,0,0,2465,2466,5,188,0,0,2466,2468,3,276,138,0,2467,2463, + 1,0,0,0,2468,2471,1,0,0,0,2469,2467,1,0,0,0,2469,2470,1,0,0,0,2470, + 275,1,0,0,0,2471,2469,1,0,0,0,2472,2479,3,278,139,0,2473,2474,5, + 188,0,0,2474,2475,5,158,0,0,2475,2476,5,188,0,0,2476,2478,3,278, + 139,0,2477,2473,1,0,0,0,2478,2481,1,0,0,0,2479,2477,1,0,0,0,2479, + 2480,1,0,0,0,2480,277,1,0,0,0,2481,2479,1,0,0,0,2482,2489,3,280, + 140,0,2483,2484,5,188,0,0,2484,2485,5,51,0,0,2485,2486,5,188,0,0, + 2486,2488,3,280,140,0,2487,2483,1,0,0,0,2488,2491,1,0,0,0,2489,2487, + 1,0,0,0,2489,2490,1,0,0,0,2490,279,1,0,0,0,2491,2489,1,0,0,0,2492, + 2494,5,116,0,0,2493,2495,5,188,0,0,2494,2493,1,0,0,0,2494,2495,1, + 0,0,0,2495,2497,1,0,0,0,2496,2492,1,0,0,0,2497,2500,1,0,0,0,2498, + 2496,1,0,0,0,2498,2499,1,0,0,0,2499,2501,1,0,0,0,2500,2498,1,0,0, + 0,2501,2502,3,282,141,0,2502,281,1,0,0,0,2503,2513,3,286,143,0,2504, + 2506,5,188,0,0,2505,2504,1,0,0,0,2505,2506,1,0,0,0,2506,2507,1,0, + 0,0,2507,2509,3,284,142,0,2508,2510,5,188,0,0,2509,2508,1,0,0,0, + 2509,2510,1,0,0,0,2510,2511,1,0,0,0,2511,2512,3,286,143,0,2512,2514, + 1,0,0,0,2513,2505,1,0,0,0,2513,2514,1,0,0,0,2514,2552,1,0,0,0,2515, + 2517,3,286,143,0,2516,2518,5,188,0,0,2517,2516,1,0,0,0,2517,2518, + 1,0,0,0,2518,2519,1,0,0,0,2519,2521,5,168,0,0,2520,2522,5,188,0, + 0,2521,2520,1,0,0,0,2521,2522,1,0,0,0,2522,2523,1,0,0,0,2523,2524, + 3,286,143,0,2524,2525,1,0,0,0,2525,2526,6,141,-1,0,2526,2552,1,0, + 0,0,2527,2529,3,286,143,0,2528,2530,5,188,0,0,2529,2528,1,0,0,0, + 2529,2530,1,0,0,0,2530,2531,1,0,0,0,2531,2533,3,284,142,0,2532,2534, + 5,188,0,0,2533,2532,1,0,0,0,2533,2534,1,0,0,0,2534,2535,1,0,0,0, + 2535,2545,3,286,143,0,2536,2538,5,188,0,0,2537,2536,1,0,0,0,2537, + 2538,1,0,0,0,2538,2539,1,0,0,0,2539,2541,3,284,142,0,2540,2542,5, + 188,0,0,2541,2540,1,0,0,0,2541,2542,1,0,0,0,2542,2543,1,0,0,0,2543, + 2544,3,286,143,0,2544,2546,1,0,0,0,2545,2537,1,0,0,0,2546,2547,1, + 0,0,0,2547,2545,1,0,0,0,2547,2548,1,0,0,0,2548,2549,1,0,0,0,2549, + 2550,6,141,-1,0,2550,2552,1,0,0,0,2551,2503,1,0,0,0,2551,2515,1, + 0,0,0,2551,2527,1,0,0,0,2552,283,1,0,0,0,2553,2554,7,3,0,0,2554, + 285,1,0,0,0,2555,2566,3,288,144,0,2556,2558,5,188,0,0,2557,2556, + 1,0,0,0,2557,2558,1,0,0,0,2558,2559,1,0,0,0,2559,2561,5,11,0,0,2560, + 2562,5,188,0,0,2561,2560,1,0,0,0,2561,2562,1,0,0,0,2562,2563,1,0, + 0,0,2563,2565,3,288,144,0,2564,2557,1,0,0,0,2565,2568,1,0,0,0,2566, + 2564,1,0,0,0,2566,2567,1,0,0,0,2567,287,1,0,0,0,2568,2566,1,0,0, + 0,2569,2580,3,290,145,0,2570,2572,5,188,0,0,2571,2570,1,0,0,0,2571, + 2572,1,0,0,0,2572,2573,1,0,0,0,2573,2575,5,17,0,0,2574,2576,5,188, + 0,0,2575,2574,1,0,0,0,2575,2576,1,0,0,0,2576,2577,1,0,0,0,2577,2579, + 3,290,145,0,2578,2571,1,0,0,0,2579,2582,1,0,0,0,2580,2578,1,0,0, + 0,2580,2581,1,0,0,0,2581,289,1,0,0,0,2582,2580,1,0,0,0,2583,2595, + 3,294,147,0,2584,2586,5,188,0,0,2585,2584,1,0,0,0,2585,2586,1,0, + 0,0,2586,2587,1,0,0,0,2587,2589,3,292,146,0,2588,2590,5,188,0,0, + 2589,2588,1,0,0,0,2589,2590,1,0,0,0,2590,2591,1,0,0,0,2591,2592, + 3,294,147,0,2592,2594,1,0,0,0,2593,2585,1,0,0,0,2594,2597,1,0,0, + 0,2595,2593,1,0,0,0,2595,2596,1,0,0,0,2596,291,1,0,0,0,2597,2595, + 1,0,0,0,2598,2599,7,4,0,0,2599,293,1,0,0,0,2600,2612,3,298,149,0, + 2601,2603,5,188,0,0,2602,2601,1,0,0,0,2602,2603,1,0,0,0,2603,2604, + 1,0,0,0,2604,2606,3,296,148,0,2605,2607,5,188,0,0,2606,2605,1,0, + 0,0,2606,2607,1,0,0,0,2607,2608,1,0,0,0,2608,2609,3,298,149,0,2609, + 2611,1,0,0,0,2610,2602,1,0,0,0,2611,2614,1,0,0,0,2612,2610,1,0,0, + 0,2612,2613,1,0,0,0,2613,295,1,0,0,0,2614,2612,1,0,0,0,2615,2616, + 7,5,0,0,2616,297,1,0,0,0,2617,2629,3,302,151,0,2618,2620,5,188,0, + 0,2619,2618,1,0,0,0,2619,2620,1,0,0,0,2620,2621,1,0,0,0,2621,2623, + 3,300,150,0,2622,2624,5,188,0,0,2623,2622,1,0,0,0,2623,2624,1,0, + 0,0,2624,2625,1,0,0,0,2625,2626,3,302,151,0,2626,2628,1,0,0,0,2627, + 2619,1,0,0,0,2628,2631,1,0,0,0,2629,2627,1,0,0,0,2629,2630,1,0,0, + 0,2630,299,1,0,0,0,2631,2629,1,0,0,0,2632,2633,7,6,0,0,2633,301, + 1,0,0,0,2634,2645,3,304,152,0,2635,2637,5,188,0,0,2636,2635,1,0, + 0,0,2636,2637,1,0,0,0,2637,2638,1,0,0,0,2638,2640,5,23,0,0,2639, + 2641,5,188,0,0,2640,2639,1,0,0,0,2640,2641,1,0,0,0,2641,2642,1,0, + 0,0,2642,2644,3,304,152,0,2643,2636,1,0,0,0,2644,2647,1,0,0,0,2645, + 2643,1,0,0,0,2645,2646,1,0,0,0,2646,303,1,0,0,0,2647,2645,1,0,0, + 0,2648,2656,3,314,157,0,2649,2657,3,308,154,0,2650,2652,3,306,153, + 0,2651,2650,1,0,0,0,2652,2653,1,0,0,0,2653,2651,1,0,0,0,2653,2654, + 1,0,0,0,2654,2657,1,0,0,0,2655,2657,3,312,156,0,2656,2649,1,0,0, + 0,2656,2651,1,0,0,0,2656,2655,1,0,0,0,2656,2657,1,0,0,0,2657,305, + 1,0,0,0,2658,2659,5,188,0,0,2659,2661,5,99,0,0,2660,2662,5,188,0, + 0,2661,2660,1,0,0,0,2661,2662,1,0,0,0,2662,2663,1,0,0,0,2663,2678, + 3,316,158,0,2664,2665,5,7,0,0,2665,2666,3,272,136,0,2666,2667,5, + 8,0,0,2667,2678,1,0,0,0,2668,2670,5,7,0,0,2669,2671,3,272,136,0, + 2670,2669,1,0,0,0,2670,2671,1,0,0,0,2671,2672,1,0,0,0,2672,2674, + 7,7,0,0,2673,2675,3,272,136,0,2674,2673,1,0,0,0,2674,2675,1,0,0, + 0,2675,2676,1,0,0,0,2676,2678,5,8,0,0,2677,2658,1,0,0,0,2677,2664, + 1,0,0,0,2677,2668,1,0,0,0,2678,307,1,0,0,0,2679,2691,3,310,155,0, + 2680,2681,5,188,0,0,2681,2682,5,139,0,0,2682,2683,5,188,0,0,2683, + 2691,5,155,0,0,2684,2685,5,188,0,0,2685,2686,5,82,0,0,2686,2687, + 5,188,0,0,2687,2691,5,155,0,0,2688,2689,5,188,0,0,2689,2691,5,66, + 0,0,2690,2679,1,0,0,0,2690,2680,1,0,0,0,2690,2684,1,0,0,0,2690,2688, + 1,0,0,0,2691,2693,1,0,0,0,2692,2694,5,188,0,0,2693,2692,1,0,0,0, + 2693,2694,1,0,0,0,2694,2695,1,0,0,0,2695,2696,3,316,158,0,2696,309, + 1,0,0,0,2697,2699,5,188,0,0,2698,2697,1,0,0,0,2698,2699,1,0,0,0, + 2699,2700,1,0,0,0,2700,2701,5,24,0,0,2701,311,1,0,0,0,2702,2703, + 5,188,0,0,2703,2704,5,102,0,0,2704,2705,5,188,0,0,2705,2713,5,118, + 0,0,2706,2707,5,188,0,0,2707,2708,5,102,0,0,2708,2709,5,188,0,0, + 2709,2710,5,116,0,0,2710,2711,5,188,0,0,2711,2713,5,118,0,0,2712, + 2702,1,0,0,0,2712,2706,1,0,0,0,2713,313,1,0,0,0,2714,2716,5,171, + 0,0,2715,2717,5,188,0,0,2716,2715,1,0,0,0,2716,2717,1,0,0,0,2717, + 2719,1,0,0,0,2718,2714,1,0,0,0,2719,2722,1,0,0,0,2720,2718,1,0,0, + 0,2720,2721,1,0,0,0,2721,2723,1,0,0,0,2722,2720,1,0,0,0,2723,2728, + 3,316,158,0,2724,2726,5,188,0,0,2725,2724,1,0,0,0,2725,2726,1,0, + 0,0,2726,2727,1,0,0,0,2727,2729,5,172,0,0,2728,2725,1,0,0,0,2728, + 2729,1,0,0,0,2729,315,1,0,0,0,2730,2737,3,318,159,0,2731,2733,5, + 188,0,0,2732,2731,1,0,0,0,2732,2733,1,0,0,0,2733,2734,1,0,0,0,2734, + 2736,3,354,177,0,2735,2732,1,0,0,0,2736,2739,1,0,0,0,2737,2735,1, + 0,0,0,2737,2738,1,0,0,0,2738,317,1,0,0,0,2739,2737,1,0,0,0,2740, + 2750,3,326,163,0,2741,2750,3,364,182,0,2742,2750,3,356,178,0,2743, + 2750,3,338,169,0,2744,2750,3,340,170,0,2745,2750,3,350,175,0,2746, + 2750,3,352,176,0,2747,2750,3,360,180,0,2748,2750,3,320,160,0,2749, + 2740,1,0,0,0,2749,2741,1,0,0,0,2749,2742,1,0,0,0,2749,2743,1,0,0, + 0,2749,2744,1,0,0,0,2749,2745,1,0,0,0,2749,2746,1,0,0,0,2749,2747, + 1,0,0,0,2749,2748,1,0,0,0,2750,319,1,0,0,0,2751,2753,5,48,0,0,2752, + 2754,5,188,0,0,2753,2752,1,0,0,0,2753,2754,1,0,0,0,2754,2755,1,0, + 0,0,2755,2757,5,2,0,0,2756,2758,5,188,0,0,2757,2756,1,0,0,0,2757, + 2758,1,0,0,0,2758,2759,1,0,0,0,2759,2761,3,322,161,0,2760,2762,5, + 188,0,0,2761,2760,1,0,0,0,2761,2762,1,0,0,0,2762,2763,1,0,0,0,2763, + 2764,5,3,0,0,2764,2808,1,0,0,0,2765,2767,5,46,0,0,2766,2768,5,188, + 0,0,2767,2766,1,0,0,0,2767,2768,1,0,0,0,2768,2769,1,0,0,0,2769,2771, + 5,2,0,0,2770,2772,5,188,0,0,2771,2770,1,0,0,0,2771,2772,1,0,0,0, + 2772,2773,1,0,0,0,2773,2775,3,322,161,0,2774,2776,5,188,0,0,2775, + 2774,1,0,0,0,2775,2776,1,0,0,0,2776,2777,1,0,0,0,2777,2778,5,3,0, + 0,2778,2808,1,0,0,0,2779,2781,5,117,0,0,2780,2782,5,188,0,0,2781, + 2780,1,0,0,0,2781,2782,1,0,0,0,2782,2783,1,0,0,0,2783,2785,5,2,0, + 0,2784,2786,5,188,0,0,2785,2784,1,0,0,0,2785,2786,1,0,0,0,2786,2787, + 1,0,0,0,2787,2789,3,322,161,0,2788,2790,5,188,0,0,2789,2788,1,0, + 0,0,2789,2790,1,0,0,0,2790,2791,1,0,0,0,2791,2792,5,3,0,0,2792,2808, + 1,0,0,0,2793,2795,5,159,0,0,2794,2796,5,188,0,0,2795,2794,1,0,0, + 0,2795,2796,1,0,0,0,2796,2797,1,0,0,0,2797,2799,5,2,0,0,2798,2800, + 5,188,0,0,2799,2798,1,0,0,0,2799,2800,1,0,0,0,2800,2801,1,0,0,0, + 2801,2803,3,322,161,0,2802,2804,5,188,0,0,2803,2802,1,0,0,0,2803, + 2804,1,0,0,0,2804,2805,1,0,0,0,2805,2806,5,3,0,0,2806,2808,1,0,0, + 0,2807,2751,1,0,0,0,2807,2765,1,0,0,0,2807,2779,1,0,0,0,2807,2793, + 1,0,0,0,2808,321,1,0,0,0,2809,2810,3,324,162,0,2810,2811,5,188,0, + 0,2811,2812,3,230,115,0,2812,323,1,0,0,0,2813,2814,3,360,180,0,2814, + 2815,5,188,0,0,2815,2816,5,99,0,0,2816,2817,5,188,0,0,2817,2818, + 3,272,136,0,2818,325,1,0,0,0,2819,2826,3,362,181,0,2820,2826,5,173, + 0,0,2821,2826,3,328,164,0,2822,2826,5,118,0,0,2823,2826,3,330,165, + 0,2824,2826,3,334,167,0,2825,2819,1,0,0,0,2825,2820,1,0,0,0,2825, + 2821,1,0,0,0,2825,2822,1,0,0,0,2825,2823,1,0,0,0,2825,2824,1,0,0, + 0,2826,327,1,0,0,0,2827,2828,7,8,0,0,2828,329,1,0,0,0,2829,2831, + 5,7,0,0,2830,2832,5,188,0,0,2831,2830,1,0,0,0,2831,2832,1,0,0,0, + 2832,2846,1,0,0,0,2833,2835,3,272,136,0,2834,2836,5,188,0,0,2835, + 2834,1,0,0,0,2835,2836,1,0,0,0,2836,2843,1,0,0,0,2837,2839,3,332, + 166,0,2838,2840,5,188,0,0,2839,2838,1,0,0,0,2839,2840,1,0,0,0,2840, + 2842,1,0,0,0,2841,2837,1,0,0,0,2842,2845,1,0,0,0,2843,2841,1,0,0, + 0,2843,2844,1,0,0,0,2844,2847,1,0,0,0,2845,2843,1,0,0,0,2846,2833, + 1,0,0,0,2846,2847,1,0,0,0,2847,2848,1,0,0,0,2848,2849,5,8,0,0,2849, + 331,1,0,0,0,2850,2852,5,4,0,0,2851,2853,5,188,0,0,2852,2851,1,0, + 0,0,2852,2853,1,0,0,0,2853,2855,1,0,0,0,2854,2856,3,272,136,0,2855, + 2854,1,0,0,0,2855,2856,1,0,0,0,2856,333,1,0,0,0,2857,2859,5,9,0, + 0,2858,2860,5,188,0,0,2859,2858,1,0,0,0,2859,2860,1,0,0,0,2860,2861, + 1,0,0,0,2861,2863,3,336,168,0,2862,2864,5,188,0,0,2863,2862,1,0, + 0,0,2863,2864,1,0,0,0,2864,2875,1,0,0,0,2865,2867,5,4,0,0,2866,2868, + 5,188,0,0,2867,2866,1,0,0,0,2867,2868,1,0,0,0,2868,2869,1,0,0,0, + 2869,2871,3,336,168,0,2870,2872,5,188,0,0,2871,2870,1,0,0,0,2871, + 2872,1,0,0,0,2872,2874,1,0,0,0,2873,2865,1,0,0,0,2874,2877,1,0,0, + 0,2875,2873,1,0,0,0,2875,2876,1,0,0,0,2876,2878,1,0,0,0,2877,2875, + 1,0,0,0,2878,2879,5,10,0,0,2879,335,1,0,0,0,2880,2883,3,376,188, + 0,2881,2883,5,173,0,0,2882,2880,1,0,0,0,2882,2881,1,0,0,0,2883,2885, + 1,0,0,0,2884,2886,5,188,0,0,2885,2884,1,0,0,0,2885,2886,1,0,0,0, + 2886,2887,1,0,0,0,2887,2889,5,169,0,0,2888,2890,5,188,0,0,2889,2888, + 1,0,0,0,2889,2890,1,0,0,0,2890,2891,1,0,0,0,2891,2892,3,272,136, + 0,2892,337,1,0,0,0,2893,2895,5,2,0,0,2894,2896,5,188,0,0,2895,2894, + 1,0,0,0,2895,2896,1,0,0,0,2896,2897,1,0,0,0,2897,2899,3,272,136, + 0,2898,2900,5,188,0,0,2899,2898,1,0,0,0,2899,2900,1,0,0,0,2900,2901, + 1,0,0,0,2901,2902,5,3,0,0,2902,339,1,0,0,0,2903,2905,5,68,0,0,2904, + 2906,5,188,0,0,2905,2904,1,0,0,0,2905,2906,1,0,0,0,2906,2907,1,0, + 0,0,2907,2909,5,2,0,0,2908,2910,5,188,0,0,2909,2908,1,0,0,0,2909, + 2910,1,0,0,0,2910,2911,1,0,0,0,2911,2913,5,166,0,0,2912,2914,5,188, + 0,0,2913,2912,1,0,0,0,2913,2914,1,0,0,0,2914,2915,1,0,0,0,2915,2981, + 5,3,0,0,2916,2918,5,60,0,0,2917,2919,5,188,0,0,2918,2917,1,0,0,0, + 2918,2919,1,0,0,0,2919,2920,1,0,0,0,2920,2922,5,2,0,0,2921,2923, + 5,188,0,0,2922,2921,1,0,0,0,2922,2923,1,0,0,0,2923,2924,1,0,0,0, + 2924,2926,3,344,172,0,2925,2927,5,188,0,0,2926,2925,1,0,0,0,2926, + 2927,1,0,0,0,2927,2938,1,0,0,0,2928,2930,5,52,0,0,2929,2931,5,188, + 0,0,2930,2929,1,0,0,0,2930,2931,1,0,0,0,2931,2932,1,0,0,0,2932,2939, + 3,142,71,0,2933,2935,5,4,0,0,2934,2936,5,188,0,0,2935,2934,1,0,0, + 0,2935,2936,1,0,0,0,2936,2937,1,0,0,0,2937,2939,3,344,172,0,2938, + 2928,1,0,0,0,2938,2933,1,0,0,0,2939,2941,1,0,0,0,2940,2942,5,188, + 0,0,2941,2940,1,0,0,0,2941,2942,1,0,0,0,2942,2943,1,0,0,0,2943,2944, + 5,3,0,0,2944,2981,1,0,0,0,2945,2947,3,342,171,0,2946,2948,5,188, + 0,0,2947,2946,1,0,0,0,2947,2948,1,0,0,0,2948,2949,1,0,0,0,2949,2951, + 5,2,0,0,2950,2952,5,188,0,0,2951,2950,1,0,0,0,2951,2952,1,0,0,0, + 2952,2957,1,0,0,0,2953,2955,5,78,0,0,2954,2956,5,188,0,0,2955,2954, + 1,0,0,0,2955,2956,1,0,0,0,2956,2958,1,0,0,0,2957,2953,1,0,0,0,2957, + 2958,1,0,0,0,2958,2976,1,0,0,0,2959,2961,3,344,172,0,2960,2962,5, + 188,0,0,2961,2960,1,0,0,0,2961,2962,1,0,0,0,2962,2973,1,0,0,0,2963, + 2965,5,4,0,0,2964,2966,5,188,0,0,2965,2964,1,0,0,0,2965,2966,1,0, + 0,0,2966,2967,1,0,0,0,2967,2969,3,344,172,0,2968,2970,5,188,0,0, + 2969,2968,1,0,0,0,2969,2970,1,0,0,0,2970,2972,1,0,0,0,2971,2963, + 1,0,0,0,2972,2975,1,0,0,0,2973,2971,1,0,0,0,2973,2974,1,0,0,0,2974, + 2977,1,0,0,0,2975,2973,1,0,0,0,2976,2959,1,0,0,0,2976,2977,1,0,0, + 0,2977,2978,1,0,0,0,2978,2979,5,3,0,0,2979,2981,1,0,0,0,2980,2903, + 1,0,0,0,2980,2916,1,0,0,0,2980,2945,1,0,0,0,2981,341,1,0,0,0,2982, + 2983,3,376,188,0,2983,343,1,0,0,0,2984,2986,3,376,188,0,2985,2987, + 5,188,0,0,2986,2985,1,0,0,0,2986,2987,1,0,0,0,2987,2988,1,0,0,0, + 2988,2989,5,169,0,0,2989,2991,5,6,0,0,2990,2992,5,188,0,0,2991,2990, + 1,0,0,0,2991,2992,1,0,0,0,2992,2994,1,0,0,0,2993,2984,1,0,0,0,2993, + 2994,1,0,0,0,2994,2995,1,0,0,0,2995,2998,3,272,136,0,2996,2998,3, + 346,173,0,2997,2993,1,0,0,0,2997,2996,1,0,0,0,2998,345,1,0,0,0,2999, + 3001,3,348,174,0,3000,3002,5,188,0,0,3001,3000,1,0,0,0,3001,3002, + 1,0,0,0,3002,3003,1,0,0,0,3003,3004,5,171,0,0,3004,3006,5,15,0,0, + 3005,3007,5,188,0,0,3006,3005,1,0,0,0,3006,3007,1,0,0,0,3007,3008, + 1,0,0,0,3008,3010,3,272,136,0,3009,3011,5,188,0,0,3010,3009,1,0, + 0,0,3010,3011,1,0,0,0,3011,347,1,0,0,0,3012,3037,3,376,188,0,3013, + 3015,5,2,0,0,3014,3016,5,188,0,0,3015,3014,1,0,0,0,3015,3016,1,0, + 0,0,3016,3017,1,0,0,0,3017,3019,3,376,188,0,3018,3020,5,188,0,0, + 3019,3018,1,0,0,0,3019,3020,1,0,0,0,3020,3031,1,0,0,0,3021,3023, + 5,4,0,0,3022,3024,5,188,0,0,3023,3022,1,0,0,0,3023,3024,1,0,0,0, + 3024,3025,1,0,0,0,3025,3027,3,376,188,0,3026,3028,5,188,0,0,3027, + 3026,1,0,0,0,3027,3028,1,0,0,0,3028,3030,1,0,0,0,3029,3021,1,0,0, + 0,3030,3033,1,0,0,0,3031,3029,1,0,0,0,3031,3032,1,0,0,0,3032,3034, + 1,0,0,0,3033,3031,1,0,0,0,3034,3035,5,3,0,0,3035,3037,1,0,0,0,3036, + 3012,1,0,0,0,3036,3013,1,0,0,0,3037,349,1,0,0,0,3038,3043,3,240, + 120,0,3039,3041,5,188,0,0,3040,3039,1,0,0,0,3040,3041,1,0,0,0,3041, + 3042,1,0,0,0,3042,3044,3,242,121,0,3043,3040,1,0,0,0,3044,3045,1, + 0,0,0,3045,3043,1,0,0,0,3045,3046,1,0,0,0,3046,351,1,0,0,0,3047, + 3049,7,9,0,0,3048,3050,5,188,0,0,3049,3048,1,0,0,0,3049,3050,1,0, + 0,0,3050,3051,1,0,0,0,3051,3053,5,9,0,0,3052,3054,5,188,0,0,3053, + 3052,1,0,0,0,3053,3054,1,0,0,0,3054,3055,1,0,0,0,3055,3057,5,109, + 0,0,3056,3058,5,188,0,0,3057,3056,1,0,0,0,3057,3058,1,0,0,0,3058, + 3059,1,0,0,0,3059,3064,3,232,116,0,3060,3062,5,188,0,0,3061,3060, + 1,0,0,0,3061,3062,1,0,0,0,3062,3063,1,0,0,0,3063,3065,3,230,115, + 0,3064,3061,1,0,0,0,3064,3065,1,0,0,0,3065,3070,1,0,0,0,3066,3068, + 5,188,0,0,3067,3066,1,0,0,0,3067,3068,1,0,0,0,3068,3069,1,0,0,0, + 3069,3071,3,194,97,0,3070,3067,1,0,0,0,3070,3071,1,0,0,0,3071,3073, + 1,0,0,0,3072,3074,5,188,0,0,3073,3072,1,0,0,0,3073,3074,1,0,0,0, + 3074,3075,1,0,0,0,3075,3076,5,10,0,0,3076,353,1,0,0,0,3077,3079, + 5,5,0,0,3078,3080,5,188,0,0,3079,3078,1,0,0,0,3079,3080,1,0,0,0, + 3080,3083,1,0,0,0,3081,3084,3,368,184,0,3082,3084,5,166,0,0,3083, + 3081,1,0,0,0,3083,3082,1,0,0,0,3084,355,1,0,0,0,3085,3090,5,59,0, + 0,3086,3088,5,188,0,0,3087,3086,1,0,0,0,3087,3088,1,0,0,0,3088,3089, + 1,0,0,0,3089,3091,3,358,179,0,3090,3087,1,0,0,0,3091,3092,1,0,0, + 0,3092,3090,1,0,0,0,3092,3093,1,0,0,0,3093,3108,1,0,0,0,3094,3096, + 5,59,0,0,3095,3097,5,188,0,0,3096,3095,1,0,0,0,3096,3097,1,0,0,0, + 3097,3098,1,0,0,0,3098,3103,3,272,136,0,3099,3101,5,188,0,0,3100, + 3099,1,0,0,0,3100,3101,1,0,0,0,3101,3102,1,0,0,0,3102,3104,3,358, + 179,0,3103,3100,1,0,0,0,3104,3105,1,0,0,0,3105,3103,1,0,0,0,3105, + 3106,1,0,0,0,3106,3108,1,0,0,0,3107,3085,1,0,0,0,3107,3094,1,0,0, + 0,3108,3117,1,0,0,0,3109,3111,5,188,0,0,3110,3109,1,0,0,0,3110,3111, + 1,0,0,0,3111,3112,1,0,0,0,3112,3114,5,80,0,0,3113,3115,5,188,0,0, + 3114,3113,1,0,0,0,3114,3115,1,0,0,0,3115,3116,1,0,0,0,3116,3118, + 3,272,136,0,3117,3110,1,0,0,0,3117,3118,1,0,0,0,3118,3120,1,0,0, + 0,3119,3121,5,188,0,0,3120,3119,1,0,0,0,3120,3121,1,0,0,0,3121,3122, + 1,0,0,0,3122,3123,5,81,0,0,3123,357,1,0,0,0,3124,3126,5,153,0,0, + 3125,3127,5,188,0,0,3126,3125,1,0,0,0,3126,3127,1,0,0,0,3127,3128, + 1,0,0,0,3128,3130,3,272,136,0,3129,3131,5,188,0,0,3130,3129,1,0, + 0,0,3130,3131,1,0,0,0,3131,3132,1,0,0,0,3132,3134,5,142,0,0,3133, + 3135,5,188,0,0,3134,3133,1,0,0,0,3134,3135,1,0,0,0,3135,3136,1,0, + 0,0,3136,3137,3,272,136,0,3137,359,1,0,0,0,3138,3139,3,376,188,0, + 3139,361,1,0,0,0,3140,3143,3,372,186,0,3141,3143,3,370,185,0,3142, + 3140,1,0,0,0,3142,3141,1,0,0,0,3143,363,1,0,0,0,3144,3147,5,25,0, + 0,3145,3148,3,376,188,0,3146,3148,5,175,0,0,3147,3145,1,0,0,0,3147, + 3146,1,0,0,0,3148,365,1,0,0,0,3149,3151,3,318,159,0,3150,3152,5, + 188,0,0,3151,3150,1,0,0,0,3151,3152,1,0,0,0,3152,3153,1,0,0,0,3153, + 3154,3,354,177,0,3154,367,1,0,0,0,3155,3156,3,376,188,0,3156,369, + 1,0,0,0,3157,3158,5,175,0,0,3158,371,1,0,0,0,3159,3160,7,10,0,0, + 3160,373,1,0,0,0,3161,3164,3,376,188,0,3162,3163,5,5,0,0,3163,3165, + 3,376,188,0,3164,3162,1,0,0,0,3164,3165,1,0,0,0,3165,375,1,0,0,0, + 3166,3172,5,184,0,0,3167,3168,5,187,0,0,3168,3172,6,188,-1,0,3169, + 3172,5,176,0,0,3170,3172,3,378,189,0,3171,3166,1,0,0,0,3171,3167, + 1,0,0,0,3171,3169,1,0,0,0,3171,3170,1,0,0,0,3172,377,1,0,0,0,3173, + 3174,7,11,0,0,3174,379,1,0,0,0,3175,3176,7,12,0,0,3176,381,1,0,0, + 0,3177,3178,7,13,0,0,3178,383,1,0,0,0,3179,3180,7,14,0,0,3180,385, + 1,0,0,0,543,388,392,397,401,406,409,413,416,444,450,457,461,465, + 469,472,476,480,484,489,493,495,502,506,515,520,530,534,538,543, + 556,560,568,572,576,580,588,592,596,600,615,620,626,630,633,636, + 642,646,651,654,658,661,664,668,672,678,682,687,705,716,722,726, + 733,753,757,760,763,766,769,773,778,782,792,796,801,806,811,817, + 821,825,830,837,841,845,848,865,869,873,877,881,884,887,895,900, + 904,908,912,921,925,930,934,938,942,946,948,952,956,958,966,971, + 975,979,983,988,994,998,1011,1015,1018,1021,1024,1028,1032,1035, + 1038,1042,1046,1052,1056,1060,1064,1070,1074,1078,1082,1088,1092, + 1097,1109,1113,1117,1122,1140,1147,1160,1167,1183,1187,1196,1204, + 1207,1217,1220,1228,1231,1237,1240,1246,1261,1271,1274,1278,1282, + 1301,1308,1315,1326,1349,1358,1368,1372,1376,1380,1385,1389,1399, + 1403,1408,1417,1421,1426,1432,1438,1444,1448,1452,1458,1462,1466, + 1472,1476,1480,1486,1490,1494,1498,1502,1508,1512,1516,1520,1524, + 1534,1540,1547,1552,1558,1563,1580,1586,1592,1596,1600,1609,1623, + 1628,1633,1637,1642,1648,1653,1656,1660,1664,1668,1674,1678,1683, + 1688,1692,1695,1697,1701,1705,1711,1715,1720,1724,1733,1739,1747, + 1751,1755,1759,1766,1770,1774,1778,1781,1784,1791,1797,1801,1806, + 1813,1816,1819,1824,1828,1832,1837,1841,1850,1854,1859,1873,1875, + 1877,1882,1892,1898,1905,1918,1922,1926,1930,1935,1940,1944,1948, + 1952,1956,1960,1966,1970,1974,1978,1983,1989,1992,1998,2001,2007, + 2011,2015,2019,2023,2028,2033,2037,2042,2045,2054,2063,2068,2081, + 2084,2092,2096,2101,2106,2110,2115,2121,2126,2133,2137,2141,2143, + 2147,2149,2153,2155,2161,2167,2171,2174,2177,2183,2186,2189,2193, + 2199,2202,2205,2209,2213,2217,2219,2223,2225,2229,2231,2235,2237, + 2243,2247,2251,2255,2259,2263,2267,2271,2275,2278,2284,2288,2292, + 2295,2300,2305,2309,2313,2316,2319,2324,2329,2332,2335,2338,2341, + 2344,2348,2352,2356,2360,2370,2373,2376,2380,2383,2386,2390,2394, + 2398,2402,2406,2410,2412,2415,2419,2423,2427,2431,2433,2439,2442, + 2445,2456,2469,2479,2489,2494,2498,2505,2509,2513,2517,2521,2529, + 2533,2537,2541,2547,2551,2557,2561,2566,2571,2575,2580,2585,2589, + 2595,2602,2606,2612,2619,2623,2629,2636,2640,2645,2653,2656,2661, + 2670,2674,2677,2690,2693,2698,2712,2716,2720,2725,2728,2732,2737, + 2749,2753,2757,2761,2767,2771,2775,2781,2785,2789,2795,2799,2803, + 2807,2825,2831,2835,2839,2843,2846,2852,2855,2859,2863,2867,2871, + 2875,2882,2885,2889,2895,2899,2905,2909,2913,2918,2922,2926,2930, + 2935,2938,2941,2947,2951,2955,2957,2961,2965,2969,2973,2976,2980, + 2986,2991,2993,2997,3001,3006,3010,3015,3019,3023,3027,3031,3036, + 3040,3045,3049,3053,3057,3061,3064,3067,3070,3073,3079,3083,3087, + 3092,3096,3100,3105,3107,3110,3114,3117,3120,3126,3130,3134,3142, + 3147,3151,3164,3171 ]; private static __ATN: antlr.ATN; @@ -14068,7 +15252,7 @@ export class CypherParser extends antlr.Parser { private static readonly decisionsToDFA = CypherParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); } -export class Ku_StatementsContext extends antlr.ParserRuleContext { +export class IC_StatementsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14088,7 +15272,7 @@ export class Ku_StatementsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_ku_Statements; + return CypherParser.RULE_iC_Statements; } } @@ -14122,68 +15306,80 @@ export class OC_StatementContext extends antlr.ParserRuleContext { public oC_Query(): OC_QueryContext { return this.getTypedRuleContext(OC_QueryContext, 0); } - public kU_CreateUser(): KU_CreateUserContext { - return this.getTypedRuleContext(KU_CreateUserContext, 0); + public iC_Analyze(): IC_AnalyzeContext { + return this.getTypedRuleContext(IC_AnalyzeContext, 0); + } + public iC_CreateUser(): IC_CreateUserContext { + return this.getTypedRuleContext(IC_CreateUserContext, 0); } - public kU_CreateRole(): KU_CreateRoleContext { - return this.getTypedRuleContext(KU_CreateRoleContext, 0); + public iC_CreateRole(): IC_CreateRoleContext { + return this.getTypedRuleContext(IC_CreateRoleContext, 0); } - public kU_CreateNodeTable(): KU_CreateNodeTableContext { - return this.getTypedRuleContext(KU_CreateNodeTableContext, 0); + public iC_CreateNodeTable(): IC_CreateNodeTableContext { + return this.getTypedRuleContext(IC_CreateNodeTableContext, 0); } - public kU_CreateRelTable(): KU_CreateRelTableContext { - return this.getTypedRuleContext(KU_CreateRelTableContext, 0); + public iC_CreateRelTable(): IC_CreateRelTableContext { + return this.getTypedRuleContext(IC_CreateRelTableContext, 0); } - public kU_CreateSequence(): KU_CreateSequenceContext { - return this.getTypedRuleContext(KU_CreateSequenceContext, 0); + public iC_CreateIndex(): IC_CreateIndexContext { + return this.getTypedRuleContext(IC_CreateIndexContext, 0); } - public kU_CreateType(): KU_CreateTypeContext { - return this.getTypedRuleContext(KU_CreateTypeContext, 0); + public iC_CreateSequence(): IC_CreateSequenceContext { + return this.getTypedRuleContext(IC_CreateSequenceContext, 0); } - public kU_Drop(): KU_DropContext { - return this.getTypedRuleContext(KU_DropContext, 0); + public iC_CreateType(): IC_CreateTypeContext { + return this.getTypedRuleContext(IC_CreateTypeContext, 0); } - public kU_AlterTable(): KU_AlterTableContext { - return this.getTypedRuleContext(KU_AlterTableContext, 0); + public iC_Drop(): IC_DropContext { + return this.getTypedRuleContext(IC_DropContext, 0); } - public kU_CopyFrom(): KU_CopyFromContext { - return this.getTypedRuleContext(KU_CopyFromContext, 0); + public iC_AlterTable(): IC_AlterTableContext { + return this.getTypedRuleContext(IC_AlterTableContext, 0); } - public kU_CopyFromByColumn(): KU_CopyFromByColumnContext { - return this.getTypedRuleContext(KU_CopyFromByColumnContext, 0); + public iC_CopyFrom(): IC_CopyFromContext { + return this.getTypedRuleContext(IC_CopyFromContext, 0); } - public kU_CopyTO(): KU_CopyTOContext { - return this.getTypedRuleContext(KU_CopyTOContext, 0); + public iC_CopyFromByColumn(): IC_CopyFromByColumnContext { + return this.getTypedRuleContext(IC_CopyFromByColumnContext, 0); } - public kU_StandaloneCall(): KU_StandaloneCallContext { - return this.getTypedRuleContext(KU_StandaloneCallContext, 0); + public iC_CopyTO(): IC_CopyTOContext { + return this.getTypedRuleContext(IC_CopyTOContext, 0); } - public kU_CreateMacro(): KU_CreateMacroContext { - return this.getTypedRuleContext(KU_CreateMacroContext, 0); + public iC_StandaloneCall(): IC_StandaloneCallContext { + return this.getTypedRuleContext(IC_StandaloneCallContext, 0); } - public kU_CommentOn(): KU_CommentOnContext { - return this.getTypedRuleContext(KU_CommentOnContext, 0); + public iC_CreateMacro(): IC_CreateMacroContext { + return this.getTypedRuleContext(IC_CreateMacroContext, 0); } - public kU_Transaction(): KU_TransactionContext { - return this.getTypedRuleContext(KU_TransactionContext, 0); + public iC_CommentOn(): IC_CommentOnContext { + return this.getTypedRuleContext(IC_CommentOnContext, 0); } - public kU_Extension(): KU_ExtensionContext { - return this.getTypedRuleContext(KU_ExtensionContext, 0); + public iC_Transaction(): IC_TransactionContext { + return this.getTypedRuleContext(IC_TransactionContext, 0); } - public kU_ExportDatabase(): KU_ExportDatabaseContext { - return this.getTypedRuleContext(KU_ExportDatabaseContext, 0); + public iC_Extension(): IC_ExtensionContext { + return this.getTypedRuleContext(IC_ExtensionContext, 0); } - public kU_ImportDatabase(): KU_ImportDatabaseContext { - return this.getTypedRuleContext(KU_ImportDatabaseContext, 0); + public iC_ExportDatabase(): IC_ExportDatabaseContext { + return this.getTypedRuleContext(IC_ExportDatabaseContext, 0); } - public kU_AttachDatabase(): KU_AttachDatabaseContext { - return this.getTypedRuleContext(KU_AttachDatabaseContext, 0); + public iC_ImportDatabase(): IC_ImportDatabaseContext { + return this.getTypedRuleContext(IC_ImportDatabaseContext, 0); } - public kU_DetachDatabase(): KU_DetachDatabaseContext { - return this.getTypedRuleContext(KU_DetachDatabaseContext, 0); + public iC_AttachDatabase(): IC_AttachDatabaseContext { + return this.getTypedRuleContext(IC_AttachDatabaseContext, 0); } - public kU_UseDatabase(): KU_UseDatabaseContext { - return this.getTypedRuleContext(KU_UseDatabaseContext, 0); + public iC_DetachDatabase(): IC_DetachDatabaseContext { + return this.getTypedRuleContext(IC_DetachDatabaseContext, 0); + } + public iC_UseDatabase(): IC_UseDatabaseContext { + return this.getTypedRuleContext(IC_UseDatabaseContext, 0); + } + public iC_CreateGraph(): IC_CreateGraphContext { + return this.getTypedRuleContext(IC_CreateGraphContext, 0); + } + public iC_UseGraph(): IC_UseGraphContext { + return this.getTypedRuleContext(IC_UseGraphContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_Statement; @@ -14191,7 +15387,7 @@ export class OC_StatementContext extends antlr.ParserRuleContext { } -export class KU_CopyFromContext extends antlr.ParserRuleContext { +export class IC_CopyFromContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14210,22 +15406,22 @@ export class KU_CopyFromContext extends antlr.ParserRuleContext { public FROM(): antlr.TerminalNode { return this.getToken(CypherParser.FROM, 0); } - public kU_ScanSource(): KU_ScanSourceContext { - return this.getTypedRuleContext(KU_ScanSourceContext, 0); + public iC_ScanSource(): IC_ScanSourceContext { + return this.getTypedRuleContext(IC_ScanSourceContext, 0); } - public kU_ColumnNames(): KU_ColumnNamesContext { - return this.getTypedRuleContext(KU_ColumnNamesContext, 0); + public iC_ColumnNames(): IC_ColumnNamesContext { + return this.getTypedRuleContext(IC_ColumnNamesContext, 0); } - public kU_Options(): KU_OptionsContext { - return this.getTypedRuleContext(KU_OptionsContext, 0); + public iC_Options(): IC_OptionsContext { + return this.getTypedRuleContext(IC_OptionsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CopyFrom; + return CypherParser.RULE_iC_CopyFrom; } } -export class KU_ColumnNamesContext extends antlr.ParserRuleContext { +export class IC_ColumnNamesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14242,17 +15438,17 @@ export class KU_ColumnNamesContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_SchemaNameContext, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ColumnNames; + return CypherParser.RULE_iC_ColumnNames; } } -export class KU_ScanSourceContext extends antlr.ParserRuleContext { +export class IC_ScanSourceContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_FilePaths(): KU_FilePathsContext { - return this.getTypedRuleContext(KU_FilePathsContext, 0); + public iC_FilePaths(): IC_FilePathsContext { + return this.getTypedRuleContext(IC_FilePathsContext, 0); } public oC_Query(): OC_QueryContext { return this.getTypedRuleContext(OC_QueryContext, 0); @@ -14276,12 +15472,12 @@ export class KU_ScanSourceContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_FunctionInvocationContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ScanSource; + return CypherParser.RULE_iC_ScanSource; } } -export class KU_CopyFromByColumnContext extends antlr.ParserRuleContext { +export class IC_CopyFromByColumnContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14313,12 +15509,12 @@ export class KU_CopyFromByColumnContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.COLUMN, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CopyFromByColumn; + return CypherParser.RULE_iC_CopyFromByColumn; } } -export class KU_CopyTOContext extends antlr.ParserRuleContext { +export class IC_CopyTOContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14340,16 +15536,16 @@ export class KU_CopyTOContext extends antlr.ParserRuleContext { public StringLiteral(): antlr.TerminalNode { return this.getToken(CypherParser.StringLiteral, 0); } - public kU_Options(): KU_OptionsContext { - return this.getTypedRuleContext(KU_OptionsContext, 0); + public iC_Options(): IC_OptionsContext { + return this.getTypedRuleContext(IC_OptionsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CopyTO; + return CypherParser.RULE_iC_CopyTO; } } -export class KU_ExportDatabaseContext extends antlr.ParserRuleContext { +export class IC_ExportDatabaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14368,16 +15564,16 @@ export class KU_ExportDatabaseContext extends antlr.ParserRuleContext { public StringLiteral(): antlr.TerminalNode { return this.getToken(CypherParser.StringLiteral, 0); } - public kU_Options(): KU_OptionsContext { - return this.getTypedRuleContext(KU_OptionsContext, 0); + public iC_Options(): IC_OptionsContext { + return this.getTypedRuleContext(IC_OptionsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ExportDatabase; + return CypherParser.RULE_iC_ExportDatabase; } } -export class KU_ImportDatabaseContext extends antlr.ParserRuleContext { +export class IC_ImportDatabaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14397,12 +15593,12 @@ export class KU_ImportDatabaseContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.StringLiteral, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ImportDatabase; + return CypherParser.RULE_iC_ImportDatabase; } } -export class KU_AttachDatabaseContext extends antlr.ParserRuleContext { +export class IC_AttachDatabaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14430,16 +15626,16 @@ export class KU_AttachDatabaseContext extends antlr.ParserRuleContext { public oC_SchemaName(): OC_SchemaNameContext { return this.getTypedRuleContext(OC_SchemaNameContext, 0); } - public kU_Options(): KU_OptionsContext { - return this.getTypedRuleContext(KU_OptionsContext, 0); + public iC_Options(): IC_OptionsContext { + return this.getTypedRuleContext(IC_OptionsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_AttachDatabase; + return CypherParser.RULE_iC_AttachDatabase; } } -export class KU_OptionContext extends antlr.ParserRuleContext { +export class IC_OptionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14449,6 +15645,50 @@ export class KU_OptionContext extends antlr.ParserRuleContext { public oC_Literal(): OC_LiteralContext { return this.getTypedRuleContext(OC_LiteralContext, 0); } + public iC_OptionQualifier(): IC_OptionQualifierContext { + return this.getTypedRuleContext(IC_OptionQualifierContext, 0); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_Option; + } +} + + +export class IC_OptionQualifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public oC_SymbolicName(): OC_SymbolicNameContext { + return this.getTypedRuleContext(OC_SymbolicNameContext, 0); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_OptionQualifier; + } +} + + +export class IC_OptionsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public iC_Option__list(): IC_OptionContext[] { + return this.getTypedRuleContexts(IC_OptionContext); + } + public iC_Option(i: number): IC_OptionContext { + return this.getTypedRuleContext(IC_OptionContext, i); + } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); } @@ -14456,20 +15696,55 @@ export class KU_OptionContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Option; + return CypherParser.RULE_iC_Options; + } +} + + +export class IC_DetachDatabaseContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public DETACH(): antlr.TerminalNode { + return this.getToken(CypherParser.DETACH, 0); + } + public SP(): antlr.TerminalNode { + return this.getToken(CypherParser.SP, 0); + } + public oC_SchemaName(): OC_SchemaNameContext { + return this.getTypedRuleContext(OC_SchemaNameContext, 0); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_DetachDatabase; } } -export class KU_OptionsContext extends antlr.ParserRuleContext { +export class IC_UseDatabaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_Option__list(): KU_OptionContext[] { - return this.getTypedRuleContexts(KU_OptionContext); + public USE(): antlr.TerminalNode { + return this.getToken(CypherParser.USE, 0); + } + public SP(): antlr.TerminalNode { + return this.getToken(CypherParser.SP, 0); + } + public oC_SchemaName(): OC_SchemaNameContext { + return this.getTypedRuleContext(OC_SchemaNameContext, 0); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_UseDatabase; + } +} + + +export class IC_CreateGraphContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public kU_Option(i: number): KU_OptionContext { - return this.getTypedRuleContext(KU_OptionContext, i); + public CREATE(): antlr.TerminalNode { + return this.getToken(CypherParser.CREATE, 0); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -14477,37 +15752,52 @@ export class KU_OptionsContext extends antlr.ParserRuleContext { public SP(i: number): antlr.TerminalNode { return this.getToken(CypherParser.SP, i); } + public GRAPH(): antlr.TerminalNode { + return this.getToken(CypherParser.GRAPH, 0); + } + public oC_SchemaName(): OC_SchemaNameContext { + return this.getTypedRuleContext(OC_SchemaNameContext, 0); + } + public ANY(): antlr.TerminalNode { + return this.getToken(CypherParser.ANY, 0); + } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Options; + return CypherParser.RULE_iC_CreateGraph; } } -export class KU_DetachDatabaseContext extends antlr.ParserRuleContext { +export class IC_UseGraphContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public DETACH(): antlr.TerminalNode { - return this.getToken(CypherParser.DETACH, 0); + public USE(): antlr.TerminalNode { + return this.getToken(CypherParser.USE, 0); } - public SP(): antlr.TerminalNode { - return this.getToken(CypherParser.SP, 0); + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public GRAPH(): antlr.TerminalNode { + return this.getToken(CypherParser.GRAPH, 0); } public oC_SchemaName(): OC_SchemaNameContext { return this.getTypedRuleContext(OC_SchemaNameContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_DetachDatabase; + return CypherParser.RULE_iC_UseGraph; } } -export class KU_UseDatabaseContext extends antlr.ParserRuleContext { +export class IC_AnalyzeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public USE(): antlr.TerminalNode { - return this.getToken(CypherParser.USE, 0); + public ANALYZE(): antlr.TerminalNode { + return this.getToken(CypherParser.ANALYZE, 0); } public SP(): antlr.TerminalNode { return this.getToken(CypherParser.SP, 0); @@ -14516,12 +15806,12 @@ export class KU_UseDatabaseContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_SchemaNameContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_UseDatabase; + return CypherParser.RULE_iC_Analyze; } } -export class KU_StandaloneCallContext extends antlr.ParserRuleContext { +export class IC_StandaloneCallContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14544,12 +15834,12 @@ export class KU_StandaloneCallContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_FunctionInvocationContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_StandaloneCall; + return CypherParser.RULE_iC_StandaloneCall; } } -export class KU_CommentOnContext extends antlr.ParserRuleContext { +export class IC_CommentOnContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14578,12 +15868,12 @@ export class KU_CommentOnContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.StringLiteral, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CommentOn; + return CypherParser.RULE_iC_CommentOn; } } -export class KU_CreateMacroContext extends antlr.ParserRuleContext { +export class IC_CreateMacroContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14608,22 +15898,22 @@ export class KU_CreateMacroContext extends antlr.ParserRuleContext { public oC_Expression(): OC_ExpressionContext { return this.getTypedRuleContext(OC_ExpressionContext, 0); } - public kU_PositionalArgs(): KU_PositionalArgsContext { - return this.getTypedRuleContext(KU_PositionalArgsContext, 0); + public iC_PositionalArgs(): IC_PositionalArgsContext { + return this.getTypedRuleContext(IC_PositionalArgsContext, 0); } - public kU_DefaultArg__list(): KU_DefaultArgContext[] { - return this.getTypedRuleContexts(KU_DefaultArgContext); + public iC_DefaultArg__list(): IC_DefaultArgContext[] { + return this.getTypedRuleContexts(IC_DefaultArgContext); } - public kU_DefaultArg(i: number): KU_DefaultArgContext { - return this.getTypedRuleContext(KU_DefaultArgContext, i); + public iC_DefaultArg(i: number): IC_DefaultArgContext { + return this.getTypedRuleContext(IC_DefaultArgContext, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CreateMacro; + return CypherParser.RULE_iC_CreateMacro; } } -export class KU_PositionalArgsContext extends antlr.ParserRuleContext { +export class IC_PositionalArgsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14640,12 +15930,12 @@ export class KU_PositionalArgsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_PositionalArgs; + return CypherParser.RULE_iC_PositionalArgs; } } -export class KU_DefaultArgContext extends antlr.ParserRuleContext { +export class IC_DefaultArgContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14665,12 +15955,12 @@ export class KU_DefaultArgContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_DefaultArg; + return CypherParser.RULE_iC_DefaultArg; } } -export class KU_FilePathsContext extends antlr.ParserRuleContext { +export class IC_FilePathsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14690,12 +15980,12 @@ export class KU_FilePathsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.GLOB, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_FilePaths; + return CypherParser.RULE_iC_FilePaths; } } -export class KU_IfNotExistsContext extends antlr.ParserRuleContext { +export class IC_IfNotExistsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14715,12 +16005,12 @@ export class KU_IfNotExistsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.EXISTS, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_IfNotExists; + return CypherParser.RULE_iC_IfNotExists; } } -export class KU_CreateNodeTableContext extends antlr.ParserRuleContext { +export class IC_CreateNodeTableContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14742,8 +16032,8 @@ export class KU_CreateNodeTableContext extends antlr.ParserRuleContext { public oC_SchemaName(): OC_SchemaNameContext { return this.getTypedRuleContext(OC_SchemaNameContext, 0); } - public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext { - return this.getTypedRuleContext(KU_PropertyDefinitionsContext, 0); + public iC_PropertyDefinitions(): IC_PropertyDefinitionsContext { + return this.getTypedRuleContext(IC_PropertyDefinitionsContext, 0); } public AS(): antlr.TerminalNode { return this.getToken(CypherParser.AS, 0); @@ -14751,19 +16041,25 @@ export class KU_CreateNodeTableContext extends antlr.ParserRuleContext { public oC_Query(): OC_QueryContext { return this.getTypedRuleContext(OC_QueryContext, 0); } - public kU_IfNotExists(): KU_IfNotExistsContext { - return this.getTypedRuleContext(KU_IfNotExistsContext, 0); + public iC_IfNotExists(): IC_IfNotExistsContext { + return this.getTypedRuleContext(IC_IfNotExistsContext, 0); + } + public WITH(): antlr.TerminalNode { + return this.getToken(CypherParser.WITH, 0); + } + public iC_Options(): IC_OptionsContext { + return this.getTypedRuleContext(IC_OptionsContext, 0); } - public kU_CreateNodeConstraint(): KU_CreateNodeConstraintContext { - return this.getTypedRuleContext(KU_CreateNodeConstraintContext, 0); + public iC_CreateNodeConstraint(): IC_CreateNodeConstraintContext { + return this.getTypedRuleContext(IC_CreateNodeConstraintContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CreateNodeTable; + return CypherParser.RULE_iC_CreateNodeTable; } } -export class KU_CreateRelTableContext extends antlr.ParserRuleContext { +export class IC_CreateRelTableContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14785,8 +16081,8 @@ export class KU_CreateRelTableContext extends antlr.ParserRuleContext { public oC_SchemaName(): OC_SchemaNameContext { return this.getTypedRuleContext(OC_SchemaNameContext, 0); } - public kU_FromToConnections(): KU_FromToConnectionsContext { - return this.getTypedRuleContext(KU_FromToConnectionsContext, 0); + public iC_CreateFromToConnections(): IC_CreateFromToConnectionsContext { + return this.getTypedRuleContext(IC_CreateFromToConnectionsContext, 0); } public AS(): antlr.TerminalNode { return this.getToken(CypherParser.AS, 0); @@ -14797,36 +16093,220 @@ export class KU_CreateRelTableContext extends antlr.ParserRuleContext { public GROUP(): antlr.TerminalNode { return this.getToken(CypherParser.GROUP, 0); } - public kU_IfNotExists(): KU_IfNotExistsContext { - return this.getTypedRuleContext(KU_IfNotExistsContext, 0); + public iC_IfNotExists(): IC_IfNotExistsContext { + return this.getTypedRuleContext(IC_IfNotExistsContext, 0); } public WITH(): antlr.TerminalNode { return this.getToken(CypherParser.WITH, 0); } - public kU_Options(): KU_OptionsContext { - return this.getTypedRuleContext(KU_OptionsContext, 0); + public iC_Options(): IC_OptionsContext { + return this.getTypedRuleContext(IC_OptionsContext, 0); + } + public iC_PropertyDefinitions(): IC_PropertyDefinitionsContext { + return this.getTypedRuleContext(IC_PropertyDefinitionsContext, 0); + } + public oC_SymbolicName(): OC_SymbolicNameContext { + return this.getTypedRuleContext(OC_SymbolicNameContext, 0); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_CreateRelTable; + } +} + + +export class IC_CreateIndexContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public CREATE(): antlr.TerminalNode { + return this.getToken(CypherParser.CREATE, 0); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public INDEX(): antlr.TerminalNode { + return this.getToken(CypherParser.INDEX, 0); + } + public FOR(): antlr.TerminalNode { + return this.getToken(CypherParser.FOR, 0); + } + public iC_IndexPattern(): IC_IndexPatternContext { + return this.getTypedRuleContext(IC_IndexPatternContext, 0); + } + public ON(): antlr.TerminalNode { + return this.getToken(CypherParser.ON, 0); + } + public iC_IndexPropertyPattern(): IC_IndexPropertyPatternContext { + return this.getTypedRuleContext(IC_IndexPropertyPatternContext, 0); + } + public oC_SymbolicName(): OC_SymbolicNameContext { + return this.getTypedRuleContext(OC_SymbolicNameContext, 0); + } + public oC_SchemaName(): OC_SchemaNameContext { + return this.getTypedRuleContext(OC_SchemaNameContext, 0); + } + public iC_IfNotExists(): IC_IfNotExistsContext { + return this.getTypedRuleContext(IC_IfNotExistsContext, 0); + } + public OPTIONS(): antlr.TerminalNode { + return this.getToken(CypherParser.OPTIONS, 0); + } + public iC_Options(): IC_OptionsContext { + return this.getTypedRuleContext(IC_OptionsContext, 0); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_CreateIndex; + } +} + + +export class IC_IndexPatternContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public iC_IndexNodePattern(): IC_IndexNodePatternContext { + return this.getTypedRuleContext(IC_IndexNodePatternContext, 0); + } + public iC_IndexRelationshipPattern(): IC_IndexRelationshipPatternContext { + return this.getTypedRuleContext(IC_IndexRelationshipPatternContext, 0); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_IndexPattern; + } +} + + +export class IC_IndexNodePatternContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public COLON(): antlr.TerminalNode { + return this.getToken(CypherParser.COLON, 0); + } + public oC_LabelName(): OC_LabelNameContext { + return this.getTypedRuleContext(OC_LabelNameContext, 0); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public oC_Variable(): OC_VariableContext { + return this.getTypedRuleContext(OC_VariableContext, 0); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_IndexNodePattern; + } +} + + +export class IC_IndexRelationshipPatternContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public oC_RelationshipPattern(): OC_RelationshipPatternContext { + return this.getTypedRuleContext(OC_RelationshipPatternContext, 0); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_IndexRelationshipPattern; + } +} + + +export class IC_IndexPropertyPatternContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public oC_Variable(): OC_VariableContext { + return this.getTypedRuleContext(OC_VariableContext, 0); + } + public oC_PropertyKeyName(): OC_PropertyKeyNameContext { + return this.getTypedRuleContext(OC_PropertyKeyNameContext, 0); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_IndexPropertyPattern; + } +} + + +export class IC_CreateFromToConnectionsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public iC_CreateFromToConnection__list(): IC_CreateFromToConnectionContext[] { + return this.getTypedRuleContexts(IC_CreateFromToConnectionContext); + } + public iC_CreateFromToConnection(i: number): IC_CreateFromToConnectionContext { + return this.getTypedRuleContext(IC_CreateFromToConnectionContext, i); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_CreateFromToConnections; + } +} + + +export class IC_CreateFromToConnectionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public FROM(): antlr.TerminalNode { + return this.getToken(CypherParser.FROM, 0); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); } - public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext { - return this.getTypedRuleContext(KU_PropertyDefinitionsContext, 0); + public oC_SchemaName__list(): OC_SchemaNameContext[] { + return this.getTypedRuleContexts(OC_SchemaNameContext); + } + public oC_SchemaName(i: number): OC_SchemaNameContext { + return this.getTypedRuleContext(OC_SchemaNameContext, i); + } + public TO(): antlr.TerminalNode { + return this.getToken(CypherParser.TO, 0); } public oC_SymbolicName(): OC_SymbolicNameContext { return this.getTypedRuleContext(OC_SymbolicNameContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CreateRelTable; + return CypherParser.RULE_iC_CreateFromToConnection; } } -export class KU_FromToConnectionsContext extends antlr.ParserRuleContext { +export class IC_FromToConnectionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_FromToConnection__list(): KU_FromToConnectionContext[] { - return this.getTypedRuleContexts(KU_FromToConnectionContext); + public iC_FromToConnection__list(): IC_FromToConnectionContext[] { + return this.getTypedRuleContexts(IC_FromToConnectionContext); } - public kU_FromToConnection(i: number): KU_FromToConnectionContext { - return this.getTypedRuleContext(KU_FromToConnectionContext, i); + public iC_FromToConnection(i: number): IC_FromToConnectionContext { + return this.getTypedRuleContext(IC_FromToConnectionContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -14835,12 +16315,12 @@ export class KU_FromToConnectionsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_FromToConnections; + return CypherParser.RULE_iC_FromToConnections; } } -export class KU_FromToConnectionContext extends antlr.ParserRuleContext { +export class IC_FromToConnectionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14863,12 +16343,12 @@ export class KU_FromToConnectionContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.TO, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_FromToConnection; + return CypherParser.RULE_iC_FromToConnection; } } -export class KU_CreateSequenceContext extends antlr.ParserRuleContext { +export class IC_CreateSequenceContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14887,22 +16367,22 @@ export class KU_CreateSequenceContext extends antlr.ParserRuleContext { public oC_SchemaName(): OC_SchemaNameContext { return this.getTypedRuleContext(OC_SchemaNameContext, 0); } - public kU_IfNotExists(): KU_IfNotExistsContext { - return this.getTypedRuleContext(KU_IfNotExistsContext, 0); + public iC_IfNotExists(): IC_IfNotExistsContext { + return this.getTypedRuleContext(IC_IfNotExistsContext, 0); } - public kU_SequenceOptions__list(): KU_SequenceOptionsContext[] { - return this.getTypedRuleContexts(KU_SequenceOptionsContext); + public iC_SequenceOptions__list(): IC_SequenceOptionsContext[] { + return this.getTypedRuleContexts(IC_SequenceOptionsContext); } - public kU_SequenceOptions(i: number): KU_SequenceOptionsContext { - return this.getTypedRuleContext(KU_SequenceOptionsContext, i); + public iC_SequenceOptions(i: number): IC_SequenceOptionsContext { + return this.getTypedRuleContext(IC_SequenceOptionsContext, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CreateSequence; + return CypherParser.RULE_iC_CreateSequence; } } -export class KU_CreateTypeContext extends antlr.ParserRuleContext { +export class IC_CreateTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14924,41 +16404,41 @@ export class KU_CreateTypeContext extends antlr.ParserRuleContext { public AS(): antlr.TerminalNode { return this.getToken(CypherParser.AS, 0); } - public kU_DataType(): KU_DataTypeContext { - return this.getTypedRuleContext(KU_DataTypeContext, 0); + public iC_DataType(): IC_DataTypeContext { + return this.getTypedRuleContext(IC_DataTypeContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CreateType; + return CypherParser.RULE_iC_CreateType; } } -export class KU_SequenceOptionsContext extends antlr.ParserRuleContext { +export class IC_SequenceOptionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_IncrementBy(): KU_IncrementByContext { - return this.getTypedRuleContext(KU_IncrementByContext, 0); + public iC_IncrementBy(): IC_IncrementByContext { + return this.getTypedRuleContext(IC_IncrementByContext, 0); } - public kU_MinValue(): KU_MinValueContext { - return this.getTypedRuleContext(KU_MinValueContext, 0); + public iC_MinValue(): IC_MinValueContext { + return this.getTypedRuleContext(IC_MinValueContext, 0); } - public kU_MaxValue(): KU_MaxValueContext { - return this.getTypedRuleContext(KU_MaxValueContext, 0); + public iC_MaxValue(): IC_MaxValueContext { + return this.getTypedRuleContext(IC_MaxValueContext, 0); } - public kU_StartWith(): KU_StartWithContext { - return this.getTypedRuleContext(KU_StartWithContext, 0); + public iC_StartWith(): IC_StartWithContext { + return this.getTypedRuleContext(IC_StartWithContext, 0); } - public kU_Cycle(): KU_CycleContext { - return this.getTypedRuleContext(KU_CycleContext, 0); + public iC_Cycle(): IC_CycleContext { + return this.getTypedRuleContext(IC_CycleContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_SequenceOptions; + return CypherParser.RULE_iC_SequenceOptions; } } -export class KU_WithPasswdContext extends antlr.ParserRuleContext { +export class IC_WithPasswdContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14978,12 +16458,12 @@ export class KU_WithPasswdContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.StringLiteral, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_WithPasswd; + return CypherParser.RULE_iC_WithPasswd; } } -export class KU_CreateUserContext extends antlr.ParserRuleContext { +export class IC_CreateUserContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15002,19 +16482,19 @@ export class KU_CreateUserContext extends antlr.ParserRuleContext { public oC_Variable(): OC_VariableContext { return this.getTypedRuleContext(OC_VariableContext, 0); } - public kU_IfNotExists(): KU_IfNotExistsContext { - return this.getTypedRuleContext(KU_IfNotExistsContext, 0); + public iC_IfNotExists(): IC_IfNotExistsContext { + return this.getTypedRuleContext(IC_IfNotExistsContext, 0); } - public kU_WithPasswd(): KU_WithPasswdContext { - return this.getTypedRuleContext(KU_WithPasswdContext, 0); + public iC_WithPasswd(): IC_WithPasswdContext { + return this.getTypedRuleContext(IC_WithPasswdContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CreateUser; + return CypherParser.RULE_iC_CreateUser; } } -export class KU_CreateRoleContext extends antlr.ParserRuleContext { +export class IC_CreateRoleContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15033,16 +16513,16 @@ export class KU_CreateRoleContext extends antlr.ParserRuleContext { public oC_Variable(): OC_VariableContext { return this.getTypedRuleContext(OC_VariableContext, 0); } - public kU_IfNotExists(): KU_IfNotExistsContext { - return this.getTypedRuleContext(KU_IfNotExistsContext, 0); + public iC_IfNotExists(): IC_IfNotExistsContext { + return this.getTypedRuleContext(IC_IfNotExistsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CreateRole; + return CypherParser.RULE_iC_CreateRole; } } -export class KU_IncrementByContext extends antlr.ParserRuleContext { +export class IC_IncrementByContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15065,12 +16545,12 @@ export class KU_IncrementByContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.MINUS, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_IncrementBy; + return CypherParser.RULE_iC_IncrementBy; } } -export class KU_MinValueContext extends antlr.ParserRuleContext { +export class IC_MinValueContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15090,12 +16570,12 @@ export class KU_MinValueContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.MINUS, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_MinValue; + return CypherParser.RULE_iC_MinValue; } } -export class KU_MaxValueContext extends antlr.ParserRuleContext { +export class IC_MaxValueContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15115,12 +16595,12 @@ export class KU_MaxValueContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.MINUS, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_MaxValue; + return CypherParser.RULE_iC_MaxValue; } } -export class KU_StartWithContext extends antlr.ParserRuleContext { +export class IC_StartWithContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15143,12 +16623,12 @@ export class KU_StartWithContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.MINUS, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_StartWith; + return CypherParser.RULE_iC_StartWith; } } -export class KU_CycleContext extends antlr.ParserRuleContext { +export class IC_CycleContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15162,12 +16642,12 @@ export class KU_CycleContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Cycle; + return CypherParser.RULE_iC_Cycle; } } -export class KU_IfExistsContext extends antlr.ParserRuleContext { +export class IC_IfExistsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15181,12 +16661,12 @@ export class KU_IfExistsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.EXISTS, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_IfExists; + return CypherParser.RULE_iC_IfExists; } } -export class KU_DropContext extends antlr.ParserRuleContext { +export class IC_DropContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15211,16 +16691,47 @@ export class KU_DropContext extends antlr.ParserRuleContext { public MACRO(): antlr.TerminalNode { return this.getToken(CypherParser.MACRO, 0); } - public kU_IfExists(): KU_IfExistsContext { - return this.getTypedRuleContext(KU_IfExistsContext, 0); + public GRAPH(): antlr.TerminalNode { + return this.getToken(CypherParser.GRAPH, 0); + } + public iC_IfExists(): IC_IfExistsContext { + return this.getTypedRuleContext(IC_IfExistsContext, 0); + } + public INDEX(): antlr.TerminalNode { + return this.getToken(CypherParser.INDEX, 0); + } + public iC_DropIndexName(): IC_DropIndexNameContext { + return this.getTypedRuleContext(IC_DropIndexNameContext, 0); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_Drop; + } +} + + +export class IC_DropIndexNameContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public oC_SchemaName__list(): OC_SchemaNameContext[] { + return this.getTypedRuleContexts(OC_SchemaNameContext); + } + public oC_SchemaName(i: number): OC_SchemaNameContext { + return this.getTypedRuleContext(OC_SchemaNameContext, i); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Drop; + return CypherParser.RULE_iC_DropIndexName; } } -export class KU_AlterTableContext extends antlr.ParserRuleContext { +export class IC_AlterTableContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15239,44 +16750,47 @@ export class KU_AlterTableContext extends antlr.ParserRuleContext { public oC_SchemaName(): OC_SchemaNameContext { return this.getTypedRuleContext(OC_SchemaNameContext, 0); } - public kU_AlterOptions(): KU_AlterOptionsContext { - return this.getTypedRuleContext(KU_AlterOptionsContext, 0); + public iC_AlterOptions(): IC_AlterOptionsContext { + return this.getTypedRuleContext(IC_AlterOptionsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_AlterTable; + return CypherParser.RULE_iC_AlterTable; } } -export class KU_AlterOptionsContext extends antlr.ParserRuleContext { +export class IC_AlterOptionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_AddProperty(): KU_AddPropertyContext { - return this.getTypedRuleContext(KU_AddPropertyContext, 0); + public iC_AddProperty(): IC_AddPropertyContext { + return this.getTypedRuleContext(IC_AddPropertyContext, 0); + } + public iC_DropProperty(): IC_DropPropertyContext { + return this.getTypedRuleContext(IC_DropPropertyContext, 0); } - public kU_DropProperty(): KU_DropPropertyContext { - return this.getTypedRuleContext(KU_DropPropertyContext, 0); + public iC_RenameTable(): IC_RenameTableContext { + return this.getTypedRuleContext(IC_RenameTableContext, 0); } - public kU_RenameTable(): KU_RenameTableContext { - return this.getTypedRuleContext(KU_RenameTableContext, 0); + public iC_RenameProperty(): IC_RenamePropertyContext { + return this.getTypedRuleContext(IC_RenamePropertyContext, 0); } - public kU_RenameProperty(): KU_RenamePropertyContext { - return this.getTypedRuleContext(KU_RenamePropertyContext, 0); + public iC_AddFromToConnection(): IC_AddFromToConnectionContext { + return this.getTypedRuleContext(IC_AddFromToConnectionContext, 0); } - public kU_AddFromToConnection(): KU_AddFromToConnectionContext { - return this.getTypedRuleContext(KU_AddFromToConnectionContext, 0); + public iC_DropFromToConnection(): IC_DropFromToConnectionContext { + return this.getTypedRuleContext(IC_DropFromToConnectionContext, 0); } - public kU_DropFromToConnection(): KU_DropFromToConnectionContext { - return this.getTypedRuleContext(KU_DropFromToConnectionContext, 0); + public iC_SetSortedBy(): IC_SetSortedByContext { + return this.getTypedRuleContext(IC_SetSortedByContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_AlterOptions; + return CypherParser.RULE_iC_AlterOptions; } } -export class KU_AddPropertyContext extends antlr.ParserRuleContext { +export class IC_AddPropertyContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15292,22 +16806,22 @@ export class KU_AddPropertyContext extends antlr.ParserRuleContext { public oC_PropertyKeyName(): OC_PropertyKeyNameContext { return this.getTypedRuleContext(OC_PropertyKeyNameContext, 0); } - public kU_DataType(): KU_DataTypeContext { - return this.getTypedRuleContext(KU_DataTypeContext, 0); + public iC_DataType(): IC_DataTypeContext { + return this.getTypedRuleContext(IC_DataTypeContext, 0); } - public kU_IfNotExists(): KU_IfNotExistsContext { - return this.getTypedRuleContext(KU_IfNotExistsContext, 0); + public iC_IfNotExists(): IC_IfNotExistsContext { + return this.getTypedRuleContext(IC_IfNotExistsContext, 0); } - public kU_Default(): KU_DefaultContext { - return this.getTypedRuleContext(KU_DefaultContext, 0); + public iC_Default(): IC_DefaultContext { + return this.getTypedRuleContext(IC_DefaultContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_AddProperty; + return CypherParser.RULE_iC_AddProperty; } } -export class KU_DefaultContext extends antlr.ParserRuleContext { +export class IC_DefaultContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15321,12 +16835,12 @@ export class KU_DefaultContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_ExpressionContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Default; + return CypherParser.RULE_iC_Default; } } -export class KU_DropPropertyContext extends antlr.ParserRuleContext { +export class IC_DropPropertyContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15342,16 +16856,16 @@ export class KU_DropPropertyContext extends antlr.ParserRuleContext { public oC_PropertyKeyName(): OC_PropertyKeyNameContext { return this.getTypedRuleContext(OC_PropertyKeyNameContext, 0); } - public kU_IfExists(): KU_IfExistsContext { - return this.getTypedRuleContext(KU_IfExistsContext, 0); + public iC_IfExists(): IC_IfExistsContext { + return this.getTypedRuleContext(IC_IfExistsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_DropProperty; + return CypherParser.RULE_iC_DropProperty; } } -export class KU_RenameTableContext extends antlr.ParserRuleContext { +export class IC_RenameTableContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15371,12 +16885,12 @@ export class KU_RenameTableContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_SchemaNameContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_RenameTable; + return CypherParser.RULE_iC_RenameTable; } } -export class KU_RenamePropertyContext extends antlr.ParserRuleContext { +export class IC_RenamePropertyContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15399,12 +16913,12 @@ export class KU_RenamePropertyContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.TO, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_RenameProperty; + return CypherParser.RULE_iC_RenameProperty; } } -export class KU_AddFromToConnectionContext extends antlr.ParserRuleContext { +export class IC_AddFromToConnectionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15417,19 +16931,19 @@ export class KU_AddFromToConnectionContext extends antlr.ParserRuleContext { public SP(i: number): antlr.TerminalNode { return this.getToken(CypherParser.SP, i); } - public kU_FromToConnection(): KU_FromToConnectionContext { - return this.getTypedRuleContext(KU_FromToConnectionContext, 0); + public iC_FromToConnection(): IC_FromToConnectionContext { + return this.getTypedRuleContext(IC_FromToConnectionContext, 0); } - public kU_IfNotExists(): KU_IfNotExistsContext { - return this.getTypedRuleContext(KU_IfNotExistsContext, 0); + public iC_IfNotExists(): IC_IfNotExistsContext { + return this.getTypedRuleContext(IC_IfNotExistsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_AddFromToConnection; + return CypherParser.RULE_iC_AddFromToConnection; } } -export class KU_DropFromToConnectionContext extends antlr.ParserRuleContext { +export class IC_DropFromToConnectionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15442,27 +16956,80 @@ export class KU_DropFromToConnectionContext extends antlr.ParserRuleContext { public SP(i: number): antlr.TerminalNode { return this.getToken(CypherParser.SP, i); } - public kU_FromToConnection(): KU_FromToConnectionContext { - return this.getTypedRuleContext(KU_FromToConnectionContext, 0); + public iC_FromToConnection(): IC_FromToConnectionContext { + return this.getTypedRuleContext(IC_FromToConnectionContext, 0); + } + public iC_IfExists(): IC_IfExistsContext { + return this.getTypedRuleContext(IC_IfExistsContext, 0); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_DropFromToConnection; + } +} + + +export class IC_SetSortedByContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public SET(): antlr.TerminalNode { + return this.getToken(CypherParser.SET, 0); + } + public SP__list(): antlr.TerminalNode[] { + return this.getTokens(CypherParser.SP); + } + public SP(i: number): antlr.TerminalNode { + return this.getToken(CypherParser.SP, i); + } + public SORTED(): antlr.TerminalNode { + return this.getToken(CypherParser.SORTED, 0); + } + public BY(): antlr.TerminalNode { + return this.getToken(CypherParser.BY, 0); + } + public iC_SortedByItem__list(): IC_SortedByItemContext[] { + return this.getTypedRuleContexts(IC_SortedByItemContext); + } + public iC_SortedByItem(i: number): IC_SortedByItemContext { + return this.getTypedRuleContext(IC_SortedByItemContext, i); + } + public override get ruleIndex(): number { + return CypherParser.RULE_iC_SetSortedBy; + } +} + + +export class IC_SortedByItemContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public oC_PropertyKeyName(): OC_PropertyKeyNameContext { + return this.getTypedRuleContext(OC_PropertyKeyNameContext, 0); + } + public SP(): antlr.TerminalNode { + return this.getToken(CypherParser.SP, 0); + } + public ASC(): antlr.TerminalNode { + return this.getToken(CypherParser.ASC, 0); } - public kU_IfExists(): KU_IfExistsContext { - return this.getTypedRuleContext(KU_IfExistsContext, 0); + public DESC(): antlr.TerminalNode { + return this.getToken(CypherParser.DESC, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_DropFromToConnection; + return CypherParser.RULE_iC_SortedByItem; } } -export class KU_ColumnDefinitionsContext extends antlr.ParserRuleContext { +export class IC_ColumnDefinitionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_ColumnDefinition__list(): KU_ColumnDefinitionContext[] { - return this.getTypedRuleContexts(KU_ColumnDefinitionContext); + public iC_ColumnDefinition__list(): IC_ColumnDefinitionContext[] { + return this.getTypedRuleContexts(IC_ColumnDefinitionContext); } - public kU_ColumnDefinition(i: number): KU_ColumnDefinitionContext { - return this.getTypedRuleContext(KU_ColumnDefinitionContext, i); + public iC_ColumnDefinition(i: number): IC_ColumnDefinitionContext { + return this.getTypedRuleContext(IC_ColumnDefinitionContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -15471,12 +17038,12 @@ export class KU_ColumnDefinitionsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ColumnDefinitions; + return CypherParser.RULE_iC_ColumnDefinitions; } } -export class KU_ColumnDefinitionContext extends antlr.ParserRuleContext { +export class IC_ColumnDefinitionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15486,24 +17053,24 @@ export class KU_ColumnDefinitionContext extends antlr.ParserRuleContext { public SP(): antlr.TerminalNode { return this.getToken(CypherParser.SP, 0); } - public kU_DataType(): KU_DataTypeContext { - return this.getTypedRuleContext(KU_DataTypeContext, 0); + public iC_DataType(): IC_DataTypeContext { + return this.getTypedRuleContext(IC_DataTypeContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ColumnDefinition; + return CypherParser.RULE_iC_ColumnDefinition; } } -export class KU_PropertyDefinitionsContext extends antlr.ParserRuleContext { +export class IC_PropertyDefinitionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_PropertyDefinition__list(): KU_PropertyDefinitionContext[] { - return this.getTypedRuleContexts(KU_PropertyDefinitionContext); + public iC_PropertyDefinition__list(): IC_PropertyDefinitionContext[] { + return this.getTypedRuleContexts(IC_PropertyDefinitionContext); } - public kU_PropertyDefinition(i: number): KU_PropertyDefinitionContext { - return this.getTypedRuleContext(KU_PropertyDefinitionContext, i); + public iC_PropertyDefinition(i: number): IC_PropertyDefinitionContext { + return this.getTypedRuleContext(IC_PropertyDefinitionContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -15512,17 +17079,17 @@ export class KU_PropertyDefinitionsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_PropertyDefinitions; + return CypherParser.RULE_iC_PropertyDefinitions; } } -export class KU_PropertyDefinitionContext extends antlr.ParserRuleContext { +export class IC_PropertyDefinitionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_ColumnDefinition(): KU_ColumnDefinitionContext { - return this.getTypedRuleContext(KU_ColumnDefinitionContext, 0); + public iC_ColumnDefinition(): IC_ColumnDefinitionContext { + return this.getTypedRuleContext(IC_ColumnDefinitionContext, 0); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -15530,8 +17097,8 @@ export class KU_PropertyDefinitionContext extends antlr.ParserRuleContext { public SP(i: number): antlr.TerminalNode { return this.getToken(CypherParser.SP, i); } - public kU_Default(): KU_DefaultContext { - return this.getTypedRuleContext(KU_DefaultContext, 0); + public iC_Default(): IC_DefaultContext { + return this.getTypedRuleContext(IC_DefaultContext, 0); } public PRIMARY(): antlr.TerminalNode { return this.getToken(CypherParser.PRIMARY, 0); @@ -15540,12 +17107,12 @@ export class KU_PropertyDefinitionContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.KEY, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_PropertyDefinition; + return CypherParser.RULE_iC_PropertyDefinition; } } -export class KU_CreateNodeConstraintContext extends antlr.ParserRuleContext { +export class IC_CreateNodeConstraintContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15565,20 +17132,20 @@ export class KU_CreateNodeConstraintContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_PropertyKeyNameContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_CreateNodeConstraint; + return CypherParser.RULE_iC_CreateNodeConstraint; } } -export class KU_UnionTypeContext extends antlr.ParserRuleContext { +export class IC_UnionTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public UNION(): antlr.TerminalNode { return this.getToken(CypherParser.UNION, 0); } - public kU_ColumnDefinitions(): KU_ColumnDefinitionsContext { - return this.getTypedRuleContext(KU_ColumnDefinitionsContext, 0); + public iC_ColumnDefinitions(): IC_ColumnDefinitionsContext { + return this.getTypedRuleContext(IC_ColumnDefinitionsContext, 0); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -15587,20 +17154,20 @@ export class KU_UnionTypeContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_UnionType; + return CypherParser.RULE_iC_UnionType; } } -export class KU_StructTypeContext extends antlr.ParserRuleContext { +export class IC_StructTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public STRUCT(): antlr.TerminalNode { return this.getToken(CypherParser.STRUCT, 0); } - public kU_ColumnDefinitions(): KU_ColumnDefinitionsContext { - return this.getTypedRuleContext(KU_ColumnDefinitionsContext, 0); + public iC_ColumnDefinitions(): IC_ColumnDefinitionsContext { + return this.getTypedRuleContext(IC_ColumnDefinitionsContext, 0); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -15609,23 +17176,23 @@ export class KU_StructTypeContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_StructType; + return CypherParser.RULE_iC_StructType; } } -export class KU_MapTypeContext extends antlr.ParserRuleContext { +export class IC_MapTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public MAP(): antlr.TerminalNode { return this.getToken(CypherParser.MAP, 0); } - public kU_DataType__list(): KU_DataTypeContext[] { - return this.getTypedRuleContexts(KU_DataTypeContext); + public iC_DataType__list(): IC_DataTypeContext[] { + return this.getTypedRuleContexts(IC_DataTypeContext); } - public kU_DataType(i: number): KU_DataTypeContext { - return this.getTypedRuleContext(KU_DataTypeContext, i); + public iC_DataType(i: number): IC_DataTypeContext { + return this.getTypedRuleContext(IC_DataTypeContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -15634,12 +17201,12 @@ export class KU_MapTypeContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_MapType; + return CypherParser.RULE_iC_MapType; } } -export class KU_DecimalTypeContext extends antlr.ParserRuleContext { +export class IC_DecimalTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15659,59 +17226,59 @@ export class KU_DecimalTypeContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_DecimalType; + return CypherParser.RULE_iC_DecimalType; } } -export class KU_DataTypeContext extends antlr.ParserRuleContext { +export class IC_DataTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public oC_SymbolicName(): OC_SymbolicNameContext { return this.getTypedRuleContext(OC_SymbolicNameContext, 0); } - public kU_UnionType(): KU_UnionTypeContext { - return this.getTypedRuleContext(KU_UnionTypeContext, 0); + public iC_UnionType(): IC_UnionTypeContext { + return this.getTypedRuleContext(IC_UnionTypeContext, 0); } - public kU_StructType(): KU_StructTypeContext { - return this.getTypedRuleContext(KU_StructTypeContext, 0); + public iC_StructType(): IC_StructTypeContext { + return this.getTypedRuleContext(IC_StructTypeContext, 0); } - public kU_MapType(): KU_MapTypeContext { - return this.getTypedRuleContext(KU_MapTypeContext, 0); + public iC_MapType(): IC_MapTypeContext { + return this.getTypedRuleContext(IC_MapTypeContext, 0); } - public kU_DecimalType(): KU_DecimalTypeContext { - return this.getTypedRuleContext(KU_DecimalTypeContext, 0); + public iC_DecimalType(): IC_DecimalTypeContext { + return this.getTypedRuleContext(IC_DecimalTypeContext, 0); } - public kU_DataType(): KU_DataTypeContext { - return this.getTypedRuleContext(KU_DataTypeContext, 0); + public iC_DataType(): IC_DataTypeContext { + return this.getTypedRuleContext(IC_DataTypeContext, 0); } - public kU_ListIdentifiers(): KU_ListIdentifiersContext { - return this.getTypedRuleContext(KU_ListIdentifiersContext, 0); + public iC_ListIdentifiers(): IC_ListIdentifiersContext { + return this.getTypedRuleContext(IC_ListIdentifiersContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_DataType; + return CypherParser.RULE_iC_DataType; } } -export class KU_ListIdentifiersContext extends antlr.ParserRuleContext { +export class IC_ListIdentifiersContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_ListIdentifier__list(): KU_ListIdentifierContext[] { - return this.getTypedRuleContexts(KU_ListIdentifierContext); + public iC_ListIdentifier__list(): IC_ListIdentifierContext[] { + return this.getTypedRuleContexts(IC_ListIdentifierContext); } - public kU_ListIdentifier(i: number): KU_ListIdentifierContext { - return this.getTypedRuleContext(KU_ListIdentifierContext, i); + public iC_ListIdentifier(i: number): IC_ListIdentifierContext { + return this.getTypedRuleContext(IC_ListIdentifierContext, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ListIdentifiers; + return CypherParser.RULE_iC_ListIdentifiers; } } -export class KU_ListIdentifierContext extends antlr.ParserRuleContext { +export class IC_ListIdentifierContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15719,7 +17286,7 @@ export class KU_ListIdentifierContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_IntegerLiteralContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ListIdentifier; + return CypherParser.RULE_iC_ListIdentifier; } } @@ -15772,7 +17339,7 @@ export class OC_ProfileContext extends antlr.ParserRuleContext { } -export class KU_TransactionContext extends antlr.ParserRuleContext { +export class IC_TransactionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15804,34 +17371,34 @@ export class KU_TransactionContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.CHECKPOINT, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Transaction; + return CypherParser.RULE_iC_Transaction; } } -export class KU_ExtensionContext extends antlr.ParserRuleContext { +export class IC_ExtensionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_LoadExtension(): KU_LoadExtensionContext { - return this.getTypedRuleContext(KU_LoadExtensionContext, 0); + public iC_LoadExtension(): IC_LoadExtensionContext { + return this.getTypedRuleContext(IC_LoadExtensionContext, 0); } - public kU_InstallExtension(): KU_InstallExtensionContext { - return this.getTypedRuleContext(KU_InstallExtensionContext, 0); + public iC_InstallExtension(): IC_InstallExtensionContext { + return this.getTypedRuleContext(IC_InstallExtensionContext, 0); } - public kU_UninstallExtension(): KU_UninstallExtensionContext { - return this.getTypedRuleContext(KU_UninstallExtensionContext, 0); + public iC_UninstallExtension(): IC_UninstallExtensionContext { + return this.getTypedRuleContext(IC_UninstallExtensionContext, 0); } - public kU_UpdateExtension(): KU_UpdateExtensionContext { - return this.getTypedRuleContext(KU_UpdateExtensionContext, 0); + public iC_UpdateExtension(): IC_UpdateExtensionContext { + return this.getTypedRuleContext(IC_UpdateExtensionContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Extension; + return CypherParser.RULE_iC_Extension; } } -export class KU_LoadExtensionContext extends antlr.ParserRuleContext { +export class IC_LoadExtensionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15854,12 +17421,12 @@ export class KU_LoadExtensionContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.EXTENSION, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_LoadExtension; + return CypherParser.RULE_iC_LoadExtension; } } -export class KU_InstallExtensionContext extends antlr.ParserRuleContext { +export class IC_InstallExtensionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15885,12 +17452,12 @@ export class KU_InstallExtensionContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.StringLiteral, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_InstallExtension; + return CypherParser.RULE_iC_InstallExtension; } } -export class KU_UninstallExtensionContext extends antlr.ParserRuleContext { +export class IC_UninstallExtensionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15904,12 +17471,12 @@ export class KU_UninstallExtensionContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_VariableContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_UninstallExtension; + return CypherParser.RULE_iC_UninstallExtension; } } -export class KU_UpdateExtensionContext extends antlr.ParserRuleContext { +export class IC_UpdateExtensionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15923,7 +17490,7 @@ export class KU_UpdateExtensionContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_VariableContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_UpdateExtension; + return CypherParser.RULE_iC_UpdateExtension; } } @@ -16051,11 +17618,11 @@ export class OC_MultiPartQueryContext extends antlr.ParserRuleContext { public oC_SinglePartQuery(): OC_SinglePartQueryContext { return this.getTypedRuleContext(OC_SinglePartQueryContext, 0); } - public kU_QueryPart__list(): KU_QueryPartContext[] { - return this.getTypedRuleContexts(KU_QueryPartContext); + public iC_QueryPart__list(): IC_QueryPartContext[] { + return this.getTypedRuleContexts(IC_QueryPartContext); } - public kU_QueryPart(i: number): KU_QueryPartContext { - return this.getTypedRuleContext(KU_QueryPartContext, i); + public iC_QueryPart(i: number): IC_QueryPartContext { + return this.getTypedRuleContext(IC_QueryPartContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -16069,7 +17636,7 @@ export class OC_MultiPartQueryContext extends antlr.ParserRuleContext { } -export class KU_QueryPartContext extends antlr.ParserRuleContext { +export class IC_QueryPartContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -16095,7 +17662,7 @@ export class KU_QueryPartContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_QueryPart; + return CypherParser.RULE_iC_QueryPart; } } @@ -16132,11 +17699,11 @@ export class OC_ReadingClauseContext extends antlr.ParserRuleContext { public oC_Unwind(): OC_UnwindContext { return this.getTypedRuleContext(OC_UnwindContext, 0); } - public kU_InQueryCall(): KU_InQueryCallContext { - return this.getTypedRuleContext(KU_InQueryCallContext, 0); + public iC_InQueryCall(): IC_InQueryCallContext { + return this.getTypedRuleContext(IC_InQueryCallContext, 0); } - public kU_LoadFrom(): KU_LoadFromContext { - return this.getTypedRuleContext(KU_LoadFromContext, 0); + public iC_LoadFrom(): IC_LoadFromContext { + return this.getTypedRuleContext(IC_LoadFromContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_ReadingClause; @@ -16144,7 +17711,7 @@ export class OC_ReadingClauseContext extends antlr.ParserRuleContext { } -export class KU_LoadFromContext extends antlr.ParserRuleContext { +export class IC_LoadFromContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -16160,8 +17727,8 @@ export class KU_LoadFromContext extends antlr.ParserRuleContext { public FROM(): antlr.TerminalNode { return this.getToken(CypherParser.FROM, 0); } - public kU_ScanSource(): KU_ScanSourceContext { - return this.getTypedRuleContext(KU_ScanSourceContext, 0); + public iC_ScanSource(): IC_ScanSourceContext { + return this.getTypedRuleContext(IC_ScanSourceContext, 0); } public WITH(): antlr.TerminalNode { return this.getToken(CypherParser.WITH, 0); @@ -16169,17 +17736,17 @@ export class KU_LoadFromContext extends antlr.ParserRuleContext { public HEADERS(): antlr.TerminalNode { return this.getToken(CypherParser.HEADERS, 0); } - public kU_ColumnDefinitions(): KU_ColumnDefinitionsContext { - return this.getTypedRuleContext(KU_ColumnDefinitionsContext, 0); + public iC_ColumnDefinitions(): IC_ColumnDefinitionsContext { + return this.getTypedRuleContext(IC_ColumnDefinitionsContext, 0); } - public kU_Options(): KU_OptionsContext { - return this.getTypedRuleContext(KU_OptionsContext, 0); + public iC_Options(): IC_OptionsContext { + return this.getTypedRuleContext(IC_OptionsContext, 0); } public oC_Where(): OC_WhereContext { return this.getTypedRuleContext(OC_WhereContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_LoadFrom; + return CypherParser.RULE_iC_LoadFrom; } } @@ -16231,7 +17798,7 @@ export class OC_YieldItemsContext extends antlr.ParserRuleContext { } -export class KU_InQueryCallContext extends antlr.ParserRuleContext { +export class IC_InQueryCallContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -16257,7 +17824,7 @@ export class KU_InQueryCallContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_YieldItemsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_InQueryCall; + return CypherParser.RULE_iC_InQueryCall; } } @@ -16284,8 +17851,8 @@ export class OC_MatchContext extends antlr.ParserRuleContext { public oC_Where(): OC_WhereContext { return this.getTypedRuleContext(OC_WhereContext, 0); } - public kU_Hint(): KU_HintContext { - return this.getTypedRuleContext(KU_HintContext, 0); + public iC_Hint(): IC_HintContext { + return this.getTypedRuleContext(IC_HintContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_Match; @@ -16293,7 +17860,7 @@ export class OC_MatchContext extends antlr.ParserRuleContext { } -export class KU_HintContext extends antlr.ParserRuleContext { +export class IC_HintContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -16303,24 +17870,24 @@ export class KU_HintContext extends antlr.ParserRuleContext { public SP(): antlr.TerminalNode { return this.getToken(CypherParser.SP, 0); } - public kU_JoinNode(): KU_JoinNodeContext { - return this.getTypedRuleContext(KU_JoinNodeContext, 0); + public iC_JoinNode(): IC_JoinNodeContext { + return this.getTypedRuleContext(IC_JoinNodeContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Hint; + return CypherParser.RULE_iC_Hint; } } -export class KU_JoinNodeContext extends antlr.ParserRuleContext { +export class IC_JoinNodeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_JoinNode__list(): KU_JoinNodeContext[] { - return this.getTypedRuleContexts(KU_JoinNodeContext); + public iC_JoinNode__list(): IC_JoinNodeContext[] { + return this.getTypedRuleContexts(IC_JoinNodeContext); } - public kU_JoinNode(i: number): KU_JoinNodeContext { - return this.getTypedRuleContext(KU_JoinNodeContext, i); + public iC_JoinNode(i: number): IC_JoinNodeContext { + return this.getTypedRuleContext(IC_JoinNodeContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -16344,7 +17911,7 @@ export class KU_JoinNodeContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.MULTI_JOIN, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_JoinNode; + return CypherParser.RULE_iC_JoinNode; } } @@ -16474,8 +18041,8 @@ export class OC_SetContext extends antlr.ParserRuleContext { public oC_Atom(): OC_AtomContext { return this.getTypedRuleContext(OC_AtomContext, 0); } - public kU_Properties(): KU_PropertiesContext { - return this.getTypedRuleContext(KU_PropertiesContext, 0); + public iC_Properties(): IC_PropertiesContext { + return this.getTypedRuleContext(IC_PropertiesContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_Set; @@ -16866,8 +18433,8 @@ export class OC_NodePatternContext extends antlr.ParserRuleContext { public oC_NodeLabels(): OC_NodeLabelsContext { return this.getTypedRuleContext(OC_NodeLabelsContext, 0); } - public kU_Properties(): KU_PropertiesContext { - return this.getTypedRuleContext(KU_PropertiesContext, 0); + public iC_Properties(): IC_PropertiesContext { + return this.getTypedRuleContext(IC_PropertiesContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_NodePattern; @@ -16941,11 +18508,11 @@ export class OC_RelationshipDetailContext extends antlr.ParserRuleContext { public oC_RelationshipTypes(): OC_RelationshipTypesContext { return this.getTypedRuleContext(OC_RelationshipTypesContext, 0); } - public kU_RecursiveDetail(): KU_RecursiveDetailContext { - return this.getTypedRuleContext(KU_RecursiveDetailContext, 0); + public iC_RecursiveDetail(): IC_RecursiveDetailContext { + return this.getTypedRuleContext(IC_RecursiveDetailContext, 0); } - public kU_Properties(): KU_PropertiesContext { - return this.getTypedRuleContext(KU_PropertiesContext, 0); + public iC_Properties(): IC_PropertiesContext { + return this.getTypedRuleContext(IC_PropertiesContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_RelationshipDetail; @@ -16953,7 +18520,7 @@ export class OC_RelationshipDetailContext extends antlr.ParserRuleContext { } -export class KU_PropertiesContext extends antlr.ParserRuleContext { +export class IC_PropertiesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -16982,7 +18549,7 @@ export class KU_PropertiesContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_ExpressionContext, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_Properties; + return CypherParser.RULE_iC_Properties; } } @@ -17043,21 +18610,21 @@ export class OC_NodeLabelsContext extends antlr.ParserRuleContext { } -export class KU_RecursiveDetailContext extends antlr.ParserRuleContext { +export class IC_RecursiveDetailContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public STAR(): antlr.TerminalNode { return this.getToken(CypherParser.STAR, 0); } - public kU_RecursiveType(): KU_RecursiveTypeContext { - return this.getTypedRuleContext(KU_RecursiveTypeContext, 0); + public iC_RecursiveType(): IC_RecursiveTypeContext { + return this.getTypedRuleContext(IC_RecursiveTypeContext, 0); } public oC_RangeLiteral(): OC_RangeLiteralContext { return this.getTypedRuleContext(OC_RangeLiteralContext, 0); } - public kU_RecursiveComprehension(): KU_RecursiveComprehensionContext { - return this.getTypedRuleContext(KU_RecursiveComprehensionContext, 0); + public iC_RecursiveComprehension(): IC_RecursiveComprehensionContext { + return this.getTypedRuleContext(IC_RecursiveComprehensionContext, 0); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -17066,12 +18633,12 @@ export class KU_RecursiveDetailContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_RecursiveDetail; + return CypherParser.RULE_iC_RecursiveDetail; } } -export class KU_RecursiveTypeContext extends antlr.ParserRuleContext { +export class IC_RecursiveTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -17100,7 +18667,7 @@ export class KU_RecursiveTypeContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.ACYCLIC, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_RecursiveType; + return CypherParser.RULE_iC_RecursiveType; } } @@ -17133,7 +18700,7 @@ export class OC_RangeLiteralContext extends antlr.ParserRuleContext { } -export class KU_RecursiveComprehensionContext extends antlr.ParserRuleContext { +export class IC_RecursiveComprehensionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -17152,19 +18719,19 @@ export class KU_RecursiveComprehensionContext extends antlr.ParserRuleContext { public oC_Where(): OC_WhereContext { return this.getTypedRuleContext(OC_WhereContext, 0); } - public kU_RecursiveProjectionItems__list(): KU_RecursiveProjectionItemsContext[] { - return this.getTypedRuleContexts(KU_RecursiveProjectionItemsContext); + public iC_RecursiveProjectionItems__list(): IC_RecursiveProjectionItemsContext[] { + return this.getTypedRuleContexts(IC_RecursiveProjectionItemsContext); } - public kU_RecursiveProjectionItems(i: number): KU_RecursiveProjectionItemsContext { - return this.getTypedRuleContext(KU_RecursiveProjectionItemsContext, i); + public iC_RecursiveProjectionItems(i: number): IC_RecursiveProjectionItemsContext { + return this.getTypedRuleContext(IC_RecursiveProjectionItemsContext, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_RecursiveComprehension; + return CypherParser.RULE_iC_RecursiveComprehension; } } -export class KU_RecursiveProjectionItemsContext extends antlr.ParserRuleContext { +export class IC_RecursiveProjectionItemsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -17178,7 +18745,7 @@ export class KU_RecursiveProjectionItemsContext extends antlr.ParserRuleContext return this.getTypedRuleContext(OC_ProjectionItemsContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_RecursiveProjectionItems; + return CypherParser.RULE_iC_RecursiveProjectionItems; } } @@ -17213,8 +18780,11 @@ export class OC_LabelNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public oC_SchemaName(): OC_SchemaNameContext { - return this.getTypedRuleContext(OC_SchemaNameContext, 0); + public oC_SchemaName__list(): OC_SchemaNameContext[] { + return this.getTypedRuleContexts(OC_SchemaNameContext); + } + public oC_SchemaName(i: number): OC_SchemaNameContext { + return this.getTypedRuleContext(OC_SchemaNameContext, i); } public override get ruleIndex(): number { return CypherParser.RULE_oC_LabelName; @@ -17362,17 +18932,17 @@ export class OC_ComparisonExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_BitwiseOrOperatorExpression__list(): KU_BitwiseOrOperatorExpressionContext[] { - return this.getTypedRuleContexts(KU_BitwiseOrOperatorExpressionContext); + public iC_BitwiseOrOperatorExpression__list(): IC_BitwiseOrOperatorExpressionContext[] { + return this.getTypedRuleContexts(IC_BitwiseOrOperatorExpressionContext); } - public kU_BitwiseOrOperatorExpression(i: number): KU_BitwiseOrOperatorExpressionContext { - return this.getTypedRuleContext(KU_BitwiseOrOperatorExpressionContext, i); + public iC_BitwiseOrOperatorExpression(i: number): IC_BitwiseOrOperatorExpressionContext { + return this.getTypedRuleContext(IC_BitwiseOrOperatorExpressionContext, i); } - public kU_ComparisonOperator__list(): KU_ComparisonOperatorContext[] { - return this.getTypedRuleContexts(KU_ComparisonOperatorContext); + public iC_ComparisonOperator__list(): IC_ComparisonOperatorContext[] { + return this.getTypedRuleContexts(IC_ComparisonOperatorContext); } - public kU_ComparisonOperator(i: number): KU_ComparisonOperatorContext { - return this.getTypedRuleContext(KU_ComparisonOperatorContext, i); + public iC_ComparisonOperator(i: number): IC_ComparisonOperatorContext { + return this.getTypedRuleContext(IC_ComparisonOperatorContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -17389,25 +18959,25 @@ export class OC_ComparisonExpressionContext extends antlr.ParserRuleContext { } -export class KU_ComparisonOperatorContext extends antlr.ParserRuleContext { +export class IC_ComparisonOperatorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ComparisonOperator; + return CypherParser.RULE_iC_ComparisonOperator; } } -export class KU_BitwiseOrOperatorExpressionContext extends antlr.ParserRuleContext { +export class IC_BitwiseOrOperatorExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_BitwiseAndOperatorExpression__list(): KU_BitwiseAndOperatorExpressionContext[] { - return this.getTypedRuleContexts(KU_BitwiseAndOperatorExpressionContext); + public iC_BitwiseAndOperatorExpression__list(): IC_BitwiseAndOperatorExpressionContext[] { + return this.getTypedRuleContexts(IC_BitwiseAndOperatorExpressionContext); } - public kU_BitwiseAndOperatorExpression(i: number): KU_BitwiseAndOperatorExpressionContext { - return this.getTypedRuleContext(KU_BitwiseAndOperatorExpressionContext, i); + public iC_BitwiseAndOperatorExpression(i: number): IC_BitwiseAndOperatorExpressionContext { + return this.getTypedRuleContext(IC_BitwiseAndOperatorExpressionContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -17416,20 +18986,20 @@ export class KU_BitwiseOrOperatorExpressionContext extends antlr.ParserRuleConte return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_BitwiseOrOperatorExpression; + return CypherParser.RULE_iC_BitwiseOrOperatorExpression; } } -export class KU_BitwiseAndOperatorExpressionContext extends antlr.ParserRuleContext { +export class IC_BitwiseAndOperatorExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_BitShiftOperatorExpression__list(): KU_BitShiftOperatorExpressionContext[] { - return this.getTypedRuleContexts(KU_BitShiftOperatorExpressionContext); + public iC_BitShiftOperatorExpression__list(): IC_BitShiftOperatorExpressionContext[] { + return this.getTypedRuleContexts(IC_BitShiftOperatorExpressionContext); } - public kU_BitShiftOperatorExpression(i: number): KU_BitShiftOperatorExpressionContext { - return this.getTypedRuleContext(KU_BitShiftOperatorExpressionContext, i); + public iC_BitShiftOperatorExpression(i: number): IC_BitShiftOperatorExpressionContext { + return this.getTypedRuleContext(IC_BitShiftOperatorExpressionContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -17438,12 +19008,12 @@ export class KU_BitwiseAndOperatorExpressionContext extends antlr.ParserRuleCont return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_BitwiseAndOperatorExpression; + return CypherParser.RULE_iC_BitwiseAndOperatorExpression; } } -export class KU_BitShiftOperatorExpressionContext extends antlr.ParserRuleContext { +export class IC_BitShiftOperatorExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -17453,11 +19023,11 @@ export class KU_BitShiftOperatorExpressionContext extends antlr.ParserRuleContex public oC_AddOrSubtractExpression(i: number): OC_AddOrSubtractExpressionContext { return this.getTypedRuleContext(OC_AddOrSubtractExpressionContext, i); } - public kU_BitShiftOperator__list(): KU_BitShiftOperatorContext[] { - return this.getTypedRuleContexts(KU_BitShiftOperatorContext); + public iC_BitShiftOperator__list(): IC_BitShiftOperatorContext[] { + return this.getTypedRuleContexts(IC_BitShiftOperatorContext); } - public kU_BitShiftOperator(i: number): KU_BitShiftOperatorContext { - return this.getTypedRuleContext(KU_BitShiftOperatorContext, i); + public iC_BitShiftOperator(i: number): IC_BitShiftOperatorContext { + return this.getTypedRuleContext(IC_BitShiftOperatorContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -17466,17 +19036,17 @@ export class KU_BitShiftOperatorExpressionContext extends antlr.ParserRuleContex return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_BitShiftOperatorExpression; + return CypherParser.RULE_iC_BitShiftOperatorExpression; } } -export class KU_BitShiftOperatorContext extends antlr.ParserRuleContext { +export class IC_BitShiftOperatorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_BitShiftOperator; + return CypherParser.RULE_iC_BitShiftOperator; } } @@ -17491,11 +19061,11 @@ export class OC_AddOrSubtractExpressionContext extends antlr.ParserRuleContext { public oC_MultiplyDivideModuloExpression(i: number): OC_MultiplyDivideModuloExpressionContext { return this.getTypedRuleContext(OC_MultiplyDivideModuloExpressionContext, i); } - public kU_AddOrSubtractOperator__list(): KU_AddOrSubtractOperatorContext[] { - return this.getTypedRuleContexts(KU_AddOrSubtractOperatorContext); + public iC_AddOrSubtractOperator__list(): IC_AddOrSubtractOperatorContext[] { + return this.getTypedRuleContexts(IC_AddOrSubtractOperatorContext); } - public kU_AddOrSubtractOperator(i: number): KU_AddOrSubtractOperatorContext { - return this.getTypedRuleContext(KU_AddOrSubtractOperatorContext, i); + public iC_AddOrSubtractOperator(i: number): IC_AddOrSubtractOperatorContext { + return this.getTypedRuleContext(IC_AddOrSubtractOperatorContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -17509,7 +19079,7 @@ export class OC_AddOrSubtractExpressionContext extends antlr.ParserRuleContext { } -export class KU_AddOrSubtractOperatorContext extends antlr.ParserRuleContext { +export class IC_AddOrSubtractOperatorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -17517,7 +19087,7 @@ export class KU_AddOrSubtractOperatorContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.MINUS, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_AddOrSubtractOperator; + return CypherParser.RULE_iC_AddOrSubtractOperator; } } @@ -17532,11 +19102,11 @@ export class OC_MultiplyDivideModuloExpressionContext extends antlr.ParserRuleCo public oC_PowerOfExpression(i: number): OC_PowerOfExpressionContext { return this.getTypedRuleContext(OC_PowerOfExpressionContext, i); } - public kU_MultiplyDivideModuloOperator__list(): KU_MultiplyDivideModuloOperatorContext[] { - return this.getTypedRuleContexts(KU_MultiplyDivideModuloOperatorContext); + public iC_MultiplyDivideModuloOperator__list(): IC_MultiplyDivideModuloOperatorContext[] { + return this.getTypedRuleContexts(IC_MultiplyDivideModuloOperatorContext); } - public kU_MultiplyDivideModuloOperator(i: number): KU_MultiplyDivideModuloOperatorContext { - return this.getTypedRuleContext(KU_MultiplyDivideModuloOperatorContext, i); + public iC_MultiplyDivideModuloOperator(i: number): IC_MultiplyDivideModuloOperatorContext { + return this.getTypedRuleContext(IC_MultiplyDivideModuloOperatorContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -17550,7 +19120,7 @@ export class OC_MultiplyDivideModuloExpressionContext extends antlr.ParserRuleCo } -export class KU_MultiplyDivideModuloOperatorContext extends antlr.ParserRuleContext { +export class IC_MultiplyDivideModuloOperatorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -17558,7 +19128,7 @@ export class KU_MultiplyDivideModuloOperatorContext extends antlr.ParserRuleCont return this.getToken(CypherParser.STAR, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_MultiplyDivideModuloOperator; + return CypherParser.RULE_iC_MultiplyDivideModuloOperator; } } @@ -17900,8 +19470,8 @@ export class OC_LiteralContext extends antlr.ParserRuleContext { public oC_ListLiteral(): OC_ListLiteralContext { return this.getTypedRuleContext(OC_ListLiteralContext, 0); } - public kU_StructLiteral(): KU_StructLiteralContext { - return this.getTypedRuleContext(KU_StructLiteralContext, 0); + public iC_StructLiteral(): IC_StructLiteralContext { + return this.getTypedRuleContext(IC_StructLiteralContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_Literal; @@ -17938,11 +19508,11 @@ export class OC_ListLiteralContext extends antlr.ParserRuleContext { public oC_Expression(): OC_ExpressionContext { return this.getTypedRuleContext(OC_ExpressionContext, 0); } - public kU_ListEntry__list(): KU_ListEntryContext[] { - return this.getTypedRuleContexts(KU_ListEntryContext); + public iC_ListEntry__list(): IC_ListEntryContext[] { + return this.getTypedRuleContexts(IC_ListEntryContext); } - public kU_ListEntry(i: number): KU_ListEntryContext { - return this.getTypedRuleContext(KU_ListEntryContext, i); + public iC_ListEntry(i: number): IC_ListEntryContext { + return this.getTypedRuleContext(IC_ListEntryContext, i); } public override get ruleIndex(): number { return CypherParser.RULE_oC_ListLiteral; @@ -17950,7 +19520,7 @@ export class OC_ListLiteralContext extends antlr.ParserRuleContext { } -export class KU_ListEntryContext extends antlr.ParserRuleContext { +export class IC_ListEntryContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -17961,20 +19531,20 @@ export class KU_ListEntryContext extends antlr.ParserRuleContext { return this.getTypedRuleContext(OC_ExpressionContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_ListEntry; + return CypherParser.RULE_iC_ListEntry; } } -export class KU_StructLiteralContext extends antlr.ParserRuleContext { +export class IC_StructLiteralContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_StructField__list(): KU_StructFieldContext[] { - return this.getTypedRuleContexts(KU_StructFieldContext); + public iC_StructField__list(): IC_StructFieldContext[] { + return this.getTypedRuleContexts(IC_StructFieldContext); } - public kU_StructField(i: number): KU_StructFieldContext { - return this.getTypedRuleContext(KU_StructFieldContext, i); + public iC_StructField(i: number): IC_StructFieldContext { + return this.getTypedRuleContext(IC_StructFieldContext, i); } public SP__list(): antlr.TerminalNode[] { return this.getTokens(CypherParser.SP); @@ -17983,12 +19553,12 @@ export class KU_StructLiteralContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_StructLiteral; + return CypherParser.RULE_iC_StructLiteral; } } -export class KU_StructFieldContext extends antlr.ParserRuleContext { +export class IC_StructFieldContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -18011,7 +19581,7 @@ export class KU_StructFieldContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_StructField; + return CypherParser.RULE_iC_StructField; } } @@ -18054,17 +19624,17 @@ export class OC_FunctionInvocationContext extends antlr.ParserRuleContext { public CAST(): antlr.TerminalNode { return this.getToken(CypherParser.CAST, 0); } - public kU_FunctionParameter__list(): KU_FunctionParameterContext[] { - return this.getTypedRuleContexts(KU_FunctionParameterContext); + public iC_FunctionParameter__list(): IC_FunctionParameterContext[] { + return this.getTypedRuleContexts(IC_FunctionParameterContext); } - public kU_FunctionParameter(i: number): KU_FunctionParameterContext { - return this.getTypedRuleContext(KU_FunctionParameterContext, i); + public iC_FunctionParameter(i: number): IC_FunctionParameterContext { + return this.getTypedRuleContext(IC_FunctionParameterContext, i); } public AS(): antlr.TerminalNode { return this.getToken(CypherParser.AS, 0); } - public kU_DataType(): KU_DataTypeContext { - return this.getTypedRuleContext(KU_DataTypeContext, 0); + public iC_DataType(): IC_DataTypeContext { + return this.getTypedRuleContext(IC_DataTypeContext, 0); } public oC_FunctionName(): OC_FunctionNameContext { return this.getTypedRuleContext(OC_FunctionNameContext, 0); @@ -18091,7 +19661,7 @@ export class OC_FunctionNameContext extends antlr.ParserRuleContext { } -export class KU_FunctionParameterContext extends antlr.ParserRuleContext { +export class IC_FunctionParameterContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -18110,21 +19680,21 @@ export class KU_FunctionParameterContext extends antlr.ParserRuleContext { public SP(i: number): antlr.TerminalNode { return this.getToken(CypherParser.SP, i); } - public kU_LambdaParameter(): KU_LambdaParameterContext { - return this.getTypedRuleContext(KU_LambdaParameterContext, 0); + public iC_LambdaParameter(): IC_LambdaParameterContext { + return this.getTypedRuleContext(IC_LambdaParameterContext, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_FunctionParameter; + return CypherParser.RULE_iC_FunctionParameter; } } -export class KU_LambdaParameterContext extends antlr.ParserRuleContext { +export class IC_LambdaParameterContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public kU_LambdaVars(): KU_LambdaVarsContext { - return this.getTypedRuleContext(KU_LambdaVarsContext, 0); + public iC_LambdaVars(): IC_LambdaVarsContext { + return this.getTypedRuleContext(IC_LambdaVarsContext, 0); } public MINUS(): antlr.TerminalNode { return this.getToken(CypherParser.MINUS, 0); @@ -18139,12 +19709,12 @@ export class KU_LambdaParameterContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_LambdaParameter; + return CypherParser.RULE_iC_LambdaParameter; } } -export class KU_LambdaVarsContext extends antlr.ParserRuleContext { +export class IC_LambdaVarsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -18161,7 +19731,7 @@ export class KU_LambdaVarsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.SP, i); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_LambdaVars; + return CypherParser.RULE_iC_LambdaVars; } } @@ -18216,8 +19786,8 @@ export class OC_ExistCountSubqueryContext extends antlr.ParserRuleContext { public oC_Where(): OC_WhereContext { return this.getTypedRuleContext(OC_WhereContext, 0); } - public kU_Hint(): KU_HintContext { - return this.getTypedRuleContext(KU_HintContext, 0); + public iC_Hint(): IC_HintContext { + return this.getTypedRuleContext(IC_HintContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_ExistCountSubquery; @@ -18377,8 +19947,8 @@ export class OC_PropertyKeyNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public oC_SchemaName(): OC_SchemaNameContext { - return this.getTypedRuleContext(OC_SchemaNameContext, 0); + public oC_SymbolicName(): OC_SymbolicNameContext { + return this.getTypedRuleContext(OC_SymbolicNameContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_PropertyKeyName; @@ -18419,8 +19989,11 @@ export class OC_SchemaNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public oC_SymbolicName(): OC_SymbolicNameContext { - return this.getTypedRuleContext(OC_SymbolicNameContext, 0); + public oC_SymbolicName__list(): OC_SymbolicNameContext[] { + return this.getTypedRuleContexts(OC_SymbolicNameContext); + } + public oC_SymbolicName(i: number): OC_SymbolicNameContext { + return this.getTypedRuleContext(OC_SymbolicNameContext, i); } public override get ruleIndex(): number { return CypherParser.RULE_oC_SchemaName; @@ -18442,8 +20015,8 @@ export class OC_SymbolicNameContext extends antlr.ParserRuleContext { public HexLetter(): antlr.TerminalNode { return this.getToken(CypherParser.HexLetter, 0); } - public kU_NonReservedKeywords(): KU_NonReservedKeywordsContext { - return this.getTypedRuleContext(KU_NonReservedKeywordsContext, 0); + public iC_NonReservedKeywords(): IC_NonReservedKeywordsContext { + return this.getTypedRuleContext(IC_NonReservedKeywordsContext, 0); } public override get ruleIndex(): number { return CypherParser.RULE_oC_SymbolicName; @@ -18451,7 +20024,7 @@ export class OC_SymbolicNameContext extends antlr.ParserRuleContext { } -export class KU_NonReservedKeywordsContext extends antlr.ParserRuleContext { +export class IC_NonReservedKeywordsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -18464,6 +20037,9 @@ export class KU_NonReservedKeywordsContext extends antlr.ParserRuleContext { public ALTER(): antlr.TerminalNode { return this.getToken(CypherParser.ALTER, 0); } + public ANALYZE(): antlr.TerminalNode { + return this.getToken(CypherParser.ANALYZE, 0); + } public AS(): antlr.TerminalNode { return this.getToken(CypherParser.AS, 0); } @@ -18642,7 +20218,7 @@ export class KU_NonReservedKeywordsContext extends antlr.ParserRuleContext { return this.getToken(CypherParser.MAP, 0); } public override get ruleIndex(): number { - return CypherParser.RULE_kU_NonReservedKeywords; + return CypherParser.RULE_iC_NonReservedKeywords; } }