diff --git a/datasets.json b/datasets.json
index 3e3018c..70549a6 100644
--- a/datasets.json
+++ b/datasets.json
@@ -32,24 +32,6 @@
"path": "snap/twitter/csv",
"isProduction": true,
"description": ""
- },
- {
- "name": "RDF Taxonomy",
- "path": "copy-test/rdf",
- "isProduction": false,
- "description": ""
- },
- {
- "name": "RDF SPB",
- "path": "rdf/spb",
- "isProduction": true,
- "description": ""
- },
- {
- "name": "RDFox Example",
- "path": "rdf/rdfox_example",
- "isProduction": false,
- "description": ""
}
]
}
diff --git a/kuzu b/kuzu
index 2bf96ea..6157e57 160000
--- a/kuzu
+++ b/kuzu
@@ -1 +1 @@
-Subproject commit 2bf96ea4465d78c5322b36724605321ec80ff14c
+Subproject commit 6157e576c65834cdd41da3eddec0dbc74039b03f
diff --git a/package-lock.json b/package-lock.json
index eeda7dc..a02ee41 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,7 +21,7 @@
"cors": "^2.8.5",
"dropzone": "^6.0.0-beta.2",
"express": "^4.18.2",
- "kuzu": "0.6.1",
+ "kuzu": "0.7.0",
"moment": "^2.29.4",
"monaco-editor": "^0.41.0",
"monaco-themes": "^0.4.4",
@@ -2888,9 +2888,9 @@
}
},
"node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
"dev": true,
"license": "MIT"
},
@@ -4202,9 +4202,9 @@
}
},
"node_modules/acorn": {
- "version": "8.12.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
- "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"dev": true,
"license": "MIT",
"bin": {
@@ -4214,16 +4214,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/acorn-import-attributes": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
- "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^8"
- }
- },
"node_modules/acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
@@ -4831,9 +4821,9 @@
"license": "MIT"
},
"node_modules/body-parser": {
- "version": "1.20.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
- "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
"license": "MIT",
"dependencies": {
"bytes": "3.1.2",
@@ -4844,7 +4834,7 @@
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
- "qs": "6.11.0",
+ "qs": "6.13.0",
"raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
@@ -4931,9 +4921,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.23.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
- "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
+ "version": "4.24.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
+ "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
"dev": true,
"funding": [
{
@@ -4951,10 +4941,10 @@
],
"license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001646",
- "electron-to-chromium": "^1.5.4",
+ "caniuse-lite": "^1.0.30001669",
+ "electron-to-chromium": "^1.5.41",
"node-releases": "^2.0.18",
- "update-browserslist-db": "^1.1.0"
+ "update-browserslist-db": "^1.1.1"
},
"bin": {
"browserslist": "cli.js"
@@ -5143,9 +5133,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001651",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
- "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
+ "version": "1.0.30001680",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
+ "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
"dev": true,
"funding": [
{
@@ -5947,9 +5937,9 @@
"license": "MIT"
},
"node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -7007,9 +6997,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.9",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.9.tgz",
- "integrity": "sha512-HfkT8ndXR0SEkU8gBQQM3rz035bpE/hxkZ1YIt4KJPEFES68HfIU6LzKukH0H794Lm83WJtkSAMfEToxCs15VA==",
+ "version": "1.5.56",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.56.tgz",
+ "integrity": "sha512-7lXb9dAvimCFdvUMTyucD4mnIndt/xhRKFAlky0CyFogdnNmdPQNoHI23msF/2V4mpTxMzgMdjK4+YRlFlRQZw==",
"dev": true,
"license": "ISC"
},
@@ -7030,9 +7020,9 @@
}
},
"node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
@@ -7172,9 +7162,9 @@
"license": "MIT"
},
"node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"license": "MIT",
"engines": {
"node": ">=6"
@@ -7803,37 +7793,37 @@
}
},
"node_modules/express": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
- "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
+ "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
"license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.2",
+ "body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.6.0",
+ "cookie": "0.7.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.2.0",
+ "finalhandler": "1.3.1",
"fresh": "0.5.2",
"http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
+ "merge-descriptors": "1.0.3",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
+ "path-to-regexp": "0.1.10",
"proxy-addr": "~2.0.7",
- "qs": "6.11.0",
+ "qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
@@ -8018,13 +8008,13 @@
}
},
"node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
"license": "MIT",
"dependencies": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
@@ -8994,9 +8984,9 @@
}
},
"node_modules/http-proxy-middleware": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
- "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz",
+ "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9677,9 +9667,9 @@
}
},
"node_modules/kuzu": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/kuzu/-/kuzu-0.6.1.tgz",
- "integrity": "sha512-77lKzVp4ZtRC8rEIbNX5HCkvY3B+mSJ2bmFdQX4nt92AWQ53dsQSEXwqeZ3U8hYafn+vT/8JnCJrEeyOD9g7nw==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/kuzu/-/kuzu-0.7.0.tgz",
+ "integrity": "sha512-Kwbh9tRcTmvpmWKDucpOHPiKLmih0aEXzqTn+xnwdPG2l5A0sr4CArkPwrYqGHCKcDxIy0XQFGtnnT7IpGznDA==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
@@ -10211,10 +10201,13 @@
}
},
"node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
- "license": "MIT"
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/merge-source-map": {
"version": "1.1.0",
@@ -10253,9 +10246,9 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
- "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11093,9 +11086,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
- "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -11600,9 +11593,9 @@
"license": "MIT"
},
"node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
"license": "MIT"
},
"node_modules/path-type": {
@@ -11616,9 +11609,9 @@
}
},
"node_modules/picocolors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
- "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
},
"node_modules/picomatch": {
@@ -12710,12 +12703,12 @@
}
},
"node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"license": "BSD-3-Clause",
"dependencies": {
- "side-channel": "^1.0.4"
+ "side-channel": "^1.0.6"
},
"engines": {
"node": ">=0.6"
@@ -13329,9 +13322,9 @@
}
},
"node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
"license": "MIT",
"dependencies": {
"debug": "2.6.9",
@@ -13367,6 +13360,15 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
+ "node_modules/send/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/send/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -13470,15 +13472,15 @@
}
},
"node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
"license": "MIT",
"dependencies": {
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.18.0"
+ "send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -14788,9 +14790,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
- "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"dev": true,
"funding": [
{
@@ -14808,8 +14810,8 @@
],
"license": "MIT",
"dependencies": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -15129,22 +15131,21 @@
"license": "BSD-2-Clause"
},
"node_modules/webpack": {
- "version": "5.93.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz",
- "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
+ "version": "5.96.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz",
+ "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
- "@types/estree": "^1.0.5",
+ "@types/eslint-scope": "^3.7.7",
+ "@types/estree": "^1.0.6",
"@webassemblyjs/ast": "^1.12.1",
"@webassemblyjs/wasm-edit": "^1.12.1",
"@webassemblyjs/wasm-parser": "^1.12.1",
- "acorn": "^8.7.1",
- "acorn-import-attributes": "^1.9.5",
- "browserslist": "^4.21.10",
+ "acorn": "^8.14.0",
+ "browserslist": "^4.24.0",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
diff --git a/package.json b/package.json
index b6f5b5d..9861249 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
"cors": "^2.8.5",
"dropzone": "^6.0.0-beta.2",
"express": "^4.18.2",
- "kuzu": "0.6.1",
+ "kuzu": "0.7.0",
"moment": "^2.29.4",
"monaco-editor": "^0.41.0",
"monaco-themes": "^0.4.4",
diff --git a/src/components/ImporterView/ImporterMainView.vue b/src/components/ImporterView/ImporterMainView.vue
index aa2dbf8..e2e17a8 100644
--- a/src/components/ImporterView/ImporterMainView.vue
+++ b/src/components/ImporterView/ImporterMainView.vue
@@ -77,6 +77,8 @@
+
@@ -109,6 +115,7 @@ import ImporterViewProcessingModal from './ImporterViewProcessingModal.vue';
import ImporterViewCsvFormatModal from './ImporterViewCsvFormatModal.vue';
import ImporterViewPreview from './ImporterViewPreview.vue';
import ImporterViewValidationModal from './ImporterViewValidationModal.vue';
+import ImporterViewErrorModal from './ImporterViewErrorModal.vue';
export default {
name: "ImporterMainView",
@@ -121,6 +128,7 @@ export default {
ImporterViewCsvFormatModal,
ImporterViewPreview,
ImporterViewValidationModal,
+ ImporterViewErrorModal,
},
props: {
schema: {
@@ -137,6 +145,7 @@ export default {
files: {},
processingFiles: [],
currentJob: null,
+ errorMessage: "",
}),
computed: {
isSchemaEmpty() {
@@ -298,6 +307,7 @@ export default {
currentFile.format.ListStart = '[';
currentFile.format.ListEnd = ']';
currentFile.format.Parallelism = true;
+ currentFile.format.IgnoreErrors = true;
}
currentFile.format.Columns.forEach((c, i) => {
c.type = DuckDB.convertDuckDBTypeToKuzuType(c.type);
@@ -356,8 +366,9 @@ export default {
const listBegin = file.format.ListStart;
const listEnd = file.format.ListEnd;
const parallelism = file.format.Parallelism ? 'true' : 'false';
+ const ignoreErrors = file.format.IgnoreErrors ? 'true' : 'false';
this.$refs.csvFormatModal.setFormat(
- key, delimiter, quote, escape, hasHeader, listBegin, listEnd, parallelism
+ key, delimiter, quote, escape, hasHeader, listBegin, listEnd, parallelism, ignoreErrors
);
this.$refs.csvFormatModal.showModal();
},
@@ -371,8 +382,16 @@ export default {
const listBegin = format.listBegin;
const listEnd = format.listEnd;
const parallelism = format.parallelism;
+ const ignoreErrors = format.ignoreErrors;
- const columns = await DuckDB.getCsvHeaderWithCustomSettings(key, delimiter, quote, escape, hasHeader);
+ let columns;
+ try {
+ columns = await DuckDB.getCsvHeaderWithCustomSettings(key, delimiter, quote, escape, hasHeader);
+ } catch (error) {
+ this.errorMessage = `Could not detect the columns with the given CSV format settings for file ${file.file.name}. Please check the settings and try again.`;
+ this.$refs.errorModal.showModal();
+ return;
+ }
columns.forEach((c, i) => {
c.type = DuckDB.convertDuckDBTypeToKuzuType(c.type);
c.name = hasHeader ? c.name : `column${i}`;
@@ -386,6 +405,7 @@ export default {
file.format.ListEnd = listEnd;
file.format.Parallelism = parallelism;
file.format.Columns = columns;
+ file.format.IgnoreErrors = ignoreErrors;
file.detectedFormat.Columns = columns;
if (file.type === 'node') {
if (file.format.Columns[0]) {
@@ -572,6 +592,7 @@ export default {
listBegin: rawFile.format.ListStart,
listEnd: rawFile.format.ListEnd,
parallelism: rawFile.format.Parallelism,
+ ignoreErrors: rawFile.format.IgnoreErrors,
}
}
summary.push(file);
@@ -683,6 +704,8 @@ export default {
const res = await Axios.get(`/api/import/${this.currentJob.jobId}`);
const isAllDone = res.data.plan.every(j => j.status !== JOB_STATUS.PROCESSING && j.status !== JOB_STATUS.PENDING);
this.currentJob.plan = res.data.plan;
+ this.currentJob.numberOfWarnings = res.data.numberOfWarnings;
+ this.currentJob.warnings = res.data.warnings;
if (isAllDone) {
window.clearInterval(interval);
}
diff --git a/src/components/ImporterView/ImporterViewCsvFormatModal.vue b/src/components/ImporterView/ImporterViewCsvFormatModal.vue
index 27324c3..b692609 100644
--- a/src/components/ImporterView/ImporterViewCsvFormatModal.vue
+++ b/src/components/ImporterView/ImporterViewCsvFormatModal.vue
@@ -68,7 +68,22 @@
+
+
+
+ {{ numberOfWarnings }}
+ Warning{{ numberOfWarnings > 1 ? 's' : '' }}
+ Reported
+
+
+ Showing first 100 warnings of {{ numberOfWarnings }} total
+
+
+
+
+ File |
+ Line |
+ Message |
+
+
+
+
+ {{ warning.fileName }} |
+ {{ warning.lineNumber }} |
+ {{ warning.message }} |
+
+
+
+
[],
+ },
},
emits: ["close"],
data: () => ({
@@ -148,4 +188,9 @@ span.item-name {
min-width: 200px;
word-break: break-all;
}
+
+.modal-dialog.modal-xl .table> :not(caption)>*>* {
+ background-color: transparent;
+ --bs-table-border-color: #000;
+}
diff --git a/src/server/Import.js b/src/server/Import.js
index 8ab70ac..130179d 100644
--- a/src/server/Import.js
+++ b/src/server/Import.js
@@ -1,5 +1,6 @@
const express = require("express");
const router = express.Router();
+const path = require("path");
const multer = require("multer");
const database = require("./utils/Database");
const uuid = require("uuid");
@@ -82,39 +83,73 @@ router.post("/:job_id/exec", async (req, res) => {
}
res.status(202).send({ jobId });
const conn = await database.getConnection();
- for (let i = 0; i < job.plan.length; ++i) {
- const step = job.plan[i];
- if (step.action === IMPORT_ACTIONS.UPLOAD) {
- continue;
- }
- step.status = JOB_STATUS.PROCESSING;
- try {
- if (step.params) {
- const preparedStatement = await conn.prepare(step.cypher);
- await conn.execute(preparedStatement, step.params);
- } else {
- await conn.query(step.cypher);
- }
- step.status = JOB_STATUS.SUCCESS;
- } catch (err) {
- step.status = JOB_STATUS.ERROR;
- step.error = err.message;
- for (let j = i + 1; j < job.plan.length; ++j) {
- job.plan[j].status = JOB_STATUS.ERROR;
- job.plan[j].error = 'Previous step failed';
+ // Clear all previous warnings
+ await conn.query("CALL clear_warnings();");
+ try {
+ for (let i = 0; i < job.plan.length; ++i) {
+ const step = job.plan[i];
+ if (step.action === IMPORT_ACTIONS.UPLOAD) {
+ continue;
}
+ step.status = JOB_STATUS.PROCESSING;
try {
- await DataImportUtil.deleteTmp(jobId);
+ if (step.params) {
+ const preparedStatement = await conn.prepare(step.cypher);
+ await conn.execute(preparedStatement, step.params);
+ } else {
+ await conn.query(step.cypher);
+ }
+ step.status = JOB_STATUS.SUCCESS;
} catch (err) {
- // Ignore
+ step.status = JOB_STATUS.ERROR;
+ step.error = err.message;
+ for (let j = i + 1; j < job.plan.length; ++j) {
+ job.plan[j].status = JOB_STATUS.ERROR;
+ job.plan[j].error = 'Previous step failed';
+ }
+ try {
+ await DataImportUtil.deleteTmp(jobId);
+ } catch (deleteErr) {
+ // Ignore
+ }
+ // Rethrow error to stop execution
+ throw err;
}
- return;
}
- }
- try {
- await DataImportUtil.deleteTmp(jobId);
+ try {
+ await DataImportUtil.deleteTmp(jobId);
+ } catch (err) {
+ // Ignore
+ }
} catch (err) {
- // Ignore
+ // Ignore
+ } finally {
+ const numberOfWarningsQueryResult = await conn.query("CALL SHOW_WARNINGS() RETURN COUNT(*) AS count;");
+ const numberOfWarnings = (await numberOfWarningsQueryResult.getNext()).count;
+ job.numberOfWarnings = numberOfWarnings;
+ if (numberOfWarnings > 0) {
+ const warningsQueryResult = await conn.query("CALL SHOW_WARNINGS() RETURN * LIMIT 100;");
+ const warnings = await warningsQueryResult.getAll();
+ const fileNameHash = {};
+ job.plan.forEach((step) => {
+ if (step.action === IMPORT_ACTIONS.UPLOAD) {
+ fileNameHash[step.fileName] = step.displayName;
+ }
+ });
+ job.warnings = warnings.map((warning) => {
+ const message = warning.message;
+ const lineNumber = warning.line_number;
+ const filePath = path.parse(warning.file_path);
+ const fileNameOnDisk = filePath.base;
+ const fileName = fileNameHash[fileNameOnDisk] ? fileNameHash[fileNameOnDisk] : fileNameOnDisk;
+ return {
+ message,
+ lineNumber,
+ fileName,
+ };
+ });
+ }
+ database.releaseConnection(conn);
}
});
diff --git a/src/utils/CypherParser/Cypher.interp b/src/utils/CypherParser/Cypher.interp
index de9e369..04ca340 100644
--- a/src/utils/CypherParser/Cypher.interp
+++ b/src/utils/CypherParser/Cypher.interp
@@ -146,6 +146,11 @@ null
null
null
null
+null
+null
+null
+null
+null
'*'
null
'!='
@@ -218,6 +223,8 @@ null
null
null
null
+ACYCLIC
+ANY
ADD
ALL
ALTER
@@ -274,6 +281,7 @@ JOIN
KEY
LIMIT
LOAD
+LOGICAL
MACRO
MATCH
MAXVALUE
@@ -283,6 +291,7 @@ MULTI_JOIN
NO
NODE
NOT
+NONE
NULL
ON
ONLY
@@ -292,7 +301,6 @@ ORDER
PRIMARY
PROFILE
PROJECT
-RDFGRAPH
READ
REL
RENAME
@@ -307,6 +315,7 @@ STARTS
TABLE
THEN
TO
+TRAIL
TRANSACTION
TRUE
TYPE
@@ -318,6 +327,7 @@ WHERE
WITH
WRITE
XOR
+SINGLE
DECIMAL
STAR
L_SKIP
@@ -372,7 +382,6 @@ kU_CreateNodeTable
kU_CreateRelTable
kU_CreateRelTableGroup
kU_RelTableConnection
-kU_CreateRdfGraph
kU_CreateSequence
kU_CreateType
kU_SequenceOptions
@@ -390,10 +399,10 @@ kU_Default
kU_DropProperty
kU_RenameTable
kU_RenameProperty
+kU_ColumnDefinitions
+kU_ColumnDefinition
kU_PropertyDefinitions
kU_PropertyDefinition
-kU_PropertyDefinitionsDDL
-kU_PropertyDefinitionDDL
kU_CreateNodeConstraint
kU_DataType
kU_ListIdentifiers
@@ -485,6 +494,9 @@ oC_RegularExpression
oC_NullOperatorExpression
oC_PropertyOrLabelsExpression
oC_Atom
+oC_Quantifier
+oC_FilterExpression
+oC_IdInColl
oC_Literal
oC_BooleanLiteral
oC_ListLiteral
@@ -519,4 +531,4 @@ oC_Dash
atn:
-[4, 1, 170, 2754, 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, 1, 0, 1, 0, 3, 0, 345, 8, 0, 1, 0, 1, 0, 3, 0, 349, 8, 0, 1, 0, 5, 0, 352, 8, 0, 10, 0, 12, 0, 355, 9, 0, 1, 0, 3, 0, 358, 8, 0, 1, 0, 1, 0, 1, 1, 3, 1, 363, 8, 1, 1, 1, 3, 1, 366, 8, 1, 1, 1, 1, 1, 3, 1, 370, 8, 1, 1, 1, 3, 1, 373, 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, 397, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 403, 8, 3, 1, 3, 1, 3, 3, 3, 407, 8, 3, 1, 3, 3, 3, 410, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 416, 8, 3, 1, 3, 3, 3, 419, 8, 3, 1, 4, 1, 4, 3, 4, 423, 8, 4, 1, 4, 1, 4, 3, 4, 427, 8, 4, 1, 4, 1, 4, 3, 4, 431, 8, 4, 1, 4, 5, 4, 434, 8, 4, 10, 4, 12, 4, 437, 9, 4, 1, 4, 3, 4, 440, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 447, 8, 5, 1, 5, 1, 5, 3, 5, 451, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 459, 8, 5, 1, 5, 1, 5, 3, 5, 463, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 473, 8, 6, 1, 6, 1, 6, 3, 6, 477, 8, 6, 1, 6, 1, 6, 3, 6, 481, 8, 6, 1, 6, 5, 6, 484, 8, 6, 10, 6, 12, 6, 487, 9, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 499, 8, 7, 1, 7, 1, 7, 3, 7, 503, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 511, 8, 7, 1, 7, 3, 7, 514, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 522, 8, 8, 1, 8, 3, 8, 525, 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, 540, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 545, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 551, 8, 10, 1, 10, 1, 10, 3, 10, 555, 8, 10, 1, 10, 3, 10, 558, 8, 10, 1, 10, 3, 10, 561, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 567, 8, 11, 1, 11, 1, 11, 3, 11, 571, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 577, 8, 12, 1, 12, 1, 12, 3, 12, 581, 8, 12, 1, 12, 5, 12, 584, 8, 12, 10, 12, 12, 12, 587, 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, 601, 8, 15, 1, 15, 1, 15, 3, 15, 605, 8, 15, 1, 15, 1, 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, 627, 8, 17, 1, 17, 1, 17, 3, 17, 631, 8, 17, 1, 17, 3, 17, 634, 8, 17, 1, 17, 3, 17, 637, 8, 17, 1, 17, 3, 17, 640, 8, 17, 1, 17, 3, 17, 643, 8, 17, 1, 17, 1, 17, 3, 17, 647, 8, 17, 1, 17, 5, 17, 650, 8, 17, 10, 17, 12, 17, 653, 9, 17, 1, 17, 3, 17, 656, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 666, 8, 18, 1, 18, 1, 18, 3, 18, 670, 8, 18, 1, 18, 5, 18, 673, 8, 18, 10, 18, 12, 18, 676, 9, 18, 1, 19, 1, 19, 3, 19, 680, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 685, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 3, 20, 691, 8, 20, 1, 20, 1, 20, 3, 20, 695, 8, 20, 1, 20, 1, 20, 3, 20, 699, 8, 20, 1, 20, 5, 20, 702, 8, 20, 10, 20, 12, 20, 705, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 711, 8, 20, 1, 20, 1, 20, 3, 20, 715, 8, 20, 1, 20, 1, 20, 3, 20, 719, 8, 20, 1, 20, 3, 20, 722, 8, 20, 1, 21, 1, 21, 3, 21, 726, 8, 21, 1, 21, 1, 21, 3, 21, 730, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 749, 8, 23, 1, 23, 1, 23, 3, 23, 753, 8, 23, 1, 23, 1, 23, 3, 23, 757, 8, 23, 1, 23, 1, 23, 3, 23, 761, 8, 23, 1, 23, 1, 23, 3, 23, 765, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 770, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 783, 8, 24, 1, 24, 1, 24, 3, 24, 787, 8, 24, 1, 24, 1, 24, 3, 24, 791, 8, 24, 1, 24, 1, 24, 3, 24, 795, 8, 24, 1, 24, 1, 24, 3, 24, 799, 8, 24, 1, 24, 1, 24, 3, 24, 803, 8, 24, 3, 24, 805, 8, 24, 1, 24, 1, 24, 3, 24, 809, 8, 24, 1, 24, 1, 24, 3, 24, 813, 8, 24, 3, 24, 815, 8, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 830, 8, 25, 1, 25, 1, 25, 3, 25, 834, 8, 25, 1, 25, 1, 25, 3, 25, 838, 8, 25, 1, 25, 1, 25, 3, 25, 842, 8, 25, 1, 25, 1, 25, 3, 25, 846, 8, 25, 1, 25, 4, 25, 849, 8, 25, 11, 25, 12, 25, 850, 1, 25, 3, 25, 854, 8, 25, 1, 25, 1, 25, 3, 25, 858, 8, 25, 1, 25, 1, 25, 3, 25, 862, 8, 25, 3, 25, 864, 8, 25, 1, 25, 1, 25, 3, 25, 868, 8, 25, 1, 25, 1, 25, 3, 25, 872, 8, 25, 3, 25, 874, 8, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 893, 8, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 904, 8, 28, 1, 28, 1, 28, 1, 28, 5, 28, 909, 8, 28, 10, 28, 12, 28, 912, 9, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 924, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 931, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 937, 8, 31, 1, 31, 3, 31, 940, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 950, 8, 32, 1, 32, 3, 32, 953, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 961, 8, 33, 1, 33, 3, 33, 964, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 970, 8, 34, 1, 34, 3, 34, 973, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 3, 35, 979, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 994, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1010, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1019, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 3, 45, 1045, 8, 45, 1, 45, 1, 45, 3, 45, 1049, 8, 45, 1, 45, 5, 45, 1052, 8, 45, 10, 45, 12, 45, 1055, 9, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1063, 8, 47, 1, 47, 1, 47, 3, 47, 1067, 8, 47, 1, 47, 5, 47, 1070, 8, 47, 10, 47, 12, 47, 1073, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1080, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1086, 8, 49, 1, 49, 1, 49, 3, 49, 1090, 8, 49, 1, 49, 1, 49, 3, 49, 1094, 8, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1102, 8, 50, 1, 50, 1, 50, 3, 50, 1106, 8, 50, 1, 50, 1, 50, 3, 50, 1110, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1116, 8, 50, 1, 50, 1, 50, 3, 50, 1120, 8, 50, 1, 50, 1, 50, 3, 50, 1124, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1130, 8, 50, 1, 50, 1, 50, 3, 50, 1134, 8, 50, 1, 50, 1, 50, 3, 50, 1138, 8, 50, 1, 50, 1, 50, 3, 50, 1142, 8, 50, 1, 50, 1, 50, 3, 50, 1146, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1152, 8, 50, 1, 50, 1, 50, 3, 50, 1156, 8, 50, 1, 50, 1, 50, 3, 50, 1160, 8, 50, 1, 50, 1, 50, 3, 50, 1164, 8, 50, 1, 50, 1, 50, 3, 50, 1168, 8, 50, 1, 50, 1, 50, 3, 50, 1172, 8, 50, 1, 50, 1, 50, 5, 50, 1176, 8, 50, 10, 50, 12, 50, 1179, 9, 50, 1, 51, 1, 51, 5, 51, 1183, 8, 51, 10, 51, 12, 51, 1186, 9, 51, 1, 52, 1, 52, 3, 52, 1190, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 3, 53, 1196, 8, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1215, 8, 56, 1, 57, 1, 57, 3, 57, 1219, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1227, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 1235, 8, 60, 3, 60, 1237, 8, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1247, 8, 61, 1, 61, 1, 61, 3, 61, 1251, 8, 61, 1, 61, 1, 61, 3, 61, 1255, 8, 61, 1, 61, 1, 61, 1, 62, 1, 62, 3, 62, 1261, 8, 62, 1, 62, 1, 62, 3, 62, 1265, 8, 62, 1, 62, 5, 62, 1268, 8, 62, 10, 62, 12, 62, 1271, 9, 62, 1, 63, 1, 63, 3, 63, 1275, 8, 63, 1, 63, 5, 63, 1278, 8, 63, 10, 63, 12, 63, 1281, 9, 63, 1, 63, 1, 63, 3, 63, 1285, 8, 63, 4, 63, 1287, 8, 63, 11, 63, 12, 63, 1288, 1, 63, 1, 63, 1, 63, 3, 63, 1294, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1300, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1305, 8, 64, 1, 64, 3, 64, 1308, 8, 64, 1, 65, 1, 65, 3, 65, 1312, 8, 65, 1, 66, 1, 66, 3, 66, 1316, 8, 66, 5, 66, 1318, 8, 66, 10, 66, 12, 66, 1321, 9, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1326, 8, 66, 5, 66, 1328, 8, 66, 10, 66, 12, 66, 1331, 9, 66, 1, 66, 1, 66, 3, 66, 1335, 8, 66, 1, 66, 5, 66, 1338, 8, 66, 10, 66, 12, 66, 1341, 9, 66, 1, 66, 3, 66, 1344, 8, 66, 1, 66, 3, 66, 1347, 8, 66, 1, 66, 1, 66, 3, 66, 1351, 8, 66, 4, 66, 1353, 8, 66, 11, 66, 12, 66, 1354, 1, 66, 1, 66, 3, 66, 1359, 8, 66, 1, 67, 1, 67, 3, 67, 1363, 8, 67, 4, 67, 1365, 8, 67, 11, 67, 12, 67, 1366, 1, 67, 1, 67, 1, 68, 1, 68, 3, 68, 1373, 8, 68, 5, 68, 1375, 8, 68, 10, 68, 12, 68, 1378, 9, 68, 1, 68, 1, 68, 3, 68, 1382, 8, 68, 5, 68, 1384, 8, 68, 10, 68, 12, 68, 1387, 9, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1395, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1401, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1409, 8, 71, 1, 71, 1, 71, 3, 71, 1413, 8, 71, 1, 71, 1, 71, 3, 71, 1417, 8, 71, 1, 71, 1, 71, 3, 71, 1421, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1428, 8, 71, 1, 71, 3, 71, 1431, 8, 71, 1, 71, 3, 71, 1434, 8, 71, 1, 71, 3, 71, 1437, 8, 71, 1, 72, 1, 72, 3, 72, 1441, 8, 72, 3, 72, 1443, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1449, 8, 72, 1, 72, 3, 72, 1452, 8, 72, 1, 73, 1, 73, 3, 73, 1456, 8, 73, 1, 73, 1, 73, 3, 73, 1460, 8, 73, 1, 73, 1, 73, 3, 73, 1464, 8, 73, 1, 73, 1, 73, 3, 73, 1468, 8, 73, 1, 74, 1, 74, 3, 74, 1472, 8, 74, 1, 74, 1, 74, 3, 74, 1476, 8, 74, 1, 74, 5, 74, 1479, 8, 74, 10, 74, 12, 74, 1482, 9, 74, 1, 75, 1, 75, 1, 75, 3, 75, 1487, 8, 75, 1, 75, 1, 75, 3, 75, 1491, 8, 75, 1, 76, 1, 76, 3, 76, 1495, 8, 76, 1, 76, 1, 76, 3, 76, 1499, 8, 76, 1, 76, 1, 76, 1, 76, 3, 76, 1504, 8, 76, 1, 76, 1, 76, 3, 76, 1508, 8, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 3, 78, 1517, 8, 78, 1, 78, 1, 78, 3, 78, 1521, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1526, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 4, 78, 1538, 8, 78, 11, 78, 12, 78, 1539, 5, 78, 1542, 8, 78, 10, 78, 12, 78, 1545, 9, 78, 1, 79, 1, 79, 3, 79, 1549, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 1559, 8, 80, 1, 80, 1, 80, 1, 81, 1, 81, 3, 81, 1565, 8, 81, 1, 81, 1, 81, 1, 81, 5, 81, 1570, 8, 81, 10, 81, 12, 81, 1573, 9, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1585, 8, 82, 1, 83, 1, 83, 3, 83, 1589, 8, 83, 1, 83, 1, 83, 3, 83, 1593, 8, 83, 1, 83, 1, 83, 3, 83, 1597, 8, 83, 1, 83, 5, 83, 1600, 8, 83, 10, 83, 12, 83, 1603, 9, 83, 1, 84, 1, 84, 3, 84, 1607, 8, 84, 1, 84, 1, 84, 3, 84, 1611, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 3, 85, 1617, 8, 85, 1, 85, 1, 85, 3, 85, 1621, 8, 85, 1, 85, 1, 85, 3, 85, 1625, 8, 85, 1, 85, 1, 85, 3, 85, 1629, 8, 85, 1, 85, 5, 85, 1632, 8, 85, 10, 85, 12, 85, 1635, 9, 85, 1, 86, 1, 86, 1, 86, 3, 86, 1640, 8, 86, 1, 86, 3, 86, 1643, 8, 86, 1, 87, 1, 87, 1, 87, 1, 88, 3, 88, 1649, 8, 88, 1, 88, 3, 88, 1652, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1658, 8, 88, 1, 88, 1, 88, 3, 88, 1662, 8, 88, 1, 88, 1, 88, 3, 88, 1666, 8, 88, 1, 89, 1, 89, 3, 89, 1670, 8, 89, 1, 89, 1, 89, 3, 89, 1674, 8, 89, 1, 89, 5, 89, 1677, 8, 89, 10, 89, 12, 89, 1680, 9, 89, 1, 89, 1, 89, 3, 89, 1684, 8, 89, 1, 89, 1, 89, 3, 89, 1688, 8, 89, 1, 89, 5, 89, 1691, 8, 89, 10, 89, 12, 89, 1694, 9, 89, 3, 89, 1696, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1705, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1714, 8, 91, 1, 91, 5, 91, 1717, 8, 91, 10, 91, 12, 91, 1720, 9, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 3, 94, 1732, 8, 94, 1, 94, 3, 94, 1735, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 3, 96, 1743, 8, 96, 1, 96, 1, 96, 3, 96, 1747, 8, 96, 1, 96, 5, 96, 1750, 8, 96, 10, 96, 12, 96, 1753, 9, 96, 1, 97, 1, 97, 3, 97, 1757, 8, 97, 1, 97, 1, 97, 3, 97, 1761, 8, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1766, 8, 97, 1, 98, 1, 98, 1, 99, 1, 99, 3, 99, 1772, 8, 99, 1, 99, 5, 99, 1775, 8, 99, 10, 99, 12, 99, 1778, 9, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1784, 8, 99, 1, 100, 1, 100, 3, 100, 1788, 8, 100, 1, 100, 1, 100, 3, 100, 1792, 8, 100, 3, 100, 1794, 8, 100, 1, 100, 1, 100, 3, 100, 1798, 8, 100, 3, 100, 1800, 8, 100, 1, 100, 1, 100, 3, 100, 1804, 8, 100, 3, 100, 1806, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 3, 101, 1812, 8, 101, 1, 101, 1, 101, 1, 102, 1, 102, 3, 102, 1818, 8, 102, 1, 102, 1, 102, 3, 102, 1822, 8, 102, 1, 102, 3, 102, 1825, 8, 102, 1, 102, 3, 102, 1828, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1834, 8, 102, 1, 102, 3, 102, 1837, 8, 102, 1, 102, 3, 102, 1840, 8, 102, 1, 102, 1, 102, 3, 102, 1844, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1850, 8, 102, 1, 102, 3, 102, 1853, 8, 102, 1, 102, 3, 102, 1856, 8, 102, 1, 102, 1, 102, 3, 102, 1860, 8, 102, 1, 103, 1, 103, 3, 103, 1864, 8, 103, 1, 103, 1, 103, 3, 103, 1868, 8, 103, 3, 103, 1870, 8, 103, 1, 103, 1, 103, 3, 103, 1874, 8, 103, 3, 103, 1876, 8, 103, 1, 103, 1, 103, 3, 103, 1880, 8, 103, 3, 103, 1882, 8, 103, 1, 103, 1, 103, 3, 103, 1886, 8, 103, 3, 103, 1888, 8, 103, 1, 103, 1, 103, 1, 104, 1, 104, 3, 104, 1894, 8, 104, 1, 104, 1, 104, 3, 104, 1898, 8, 104, 1, 104, 1, 104, 3, 104, 1902, 8, 104, 1, 104, 1, 104, 3, 104, 1906, 8, 104, 1, 104, 1, 104, 3, 104, 1910, 8, 104, 1, 104, 1, 104, 3, 104, 1914, 8, 104, 1, 104, 1, 104, 3, 104, 1918, 8, 104, 1, 104, 1, 104, 3, 104, 1922, 8, 104, 5, 104, 1924, 8, 104, 10, 104, 12, 104, 1927, 9, 104, 3, 104, 1929, 8, 104, 1, 104, 1, 104, 1, 105, 1, 105, 3, 105, 1935, 8, 105, 1, 105, 1, 105, 3, 105, 1939, 8, 105, 1, 105, 1, 105, 3, 105, 1943, 8, 105, 1, 105, 3, 105, 1946, 8, 105, 1, 105, 5, 105, 1949, 8, 105, 10, 105, 12, 105, 1952, 9, 105, 1, 106, 1, 106, 3, 106, 1956, 8, 106, 1, 106, 5, 106, 1959, 8, 106, 10, 106, 12, 106, 1962, 9, 106, 1, 107, 1, 107, 3, 107, 1966, 8, 107, 1, 107, 1, 107, 1, 108, 1, 108, 3, 108, 1972, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1978, 8, 108, 1, 108, 3, 108, 1981, 8, 108, 1, 108, 3, 108, 1984, 8, 108, 1, 108, 3, 108, 1987, 8, 108, 1, 108, 1, 108, 3, 108, 1991, 8, 108, 1, 108, 3, 108, 1994, 8, 108, 1, 108, 3, 108, 1997, 8, 108, 1, 108, 3, 108, 2000, 8, 108, 1, 108, 3, 108, 2003, 8, 108, 1, 109, 1, 109, 3, 109, 2007, 8, 109, 1, 109, 1, 109, 3, 109, 2011, 8, 109, 1, 109, 1, 109, 3, 109, 2015, 8, 109, 1, 109, 1, 109, 3, 109, 2019, 8, 109, 1, 109, 1, 109, 3, 109, 2023, 8, 109, 1, 109, 1, 109, 3, 109, 2027, 8, 109, 3, 109, 2029, 8, 109, 1, 109, 3, 109, 2032, 8, 109, 1, 109, 1, 109, 3, 109, 2036, 8, 109, 1, 109, 1, 109, 3, 109, 2040, 8, 109, 1, 109, 1, 109, 3, 109, 2044, 8, 109, 1, 109, 1, 109, 3, 109, 2048, 8, 109, 3, 109, 2050, 8, 109, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 2056, 8, 110, 1, 110, 3, 110, 2059, 8, 110, 1, 110, 3, 110, 2062, 8, 110, 1, 110, 1, 110, 1, 111, 1, 111, 3, 111, 2068, 8, 111, 1, 111, 3, 111, 2071, 8, 111, 1, 111, 3, 111, 2074, 8, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 5, 117, 2093, 8, 117, 10, 117, 12, 117, 2096, 9, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 2103, 8, 118, 10, 118, 12, 118, 2106, 9, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 2113, 8, 119, 10, 119, 12, 119, 2116, 9, 119, 1, 120, 1, 120, 3, 120, 2120, 8, 120, 5, 120, 2122, 8, 120, 10, 120, 12, 120, 2125, 9, 120, 1, 120, 1, 120, 1, 121, 1, 121, 3, 121, 2131, 8, 121, 1, 121, 1, 121, 3, 121, 2135, 8, 121, 1, 121, 1, 121, 3, 121, 2139, 8, 121, 1, 121, 1, 121, 3, 121, 2143, 8, 121, 1, 121, 1, 121, 3, 121, 2147, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 2155, 8, 121, 1, 121, 1, 121, 3, 121, 2159, 8, 121, 1, 121, 1, 121, 3, 121, 2163, 8, 121, 1, 121, 1, 121, 3, 121, 2167, 8, 121, 1, 121, 1, 121, 4, 121, 2171, 8, 121, 11, 121, 12, 121, 2172, 1, 121, 1, 121, 3, 121, 2177, 8, 121, 1, 122, 1, 122, 1, 123, 1, 123, 3, 123, 2183, 8, 123, 1, 123, 1, 123, 3, 123, 2187, 8, 123, 1, 123, 5, 123, 2190, 8, 123, 10, 123, 12, 123, 2193, 9, 123, 1, 124, 1, 124, 3, 124, 2197, 8, 124, 1, 124, 1, 124, 3, 124, 2201, 8, 124, 1, 124, 5, 124, 2204, 8, 124, 10, 124, 12, 124, 2207, 9, 124, 1, 125, 1, 125, 3, 125, 2211, 8, 125, 1, 125, 1, 125, 3, 125, 2215, 8, 125, 1, 125, 1, 125, 5, 125, 2219, 8, 125, 10, 125, 12, 125, 2222, 9, 125, 1, 126, 1, 126, 1, 127, 1, 127, 3, 127, 2228, 8, 127, 1, 127, 1, 127, 3, 127, 2232, 8, 127, 1, 127, 1, 127, 5, 127, 2236, 8, 127, 10, 127, 12, 127, 2239, 9, 127, 1, 128, 1, 128, 1, 129, 1, 129, 3, 129, 2245, 8, 129, 1, 129, 1, 129, 3, 129, 2249, 8, 129, 1, 129, 1, 129, 5, 129, 2253, 8, 129, 10, 129, 12, 129, 2256, 9, 129, 1, 130, 1, 130, 1, 131, 1, 131, 3, 131, 2262, 8, 131, 1, 131, 1, 131, 3, 131, 2266, 8, 131, 1, 131, 5, 131, 2269, 8, 131, 10, 131, 12, 131, 2272, 9, 131, 1, 132, 1, 132, 3, 132, 2276, 8, 132, 5, 132, 2278, 8, 132, 10, 132, 12, 132, 2281, 9, 132, 1, 132, 1, 132, 3, 132, 2285, 8, 132, 1, 132, 3, 132, 2288, 8, 132, 1, 133, 1, 133, 1, 133, 4, 133, 2293, 8, 133, 11, 133, 12, 133, 2294, 1, 133, 3, 133, 2298, 8, 133, 1, 134, 1, 134, 1, 134, 3, 134, 2303, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 2312, 8, 134, 1, 134, 1, 134, 3, 134, 2316, 8, 134, 1, 134, 3, 134, 2319, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 2332, 8, 135, 1, 135, 3, 135, 2335, 8, 135, 1, 135, 1, 135, 1, 136, 3, 136, 2340, 8, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 3, 137, 2354, 8, 137, 1, 138, 1, 138, 3, 138, 2358, 8, 138, 1, 138, 5, 138, 2361, 8, 138, 10, 138, 12, 138, 2364, 9, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2375, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2383, 8, 140, 1, 141, 1, 141, 1, 142, 1, 142, 3, 142, 2389, 8, 142, 1, 142, 1, 142, 3, 142, 2393, 8, 142, 1, 142, 1, 142, 3, 142, 2397, 8, 142, 5, 142, 2399, 8, 142, 10, 142, 12, 142, 2402, 9, 142, 3, 142, 2404, 8, 142, 1, 142, 1, 142, 1, 143, 1, 143, 3, 143, 2410, 8, 143, 1, 143, 3, 143, 2413, 8, 143, 1, 144, 1, 144, 3, 144, 2417, 8, 144, 1, 144, 1, 144, 3, 144, 2421, 8, 144, 1, 144, 1, 144, 3, 144, 2425, 8, 144, 1, 144, 1, 144, 3, 144, 2429, 8, 144, 5, 144, 2431, 8, 144, 10, 144, 12, 144, 2434, 9, 144, 1, 144, 1, 144, 1, 145, 1, 145, 3, 145, 2440, 8, 145, 1, 145, 3, 145, 2443, 8, 145, 1, 145, 1, 145, 3, 145, 2447, 8, 145, 1, 145, 1, 145, 1, 146, 1, 146, 3, 146, 2453, 8, 146, 1, 146, 1, 146, 3, 146, 2457, 8, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2463, 8, 147, 1, 147, 1, 147, 3, 147, 2467, 8, 147, 1, 147, 1, 147, 3, 147, 2471, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2476, 8, 147, 1, 147, 1, 147, 3, 147, 2480, 8, 147, 1, 147, 1, 147, 3, 147, 2484, 8, 147, 1, 147, 1, 147, 3, 147, 2488, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2493, 8, 147, 1, 147, 3, 147, 2496, 8, 147, 1, 147, 3, 147, 2499, 8, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2505, 8, 147, 1, 147, 1, 147, 3, 147, 2509, 8, 147, 1, 147, 1, 147, 3, 147, 2513, 8, 147, 3, 147, 2515, 8, 147, 1, 147, 1, 147, 3, 147, 2519, 8, 147, 1, 147, 1, 147, 3, 147, 2523, 8, 147, 1, 147, 1, 147, 3, 147, 2527, 8, 147, 5, 147, 2529, 8, 147, 10, 147, 12, 147, 2532, 9, 147, 3, 147, 2534, 8, 147, 1, 147, 1, 147, 3, 147, 2538, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149, 3, 149, 2544, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2549, 8, 149, 3, 149, 2551, 8, 149, 1, 149, 1, 149, 3, 149, 2555, 8, 149, 1, 150, 1, 150, 3, 150, 2559, 8, 150, 1, 150, 1, 150, 1, 150, 3, 150, 2564, 8, 150, 1, 150, 1, 150, 3, 150, 2568, 8, 150, 1, 151, 1, 151, 1, 151, 3, 151, 2573, 8, 151, 1, 151, 1, 151, 3, 151, 2577, 8, 151, 1, 151, 1, 151, 3, 151, 2581, 8, 151, 1, 151, 1, 151, 3, 151, 2585, 8, 151, 5, 151, 2587, 8, 151, 10, 151, 12, 151, 2590, 9, 151, 1, 151, 1, 151, 3, 151, 2594, 8, 151, 1, 152, 1, 152, 3, 152, 2598, 8, 152, 1, 152, 4, 152, 2601, 8, 152, 11, 152, 12, 152, 2602, 1, 153, 1, 153, 3, 153, 2607, 8, 153, 1, 153, 1, 153, 3, 153, 2611, 8, 153, 1, 153, 1, 153, 3, 153, 2615, 8, 153, 1, 153, 1, 153, 3, 153, 2619, 8, 153, 1, 153, 3, 153, 2622, 8, 153, 1, 153, 3, 153, 2625, 8, 153, 1, 153, 1, 153, 1, 154, 1, 154, 3, 154, 2631, 8, 154, 1, 154, 1, 154, 3, 154, 2635, 8, 154, 1, 154, 1, 154, 3, 154, 2639, 8, 154, 1, 154, 1, 154, 3, 154, 2643, 8, 154, 1, 154, 3, 154, 2646, 8, 154, 1, 154, 3, 154, 2649, 8, 154, 1, 154, 1, 154, 1, 155, 1, 155, 3, 155, 2655, 8, 155, 1, 155, 1, 155, 3, 155, 2659, 8, 155, 1, 156, 1, 156, 3, 156, 2663, 8, 156, 1, 156, 4, 156, 2666, 8, 156, 11, 156, 12, 156, 2667, 1, 156, 1, 156, 3, 156, 2672, 8, 156, 1, 156, 1, 156, 3, 156, 2676, 8, 156, 1, 156, 4, 156, 2679, 8, 156, 11, 156, 12, 156, 2680, 3, 156, 2683, 8, 156, 1, 156, 3, 156, 2686, 8, 156, 1, 156, 1, 156, 3, 156, 2690, 8, 156, 1, 156, 3, 156, 2693, 8, 156, 1, 156, 3, 156, 2696, 8, 156, 1, 156, 1, 156, 1, 157, 1, 157, 3, 157, 2702, 8, 157, 1, 157, 1, 157, 3, 157, 2706, 8, 157, 1, 157, 1, 157, 3, 157, 2710, 8, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 159, 1, 159, 3, 159, 2718, 8, 159, 1, 160, 1, 160, 1, 160, 3, 160, 2723, 8, 160, 1, 161, 1, 161, 3, 161, 2727, 8, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 2744, 8, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 0, 2, 100, 156, 171, 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, 0, 11, 3, 0, 120, 120, 127, 127, 132, 132, 2, 0, 51, 52, 73, 74, 2, 0, 6, 6, 13, 17, 1, 0, 19, 20, 2, 0, 21, 21, 150, 150, 2, 0, 22, 23, 147, 147, 2, 0, 85, 85, 136, 136, 30, 0, 46, 46, 48, 48, 50, 50, 53, 56, 59, 59, 61, 62, 64, 66, 68, 69, 72, 72, 75, 75, 77, 77, 82, 84, 88, 88, 92, 93, 95, 95, 97, 97, 99, 99, 101, 101, 103, 106, 108, 109, 119, 119, 121, 125, 127, 128, 130, 130, 135, 135, 137, 137, 140, 140, 144, 144, 146, 146, 148, 148, 2, 0, 14, 14, 27, 30, 2, 0, 16, 16, 31, 34, 2, 0, 35, 45, 150, 150, 3116, 0, 342, 1, 0, 0, 0, 2, 362, 1, 0, 0, 0, 4, 396, 1, 0, 0, 0, 6, 398, 1, 0, 0, 0, 8, 420, 1, 0, 0, 0, 10, 462, 1, 0, 0, 0, 12, 464, 1, 0, 0, 0, 14, 494, 1, 0, 0, 0, 16, 515, 1, 0, 0, 0, 18, 526, 1, 0, 0, 0, 20, 532, 1, 0, 0, 0, 22, 564, 1, 0, 0, 0, 24, 574, 1, 0, 0, 0, 26, 588, 1, 0, 0, 0, 28, 592, 1, 0, 0, 0, 30, 596, 1, 0, 0, 0, 32, 608, 1, 0, 0, 0, 34, 620, 1, 0, 0, 0, 36, 663, 1, 0, 0, 0, 38, 677, 1, 0, 0, 0, 40, 721, 1, 0, 0, 0, 42, 723, 1, 0, 0, 0, 44, 733, 1, 0, 0, 0, 46, 739, 1, 0, 0, 0, 48, 773, 1, 0, 0, 0, 50, 818, 1, 0, 0, 0, 52, 877, 1, 0, 0, 0, 54, 885, 1, 0, 0, 0, 56, 896, 1, 0, 0, 0, 58, 913, 1, 0, 0, 0, 60, 930, 1, 0, 0, 0, 62, 932, 1, 0, 0, 0, 64, 952, 1, 0, 0, 0, 66, 963, 1, 0, 0, 0, 68, 965, 1, 0, 0, 0, 70, 978, 1, 0, 0, 0, 72, 982, 1, 0, 0, 0, 74, 986, 1, 0, 0, 0, 76, 997, 1, 0, 0, 0, 78, 1009, 1, 0, 0, 0, 80, 1011, 1, 0, 0, 0, 82, 1020, 1, 0, 0, 0, 84, 1024, 1, 0, 0, 0, 86, 1028, 1, 0, 0, 0, 88, 1034, 1, 0, 0, 0, 90, 1042, 1, 0, 0, 0, 92, 1056, 1, 0, 0, 0, 94, 1060, 1, 0, 0, 0, 96, 1074, 1, 0, 0, 0, 98, 1081, 1, 0, 0, 0, 100, 1171, 1, 0, 0, 0, 102, 1180, 1, 0, 0, 0, 104, 1187, 1, 0, 0, 0, 106, 1195, 1, 0, 0, 0, 108, 1197, 1, 0, 0, 0, 110, 1199, 1, 0, 0, 0, 112, 1214, 1, 0, 0, 0, 114, 1218, 1, 0, 0, 0, 116, 1220, 1, 0, 0, 0, 118, 1228, 1, 0, 0, 0, 120, 1236, 1, 0, 0, 0, 122, 1240, 1, 0, 0, 0, 124, 1258, 1, 0, 0, 0, 126, 1293, 1, 0, 0, 0, 128, 1307, 1, 0, 0, 0, 130, 1311, 1, 0, 0, 0, 132, 1358, 1, 0, 0, 0, 134, 1364, 1, 0, 0, 0, 136, 1376, 1, 0, 0, 0, 138, 1394, 1, 0, 0, 0, 140, 1400, 1, 0, 0, 0, 142, 1402, 1, 0, 0, 0, 144, 1442, 1, 0, 0, 0, 146, 1453, 1, 0, 0, 0, 148, 1469, 1, 0, 0, 0, 150, 1483, 1, 0, 0, 0, 152, 1494, 1, 0, 0, 0, 154, 1509, 1, 0, 0, 0, 156, 1525, 1, 0, 0, 0, 158, 1546, 1, 0, 0, 0, 160, 1556, 1, 0, 0, 0, 162, 1562, 1, 0, 0, 0, 164, 1584, 1, 0, 0, 0, 166, 1586, 1, 0, 0, 0, 168, 1604, 1, 0, 0, 0, 170, 1616, 1, 0, 0, 0, 172, 1636, 1, 0, 0, 0, 174, 1644, 1, 0, 0, 0, 176, 1651, 1, 0, 0, 0, 178, 1695, 1, 0, 0, 0, 180, 1704, 1, 0, 0, 0, 182, 1706, 1, 0, 0, 0, 184, 1721, 1, 0, 0, 0, 186, 1725, 1, 0, 0, 0, 188, 1729, 1, 0, 0, 0, 190, 1736, 1, 0, 0, 0, 192, 1740, 1, 0, 0, 0, 194, 1765, 1, 0, 0, 0, 196, 1767, 1, 0, 0, 0, 198, 1783, 1, 0, 0, 0, 200, 1785, 1, 0, 0, 0, 202, 1809, 1, 0, 0, 0, 204, 1859, 1, 0, 0, 0, 206, 1861, 1, 0, 0, 0, 208, 1891, 1, 0, 0, 0, 210, 1932, 1, 0, 0, 0, 212, 1953, 1, 0, 0, 0, 214, 1963, 1, 0, 0, 0, 216, 1969, 1, 0, 0, 0, 218, 2004, 1, 0, 0, 0, 220, 2053, 1, 0, 0, 0, 222, 2065, 1, 0, 0, 0, 224, 2077, 1, 0, 0, 0, 226, 2079, 1, 0, 0, 0, 228, 2081, 1, 0, 0, 0, 230, 2083, 1, 0, 0, 0, 232, 2085, 1, 0, 0, 0, 234, 2087, 1, 0, 0, 0, 236, 2097, 1, 0, 0, 0, 238, 2107, 1, 0, 0, 0, 240, 2123, 1, 0, 0, 0, 242, 2176, 1, 0, 0, 0, 244, 2178, 1, 0, 0, 0, 246, 2180, 1, 0, 0, 0, 248, 2194, 1, 0, 0, 0, 250, 2208, 1, 0, 0, 0, 252, 2223, 1, 0, 0, 0, 254, 2225, 1, 0, 0, 0, 256, 2240, 1, 0, 0, 0, 258, 2242, 1, 0, 0, 0, 260, 2257, 1, 0, 0, 0, 262, 2259, 1, 0, 0, 0, 264, 2279, 1, 0, 0, 0, 266, 2289, 1, 0, 0, 0, 268, 2318, 1, 0, 0, 0, 270, 2331, 1, 0, 0, 0, 272, 2339, 1, 0, 0, 0, 274, 2353, 1, 0, 0, 0, 276, 2355, 1, 0, 0, 0, 278, 2374, 1, 0, 0, 0, 280, 2382, 1, 0, 0, 0, 282, 2384, 1, 0, 0, 0, 284, 2386, 1, 0, 0, 0, 286, 2407, 1, 0, 0, 0, 288, 2414, 1, 0, 0, 0, 290, 2439, 1, 0, 0, 0, 292, 2450, 1, 0, 0, 0, 294, 2537, 1, 0, 0, 0, 296, 2539, 1, 0, 0, 0, 298, 2554, 1, 0, 0, 0, 300, 2556, 1, 0, 0, 0, 302, 2593, 1, 0, 0, 0, 304, 2595, 1, 0, 0, 0, 306, 2604, 1, 0, 0, 0, 308, 2628, 1, 0, 0, 0, 310, 2652, 1, 0, 0, 0, 312, 2682, 1, 0, 0, 0, 314, 2699, 1, 0, 0, 0, 316, 2713, 1, 0, 0, 0, 318, 2717, 1, 0, 0, 0, 320, 2719, 1, 0, 0, 0, 322, 2724, 1, 0, 0, 0, 324, 2730, 1, 0, 0, 0, 326, 2732, 1, 0, 0, 0, 328, 2734, 1, 0, 0, 0, 330, 2736, 1, 0, 0, 0, 332, 2743, 1, 0, 0, 0, 334, 2745, 1, 0, 0, 0, 336, 2747, 1, 0, 0, 0, 338, 2749, 1, 0, 0, 0, 340, 2751, 1, 0, 0, 0, 342, 353, 3, 2, 1, 0, 343, 345, 5, 167, 0, 0, 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 5, 1, 0, 0, 347, 349, 5, 167, 0, 0, 348, 347, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 352, 3, 2, 1, 0, 351, 344, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 356, 358, 5, 167, 0, 0, 357, 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 360, 5, 0, 0, 1, 360, 1, 1, 0, 0, 0, 361, 363, 3, 106, 53, 0, 362, 361, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 366, 5, 167, 0, 0, 365, 364, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 372, 3, 4, 2, 0, 368, 370, 5, 167, 0, 0, 369, 368, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 5, 1, 0, 0, 372, 369, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 3, 1, 0, 0, 0, 374, 397, 3, 120, 60, 0, 375, 397, 3, 46, 23, 0, 376, 397, 3, 48, 24, 0, 377, 397, 3, 50, 25, 0, 378, 397, 3, 54, 27, 0, 379, 397, 3, 56, 28, 0, 380, 397, 3, 58, 29, 0, 381, 397, 3, 74, 37, 0, 382, 397, 3, 76, 38, 0, 383, 397, 3, 6, 3, 0, 384, 397, 3, 12, 6, 0, 385, 397, 3, 14, 7, 0, 386, 397, 3, 30, 15, 0, 387, 397, 3, 34, 17, 0, 388, 397, 3, 32, 16, 0, 389, 397, 3, 112, 56, 0, 390, 397, 3, 114, 57, 0, 391, 397, 3, 16, 8, 0, 392, 397, 3, 18, 9, 0, 393, 397, 3, 20, 10, 0, 394, 397, 3, 26, 13, 0, 395, 397, 3, 28, 14, 0, 396, 374, 1, 0, 0, 0, 396, 375, 1, 0, 0, 0, 396, 376, 1, 0, 0, 0, 396, 377, 1, 0, 0, 0, 396, 378, 1, 0, 0, 0, 396, 379, 1, 0, 0, 0, 396, 380, 1, 0, 0, 0, 396, 381, 1, 0, 0, 0, 396, 382, 1, 0, 0, 0, 396, 383, 1, 0, 0, 0, 396, 384, 1, 0, 0, 0, 396, 385, 1, 0, 0, 0, 396, 386, 1, 0, 0, 0, 396, 387, 1, 0, 0, 0, 396, 388, 1, 0, 0, 0, 396, 389, 1, 0, 0, 0, 396, 390, 1, 0, 0, 0, 396, 391, 1, 0, 0, 0, 396, 392, 1, 0, 0, 0, 396, 393, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 5, 1, 0, 0, 0, 398, 399, 5, 65, 0, 0, 399, 400, 5, 167, 0, 0, 400, 409, 3, 330, 165, 0, 401, 403, 5, 167, 0, 0, 402, 401, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 406, 3, 8, 4, 0, 405, 407, 5, 167, 0, 0, 406, 405, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 410, 1, 0, 0, 0, 408, 410, 5, 167, 0, 0, 409, 402, 1, 0, 0, 0, 409, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 412, 5, 86, 0, 0, 412, 413, 5, 167, 0, 0, 413, 418, 3, 10, 5, 0, 414, 416, 5, 167, 0, 0, 415, 414, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 419, 3, 42, 21, 0, 418, 415, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 7, 1, 0, 0, 0, 420, 422, 5, 2, 0, 0, 421, 423, 5, 167, 0, 0, 422, 421, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 435, 3, 330, 165, 0, 425, 427, 5, 167, 0, 0, 426, 425, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 430, 5, 3, 0, 0, 429, 431, 5, 167, 0, 0, 430, 429, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 434, 3, 330, 165, 0, 433, 426, 1, 0, 0, 0, 434, 437, 1, 0, 0, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 438, 440, 5, 167, 0, 0, 439, 438, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 442, 5, 4, 0, 0, 442, 9, 1, 0, 0, 0, 443, 463, 3, 40, 20, 0, 444, 446, 5, 2, 0, 0, 445, 447, 5, 167, 0, 0, 446, 445, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 450, 3, 120, 60, 0, 449, 451, 5, 167, 0, 0, 450, 449, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 453, 5, 4, 0, 0, 453, 463, 1, 0, 0, 0, 454, 463, 3, 316, 158, 0, 455, 456, 3, 316, 158, 0, 456, 458, 5, 5, 0, 0, 457, 459, 5, 167, 0, 0, 458, 457, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 461, 3, 330, 165, 0, 461, 463, 1, 0, 0, 0, 462, 443, 1, 0, 0, 0, 462, 444, 1, 0, 0, 0, 462, 454, 1, 0, 0, 0, 462, 455, 1, 0, 0, 0, 463, 11, 1, 0, 0, 0, 464, 465, 5, 65, 0, 0, 465, 466, 5, 167, 0, 0, 466, 467, 3, 330, 165, 0, 467, 468, 5, 167, 0, 0, 468, 469, 5, 86, 0, 0, 469, 470, 5, 167, 0, 0, 470, 472, 5, 2, 0, 0, 471, 473, 5, 167, 0, 0, 472, 471, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 485, 5, 153, 0, 0, 475, 477, 5, 167, 0, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 480, 5, 3, 0, 0, 479, 481, 5, 167, 0, 0, 480, 479, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 484, 5, 153, 0, 0, 483, 476, 1, 0, 0, 0, 484, 487, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 488, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 488, 489, 5, 4, 0, 0, 489, 490, 5, 167, 0, 0, 490, 491, 5, 55, 0, 0, 491, 492, 5, 167, 0, 0, 492, 493, 5, 60, 0, 0, 493, 13, 1, 0, 0, 0, 494, 495, 5, 65, 0, 0, 495, 496, 5, 167, 0, 0, 496, 498, 5, 2, 0, 0, 497, 499, 5, 167, 0, 0, 498, 497, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 502, 3, 120, 60, 0, 501, 503, 5, 167, 0, 0, 502, 501, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 5, 4, 0, 0, 505, 506, 5, 167, 0, 0, 506, 507, 5, 134, 0, 0, 507, 508, 5, 167, 0, 0, 508, 513, 5, 153, 0, 0, 509, 511, 5, 167, 0, 0, 510, 509, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 514, 3, 42, 21, 0, 513, 510, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 15, 1, 0, 0, 0, 515, 516, 5, 83, 0, 0, 516, 517, 5, 167, 0, 0, 517, 518, 5, 69, 0, 0, 518, 519, 5, 167, 0, 0, 519, 524, 5, 153, 0, 0, 520, 522, 5, 167, 0, 0, 521, 520, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 525, 3, 42, 21, 0, 524, 521, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 17, 1, 0, 0, 0, 526, 527, 5, 92, 0, 0, 527, 528, 5, 167, 0, 0, 528, 529, 5, 69, 0, 0, 529, 530, 5, 167, 0, 0, 530, 531, 5, 153, 0, 0, 531, 19, 1, 0, 0, 0, 532, 533, 5, 53, 0, 0, 533, 534, 5, 167, 0, 0, 534, 539, 5, 153, 0, 0, 535, 536, 5, 167, 0, 0, 536, 537, 5, 50, 0, 0, 537, 538, 5, 167, 0, 0, 538, 540, 3, 330, 165, 0, 539, 535, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 5, 167, 0, 0, 542, 544, 5, 2, 0, 0, 543, 545, 5, 167, 0, 0, 544, 543, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 5, 70, 0, 0, 547, 548, 5, 167, 0, 0, 548, 557, 3, 332, 166, 0, 549, 551, 5, 167, 0, 0, 550, 549, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 554, 5, 3, 0, 0, 553, 555, 5, 167, 0, 0, 554, 553, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 558, 3, 24, 12, 0, 557, 550, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 560, 1, 0, 0, 0, 559, 561, 5, 167, 0, 0, 560, 559, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 5, 4, 0, 0, 563, 21, 1, 0, 0, 0, 564, 566, 3, 332, 166, 0, 565, 567, 5, 167, 0, 0, 566, 565, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 570, 5, 6, 0, 0, 569, 571, 5, 167, 0, 0, 570, 569, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 3, 280, 140, 0, 573, 23, 1, 0, 0, 0, 574, 585, 3, 22, 11, 0, 575, 577, 5, 167, 0, 0, 576, 575, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 580, 5, 3, 0, 0, 579, 581, 5, 167, 0, 0, 580, 579, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 584, 3, 22, 11, 0, 583, 576, 1, 0, 0, 0, 584, 587, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 25, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 588, 589, 5, 75, 0, 0, 589, 590, 5, 167, 0, 0, 590, 591, 3, 330, 165, 0, 591, 27, 1, 0, 0, 0, 592, 593, 5, 140, 0, 0, 593, 594, 5, 167, 0, 0, 594, 595, 3, 330, 165, 0, 595, 29, 1, 0, 0, 0, 596, 597, 5, 56, 0, 0, 597, 598, 5, 167, 0, 0, 598, 600, 3, 332, 166, 0, 599, 601, 5, 167, 0, 0, 600, 599, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 604, 5, 6, 0, 0, 603, 605, 5, 167, 0, 0, 604, 603, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 607, 3, 232, 116, 0, 607, 31, 1, 0, 0, 0, 608, 609, 5, 61, 0, 0, 609, 610, 5, 167, 0, 0, 610, 611, 5, 112, 0, 0, 611, 612, 5, 167, 0, 0, 612, 613, 5, 132, 0, 0, 613, 614, 5, 167, 0, 0, 614, 615, 3, 330, 165, 0, 615, 616, 5, 167, 0, 0, 616, 617, 5, 97, 0, 0, 617, 618, 5, 167, 0, 0, 618, 619, 5, 153, 0, 0, 619, 33, 1, 0, 0, 0, 620, 621, 5, 67, 0, 0, 621, 622, 5, 167, 0, 0, 622, 623, 5, 102, 0, 0, 623, 624, 5, 167, 0, 0, 624, 626, 3, 296, 148, 0, 625, 627, 5, 167, 0, 0, 626, 625, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 628, 1, 0, 0, 0, 628, 630, 5, 2, 0, 0, 629, 631, 5, 167, 0, 0, 630, 629, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 633, 1, 0, 0, 0, 632, 634, 3, 36, 18, 0, 633, 632, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 636, 1, 0, 0, 0, 635, 637, 5, 167, 0, 0, 636, 635, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 639, 1, 0, 0, 0, 638, 640, 3, 38, 19, 0, 639, 638, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 651, 1, 0, 0, 0, 641, 643, 5, 167, 0, 0, 642, 641, 1, 0, 0, 0, 642, 643, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 646, 5, 3, 0, 0, 645, 647, 5, 167, 0, 0, 646, 645, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 3, 38, 19, 0, 649, 642, 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, 656, 5, 167, 0, 0, 655, 654, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 5, 4, 0, 0, 658, 659, 5, 167, 0, 0, 659, 660, 5, 50, 0, 0, 660, 661, 5, 167, 0, 0, 661, 662, 3, 232, 116, 0, 662, 35, 1, 0, 0, 0, 663, 674, 3, 332, 166, 0, 664, 666, 5, 167, 0, 0, 665, 664, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 669, 5, 3, 0, 0, 668, 670, 5, 167, 0, 0, 669, 668, 1, 0, 0, 0, 669, 670, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 673, 3, 332, 166, 0, 672, 665, 1, 0, 0, 0, 673, 676, 1, 0, 0, 0, 674, 672, 1, 0, 0, 0, 674, 675, 1, 0, 0, 0, 675, 37, 1, 0, 0, 0, 676, 674, 1, 0, 0, 0, 677, 679, 3, 332, 166, 0, 678, 680, 5, 167, 0, 0, 679, 678, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 5, 152, 0, 0, 682, 684, 5, 6, 0, 0, 683, 685, 5, 167, 0, 0, 684, 683, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 687, 3, 280, 140, 0, 687, 39, 1, 0, 0, 0, 688, 690, 5, 7, 0, 0, 689, 691, 5, 167, 0, 0, 690, 689, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 703, 5, 153, 0, 0, 693, 695, 5, 167, 0, 0, 694, 693, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 698, 5, 3, 0, 0, 697, 699, 5, 167, 0, 0, 698, 697, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 702, 5, 153, 0, 0, 701, 694, 1, 0, 0, 0, 702, 705, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 706, 1, 0, 0, 0, 705, 703, 1, 0, 0, 0, 706, 722, 5, 8, 0, 0, 707, 722, 5, 153, 0, 0, 708, 710, 5, 87, 0, 0, 709, 711, 5, 167, 0, 0, 710, 709, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 714, 5, 2, 0, 0, 713, 715, 5, 167, 0, 0, 714, 713, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, 5, 153, 0, 0, 717, 719, 5, 167, 0, 0, 718, 717, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 722, 5, 4, 0, 0, 721, 688, 1, 0, 0, 0, 721, 707, 1, 0, 0, 0, 721, 708, 1, 0, 0, 0, 722, 41, 1, 0, 0, 0, 723, 725, 5, 2, 0, 0, 724, 726, 5, 167, 0, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 729, 3, 24, 12, 0, 728, 730, 5, 167, 0, 0, 729, 728, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 732, 5, 4, 0, 0, 732, 43, 1, 0, 0, 0, 733, 734, 5, 93, 0, 0, 734, 735, 5, 167, 0, 0, 735, 736, 5, 110, 0, 0, 736, 737, 5, 167, 0, 0, 737, 738, 5, 81, 0, 0, 738, 45, 1, 0, 0, 0, 739, 740, 5, 67, 0, 0, 740, 741, 5, 167, 0, 0, 741, 742, 5, 109, 0, 0, 742, 743, 5, 167, 0, 0, 743, 744, 5, 132, 0, 0, 744, 748, 5, 167, 0, 0, 745, 746, 3, 44, 22, 0, 746, 747, 5, 167, 0, 0, 747, 749, 1, 0, 0, 0, 748, 745, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 752, 3, 330, 165, 0, 751, 753, 5, 167, 0, 0, 752, 751, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 756, 5, 2, 0, 0, 755, 757, 5, 167, 0, 0, 756, 755, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 760, 3, 94, 47, 0, 759, 761, 5, 167, 0, 0, 760, 759, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 764, 5, 3, 0, 0, 763, 765, 5, 167, 0, 0, 764, 763, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 767, 3, 98, 49, 0, 767, 769, 1, 0, 0, 0, 768, 770, 5, 167, 0, 0, 769, 768, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 5, 4, 0, 0, 772, 47, 1, 0, 0, 0, 773, 774, 5, 67, 0, 0, 774, 775, 5, 167, 0, 0, 775, 776, 5, 122, 0, 0, 776, 777, 5, 167, 0, 0, 777, 778, 5, 132, 0, 0, 778, 782, 5, 167, 0, 0, 779, 780, 3, 44, 22, 0, 780, 781, 5, 167, 0, 0, 781, 783, 1, 0, 0, 0, 782, 779, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 786, 3, 330, 165, 0, 785, 787, 5, 167, 0, 0, 786, 785, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 790, 5, 2, 0, 0, 789, 791, 5, 167, 0, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 794, 3, 52, 26, 0, 793, 795, 5, 167, 0, 0, 794, 793, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 804, 1, 0, 0, 0, 796, 798, 5, 3, 0, 0, 797, 799, 5, 167, 0, 0, 798, 797, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 802, 3, 94, 47, 0, 801, 803, 5, 167, 0, 0, 802, 801, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 805, 1, 0, 0, 0, 804, 796, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 814, 1, 0, 0, 0, 806, 808, 5, 3, 0, 0, 807, 809, 5, 167, 0, 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 812, 3, 332, 166, 0, 811, 813, 5, 167, 0, 0, 812, 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 815, 1, 0, 0, 0, 814, 806, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 817, 5, 4, 0, 0, 817, 49, 1, 0, 0, 0, 818, 819, 5, 67, 0, 0, 819, 820, 5, 167, 0, 0, 820, 821, 5, 122, 0, 0, 821, 822, 5, 167, 0, 0, 822, 823, 5, 132, 0, 0, 823, 824, 5, 167, 0, 0, 824, 825, 5, 89, 0, 0, 825, 829, 5, 167, 0, 0, 826, 827, 3, 44, 22, 0, 827, 828, 5, 167, 0, 0, 828, 830, 1, 0, 0, 0, 829, 826, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 833, 3, 330, 165, 0, 832, 834, 5, 167, 0, 0, 833, 832, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 835, 1, 0, 0, 0, 835, 837, 5, 2, 0, 0, 836, 838, 5, 167, 0, 0, 837, 836, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 848, 3, 52, 26, 0, 840, 842, 5, 167, 0, 0, 841, 840, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 845, 5, 3, 0, 0, 844, 846, 5, 167, 0, 0, 845, 844, 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 849, 3, 52, 26, 0, 848, 841, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 853, 1, 0, 0, 0, 852, 854, 5, 167, 0, 0, 853, 852, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 863, 1, 0, 0, 0, 855, 857, 5, 3, 0, 0, 856, 858, 5, 167, 0, 0, 857, 856, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 861, 3, 94, 47, 0, 860, 862, 5, 167, 0, 0, 861, 860, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 864, 1, 0, 0, 0, 863, 855, 1, 0, 0, 0, 863, 864, 1, 0, 0, 0, 864, 873, 1, 0, 0, 0, 865, 867, 5, 3, 0, 0, 866, 868, 5, 167, 0, 0, 867, 866, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 871, 3, 332, 166, 0, 870, 872, 5, 167, 0, 0, 871, 870, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 874, 1, 0, 0, 0, 873, 865, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 876, 5, 4, 0, 0, 876, 51, 1, 0, 0, 0, 877, 878, 5, 86, 0, 0, 878, 879, 5, 167, 0, 0, 879, 880, 3, 330, 165, 0, 880, 881, 5, 167, 0, 0, 881, 882, 5, 134, 0, 0, 882, 883, 5, 167, 0, 0, 883, 884, 3, 330, 165, 0, 884, 53, 1, 0, 0, 0, 885, 886, 5, 67, 0, 0, 886, 887, 5, 167, 0, 0, 887, 888, 5, 120, 0, 0, 888, 892, 5, 167, 0, 0, 889, 890, 3, 44, 22, 0, 890, 891, 5, 167, 0, 0, 891, 893, 1, 0, 0, 0, 892, 889, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 895, 3, 330, 165, 0, 895, 55, 1, 0, 0, 0, 896, 897, 5, 67, 0, 0, 897, 898, 5, 167, 0, 0, 898, 899, 5, 127, 0, 0, 899, 903, 5, 167, 0, 0, 900, 901, 3, 44, 22, 0, 901, 902, 5, 167, 0, 0, 902, 904, 1, 0, 0, 0, 903, 900, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 910, 3, 330, 165, 0, 906, 907, 5, 167, 0, 0, 907, 909, 3, 60, 30, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 57, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, 914, 5, 67, 0, 0, 914, 915, 5, 167, 0, 0, 915, 916, 5, 137, 0, 0, 916, 917, 5, 167, 0, 0, 917, 918, 3, 330, 165, 0, 918, 919, 5, 167, 0, 0, 919, 920, 5, 50, 0, 0, 920, 921, 5, 167, 0, 0, 921, 923, 3, 100, 50, 0, 922, 924, 5, 167, 0, 0, 923, 922, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 59, 1, 0, 0, 0, 925, 931, 3, 62, 31, 0, 926, 931, 3, 64, 32, 0, 927, 931, 3, 66, 33, 0, 928, 931, 3, 68, 34, 0, 929, 931, 3, 70, 35, 0, 930, 925, 1, 0, 0, 0, 930, 926, 1, 0, 0, 0, 930, 927, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 929, 1, 0, 0, 0, 931, 61, 1, 0, 0, 0, 932, 933, 5, 95, 0, 0, 933, 936, 5, 167, 0, 0, 934, 935, 5, 55, 0, 0, 935, 937, 5, 167, 0, 0, 936, 934, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 939, 1, 0, 0, 0, 938, 940, 5, 150, 0, 0, 939, 938, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 942, 3, 326, 163, 0, 942, 63, 1, 0, 0, 0, 943, 944, 5, 108, 0, 0, 944, 945, 5, 167, 0, 0, 945, 953, 5, 106, 0, 0, 946, 947, 5, 106, 0, 0, 947, 949, 5, 167, 0, 0, 948, 950, 5, 150, 0, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 953, 3, 326, 163, 0, 952, 943, 1, 0, 0, 0, 952, 946, 1, 0, 0, 0, 953, 65, 1, 0, 0, 0, 954, 955, 5, 108, 0, 0, 955, 956, 5, 167, 0, 0, 956, 964, 5, 104, 0, 0, 957, 958, 5, 104, 0, 0, 958, 960, 5, 167, 0, 0, 959, 961, 5, 150, 0, 0, 960, 959, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 962, 1, 0, 0, 0, 962, 964, 3, 326, 163, 0, 963, 954, 1, 0, 0, 0, 963, 957, 1, 0, 0, 0, 964, 67, 1, 0, 0, 0, 965, 966, 5, 130, 0, 0, 966, 969, 5, 167, 0, 0, 967, 968, 5, 143, 0, 0, 968, 970, 5, 167, 0, 0, 969, 967, 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 972, 1, 0, 0, 0, 971, 973, 5, 150, 0, 0, 972, 971, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 974, 1, 0, 0, 0, 974, 975, 3, 326, 163, 0, 975, 69, 1, 0, 0, 0, 976, 977, 5, 108, 0, 0, 977, 979, 5, 167, 0, 0, 978, 976, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 5, 68, 0, 0, 981, 71, 1, 0, 0, 0, 982, 983, 5, 93, 0, 0, 983, 984, 5, 167, 0, 0, 984, 985, 5, 81, 0, 0, 985, 73, 1, 0, 0, 0, 986, 987, 5, 77, 0, 0, 987, 988, 5, 167, 0, 0, 988, 989, 7, 0, 0, 0, 989, 993, 5, 167, 0, 0, 990, 991, 3, 72, 36, 0, 991, 992, 5, 167, 0, 0, 992, 994, 1, 0, 0, 0, 993, 990, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 3, 330, 165, 0, 996, 75, 1, 0, 0, 0, 997, 998, 5, 48, 0, 0, 998, 999, 5, 167, 0, 0, 999, 1000, 5, 132, 0, 0, 1000, 1001, 5, 167, 0, 0, 1001, 1002, 3, 330, 165, 0, 1002, 1003, 5, 167, 0, 0, 1003, 1004, 3, 78, 39, 0, 1004, 77, 1, 0, 0, 0, 1005, 1010, 3, 80, 40, 0, 1006, 1010, 3, 84, 42, 0, 1007, 1010, 3, 86, 43, 0, 1008, 1010, 3, 88, 44, 0, 1009, 1005, 1, 0, 0, 0, 1009, 1006, 1, 0, 0, 0, 1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 79, 1, 0, 0, 0, 1011, 1012, 5, 46, 0, 0, 1012, 1013, 5, 167, 0, 0, 1013, 1014, 3, 324, 162, 0, 1014, 1015, 5, 167, 0, 0, 1015, 1018, 3, 100, 50, 0, 1016, 1017, 5, 167, 0, 0, 1017, 1019, 3, 82, 41, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 81, 1, 0, 0, 0, 1020, 1021, 5, 71, 0, 0, 1021, 1022, 5, 167, 0, 0, 1022, 1023, 3, 232, 116, 0, 1023, 83, 1, 0, 0, 0, 1024, 1025, 5, 77, 0, 0, 1025, 1026, 5, 167, 0, 0, 1026, 1027, 3, 324, 162, 0, 1027, 85, 1, 0, 0, 0, 1028, 1029, 5, 123, 0, 0, 1029, 1030, 5, 167, 0, 0, 1030, 1031, 5, 134, 0, 0, 1031, 1032, 5, 167, 0, 0, 1032, 1033, 3, 330, 165, 0, 1033, 87, 1, 0, 0, 0, 1034, 1035, 5, 123, 0, 0, 1035, 1036, 5, 167, 0, 0, 1036, 1037, 3, 324, 162, 0, 1037, 1038, 5, 167, 0, 0, 1038, 1039, 5, 134, 0, 0, 1039, 1040, 5, 167, 0, 0, 1040, 1041, 3, 324, 162, 0, 1041, 89, 1, 0, 0, 0, 1042, 1053, 3, 92, 46, 0, 1043, 1045, 5, 167, 0, 0, 1044, 1043, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1048, 5, 3, 0, 0, 1047, 1049, 5, 167, 0, 0, 1048, 1047, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1052, 3, 92, 46, 0, 1051, 1044, 1, 0, 0, 0, 1052, 1055, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 91, 1, 0, 0, 0, 1055, 1053, 1, 0, 0, 0, 1056, 1057, 3, 324, 162, 0, 1057, 1058, 5, 167, 0, 0, 1058, 1059, 3, 100, 50, 0, 1059, 93, 1, 0, 0, 0, 1060, 1071, 3, 96, 48, 0, 1061, 1063, 5, 167, 0, 0, 1062, 1061, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1066, 5, 3, 0, 0, 1065, 1067, 5, 167, 0, 0, 1066, 1065, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1070, 3, 96, 48, 0, 1069, 1062, 1, 0, 0, 0, 1070, 1073, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 95, 1, 0, 0, 0, 1073, 1071, 1, 0, 0, 0, 1074, 1075, 3, 324, 162, 0, 1075, 1076, 5, 167, 0, 0, 1076, 1079, 3, 100, 50, 0, 1077, 1078, 5, 167, 0, 0, 1078, 1080, 3, 82, 41, 0, 1079, 1077, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 97, 1, 0, 0, 0, 1081, 1082, 5, 117, 0, 0, 1082, 1083, 5, 167, 0, 0, 1083, 1085, 5, 99, 0, 0, 1084, 1086, 5, 167, 0, 0, 1085, 1084, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1089, 5, 2, 0, 0, 1088, 1090, 5, 167, 0, 0, 1089, 1088, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1091, 1, 0, 0, 0, 1091, 1093, 3, 324, 162, 0, 1092, 1094, 5, 167, 0, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095, 1096, 5, 4, 0, 0, 1096, 99, 1, 0, 0, 0, 1097, 1098, 6, 50, -1, 0, 1098, 1172, 3, 332, 166, 0, 1099, 1101, 5, 138, 0, 0, 1100, 1102, 5, 167, 0, 0, 1101, 1100, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1105, 5, 2, 0, 0, 1104, 1106, 5, 167, 0, 0, 1105, 1104, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1109, 3, 90, 45, 0, 1108, 1110, 5, 167, 0, 0, 1109, 1108, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, 5, 4, 0, 0, 1112, 1172, 1, 0, 0, 0, 1113, 1115, 3, 332, 166, 0, 1114, 1116, 5, 167, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1119, 5, 2, 0, 0, 1118, 1120, 5, 167, 0, 0, 1119, 1118, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1123, 3, 90, 45, 0, 1122, 1124, 5, 167, 0, 0, 1123, 1122, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, 5, 4, 0, 0, 1126, 1172, 1, 0, 0, 0, 1127, 1129, 3, 332, 166, 0, 1128, 1130, 5, 167, 0, 0, 1129, 1128, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1133, 5, 2, 0, 0, 1132, 1134, 5, 167, 0, 0, 1133, 1132, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1137, 3, 100, 50, 0, 1136, 1138, 5, 167, 0, 0, 1137, 1136, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1141, 5, 3, 0, 0, 1140, 1142, 5, 167, 0, 0, 1141, 1140, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1145, 3, 100, 50, 0, 1144, 1146, 5, 167, 0, 0, 1145, 1144, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 5, 4, 0, 0, 1148, 1172, 1, 0, 0, 0, 1149, 1151, 5, 146, 0, 0, 1150, 1152, 5, 167, 0, 0, 1151, 1150, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1155, 5, 2, 0, 0, 1154, 1156, 5, 167, 0, 0, 1155, 1154, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1157, 1, 0, 0, 0, 1157, 1159, 3, 326, 163, 0, 1158, 1160, 5, 167, 0, 0, 1159, 1158, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1163, 5, 3, 0, 0, 1162, 1164, 5, 167, 0, 0, 1163, 1162, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1167, 3, 326, 163, 0, 1166, 1168, 5, 167, 0, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1170, 5, 4, 0, 0, 1170, 1172, 1, 0, 0, 0, 1171, 1097, 1, 0, 0, 0, 1171, 1099, 1, 0, 0, 0, 1171, 1113, 1, 0, 0, 0, 1171, 1127, 1, 0, 0, 0, 1171, 1149, 1, 0, 0, 0, 1172, 1177, 1, 0, 0, 0, 1173, 1174, 10, 5, 0, 0, 1174, 1176, 3, 102, 51, 0, 1175, 1173, 1, 0, 0, 0, 1176, 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 101, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0, 1180, 1184, 3, 104, 52, 0, 1181, 1183, 3, 104, 52, 0, 1182, 1181, 1, 0, 0, 0, 1183, 1186, 1, 0, 0, 0, 1184, 1182, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 103, 1, 0, 0, 0, 1186, 1184, 1, 0, 0, 0, 1187, 1189, 5, 7, 0, 0, 1188, 1190, 3, 326, 163, 0, 1189, 1188, 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1192, 5, 8, 0, 0, 1192, 105, 1, 0, 0, 0, 1193, 1196, 3, 108, 54, 0, 1194, 1196, 3, 110, 55, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1194, 1, 0, 0, 0, 1196, 107, 1, 0, 0, 0, 1197, 1198, 5, 82, 0, 0, 1198, 109, 1, 0, 0, 0, 1199, 1200, 5, 118, 0, 0, 1200, 111, 1, 0, 0, 0, 1201, 1202, 5, 54, 0, 0, 1202, 1203, 5, 167, 0, 0, 1203, 1215, 5, 135, 0, 0, 1204, 1205, 5, 54, 0, 0, 1205, 1206, 5, 167, 0, 0, 1206, 1207, 5, 135, 0, 0, 1207, 1208, 5, 167, 0, 0, 1208, 1209, 5, 121, 0, 0, 1209, 1210, 5, 167, 0, 0, 1210, 1215, 5, 113, 0, 0, 1211, 1215, 5, 62, 0, 0, 1212, 1215, 5, 125, 0, 0, 1213, 1215, 5, 59, 0, 0, 1214, 1201, 1, 0, 0, 0, 1214, 1204, 1, 0, 0, 0, 1214, 1211, 1, 0, 0, 0, 1214, 1212, 1, 0, 0, 0, 1214, 1213, 1, 0, 0, 0, 1215, 113, 1, 0, 0, 0, 1216, 1219, 3, 116, 58, 0, 1217, 1219, 3, 118, 59, 0, 1218, 1216, 1, 0, 0, 0, 1218, 1217, 1, 0, 0, 0, 1219, 115, 1, 0, 0, 0, 1220, 1221, 5, 101, 0, 0, 1221, 1222, 5, 167, 0, 0, 1222, 1223, 5, 84, 0, 0, 1223, 1226, 5, 167, 0, 0, 1224, 1227, 5, 153, 0, 0, 1225, 1227, 3, 316, 158, 0, 1226, 1224, 1, 0, 0, 0, 1226, 1225, 1, 0, 0, 0, 1227, 117, 1, 0, 0, 0, 1228, 1229, 5, 96, 0, 0, 1229, 1230, 5, 167, 0, 0, 1230, 1231, 3, 316, 158, 0, 1231, 119, 1, 0, 0, 0, 1232, 1234, 3, 122, 61, 0, 1233, 1235, 5, 167, 0, 0, 1234, 1233, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1237, 1, 0, 0, 0, 1236, 1232, 1, 0, 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 3, 126, 63, 0, 1239, 121, 1, 0, 0, 0, 1240, 1241, 5, 119, 0, 0, 1241, 1242, 5, 167, 0, 0, 1242, 1243, 5, 88, 0, 0, 1243, 1244, 5, 167, 0, 0, 1244, 1246, 3, 330, 165, 0, 1245, 1247, 5, 167, 0, 0, 1246, 1245, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1250, 5, 2, 0, 0, 1249, 1251, 5, 167, 0, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1254, 3, 124, 62, 0, 1253, 1255, 5, 167, 0, 0, 1254, 1253, 1, 0, 0, 0, 1254, 1255, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1257, 5, 4, 0, 0, 1257, 123, 1, 0, 0, 0, 1258, 1269, 3, 146, 73, 0, 1259, 1261, 5, 167, 0, 0, 1260, 1259, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1264, 5, 3, 0, 0, 1263, 1265, 5, 167, 0, 0, 1264, 1263, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1268, 3, 146, 73, 0, 1267, 1260, 1, 0, 0, 0, 1268, 1271, 1, 0, 0, 0, 1269, 1267, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 125, 1, 0, 0, 0, 1271, 1269, 1, 0, 0, 0, 1272, 1279, 3, 130, 65, 0, 1273, 1275, 5, 167, 0, 0, 1274, 1273, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 1278, 3, 128, 64, 0, 1277, 1274, 1, 0, 0, 0, 1278, 1281, 1, 0, 0, 0, 1279, 1277, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1294, 1, 0, 0, 0, 1281, 1279, 1, 0, 0, 0, 1282, 1284, 3, 174, 87, 0, 1283, 1285, 5, 167, 0, 0, 1284, 1283, 1, 0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 1287, 1, 0, 0, 0, 1286, 1282, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 3, 130, 65, 0, 1291, 1292, 6, 63, -1, 0, 1292, 1294, 1, 0, 0, 0, 1293, 1272, 1, 0, 0, 0, 1293, 1286, 1, 0, 0, 0, 1294, 127, 1, 0, 0, 0, 1295, 1296, 5, 138, 0, 0, 1296, 1297, 5, 167, 0, 0, 1297, 1299, 5, 47, 0, 0, 1298, 1300, 5, 167, 0, 0, 1299, 1298, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1308, 3, 130, 65, 0, 1302, 1304, 5, 138, 0, 0, 1303, 1305, 5, 167, 0, 0, 1304, 1303, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1308, 3, 130, 65, 0, 1307, 1295, 1, 0, 0, 0, 1307, 1302, 1, 0, 0, 0, 1308, 129, 1, 0, 0, 0, 1309, 1312, 3, 132, 66, 0, 1310, 1312, 3, 134, 67, 0, 1311, 1309, 1, 0, 0, 0, 1311, 1310, 1, 0, 0, 0, 1312, 131, 1, 0, 0, 0, 1313, 1315, 3, 140, 70, 0, 1314, 1316, 5, 167, 0, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1318, 1, 0, 0, 0, 1317, 1313, 1, 0, 0, 0, 1318, 1321, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1319, 1320, 1, 0, 0, 0, 1320, 1322, 1, 0, 0, 0, 1321, 1319, 1, 0, 0, 0, 1322, 1359, 3, 174, 87, 0, 1323, 1325, 3, 140, 70, 0, 1324, 1326, 5, 167, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1328, 1, 0, 0, 0, 1327, 1323, 1, 0, 0, 0, 1328, 1331, 1, 0, 0, 0, 1329, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1332, 1, 0, 0, 0, 1331, 1329, 1, 0, 0, 0, 1332, 1339, 3, 138, 69, 0, 1333, 1335, 5, 167, 0, 0, 1334, 1333, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1338, 3, 138, 69, 0, 1337, 1334, 1, 0, 0, 0, 1338, 1341, 1, 0, 0, 0, 1339, 1337, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1346, 1, 0, 0, 0, 1341, 1339, 1, 0, 0, 0, 1342, 1344, 5, 167, 0, 0, 1343, 1342, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 3, 174, 87, 0, 1346, 1343, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1359, 1, 0, 0, 0, 1348, 1350, 3, 140, 70, 0, 1349, 1351, 5, 167, 0, 0, 1350, 1349, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1353, 1, 0, 0, 0, 1352, 1348, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 6, 66, -1, 0, 1357, 1359, 1, 0, 0, 0, 1358, 1319, 1, 0, 0, 0, 1358, 1329, 1, 0, 0, 0, 1358, 1352, 1, 0, 0, 0, 1359, 133, 1, 0, 0, 0, 1360, 1362, 3, 136, 68, 0, 1361, 1363, 5, 167, 0, 0, 1362, 1361, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1365, 1, 0, 0, 0, 1364, 1360, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1369, 3, 132, 66, 0, 1369, 135, 1, 0, 0, 0, 1370, 1372, 3, 140, 70, 0, 1371, 1373, 5, 167, 0, 0, 1372, 1371, 1, 0, 0, 0, 1372, 1373, 1, 0, 0, 0, 1373, 1375, 1, 0, 0, 0, 1374, 1370, 1, 0, 0, 0, 1375, 1378, 1, 0, 0, 0, 1376, 1374, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1385, 1, 0, 0, 0, 1378, 1376, 1, 0, 0, 0, 1379, 1381, 3, 138, 69, 0, 1380, 1382, 5, 167, 0, 0, 1381, 1380, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1384, 1, 0, 0, 0, 1383, 1379, 1, 0, 0, 0, 1384, 1387, 1, 0, 0, 0, 1385, 1383, 1, 0, 0, 0, 1385, 1386, 1, 0, 0, 0, 1386, 1388, 1, 0, 0, 0, 1387, 1385, 1, 0, 0, 0, 1388, 1389, 3, 172, 86, 0, 1389, 137, 1, 0, 0, 0, 1390, 1395, 3, 160, 80, 0, 1391, 1395, 3, 162, 81, 0, 1392, 1395, 3, 166, 83, 0, 1393, 1395, 3, 170, 85, 0, 1394, 1390, 1, 0, 0, 0, 1394, 1391, 1, 0, 0, 0, 1394, 1392, 1, 0, 0, 0, 1394, 1393, 1, 0, 0, 0, 1395, 139, 1, 0, 0, 0, 1396, 1401, 3, 152, 76, 0, 1397, 1401, 3, 158, 79, 0, 1398, 1401, 3, 144, 72, 0, 1399, 1401, 3, 142, 71, 0, 1400, 1396, 1, 0, 0, 0, 1400, 1397, 1, 0, 0, 0, 1400, 1398, 1, 0, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 141, 1, 0, 0, 0, 1402, 1420, 5, 101, 0, 0, 1403, 1404, 5, 167, 0, 0, 1404, 1405, 5, 143, 0, 0, 1405, 1406, 5, 167, 0, 0, 1406, 1408, 5, 90, 0, 0, 1407, 1409, 5, 167, 0, 0, 1408, 1407, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1412, 5, 2, 0, 0, 1411, 1413, 5, 167, 0, 0, 1412, 1411, 1, 0, 0, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1416, 3, 90, 45, 0, 1415, 1417, 5, 167, 0, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1419, 5, 4, 0, 0, 1419, 1421, 1, 0, 0, 0, 1420, 1403, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1423, 5, 167, 0, 0, 1423, 1424, 5, 86, 0, 0, 1424, 1425, 5, 167, 0, 0, 1425, 1430, 3, 10, 5, 0, 1426, 1428, 5, 167, 0, 0, 1427, 1426, 1, 0, 0, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1429, 1, 0, 0, 0, 1429, 1431, 3, 42, 21, 0, 1430, 1427, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 1436, 1, 0, 0, 0, 1432, 1434, 5, 167, 0, 0, 1433, 1432, 1, 0, 0, 0, 1433, 1434, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1437, 3, 190, 95, 0, 1436, 1433, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 143, 1, 0, 0, 0, 1438, 1440, 3, 122, 61, 0, 1439, 1441, 5, 167, 0, 0, 1440, 1439, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1443, 1, 0, 0, 0, 1442, 1438, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1444, 1, 0, 0, 0, 1444, 1445, 5, 56, 0, 0, 1445, 1446, 5, 167, 0, 0, 1446, 1451, 3, 294, 147, 0, 1447, 1449, 5, 167, 0, 0, 1448, 1447, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1452, 3, 190, 95, 0, 1451, 1448, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 145, 1, 0, 0, 0, 1453, 1467, 3, 330, 165, 0, 1454, 1456, 5, 167, 0, 0, 1455, 1454, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1457, 1, 0, 0, 0, 1457, 1459, 5, 9, 0, 0, 1458, 1460, 5, 167, 0, 0, 1459, 1458, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1463, 3, 148, 74, 0, 1462, 1464, 5, 167, 0, 0, 1463, 1462, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 1466, 5, 10, 0, 0, 1466, 1468, 1, 0, 0, 0, 1467, 1455, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 147, 1, 0, 0, 0, 1469, 1480, 3, 150, 75, 0, 1470, 1472, 5, 167, 0, 0, 1471, 1470, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 1475, 5, 3, 0, 0, 1474, 1476, 5, 167, 0, 0, 1475, 1474, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1479, 3, 150, 75, 0, 1478, 1471, 1, 0, 0, 0, 1479, 1482, 1, 0, 0, 0, 1480, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 149, 1, 0, 0, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 3, 324, 162, 0, 1484, 1485, 5, 167, 0, 0, 1485, 1487, 3, 82, 41, 0, 1486, 1484, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1490, 1, 0, 0, 0, 1488, 1489, 5, 167, 0, 0, 1489, 1491, 3, 190, 95, 0, 1490, 1488, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 151, 1, 0, 0, 0, 1492, 1493, 5, 114, 0, 0, 1493, 1495, 5, 167, 0, 0, 1494, 1492, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1498, 5, 103, 0, 0, 1497, 1499, 5, 167, 0, 0, 1498, 1497, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1503, 3, 192, 96, 0, 1501, 1502, 5, 167, 0, 0, 1502, 1504, 3, 190, 95, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1507, 1, 0, 0, 0, 1505, 1506, 5, 167, 0, 0, 1506, 1508, 3, 154, 77, 0, 1507, 1505, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 153, 1, 0, 0, 0, 1509, 1510, 5, 91, 0, 0, 1510, 1511, 5, 167, 0, 0, 1511, 1512, 3, 156, 78, 0, 1512, 155, 1, 0, 0, 0, 1513, 1514, 6, 78, -1, 0, 1514, 1516, 5, 2, 0, 0, 1515, 1517, 5, 167, 0, 0, 1516, 1515, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1520, 3, 156, 78, 0, 1519, 1521, 5, 167, 0, 0, 1520, 1519, 1, 0, 0, 0, 1520, 1521, 1, 0, 0, 0, 1521, 1522, 1, 0, 0, 0, 1522, 1523, 5, 4, 0, 0, 1523, 1526, 1, 0, 0, 0, 1524, 1526, 3, 330, 165, 0, 1525, 1513, 1, 0, 0, 0, 1525, 1524, 1, 0, 0, 0, 1526, 1543, 1, 0, 0, 0, 1527, 1528, 10, 4, 0, 0, 1528, 1529, 5, 167, 0, 0, 1529, 1530, 5, 98, 0, 0, 1530, 1531, 5, 167, 0, 0, 1531, 1542, 3, 156, 78, 5, 1532, 1537, 10, 3, 0, 0, 1533, 1534, 5, 167, 0, 0, 1534, 1535, 5, 107, 0, 0, 1535, 1536, 5, 167, 0, 0, 1536, 1538, 3, 330, 165, 0, 1537, 1533, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1537, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1542, 1, 0, 0, 0, 1541, 1527, 1, 0, 0, 0, 1541, 1532, 1, 0, 0, 0, 1542, 1545, 1, 0, 0, 0, 1543, 1541, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 157, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1546, 1548, 5, 139, 0, 0, 1547, 1549, 5, 167, 0, 0, 1548, 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1551, 3, 232, 116, 0, 1551, 1552, 5, 167, 0, 0, 1552, 1553, 5, 50, 0, 0, 1553, 1554, 5, 167, 0, 0, 1554, 1555, 3, 316, 158, 0, 1555, 159, 1, 0, 0, 0, 1556, 1558, 5, 67, 0, 0, 1557, 1559, 5, 167, 0, 0, 1558, 1557, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, 1560, 1561, 3, 192, 96, 0, 1561, 161, 1, 0, 0, 0, 1562, 1564, 5, 105, 0, 0, 1563, 1565, 5, 167, 0, 0, 1564, 1563, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1571, 3, 192, 96, 0, 1567, 1568, 5, 167, 0, 0, 1568, 1570, 3, 164, 82, 0, 1569, 1567, 1, 0, 0, 0, 1570, 1573, 1, 0, 0, 0, 1571, 1569, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 163, 1, 0, 0, 0, 1573, 1571, 1, 0, 0, 0, 1574, 1575, 5, 112, 0, 0, 1575, 1576, 5, 167, 0, 0, 1576, 1577, 5, 103, 0, 0, 1577, 1578, 5, 167, 0, 0, 1578, 1585, 3, 166, 83, 0, 1579, 1580, 5, 112, 0, 0, 1580, 1581, 5, 167, 0, 0, 1581, 1582, 5, 67, 0, 0, 1582, 1583, 5, 167, 0, 0, 1583, 1585, 3, 166, 83, 0, 1584, 1574, 1, 0, 0, 0, 1584, 1579, 1, 0, 0, 0, 1585, 165, 1, 0, 0, 0, 1586, 1588, 5, 128, 0, 0, 1587, 1589, 5, 167, 0, 0, 1588, 1587, 1, 0, 0, 0, 1588, 1589, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 1601, 3, 168, 84, 0, 1591, 1593, 5, 167, 0, 0, 1592, 1591, 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 1596, 5, 3, 0, 0, 1595, 1597, 5, 167, 0, 0, 1596, 1595, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1600, 3, 168, 84, 0, 1599, 1592, 1, 0, 0, 0, 1600, 1603, 1, 0, 0, 0, 1601, 1599, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 167, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1604, 1606, 3, 322, 161, 0, 1605, 1607, 5, 167, 0, 0, 1606, 1605, 1, 0, 0, 0, 1606, 1607, 1, 0, 0, 0, 1607, 1608, 1, 0, 0, 0, 1608, 1610, 5, 6, 0, 0, 1609, 1611, 5, 167, 0, 0, 1610, 1609, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1613, 3, 232, 116, 0, 1613, 169, 1, 0, 0, 0, 1614, 1615, 5, 75, 0, 0, 1615, 1617, 5, 167, 0, 0, 1616, 1614, 1, 0, 0, 0, 1616, 1617, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1620, 5, 72, 0, 0, 1619, 1621, 5, 167, 0, 0, 1620, 1619, 1, 0, 0, 0, 1620, 1621, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1633, 3, 232, 116, 0, 1623, 1625, 5, 167, 0, 0, 1624, 1623, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1628, 5, 3, 0, 0, 1627, 1629, 5, 167, 0, 0, 1628, 1627, 1, 0, 0, 0, 1628, 1629, 1, 0, 0, 0, 1629, 1630, 1, 0, 0, 0, 1630, 1632, 3, 232, 116, 0, 1631, 1624, 1, 0, 0, 0, 1632, 1635, 1, 0, 0, 0, 1633, 1631, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 171, 1, 0, 0, 0, 1635, 1633, 1, 0, 0, 0, 1636, 1637, 5, 143, 0, 0, 1637, 1642, 3, 176, 88, 0, 1638, 1640, 5, 167, 0, 0, 1639, 1638, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1643, 3, 190, 95, 0, 1642, 1639, 1, 0, 0, 0, 1642, 1643, 1, 0, 0, 0, 1643, 173, 1, 0, 0, 0, 1644, 1645, 5, 124, 0, 0, 1645, 1646, 3, 176, 88, 0, 1646, 175, 1, 0, 0, 0, 1647, 1649, 5, 167, 0, 0, 1648, 1647, 1, 0, 0, 0, 1648, 1649, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1652, 5, 76, 0, 0, 1651, 1648, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1654, 5, 167, 0, 0, 1654, 1657, 3, 178, 89, 0, 1655, 1656, 5, 167, 0, 0, 1656, 1658, 3, 182, 91, 0, 1657, 1655, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1661, 1, 0, 0, 0, 1659, 1660, 5, 167, 0, 0, 1660, 1662, 3, 184, 92, 0, 1661, 1659, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1664, 5, 167, 0, 0, 1664, 1666, 3, 186, 93, 0, 1665, 1663, 1, 0, 0, 0, 1665, 1666, 1, 0, 0, 0, 1666, 177, 1, 0, 0, 0, 1667, 1678, 5, 147, 0, 0, 1668, 1670, 5, 167, 0, 0, 1669, 1668, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 1671, 1, 0, 0, 0, 1671, 1673, 5, 3, 0, 0, 1672, 1674, 5, 167, 0, 0, 1673, 1672, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1677, 3, 180, 90, 0, 1676, 1669, 1, 0, 0, 0, 1677, 1680, 1, 0, 0, 0, 1678, 1676, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1696, 1, 0, 0, 0, 1680, 1678, 1, 0, 0, 0, 1681, 1692, 3, 180, 90, 0, 1682, 1684, 5, 167, 0, 0, 1683, 1682, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1687, 5, 3, 0, 0, 1686, 1688, 5, 167, 0, 0, 1687, 1686, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1691, 3, 180, 90, 0, 1690, 1683, 1, 0, 0, 0, 1691, 1694, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1696, 1, 0, 0, 0, 1694, 1692, 1, 0, 0, 0, 1695, 1667, 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1696, 179, 1, 0, 0, 0, 1697, 1698, 3, 232, 116, 0, 1698, 1699, 5, 167, 0, 0, 1699, 1700, 5, 50, 0, 0, 1700, 1701, 5, 167, 0, 0, 1701, 1702, 3, 316, 158, 0, 1702, 1705, 1, 0, 0, 0, 1703, 1705, 3, 232, 116, 0, 1704, 1697, 1, 0, 0, 0, 1704, 1703, 1, 0, 0, 0, 1705, 181, 1, 0, 0, 0, 1706, 1707, 5, 116, 0, 0, 1707, 1708, 5, 167, 0, 0, 1708, 1709, 5, 55, 0, 0, 1709, 1710, 5, 167, 0, 0, 1710, 1718, 3, 188, 94, 0, 1711, 1713, 5, 3, 0, 0, 1712, 1714, 5, 167, 0, 0, 1713, 1712, 1, 0, 0, 0, 1713, 1714, 1, 0, 0, 0, 1714, 1715, 1, 0, 0, 0, 1715, 1717, 3, 188, 94, 0, 1716, 1711, 1, 0, 0, 0, 1717, 1720, 1, 0, 0, 0, 1718, 1716, 1, 0, 0, 0, 1718, 1719, 1, 0, 0, 0, 1719, 183, 1, 0, 0, 0, 1720, 1718, 1, 0, 0, 0, 1721, 1722, 5, 148, 0, 0, 1722, 1723, 5, 167, 0, 0, 1723, 1724, 3, 232, 116, 0, 1724, 185, 1, 0, 0, 0, 1725, 1726, 5, 100, 0, 0, 1726, 1727, 5, 167, 0, 0, 1727, 1728, 3, 232, 116, 0, 1728, 187, 1, 0, 0, 0, 1729, 1734, 3, 232, 116, 0, 1730, 1732, 5, 167, 0, 0, 1731, 1730, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1735, 7, 1, 0, 0, 1734, 1731, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 189, 1, 0, 0, 0, 1736, 1737, 5, 142, 0, 0, 1737, 1738, 5, 167, 0, 0, 1738, 1739, 3, 232, 116, 0, 1739, 191, 1, 0, 0, 0, 1740, 1751, 3, 194, 97, 0, 1741, 1743, 5, 167, 0, 0, 1742, 1741, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1746, 5, 3, 0, 0, 1745, 1747, 5, 167, 0, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1750, 3, 194, 97, 0, 1749, 1742, 1, 0, 0, 0, 1750, 1753, 1, 0, 0, 0, 1751, 1749, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 193, 1, 0, 0, 0, 1753, 1751, 1, 0, 0, 0, 1754, 1756, 3, 316, 158, 0, 1755, 1757, 5, 167, 0, 0, 1756, 1755, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1760, 5, 6, 0, 0, 1759, 1761, 5, 167, 0, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1763, 3, 196, 98, 0, 1763, 1766, 1, 0, 0, 0, 1764, 1766, 3, 196, 98, 0, 1765, 1754, 1, 0, 0, 0, 1765, 1764, 1, 0, 0, 0, 1766, 195, 1, 0, 0, 0, 1767, 1768, 3, 198, 99, 0, 1768, 197, 1, 0, 0, 0, 1769, 1776, 3, 200, 100, 0, 1770, 1772, 5, 167, 0, 0, 1771, 1770, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1775, 3, 202, 101, 0, 1774, 1771, 1, 0, 0, 0, 1775, 1778, 1, 0, 0, 0, 1776, 1774, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1784, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1779, 1780, 5, 2, 0, 0, 1780, 1781, 3, 198, 99, 0, 1781, 1782, 5, 4, 0, 0, 1782, 1784, 1, 0, 0, 0, 1783, 1769, 1, 0, 0, 0, 1783, 1779, 1, 0, 0, 0, 1784, 199, 1, 0, 0, 0, 1785, 1787, 5, 2, 0, 0, 1786, 1788, 5, 167, 0, 0, 1787, 1786, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1793, 1, 0, 0, 0, 1789, 1791, 3, 316, 158, 0, 1790, 1792, 5, 167, 0, 0, 1791, 1790, 1, 0, 0, 0, 1791, 1792, 1, 0, 0, 0, 1792, 1794, 1, 0, 0, 0, 1793, 1789, 1, 0, 0, 0, 1793, 1794, 1, 0, 0, 0, 1794, 1799, 1, 0, 0, 0, 1795, 1797, 3, 212, 106, 0, 1796, 1798, 5, 167, 0, 0, 1797, 1796, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1800, 1, 0, 0, 0, 1799, 1795, 1, 0, 0, 0, 1799, 1800, 1, 0, 0, 0, 1800, 1805, 1, 0, 0, 0, 1801, 1803, 3, 208, 104, 0, 1802, 1804, 5, 167, 0, 0, 1803, 1802, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1806, 1, 0, 0, 0, 1805, 1801, 1, 0, 0, 0, 1805, 1806, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 5, 4, 0, 0, 1808, 201, 1, 0, 0, 0, 1809, 1811, 3, 204, 102, 0, 1810, 1812, 5, 167, 0, 0, 1811, 1810, 1, 0, 0, 0, 1811, 1812, 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1814, 3, 200, 100, 0, 1814, 203, 1, 0, 0, 0, 1815, 1817, 3, 336, 168, 0, 1816, 1818, 5, 167, 0, 0, 1817, 1816, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1821, 3, 340, 170, 0, 1820, 1822, 5, 167, 0, 0, 1821, 1820, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 1824, 1, 0, 0, 0, 1823, 1825, 3, 206, 103, 0, 1824, 1823, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1827, 1, 0, 0, 0, 1826, 1828, 5, 167, 0, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1829, 1830, 3, 340, 170, 0, 1830, 1860, 1, 0, 0, 0, 1831, 1833, 3, 340, 170, 0, 1832, 1834, 5, 167, 0, 0, 1833, 1832, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 1836, 1, 0, 0, 0, 1835, 1837, 3, 206, 103, 0, 1836, 1835, 1, 0, 0, 0, 1836, 1837, 1, 0, 0, 0, 1837, 1839, 1, 0, 0, 0, 1838, 1840, 5, 167, 0, 0, 1839, 1838, 1, 0, 0, 0, 1839, 1840, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1843, 3, 340, 170, 0, 1842, 1844, 5, 167, 0, 0, 1843, 1842, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1845, 1, 0, 0, 0, 1845, 1846, 3, 338, 169, 0, 1846, 1860, 1, 0, 0, 0, 1847, 1849, 3, 340, 170, 0, 1848, 1850, 5, 167, 0, 0, 1849, 1848, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 1852, 1, 0, 0, 0, 1851, 1853, 3, 206, 103, 0, 1852, 1851, 1, 0, 0, 0, 1852, 1853, 1, 0, 0, 0, 1853, 1855, 1, 0, 0, 0, 1854, 1856, 5, 167, 0, 0, 1855, 1854, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 1857, 1, 0, 0, 0, 1857, 1858, 3, 340, 170, 0, 1858, 1860, 1, 0, 0, 0, 1859, 1815, 1, 0, 0, 0, 1859, 1831, 1, 0, 0, 0, 1859, 1847, 1, 0, 0, 0, 1860, 205, 1, 0, 0, 0, 1861, 1863, 5, 7, 0, 0, 1862, 1864, 5, 167, 0, 0, 1863, 1862, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1869, 1, 0, 0, 0, 1865, 1867, 3, 316, 158, 0, 1866, 1868, 5, 167, 0, 0, 1867, 1866, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1870, 1, 0, 0, 0, 1869, 1865, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1875, 1, 0, 0, 0, 1871, 1873, 3, 210, 105, 0, 1872, 1874, 5, 167, 0, 0, 1873, 1872, 1, 0, 0, 0, 1873, 1874, 1, 0, 0, 0, 1874, 1876, 1, 0, 0, 0, 1875, 1871, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1881, 1, 0, 0, 0, 1877, 1879, 3, 216, 108, 0, 1878, 1880, 5, 167, 0, 0, 1879, 1878, 1, 0, 0, 0, 1879, 1880, 1, 0, 0, 0, 1880, 1882, 1, 0, 0, 0, 1881, 1877, 1, 0, 0, 0, 1881, 1882, 1, 0, 0, 0, 1882, 1887, 1, 0, 0, 0, 1883, 1885, 3, 208, 104, 0, 1884, 1886, 5, 167, 0, 0, 1885, 1884, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1888, 1, 0, 0, 0, 1887, 1883, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 1890, 5, 8, 0, 0, 1890, 207, 1, 0, 0, 0, 1891, 1893, 5, 9, 0, 0, 1892, 1894, 5, 167, 0, 0, 1893, 1892, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1928, 1, 0, 0, 0, 1895, 1897, 3, 324, 162, 0, 1896, 1898, 5, 167, 0, 0, 1897, 1896, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1899, 1, 0, 0, 0, 1899, 1901, 5, 152, 0, 0, 1900, 1902, 5, 167, 0, 0, 1901, 1900, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1905, 3, 232, 116, 0, 1904, 1906, 5, 167, 0, 0, 1905, 1904, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 1925, 1, 0, 0, 0, 1907, 1909, 5, 3, 0, 0, 1908, 1910, 5, 167, 0, 0, 1909, 1908, 1, 0, 0, 0, 1909, 1910, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1913, 3, 324, 162, 0, 1912, 1914, 5, 167, 0, 0, 1913, 1912, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1917, 5, 152, 0, 0, 1916, 1918, 5, 167, 0, 0, 1917, 1916, 1, 0, 0, 0, 1917, 1918, 1, 0, 0, 0, 1918, 1919, 1, 0, 0, 0, 1919, 1921, 3, 232, 116, 0, 1920, 1922, 5, 167, 0, 0, 1921, 1920, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1924, 1, 0, 0, 0, 1923, 1907, 1, 0, 0, 0, 1924, 1927, 1, 0, 0, 0, 1925, 1923, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1929, 1, 0, 0, 0, 1927, 1925, 1, 0, 0, 0, 1928, 1895, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 1930, 1, 0, 0, 0, 1930, 1931, 5, 10, 0, 0, 1931, 209, 1, 0, 0, 0, 1932, 1934, 5, 152, 0, 0, 1933, 1935, 5, 167, 0, 0, 1934, 1933, 1, 0, 0, 0, 1934, 1935, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1950, 3, 230, 115, 0, 1937, 1939, 5, 167, 0, 0, 1938, 1937, 1, 0, 0, 0, 1938, 1939, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1942, 5, 11, 0, 0, 1941, 1943, 5, 152, 0, 0, 1942, 1941, 1, 0, 0, 0, 1942, 1943, 1, 0, 0, 0, 1943, 1945, 1, 0, 0, 0, 1944, 1946, 5, 167, 0, 0, 1945, 1944, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 1949, 3, 230, 115, 0, 1948, 1938, 1, 0, 0, 0, 1949, 1952, 1, 0, 0, 0, 1950, 1948, 1, 0, 0, 0, 1950, 1951, 1, 0, 0, 0, 1951, 211, 1, 0, 0, 0, 1952, 1950, 1, 0, 0, 0, 1953, 1960, 3, 214, 107, 0, 1954, 1956, 5, 167, 0, 0, 1955, 1954, 1, 0, 0, 0, 1955, 1956, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1959, 3, 214, 107, 0, 1958, 1955, 1, 0, 0, 0, 1959, 1962, 1, 0, 0, 0, 1960, 1958, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 213, 1, 0, 0, 0, 1962, 1960, 1, 0, 0, 0, 1963, 1965, 5, 152, 0, 0, 1964, 1966, 5, 167, 0, 0, 1965, 1964, 1, 0, 0, 0, 1965, 1966, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 3, 228, 114, 0, 1968, 215, 1, 0, 0, 0, 1969, 1971, 5, 147, 0, 0, 1970, 1972, 5, 167, 0, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1977, 1, 0, 0, 0, 1973, 1978, 5, 129, 0, 0, 1974, 1975, 5, 47, 0, 0, 1975, 1976, 5, 167, 0, 0, 1976, 1978, 5, 129, 0, 0, 1977, 1973, 1, 0, 0, 0, 1977, 1974, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1980, 1, 0, 0, 0, 1979, 1981, 5, 167, 0, 0, 1980, 1979, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 1996, 1, 0, 0, 0, 1982, 1984, 3, 224, 112, 0, 1983, 1982, 1, 0, 0, 0, 1983, 1984, 1, 0, 0, 0, 1984, 1986, 1, 0, 0, 0, 1985, 1987, 5, 167, 0, 0, 1986, 1985, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 1988, 1, 0, 0, 0, 1988, 1990, 5, 12, 0, 0, 1989, 1991, 5, 167, 0, 0, 1990, 1989, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1993, 1, 0, 0, 0, 1992, 1994, 3, 226, 113, 0, 1993, 1992, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 1997, 1, 0, 0, 0, 1995, 1997, 3, 326, 163, 0, 1996, 1983, 1, 0, 0, 0, 1996, 1995, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 2002, 1, 0, 0, 0, 1998, 2000, 5, 167, 0, 0, 1999, 1998, 1, 0, 0, 0, 1999, 2000, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2003, 3, 218, 109, 0, 2002, 1999, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 217, 1, 0, 0, 0, 2004, 2006, 5, 2, 0, 0, 2005, 2007, 5, 167, 0, 0, 2006, 2005, 1, 0, 0, 0, 2006, 2007, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2010, 3, 316, 158, 0, 2009, 2011, 5, 167, 0, 0, 2010, 2009, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2014, 5, 3, 0, 0, 2013, 2015, 5, 167, 0, 0, 2014, 2013, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2016, 1, 0, 0, 0, 2016, 2028, 3, 316, 158, 0, 2017, 2019, 5, 167, 0, 0, 2018, 2017, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2020, 1, 0, 0, 0, 2020, 2022, 5, 11, 0, 0, 2021, 2023, 5, 167, 0, 0, 2022, 2021, 1, 0, 0, 0, 2022, 2023, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2026, 3, 190, 95, 0, 2025, 2027, 5, 167, 0, 0, 2026, 2025, 1, 0, 0, 0, 2026, 2027, 1, 0, 0, 0, 2027, 2029, 1, 0, 0, 0, 2028, 2018, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2049, 1, 0, 0, 0, 2030, 2032, 5, 167, 0, 0, 2031, 2030, 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 2033, 1, 0, 0, 0, 2033, 2035, 5, 11, 0, 0, 2034, 2036, 5, 167, 0, 0, 2035, 2034, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 2039, 3, 222, 111, 0, 2038, 2040, 5, 167, 0, 0, 2039, 2038, 1, 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 2041, 1, 0, 0, 0, 2041, 2043, 5, 3, 0, 0, 2042, 2044, 5, 167, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2047, 3, 220, 110, 0, 2046, 2048, 5, 167, 0, 0, 2047, 2046, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2050, 1, 0, 0, 0, 2049, 2031, 1, 0, 0, 0, 2049, 2050, 1, 0, 0, 0, 2050, 2051, 1, 0, 0, 0, 2051, 2052, 5, 4, 0, 0, 2052, 219, 1, 0, 0, 0, 2053, 2055, 5, 9, 0, 0, 2054, 2056, 5, 167, 0, 0, 2055, 2054, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2058, 1, 0, 0, 0, 2057, 2059, 3, 178, 89, 0, 2058, 2057, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 2061, 1, 0, 0, 0, 2060, 2062, 5, 167, 0, 0, 2061, 2060, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2063, 1, 0, 0, 0, 2063, 2064, 5, 10, 0, 0, 2064, 221, 1, 0, 0, 0, 2065, 2067, 5, 9, 0, 0, 2066, 2068, 5, 167, 0, 0, 2067, 2066, 1, 0, 0, 0, 2067, 2068, 1, 0, 0, 0, 2068, 2070, 1, 0, 0, 0, 2069, 2071, 3, 178, 89, 0, 2070, 2069, 1, 0, 0, 0, 2070, 2071, 1, 0, 0, 0, 2071, 2073, 1, 0, 0, 0, 2072, 2074, 5, 167, 0, 0, 2073, 2072, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2076, 5, 10, 0, 0, 2076, 223, 1, 0, 0, 0, 2077, 2078, 5, 155, 0, 0, 2078, 225, 1, 0, 0, 0, 2079, 2080, 5, 155, 0, 0, 2080, 227, 1, 0, 0, 0, 2081, 2082, 3, 330, 165, 0, 2082, 229, 1, 0, 0, 0, 2083, 2084, 3, 330, 165, 0, 2084, 231, 1, 0, 0, 0, 2085, 2086, 3, 234, 117, 0, 2086, 233, 1, 0, 0, 0, 2087, 2094, 3, 236, 118, 0, 2088, 2089, 5, 167, 0, 0, 2089, 2090, 5, 115, 0, 0, 2090, 2091, 5, 167, 0, 0, 2091, 2093, 3, 236, 118, 0, 2092, 2088, 1, 0, 0, 0, 2093, 2096, 1, 0, 0, 0, 2094, 2092, 1, 0, 0, 0, 2094, 2095, 1, 0, 0, 0, 2095, 235, 1, 0, 0, 0, 2096, 2094, 1, 0, 0, 0, 2097, 2104, 3, 238, 119, 0, 2098, 2099, 5, 167, 0, 0, 2099, 2100, 5, 145, 0, 0, 2100, 2101, 5, 167, 0, 0, 2101, 2103, 3, 238, 119, 0, 2102, 2098, 1, 0, 0, 0, 2103, 2106, 1, 0, 0, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 237, 1, 0, 0, 0, 2106, 2104, 1, 0, 0, 0, 2107, 2114, 3, 240, 120, 0, 2108, 2109, 5, 167, 0, 0, 2109, 2110, 5, 49, 0, 0, 2110, 2111, 5, 167, 0, 0, 2111, 2113, 3, 240, 120, 0, 2112, 2108, 1, 0, 0, 0, 2113, 2116, 1, 0, 0, 0, 2114, 2112, 1, 0, 0, 0, 2114, 2115, 1, 0, 0, 0, 2115, 239, 1, 0, 0, 0, 2116, 2114, 1, 0, 0, 0, 2117, 2119, 5, 110, 0, 0, 2118, 2120, 5, 167, 0, 0, 2119, 2118, 1, 0, 0, 0, 2119, 2120, 1, 0, 0, 0, 2120, 2122, 1, 0, 0, 0, 2121, 2117, 1, 0, 0, 0, 2122, 2125, 1, 0, 0, 0, 2123, 2121, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2126, 1, 0, 0, 0, 2125, 2123, 1, 0, 0, 0, 2126, 2127, 3, 242, 121, 0, 2127, 241, 1, 0, 0, 0, 2128, 2138, 3, 246, 123, 0, 2129, 2131, 5, 167, 0, 0, 2130, 2129, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2134, 3, 244, 122, 0, 2133, 2135, 5, 167, 0, 0, 2134, 2133, 1, 0, 0, 0, 2134, 2135, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2137, 3, 246, 123, 0, 2137, 2139, 1, 0, 0, 0, 2138, 2130, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2177, 1, 0, 0, 0, 2140, 2142, 3, 246, 123, 0, 2141, 2143, 5, 167, 0, 0, 2142, 2141, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2146, 5, 149, 0, 0, 2145, 2147, 5, 167, 0, 0, 2146, 2145, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2149, 3, 246, 123, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2151, 6, 121, -1, 0, 2151, 2177, 1, 0, 0, 0, 2152, 2154, 3, 246, 123, 0, 2153, 2155, 5, 167, 0, 0, 2154, 2153, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 2158, 3, 244, 122, 0, 2157, 2159, 5, 167, 0, 0, 2158, 2157, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2160, 1, 0, 0, 0, 2160, 2170, 3, 246, 123, 0, 2161, 2163, 5, 167, 0, 0, 2162, 2161, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2166, 3, 244, 122, 0, 2165, 2167, 5, 167, 0, 0, 2166, 2165, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2169, 3, 246, 123, 0, 2169, 2171, 1, 0, 0, 0, 2170, 2162, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2170, 1, 0, 0, 0, 2172, 2173, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 2175, 6, 121, -1, 0, 2175, 2177, 1, 0, 0, 0, 2176, 2128, 1, 0, 0, 0, 2176, 2140, 1, 0, 0, 0, 2176, 2152, 1, 0, 0, 0, 2177, 243, 1, 0, 0, 0, 2178, 2179, 7, 2, 0, 0, 2179, 245, 1, 0, 0, 0, 2180, 2191, 3, 248, 124, 0, 2181, 2183, 5, 167, 0, 0, 2182, 2181, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 2184, 1, 0, 0, 0, 2184, 2186, 5, 11, 0, 0, 2185, 2187, 5, 167, 0, 0, 2186, 2185, 1, 0, 0, 0, 2186, 2187, 1, 0, 0, 0, 2187, 2188, 1, 0, 0, 0, 2188, 2190, 3, 248, 124, 0, 2189, 2182, 1, 0, 0, 0, 2190, 2193, 1, 0, 0, 0, 2191, 2189, 1, 0, 0, 0, 2191, 2192, 1, 0, 0, 0, 2192, 247, 1, 0, 0, 0, 2193, 2191, 1, 0, 0, 0, 2194, 2205, 3, 250, 125, 0, 2195, 2197, 5, 167, 0, 0, 2196, 2195, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2198, 1, 0, 0, 0, 2198, 2200, 5, 18, 0, 0, 2199, 2201, 5, 167, 0, 0, 2200, 2199, 1, 0, 0, 0, 2200, 2201, 1, 0, 0, 0, 2201, 2202, 1, 0, 0, 0, 2202, 2204, 3, 250, 125, 0, 2203, 2196, 1, 0, 0, 0, 2204, 2207, 1, 0, 0, 0, 2205, 2203, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, 249, 1, 0, 0, 0, 2207, 2205, 1, 0, 0, 0, 2208, 2220, 3, 254, 127, 0, 2209, 2211, 5, 167, 0, 0, 2210, 2209, 1, 0, 0, 0, 2210, 2211, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, 2214, 3, 252, 126, 0, 2213, 2215, 5, 167, 0, 0, 2214, 2213, 1, 0, 0, 0, 2214, 2215, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 2217, 3, 254, 127, 0, 2217, 2219, 1, 0, 0, 0, 2218, 2210, 1, 0, 0, 0, 2219, 2222, 1, 0, 0, 0, 2220, 2218, 1, 0, 0, 0, 2220, 2221, 1, 0, 0, 0, 2221, 251, 1, 0, 0, 0, 2222, 2220, 1, 0, 0, 0, 2223, 2224, 7, 3, 0, 0, 2224, 253, 1, 0, 0, 0, 2225, 2237, 3, 258, 129, 0, 2226, 2228, 5, 167, 0, 0, 2227, 2226, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2231, 3, 256, 128, 0, 2230, 2232, 5, 167, 0, 0, 2231, 2230, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2233, 1, 0, 0, 0, 2233, 2234, 3, 258, 129, 0, 2234, 2236, 1, 0, 0, 0, 2235, 2227, 1, 0, 0, 0, 2236, 2239, 1, 0, 0, 0, 2237, 2235, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 255, 1, 0, 0, 0, 2239, 2237, 1, 0, 0, 0, 2240, 2241, 7, 4, 0, 0, 2241, 257, 1, 0, 0, 0, 2242, 2254, 3, 262, 131, 0, 2243, 2245, 5, 167, 0, 0, 2244, 2243, 1, 0, 0, 0, 2244, 2245, 1, 0, 0, 0, 2245, 2246, 1, 0, 0, 0, 2246, 2248, 3, 260, 130, 0, 2247, 2249, 5, 167, 0, 0, 2248, 2247, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2250, 1, 0, 0, 0, 2250, 2251, 3, 262, 131, 0, 2251, 2253, 1, 0, 0, 0, 2252, 2244, 1, 0, 0, 0, 2253, 2256, 1, 0, 0, 0, 2254, 2252, 1, 0, 0, 0, 2254, 2255, 1, 0, 0, 0, 2255, 259, 1, 0, 0, 0, 2256, 2254, 1, 0, 0, 0, 2257, 2258, 7, 5, 0, 0, 2258, 261, 1, 0, 0, 0, 2259, 2270, 3, 264, 132, 0, 2260, 2262, 5, 167, 0, 0, 2261, 2260, 1, 0, 0, 0, 2261, 2262, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 2265, 5, 24, 0, 0, 2264, 2266, 5, 167, 0, 0, 2265, 2264, 1, 0, 0, 0, 2265, 2266, 1, 0, 0, 0, 2266, 2267, 1, 0, 0, 0, 2267, 2269, 3, 264, 132, 0, 2268, 2261, 1, 0, 0, 0, 2269, 2272, 1, 0, 0, 0, 2270, 2268, 1, 0, 0, 0, 2270, 2271, 1, 0, 0, 0, 2271, 263, 1, 0, 0, 0, 2272, 2270, 1, 0, 0, 0, 2273, 2275, 5, 150, 0, 0, 2274, 2276, 5, 167, 0, 0, 2275, 2274, 1, 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2278, 1, 0, 0, 0, 2277, 2273, 1, 0, 0, 0, 2278, 2281, 1, 0, 0, 0, 2279, 2277, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2282, 1, 0, 0, 0, 2281, 2279, 1, 0, 0, 0, 2282, 2287, 3, 266, 133, 0, 2283, 2285, 5, 167, 0, 0, 2284, 2283, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2286, 1, 0, 0, 0, 2286, 2288, 5, 151, 0, 0, 2287, 2284, 1, 0, 0, 0, 2287, 2288, 1, 0, 0, 0, 2288, 265, 1, 0, 0, 0, 2289, 2297, 3, 276, 138, 0, 2290, 2298, 3, 270, 135, 0, 2291, 2293, 3, 268, 134, 0, 2292, 2291, 1, 0, 0, 0, 2293, 2294, 1, 0, 0, 0, 2294, 2292, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2298, 1, 0, 0, 0, 2296, 2298, 3, 274, 137, 0, 2297, 2290, 1, 0, 0, 0, 2297, 2292, 1, 0, 0, 0, 2297, 2296, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 267, 1, 0, 0, 0, 2299, 2300, 5, 167, 0, 0, 2300, 2302, 5, 94, 0, 0, 2301, 2303, 5, 167, 0, 0, 2302, 2301, 1, 0, 0, 0, 2302, 2303, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 2319, 3, 276, 138, 0, 2305, 2306, 5, 7, 0, 0, 2306, 2307, 3, 232, 116, 0, 2307, 2308, 5, 8, 0, 0, 2308, 2319, 1, 0, 0, 0, 2309, 2311, 5, 7, 0, 0, 2310, 2312, 3, 232, 116, 0, 2311, 2310, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2313, 1, 0, 0, 0, 2313, 2315, 5, 152, 0, 0, 2314, 2316, 3, 232, 116, 0, 2315, 2314, 1, 0, 0, 0, 2315, 2316, 1, 0, 0, 0, 2316, 2317, 1, 0, 0, 0, 2317, 2319, 5, 8, 0, 0, 2318, 2299, 1, 0, 0, 0, 2318, 2305, 1, 0, 0, 0, 2318, 2309, 1, 0, 0, 0, 2319, 269, 1, 0, 0, 0, 2320, 2332, 3, 272, 136, 0, 2321, 2322, 5, 167, 0, 0, 2322, 2323, 5, 131, 0, 0, 2323, 2324, 5, 167, 0, 0, 2324, 2332, 5, 143, 0, 0, 2325, 2326, 5, 167, 0, 0, 2326, 2327, 5, 80, 0, 0, 2327, 2328, 5, 167, 0, 0, 2328, 2332, 5, 143, 0, 0, 2329, 2330, 5, 167, 0, 0, 2330, 2332, 5, 64, 0, 0, 2331, 2320, 1, 0, 0, 0, 2331, 2321, 1, 0, 0, 0, 2331, 2325, 1, 0, 0, 0, 2331, 2329, 1, 0, 0, 0, 2332, 2334, 1, 0, 0, 0, 2333, 2335, 5, 167, 0, 0, 2334, 2333, 1, 0, 0, 0, 2334, 2335, 1, 0, 0, 0, 2335, 2336, 1, 0, 0, 0, 2336, 2337, 3, 276, 138, 0, 2337, 271, 1, 0, 0, 0, 2338, 2340, 5, 167, 0, 0, 2339, 2338, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2341, 1, 0, 0, 0, 2341, 2342, 5, 25, 0, 0, 2342, 273, 1, 0, 0, 0, 2343, 2344, 5, 167, 0, 0, 2344, 2345, 5, 97, 0, 0, 2345, 2346, 5, 167, 0, 0, 2346, 2354, 5, 111, 0, 0, 2347, 2348, 5, 167, 0, 0, 2348, 2349, 5, 97, 0, 0, 2349, 2350, 5, 167, 0, 0, 2350, 2351, 5, 110, 0, 0, 2351, 2352, 5, 167, 0, 0, 2352, 2354, 5, 111, 0, 0, 2353, 2343, 1, 0, 0, 0, 2353, 2347, 1, 0, 0, 0, 2354, 275, 1, 0, 0, 0, 2355, 2362, 3, 278, 139, 0, 2356, 2358, 5, 167, 0, 0, 2357, 2356, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2361, 3, 310, 155, 0, 2360, 2357, 1, 0, 0, 0, 2361, 2364, 1, 0, 0, 0, 2362, 2360, 1, 0, 0, 0, 2362, 2363, 1, 0, 0, 0, 2363, 277, 1, 0, 0, 0, 2364, 2362, 1, 0, 0, 0, 2365, 2375, 3, 280, 140, 0, 2366, 2375, 3, 320, 160, 0, 2367, 2375, 3, 312, 156, 0, 2368, 2375, 3, 292, 146, 0, 2369, 2375, 3, 294, 147, 0, 2370, 2375, 3, 304, 152, 0, 2371, 2375, 3, 306, 153, 0, 2372, 2375, 3, 308, 154, 0, 2373, 2375, 3, 316, 158, 0, 2374, 2365, 1, 0, 0, 0, 2374, 2366, 1, 0, 0, 0, 2374, 2367, 1, 0, 0, 0, 2374, 2368, 1, 0, 0, 0, 2374, 2369, 1, 0, 0, 0, 2374, 2370, 1, 0, 0, 0, 2374, 2371, 1, 0, 0, 0, 2374, 2372, 1, 0, 0, 0, 2374, 2373, 1, 0, 0, 0, 2375, 279, 1, 0, 0, 0, 2376, 2383, 3, 318, 159, 0, 2377, 2383, 5, 153, 0, 0, 2378, 2383, 3, 282, 141, 0, 2379, 2383, 5, 111, 0, 0, 2380, 2383, 3, 284, 142, 0, 2381, 2383, 3, 288, 144, 0, 2382, 2376, 1, 0, 0, 0, 2382, 2377, 1, 0, 0, 0, 2382, 2378, 1, 0, 0, 0, 2382, 2379, 1, 0, 0, 0, 2382, 2380, 1, 0, 0, 0, 2382, 2381, 1, 0, 0, 0, 2383, 281, 1, 0, 0, 0, 2384, 2385, 7, 6, 0, 0, 2385, 283, 1, 0, 0, 0, 2386, 2388, 5, 7, 0, 0, 2387, 2389, 5, 167, 0, 0, 2388, 2387, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2403, 1, 0, 0, 0, 2390, 2392, 3, 232, 116, 0, 2391, 2393, 5, 167, 0, 0, 2392, 2391, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2400, 1, 0, 0, 0, 2394, 2396, 3, 286, 143, 0, 2395, 2397, 5, 167, 0, 0, 2396, 2395, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2399, 1, 0, 0, 0, 2398, 2394, 1, 0, 0, 0, 2399, 2402, 1, 0, 0, 0, 2400, 2398, 1, 0, 0, 0, 2400, 2401, 1, 0, 0, 0, 2401, 2404, 1, 0, 0, 0, 2402, 2400, 1, 0, 0, 0, 2403, 2390, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2406, 5, 8, 0, 0, 2406, 285, 1, 0, 0, 0, 2407, 2409, 5, 3, 0, 0, 2408, 2410, 5, 167, 0, 0, 2409, 2408, 1, 0, 0, 0, 2409, 2410, 1, 0, 0, 0, 2410, 2412, 1, 0, 0, 0, 2411, 2413, 3, 232, 116, 0, 2412, 2411, 1, 0, 0, 0, 2412, 2413, 1, 0, 0, 0, 2413, 287, 1, 0, 0, 0, 2414, 2416, 5, 9, 0, 0, 2415, 2417, 5, 167, 0, 0, 2416, 2415, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2420, 3, 290, 145, 0, 2419, 2421, 5, 167, 0, 0, 2420, 2419, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2432, 1, 0, 0, 0, 2422, 2424, 5, 3, 0, 0, 2423, 2425, 5, 167, 0, 0, 2424, 2423, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2428, 3, 290, 145, 0, 2427, 2429, 5, 167, 0, 0, 2428, 2427, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2431, 1, 0, 0, 0, 2430, 2422, 1, 0, 0, 0, 2431, 2434, 1, 0, 0, 0, 2432, 2430, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2435, 1, 0, 0, 0, 2434, 2432, 1, 0, 0, 0, 2435, 2436, 5, 10, 0, 0, 2436, 289, 1, 0, 0, 0, 2437, 2440, 3, 332, 166, 0, 2438, 2440, 5, 153, 0, 0, 2439, 2437, 1, 0, 0, 0, 2439, 2438, 1, 0, 0, 0, 2440, 2442, 1, 0, 0, 0, 2441, 2443, 5, 167, 0, 0, 2442, 2441, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2444, 1, 0, 0, 0, 2444, 2446, 5, 152, 0, 0, 2445, 2447, 5, 167, 0, 0, 2446, 2445, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2449, 3, 232, 116, 0, 2449, 291, 1, 0, 0, 0, 2450, 2452, 5, 2, 0, 0, 2451, 2453, 5, 167, 0, 0, 2452, 2451, 1, 0, 0, 0, 2452, 2453, 1, 0, 0, 0, 2453, 2454, 1, 0, 0, 0, 2454, 2456, 3, 232, 116, 0, 2455, 2457, 5, 167, 0, 0, 2456, 2455, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 2458, 1, 0, 0, 0, 2458, 2459, 5, 4, 0, 0, 2459, 293, 1, 0, 0, 0, 2460, 2462, 5, 66, 0, 0, 2461, 2463, 5, 167, 0, 0, 2462, 2461, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2464, 1, 0, 0, 0, 2464, 2466, 5, 2, 0, 0, 2465, 2467, 5, 167, 0, 0, 2466, 2465, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2468, 1, 0, 0, 0, 2468, 2470, 5, 147, 0, 0, 2469, 2471, 5, 167, 0, 0, 2470, 2469, 1, 0, 0, 0, 2470, 2471, 1, 0, 0, 0, 2471, 2472, 1, 0, 0, 0, 2472, 2538, 5, 4, 0, 0, 2473, 2475, 5, 58, 0, 0, 2474, 2476, 5, 167, 0, 0, 2475, 2474, 1, 0, 0, 0, 2475, 2476, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2479, 5, 2, 0, 0, 2478, 2480, 5, 167, 0, 0, 2479, 2478, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2481, 1, 0, 0, 0, 2481, 2483, 3, 298, 149, 0, 2482, 2484, 5, 167, 0, 0, 2483, 2482, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2495, 1, 0, 0, 0, 2485, 2487, 5, 50, 0, 0, 2486, 2488, 5, 167, 0, 0, 2487, 2486, 1, 0, 0, 0, 2487, 2488, 1, 0, 0, 0, 2488, 2489, 1, 0, 0, 0, 2489, 2496, 3, 100, 50, 0, 2490, 2492, 5, 3, 0, 0, 2491, 2493, 5, 167, 0, 0, 2492, 2491, 1, 0, 0, 0, 2492, 2493, 1, 0, 0, 0, 2493, 2494, 1, 0, 0, 0, 2494, 2496, 3, 298, 149, 0, 2495, 2485, 1, 0, 0, 0, 2495, 2490, 1, 0, 0, 0, 2496, 2498, 1, 0, 0, 0, 2497, 2499, 5, 167, 0, 0, 2498, 2497, 1, 0, 0, 0, 2498, 2499, 1, 0, 0, 0, 2499, 2500, 1, 0, 0, 0, 2500, 2501, 5, 4, 0, 0, 2501, 2538, 1, 0, 0, 0, 2502, 2504, 3, 296, 148, 0, 2503, 2505, 5, 167, 0, 0, 2504, 2503, 1, 0, 0, 0, 2504, 2505, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2508, 5, 2, 0, 0, 2507, 2509, 5, 167, 0, 0, 2508, 2507, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2514, 1, 0, 0, 0, 2510, 2512, 5, 76, 0, 0, 2511, 2513, 5, 167, 0, 0, 2512, 2511, 1, 0, 0, 0, 2512, 2513, 1, 0, 0, 0, 2513, 2515, 1, 0, 0, 0, 2514, 2510, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2533, 1, 0, 0, 0, 2516, 2518, 3, 298, 149, 0, 2517, 2519, 5, 167, 0, 0, 2518, 2517, 1, 0, 0, 0, 2518, 2519, 1, 0, 0, 0, 2519, 2530, 1, 0, 0, 0, 2520, 2522, 5, 3, 0, 0, 2521, 2523, 5, 167, 0, 0, 2522, 2521, 1, 0, 0, 0, 2522, 2523, 1, 0, 0, 0, 2523, 2524, 1, 0, 0, 0, 2524, 2526, 3, 298, 149, 0, 2525, 2527, 5, 167, 0, 0, 2526, 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2529, 1, 0, 0, 0, 2528, 2520, 1, 0, 0, 0, 2529, 2532, 1, 0, 0, 0, 2530, 2528, 1, 0, 0, 0, 2530, 2531, 1, 0, 0, 0, 2531, 2534, 1, 0, 0, 0, 2532, 2530, 1, 0, 0, 0, 2533, 2516, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2535, 1, 0, 0, 0, 2535, 2536, 5, 4, 0, 0, 2536, 2538, 1, 0, 0, 0, 2537, 2460, 1, 0, 0, 0, 2537, 2473, 1, 0, 0, 0, 2537, 2502, 1, 0, 0, 0, 2538, 295, 1, 0, 0, 0, 2539, 2540, 3, 332, 166, 0, 2540, 297, 1, 0, 0, 0, 2541, 2543, 3, 332, 166, 0, 2542, 2544, 5, 167, 0, 0, 2543, 2542, 1, 0, 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2545, 1, 0, 0, 0, 2545, 2546, 5, 152, 0, 0, 2546, 2548, 5, 6, 0, 0, 2547, 2549, 5, 167, 0, 0, 2548, 2547, 1, 0, 0, 0, 2548, 2549, 1, 0, 0, 0, 2549, 2551, 1, 0, 0, 0, 2550, 2541, 1, 0, 0, 0, 2550, 2551, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, 2555, 3, 232, 116, 0, 2553, 2555, 3, 300, 150, 0, 2554, 2550, 1, 0, 0, 0, 2554, 2553, 1, 0, 0, 0, 2555, 299, 1, 0, 0, 0, 2556, 2558, 3, 302, 151, 0, 2557, 2559, 5, 167, 0, 0, 2558, 2557, 1, 0, 0, 0, 2558, 2559, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2561, 5, 150, 0, 0, 2561, 2563, 5, 16, 0, 0, 2562, 2564, 5, 167, 0, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, 3, 232, 116, 0, 2566, 2568, 5, 167, 0, 0, 2567, 2566, 1, 0, 0, 0, 2567, 2568, 1, 0, 0, 0, 2568, 301, 1, 0, 0, 0, 2569, 2594, 3, 332, 166, 0, 2570, 2572, 5, 2, 0, 0, 2571, 2573, 5, 167, 0, 0, 2572, 2571, 1, 0, 0, 0, 2572, 2573, 1, 0, 0, 0, 2573, 2574, 1, 0, 0, 0, 2574, 2576, 3, 332, 166, 0, 2575, 2577, 5, 167, 0, 0, 2576, 2575, 1, 0, 0, 0, 2576, 2577, 1, 0, 0, 0, 2577, 2588, 1, 0, 0, 0, 2578, 2580, 5, 3, 0, 0, 2579, 2581, 5, 167, 0, 0, 2580, 2579, 1, 0, 0, 0, 2580, 2581, 1, 0, 0, 0, 2581, 2582, 1, 0, 0, 0, 2582, 2584, 3, 332, 166, 0, 2583, 2585, 5, 167, 0, 0, 2584, 2583, 1, 0, 0, 0, 2584, 2585, 1, 0, 0, 0, 2585, 2587, 1, 0, 0, 0, 2586, 2578, 1, 0, 0, 0, 2587, 2590, 1, 0, 0, 0, 2588, 2586, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 2591, 1, 0, 0, 0, 2590, 2588, 1, 0, 0, 0, 2591, 2592, 5, 4, 0, 0, 2592, 2594, 1, 0, 0, 0, 2593, 2569, 1, 0, 0, 0, 2593, 2570, 1, 0, 0, 0, 2594, 303, 1, 0, 0, 0, 2595, 2600, 3, 200, 100, 0, 2596, 2598, 5, 167, 0, 0, 2597, 2596, 1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2601, 3, 202, 101, 0, 2600, 2597, 1, 0, 0, 0, 2601, 2602, 1, 0, 0, 0, 2602, 2600, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 305, 1, 0, 0, 0, 2604, 2606, 5, 81, 0, 0, 2605, 2607, 5, 167, 0, 0, 2606, 2605, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2610, 5, 9, 0, 0, 2609, 2611, 5, 167, 0, 0, 2610, 2609, 1, 0, 0, 0, 2610, 2611, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 2614, 5, 103, 0, 0, 2613, 2615, 5, 167, 0, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 2621, 3, 192, 96, 0, 2617, 2619, 5, 167, 0, 0, 2618, 2617, 1, 0, 0, 0, 2618, 2619, 1, 0, 0, 0, 2619, 2620, 1, 0, 0, 0, 2620, 2622, 3, 190, 95, 0, 2621, 2618, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2624, 1, 0, 0, 0, 2623, 2625, 5, 167, 0, 0, 2624, 2623, 1, 0, 0, 0, 2624, 2625, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 2627, 5, 10, 0, 0, 2627, 307, 1, 0, 0, 0, 2628, 2630, 5, 66, 0, 0, 2629, 2631, 5, 167, 0, 0, 2630, 2629, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 2632, 1, 0, 0, 0, 2632, 2634, 5, 9, 0, 0, 2633, 2635, 5, 167, 0, 0, 2634, 2633, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2638, 5, 103, 0, 0, 2637, 2639, 5, 167, 0, 0, 2638, 2637, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 2640, 1, 0, 0, 0, 2640, 2645, 3, 192, 96, 0, 2641, 2643, 5, 167, 0, 0, 2642, 2641, 1, 0, 0, 0, 2642, 2643, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2646, 3, 190, 95, 0, 2645, 2642, 1, 0, 0, 0, 2645, 2646, 1, 0, 0, 0, 2646, 2648, 1, 0, 0, 0, 2647, 2649, 5, 167, 0, 0, 2648, 2647, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2650, 1, 0, 0, 0, 2650, 2651, 5, 10, 0, 0, 2651, 309, 1, 0, 0, 0, 2652, 2654, 5, 5, 0, 0, 2653, 2655, 5, 167, 0, 0, 2654, 2653, 1, 0, 0, 0, 2654, 2655, 1, 0, 0, 0, 2655, 2658, 1, 0, 0, 0, 2656, 2659, 3, 324, 162, 0, 2657, 2659, 5, 147, 0, 0, 2658, 2656, 1, 0, 0, 0, 2658, 2657, 1, 0, 0, 0, 2659, 311, 1, 0, 0, 0, 2660, 2665, 5, 57, 0, 0, 2661, 2663, 5, 167, 0, 0, 2662, 2661, 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 2664, 1, 0, 0, 0, 2664, 2666, 3, 314, 157, 0, 2665, 2662, 1, 0, 0, 0, 2666, 2667, 1, 0, 0, 0, 2667, 2665, 1, 0, 0, 0, 2667, 2668, 1, 0, 0, 0, 2668, 2683, 1, 0, 0, 0, 2669, 2671, 5, 57, 0, 0, 2670, 2672, 5, 167, 0, 0, 2671, 2670, 1, 0, 0, 0, 2671, 2672, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2678, 3, 232, 116, 0, 2674, 2676, 5, 167, 0, 0, 2675, 2674, 1, 0, 0, 0, 2675, 2676, 1, 0, 0, 0, 2676, 2677, 1, 0, 0, 0, 2677, 2679, 3, 314, 157, 0, 2678, 2675, 1, 0, 0, 0, 2679, 2680, 1, 0, 0, 0, 2680, 2678, 1, 0, 0, 0, 2680, 2681, 1, 0, 0, 0, 2681, 2683, 1, 0, 0, 0, 2682, 2660, 1, 0, 0, 0, 2682, 2669, 1, 0, 0, 0, 2683, 2692, 1, 0, 0, 0, 2684, 2686, 5, 167, 0, 0, 2685, 2684, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 2687, 1, 0, 0, 0, 2687, 2689, 5, 78, 0, 0, 2688, 2690, 5, 167, 0, 0, 2689, 2688, 1, 0, 0, 0, 2689, 2690, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2693, 3, 232, 116, 0, 2692, 2685, 1, 0, 0, 0, 2692, 2693, 1, 0, 0, 0, 2693, 2695, 1, 0, 0, 0, 2694, 2696, 5, 167, 0, 0, 2695, 2694, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 2697, 1, 0, 0, 0, 2697, 2698, 5, 79, 0, 0, 2698, 313, 1, 0, 0, 0, 2699, 2701, 5, 141, 0, 0, 2700, 2702, 5, 167, 0, 0, 2701, 2700, 1, 0, 0, 0, 2701, 2702, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2705, 3, 232, 116, 0, 2704, 2706, 5, 167, 0, 0, 2705, 2704, 1, 0, 0, 0, 2705, 2706, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 2709, 5, 133, 0, 0, 2708, 2710, 5, 167, 0, 0, 2709, 2708, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 2711, 1, 0, 0, 0, 2711, 2712, 3, 232, 116, 0, 2712, 315, 1, 0, 0, 0, 2713, 2714, 3, 332, 166, 0, 2714, 317, 1, 0, 0, 0, 2715, 2718, 3, 328, 164, 0, 2716, 2718, 3, 326, 163, 0, 2717, 2715, 1, 0, 0, 0, 2717, 2716, 1, 0, 0, 0, 2718, 319, 1, 0, 0, 0, 2719, 2722, 5, 26, 0, 0, 2720, 2723, 3, 332, 166, 0, 2721, 2723, 5, 155, 0, 0, 2722, 2720, 1, 0, 0, 0, 2722, 2721, 1, 0, 0, 0, 2723, 321, 1, 0, 0, 0, 2724, 2726, 3, 278, 139, 0, 2725, 2727, 5, 167, 0, 0, 2726, 2725, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2729, 3, 310, 155, 0, 2729, 323, 1, 0, 0, 0, 2730, 2731, 3, 330, 165, 0, 2731, 325, 1, 0, 0, 0, 2732, 2733, 5, 155, 0, 0, 2733, 327, 1, 0, 0, 0, 2734, 2735, 5, 162, 0, 0, 2735, 329, 1, 0, 0, 0, 2736, 2737, 3, 332, 166, 0, 2737, 331, 1, 0, 0, 0, 2738, 2744, 5, 163, 0, 0, 2739, 2740, 5, 166, 0, 0, 2740, 2744, 6, 166, -1, 0, 2741, 2744, 5, 156, 0, 0, 2742, 2744, 3, 334, 167, 0, 2743, 2738, 1, 0, 0, 0, 2743, 2739, 1, 0, 0, 0, 2743, 2741, 1, 0, 0, 0, 2743, 2742, 1, 0, 0, 0, 2744, 333, 1, 0, 0, 0, 2745, 2746, 7, 7, 0, 0, 2746, 335, 1, 0, 0, 0, 2747, 2748, 7, 8, 0, 0, 2748, 337, 1, 0, 0, 0, 2749, 2750, 7, 9, 0, 0, 2750, 339, 1, 0, 0, 0, 2751, 2752, 7, 10, 0, 0, 2752, 341, 1, 0, 0, 0, 472, 344, 348, 353, 357, 362, 365, 369, 372, 396, 402, 406, 409, 415, 418, 422, 426, 430, 435, 439, 446, 450, 458, 462, 472, 476, 480, 485, 498, 502, 510, 513, 521, 524, 539, 544, 550, 554, 557, 560, 566, 570, 576, 580, 585, 600, 604, 626, 630, 633, 636, 639, 642, 646, 651, 655, 665, 669, 674, 679, 684, 690, 694, 698, 703, 710, 714, 718, 721, 725, 729, 748, 752, 756, 760, 764, 769, 782, 786, 790, 794, 798, 802, 804, 808, 812, 814, 829, 833, 837, 841, 845, 850, 853, 857, 861, 863, 867, 871, 873, 892, 903, 910, 923, 930, 936, 939, 949, 952, 960, 963, 969, 972, 978, 993, 1009, 1018, 1044, 1048, 1053, 1062, 1066, 1071, 1079, 1085, 1089, 1093, 1101, 1105, 1109, 1115, 1119, 1123, 1129, 1133, 1137, 1141, 1145, 1151, 1155, 1159, 1163, 1167, 1171, 1177, 1184, 1189, 1195, 1214, 1218, 1226, 1234, 1236, 1246, 1250, 1254, 1260, 1264, 1269, 1274, 1279, 1284, 1288, 1293, 1299, 1304, 1307, 1311, 1315, 1319, 1325, 1329, 1334, 1339, 1343, 1346, 1350, 1354, 1358, 1362, 1366, 1372, 1376, 1381, 1385, 1394, 1400, 1408, 1412, 1416, 1420, 1427, 1430, 1433, 1436, 1440, 1442, 1448, 1451, 1455, 1459, 1463, 1467, 1471, 1475, 1480, 1486, 1490, 1494, 1498, 1503, 1507, 1516, 1520, 1525, 1539, 1541, 1543, 1548, 1558, 1564, 1571, 1584, 1588, 1592, 1596, 1601, 1606, 1610, 1616, 1620, 1624, 1628, 1633, 1639, 1642, 1648, 1651, 1657, 1661, 1665, 1669, 1673, 1678, 1683, 1687, 1692, 1695, 1704, 1713, 1718, 1731, 1734, 1742, 1746, 1751, 1756, 1760, 1765, 1771, 1776, 1783, 1787, 1791, 1793, 1797, 1799, 1803, 1805, 1811, 1817, 1821, 1824, 1827, 1833, 1836, 1839, 1843, 1849, 1852, 1855, 1859, 1863, 1867, 1869, 1873, 1875, 1879, 1881, 1885, 1887, 1893, 1897, 1901, 1905, 1909, 1913, 1917, 1921, 1925, 1928, 1934, 1938, 1942, 1945, 1950, 1955, 1960, 1965, 1971, 1977, 1980, 1983, 1986, 1990, 1993, 1996, 1999, 2002, 2006, 2010, 2014, 2018, 2022, 2026, 2028, 2031, 2035, 2039, 2043, 2047, 2049, 2055, 2058, 2061, 2067, 2070, 2073, 2094, 2104, 2114, 2119, 2123, 2130, 2134, 2138, 2142, 2146, 2154, 2158, 2162, 2166, 2172, 2176, 2182, 2186, 2191, 2196, 2200, 2205, 2210, 2214, 2220, 2227, 2231, 2237, 2244, 2248, 2254, 2261, 2265, 2270, 2275, 2279, 2284, 2287, 2294, 2297, 2302, 2311, 2315, 2318, 2331, 2334, 2339, 2353, 2357, 2362, 2374, 2382, 2388, 2392, 2396, 2400, 2403, 2409, 2412, 2416, 2420, 2424, 2428, 2432, 2439, 2442, 2446, 2452, 2456, 2462, 2466, 2470, 2475, 2479, 2483, 2487, 2492, 2495, 2498, 2504, 2508, 2512, 2514, 2518, 2522, 2526, 2530, 2533, 2537, 2543, 2548, 2550, 2554, 2558, 2563, 2567, 2572, 2576, 2580, 2584, 2588, 2593, 2597, 2602, 2606, 2610, 2614, 2618, 2621, 2624, 2630, 2634, 2638, 2642, 2645, 2648, 2654, 2658, 2662, 2667, 2671, 2675, 2680, 2682, 2685, 2689, 2692, 2695, 2701, 2705, 2709, 2717, 2722, 2726, 2743]
\ No newline at end of file
+[4, 1, 175, 2834, 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, 1, 0, 1, 0, 3, 0, 349, 8, 0, 1, 0, 1, 0, 3, 0, 353, 8, 0, 1, 0, 5, 0, 356, 8, 0, 10, 0, 12, 0, 359, 9, 0, 1, 0, 3, 0, 362, 8, 0, 1, 0, 1, 0, 1, 1, 3, 1, 367, 8, 1, 1, 1, 3, 1, 370, 8, 1, 1, 1, 1, 1, 3, 1, 374, 8, 1, 1, 1, 3, 1, 377, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 400, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 406, 8, 3, 1, 3, 1, 3, 3, 3, 410, 8, 3, 1, 3, 3, 3, 413, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 419, 8, 3, 1, 3, 3, 3, 422, 8, 3, 1, 4, 1, 4, 3, 4, 426, 8, 4, 1, 4, 1, 4, 3, 4, 430, 8, 4, 1, 4, 1, 4, 3, 4, 434, 8, 4, 1, 4, 5, 4, 437, 8, 4, 10, 4, 12, 4, 440, 9, 4, 1, 4, 3, 4, 443, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 450, 8, 5, 1, 5, 1, 5, 3, 5, 454, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 462, 8, 5, 1, 5, 1, 5, 3, 5, 466, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 476, 8, 6, 1, 6, 1, 6, 3, 6, 480, 8, 6, 1, 6, 1, 6, 3, 6, 484, 8, 6, 1, 6, 5, 6, 487, 8, 6, 10, 6, 12, 6, 490, 9, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 502, 8, 7, 1, 7, 1, 7, 3, 7, 506, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 514, 8, 7, 1, 7, 3, 7, 517, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 525, 8, 8, 1, 8, 3, 8, 528, 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, 543, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 548, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 554, 8, 10, 1, 10, 1, 10, 3, 10, 558, 8, 10, 1, 10, 3, 10, 561, 8, 10, 1, 10, 3, 10, 564, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 570, 8, 11, 1, 11, 1, 11, 3, 11, 574, 8, 11, 1, 11, 5, 11, 577, 8, 11, 10, 11, 12, 11, 580, 9, 11, 3, 11, 582, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 587, 8, 11, 1, 12, 1, 12, 3, 12, 591, 8, 12, 1, 12, 1, 12, 3, 12, 595, 8, 12, 1, 12, 5, 12, 598, 8, 12, 10, 12, 12, 12, 601, 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, 615, 8, 15, 1, 15, 1, 15, 3, 15, 619, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 626, 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, 646, 8, 17, 1, 17, 1, 17, 3, 17, 650, 8, 17, 1, 17, 3, 17, 653, 8, 17, 1, 17, 3, 17, 656, 8, 17, 1, 17, 3, 17, 659, 8, 17, 1, 17, 3, 17, 662, 8, 17, 1, 17, 1, 17, 3, 17, 666, 8, 17, 1, 17, 5, 17, 669, 8, 17, 10, 17, 12, 17, 672, 9, 17, 1, 17, 3, 17, 675, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 685, 8, 18, 1, 18, 1, 18, 3, 18, 689, 8, 18, 1, 18, 5, 18, 692, 8, 18, 10, 18, 12, 18, 695, 9, 18, 1, 19, 1, 19, 3, 19, 699, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 704, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 3, 20, 710, 8, 20, 1, 20, 1, 20, 3, 20, 714, 8, 20, 1, 20, 1, 20, 3, 20, 718, 8, 20, 1, 20, 5, 20, 721, 8, 20, 10, 20, 12, 20, 724, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 730, 8, 20, 1, 20, 1, 20, 3, 20, 734, 8, 20, 1, 20, 1, 20, 3, 20, 738, 8, 20, 1, 20, 3, 20, 741, 8, 20, 1, 21, 1, 21, 3, 21, 745, 8, 21, 1, 21, 1, 21, 3, 21, 749, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 768, 8, 23, 1, 23, 1, 23, 3, 23, 772, 8, 23, 1, 23, 1, 23, 3, 23, 776, 8, 23, 1, 23, 1, 23, 3, 23, 780, 8, 23, 1, 23, 1, 23, 3, 23, 784, 8, 23, 1, 23, 3, 23, 787, 8, 23, 1, 23, 3, 23, 790, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 803, 8, 24, 1, 24, 1, 24, 3, 24, 807, 8, 24, 1, 24, 1, 24, 3, 24, 811, 8, 24, 1, 24, 1, 24, 3, 24, 815, 8, 24, 1, 24, 1, 24, 3, 24, 819, 8, 24, 1, 24, 1, 24, 3, 24, 823, 8, 24, 3, 24, 825, 8, 24, 1, 24, 1, 24, 3, 24, 829, 8, 24, 1, 24, 1, 24, 3, 24, 833, 8, 24, 3, 24, 835, 8, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 850, 8, 25, 1, 25, 1, 25, 3, 25, 854, 8, 25, 1, 25, 1, 25, 3, 25, 858, 8, 25, 1, 25, 1, 25, 3, 25, 862, 8, 25, 1, 25, 1, 25, 3, 25, 866, 8, 25, 1, 25, 4, 25, 869, 8, 25, 11, 25, 12, 25, 870, 1, 25, 3, 25, 874, 8, 25, 1, 25, 1, 25, 3, 25, 878, 8, 25, 1, 25, 1, 25, 3, 25, 882, 8, 25, 3, 25, 884, 8, 25, 1, 25, 1, 25, 3, 25, 888, 8, 25, 1, 25, 1, 25, 3, 25, 892, 8, 25, 3, 25, 894, 8, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 913, 8, 27, 1, 27, 1, 27, 1, 27, 5, 27, 918, 8, 27, 10, 27, 12, 27, 921, 9, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 933, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 940, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 946, 8, 30, 1, 30, 3, 30, 949, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 959, 8, 31, 1, 31, 3, 31, 962, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 970, 8, 32, 1, 32, 3, 32, 973, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 979, 8, 33, 1, 33, 3, 33, 982, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 988, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1003, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1019, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1028, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 3, 44, 1054, 8, 44, 1, 44, 1, 44, 3, 44, 1058, 8, 44, 1, 44, 5, 44, 1061, 8, 44, 10, 44, 12, 44, 1064, 9, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 3, 46, 1072, 8, 46, 1, 46, 1, 46, 3, 46, 1076, 8, 46, 1, 46, 5, 46, 1079, 8, 46, 10, 46, 12, 46, 1082, 9, 46, 1, 47, 1, 47, 1, 47, 3, 47, 1087, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1093, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1099, 8, 48, 1, 48, 1, 48, 3, 48, 1103, 8, 48, 1, 48, 1, 48, 3, 48, 1107, 8, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1115, 8, 49, 1, 49, 1, 49, 3, 49, 1119, 8, 49, 1, 49, 1, 49, 3, 49, 1123, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1129, 8, 49, 1, 49, 1, 49, 3, 49, 1133, 8, 49, 1, 49, 1, 49, 3, 49, 1137, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1143, 8, 49, 1, 49, 1, 49, 3, 49, 1147, 8, 49, 1, 49, 1, 49, 3, 49, 1151, 8, 49, 1, 49, 1, 49, 3, 49, 1155, 8, 49, 1, 49, 1, 49, 3, 49, 1159, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1165, 8, 49, 1, 49, 1, 49, 3, 49, 1169, 8, 49, 1, 49, 1, 49, 3, 49, 1173, 8, 49, 1, 49, 1, 49, 3, 49, 1177, 8, 49, 1, 49, 1, 49, 3, 49, 1181, 8, 49, 1, 49, 1, 49, 3, 49, 1185, 8, 49, 1, 49, 1, 49, 5, 49, 1189, 8, 49, 10, 49, 12, 49, 1192, 9, 49, 1, 50, 1, 50, 5, 50, 1196, 8, 50, 10, 50, 12, 50, 1199, 9, 50, 1, 51, 1, 51, 3, 51, 1203, 8, 51, 1, 51, 1, 51, 1, 52, 1, 52, 3, 52, 1209, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1214, 8, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1231, 8, 55, 1, 56, 1, 56, 3, 56, 1235, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1243, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 3, 59, 1251, 8, 59, 3, 59, 1253, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1263, 8, 60, 1, 60, 1, 60, 3, 60, 1267, 8, 60, 1, 60, 1, 60, 3, 60, 1271, 8, 60, 1, 60, 1, 60, 1, 61, 1, 61, 3, 61, 1277, 8, 61, 1, 61, 1, 61, 3, 61, 1281, 8, 61, 1, 61, 5, 61, 1284, 8, 61, 10, 61, 12, 61, 1287, 9, 61, 1, 62, 1, 62, 3, 62, 1291, 8, 62, 1, 62, 5, 62, 1294, 8, 62, 10, 62, 12, 62, 1297, 9, 62, 1, 62, 1, 62, 3, 62, 1301, 8, 62, 4, 62, 1303, 8, 62, 11, 62, 12, 62, 1304, 1, 62, 1, 62, 1, 62, 3, 62, 1310, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1316, 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1321, 8, 63, 1, 63, 3, 63, 1324, 8, 63, 1, 64, 1, 64, 3, 64, 1328, 8, 64, 1, 65, 1, 65, 3, 65, 1332, 8, 65, 5, 65, 1334, 8, 65, 10, 65, 12, 65, 1337, 9, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1342, 8, 65, 5, 65, 1344, 8, 65, 10, 65, 12, 65, 1347, 9, 65, 1, 65, 1, 65, 3, 65, 1351, 8, 65, 1, 65, 5, 65, 1354, 8, 65, 10, 65, 12, 65, 1357, 9, 65, 1, 65, 3, 65, 1360, 8, 65, 1, 65, 3, 65, 1363, 8, 65, 3, 65, 1365, 8, 65, 1, 66, 1, 66, 3, 66, 1369, 8, 66, 4, 66, 1371, 8, 66, 11, 66, 12, 66, 1372, 1, 66, 1, 66, 1, 67, 1, 67, 3, 67, 1379, 8, 67, 5, 67, 1381, 8, 67, 10, 67, 12, 67, 1384, 9, 67, 1, 67, 1, 67, 3, 67, 1388, 8, 67, 5, 67, 1390, 8, 67, 10, 67, 12, 67, 1393, 9, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1401, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1407, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1415, 8, 70, 1, 70, 1, 70, 3, 70, 1419, 8, 70, 1, 70, 1, 70, 3, 70, 1423, 8, 70, 1, 70, 1, 70, 3, 70, 1427, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1434, 8, 70, 1, 70, 3, 70, 1437, 8, 70, 1, 70, 3, 70, 1440, 8, 70, 1, 70, 3, 70, 1443, 8, 70, 1, 71, 1, 71, 3, 71, 1447, 8, 71, 3, 71, 1449, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1455, 8, 71, 1, 71, 3, 71, 1458, 8, 71, 1, 72, 1, 72, 3, 72, 1462, 8, 72, 1, 72, 1, 72, 3, 72, 1466, 8, 72, 1, 72, 1, 72, 3, 72, 1470, 8, 72, 1, 72, 1, 72, 3, 72, 1474, 8, 72, 1, 73, 1, 73, 3, 73, 1478, 8, 73, 1, 73, 1, 73, 3, 73, 1482, 8, 73, 1, 73, 5, 73, 1485, 8, 73, 10, 73, 12, 73, 1488, 9, 73, 1, 74, 1, 74, 1, 74, 3, 74, 1493, 8, 74, 1, 74, 1, 74, 3, 74, 1497, 8, 74, 1, 75, 1, 75, 3, 75, 1501, 8, 75, 1, 75, 1, 75, 3, 75, 1505, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1510, 8, 75, 1, 75, 1, 75, 3, 75, 1514, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 3, 77, 1523, 8, 77, 1, 77, 1, 77, 3, 77, 1527, 8, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1532, 8, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 4, 77, 1544, 8, 77, 11, 77, 12, 77, 1545, 5, 77, 1548, 8, 77, 10, 77, 12, 77, 1551, 9, 77, 1, 78, 1, 78, 3, 78, 1555, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 3, 79, 1565, 8, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 1571, 8, 80, 1, 80, 1, 80, 1, 80, 5, 80, 1576, 8, 80, 10, 80, 12, 80, 1579, 9, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1591, 8, 81, 1, 82, 1, 82, 3, 82, 1595, 8, 82, 1, 82, 1, 82, 3, 82, 1599, 8, 82, 1, 82, 1, 82, 3, 82, 1603, 8, 82, 1, 82, 5, 82, 1606, 8, 82, 10, 82, 12, 82, 1609, 9, 82, 1, 83, 1, 83, 3, 83, 1613, 8, 83, 1, 83, 1, 83, 3, 83, 1617, 8, 83, 1, 83, 1, 83, 1, 84, 1, 84, 3, 84, 1623, 8, 84, 1, 84, 1, 84, 3, 84, 1627, 8, 84, 1, 84, 1, 84, 3, 84, 1631, 8, 84, 1, 84, 1, 84, 3, 84, 1635, 8, 84, 1, 84, 5, 84, 1638, 8, 84, 10, 84, 12, 84, 1641, 9, 84, 1, 85, 1, 85, 1, 85, 3, 85, 1646, 8, 85, 1, 85, 3, 85, 1649, 8, 85, 1, 86, 1, 86, 1, 86, 1, 87, 3, 87, 1655, 8, 87, 1, 87, 3, 87, 1658, 8, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1664, 8, 87, 1, 87, 1, 87, 3, 87, 1668, 8, 87, 1, 87, 1, 87, 3, 87, 1672, 8, 87, 1, 88, 1, 88, 3, 88, 1676, 8, 88, 1, 88, 1, 88, 3, 88, 1680, 8, 88, 1, 88, 5, 88, 1683, 8, 88, 10, 88, 12, 88, 1686, 9, 88, 1, 88, 1, 88, 3, 88, 1690, 8, 88, 1, 88, 1, 88, 3, 88, 1694, 8, 88, 1, 88, 5, 88, 1697, 8, 88, 10, 88, 12, 88, 1700, 9, 88, 3, 88, 1702, 8, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1711, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1720, 8, 90, 1, 90, 5, 90, 1723, 8, 90, 10, 90, 12, 90, 1726, 9, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 1738, 8, 93, 1, 93, 3, 93, 1741, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 3, 95, 1749, 8, 95, 1, 95, 1, 95, 3, 95, 1753, 8, 95, 1, 95, 5, 95, 1756, 8, 95, 10, 95, 12, 95, 1759, 9, 95, 1, 96, 1, 96, 3, 96, 1763, 8, 96, 1, 96, 1, 96, 3, 96, 1767, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 1772, 8, 96, 1, 97, 1, 97, 1, 98, 1, 98, 3, 98, 1778, 8, 98, 1, 98, 5, 98, 1781, 8, 98, 10, 98, 12, 98, 1784, 9, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1790, 8, 98, 1, 99, 1, 99, 3, 99, 1794, 8, 99, 1, 99, 1, 99, 3, 99, 1798, 8, 99, 3, 99, 1800, 8, 99, 1, 99, 1, 99, 3, 99, 1804, 8, 99, 3, 99, 1806, 8, 99, 1, 99, 1, 99, 3, 99, 1810, 8, 99, 3, 99, 1812, 8, 99, 1, 99, 1, 99, 1, 100, 1, 100, 3, 100, 1818, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 3, 101, 1824, 8, 101, 1, 101, 1, 101, 3, 101, 1828, 8, 101, 1, 101, 3, 101, 1831, 8, 101, 1, 101, 3, 101, 1834, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1840, 8, 101, 1, 101, 3, 101, 1843, 8, 101, 1, 101, 3, 101, 1846, 8, 101, 1, 101, 1, 101, 3, 101, 1850, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1856, 8, 101, 1, 101, 3, 101, 1859, 8, 101, 1, 101, 3, 101, 1862, 8, 101, 1, 101, 1, 101, 3, 101, 1866, 8, 101, 1, 102, 1, 102, 3, 102, 1870, 8, 102, 1, 102, 1, 102, 3, 102, 1874, 8, 102, 3, 102, 1876, 8, 102, 1, 102, 1, 102, 3, 102, 1880, 8, 102, 3, 102, 1882, 8, 102, 1, 102, 1, 102, 3, 102, 1886, 8, 102, 3, 102, 1888, 8, 102, 1, 102, 1, 102, 3, 102, 1892, 8, 102, 3, 102, 1894, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 3, 103, 1900, 8, 103, 1, 103, 1, 103, 3, 103, 1904, 8, 103, 1, 103, 1, 103, 3, 103, 1908, 8, 103, 1, 103, 1, 103, 3, 103, 1912, 8, 103, 1, 103, 1, 103, 3, 103, 1916, 8, 103, 1, 103, 1, 103, 3, 103, 1920, 8, 103, 1, 103, 1, 103, 3, 103, 1924, 8, 103, 1, 103, 1, 103, 3, 103, 1928, 8, 103, 5, 103, 1930, 8, 103, 10, 103, 12, 103, 1933, 9, 103, 3, 103, 1935, 8, 103, 1, 103, 1, 103, 1, 104, 1, 104, 3, 104, 1941, 8, 104, 1, 104, 1, 104, 3, 104, 1945, 8, 104, 1, 104, 1, 104, 3, 104, 1949, 8, 104, 1, 104, 3, 104, 1952, 8, 104, 1, 104, 5, 104, 1955, 8, 104, 10, 104, 12, 104, 1958, 9, 104, 1, 105, 1, 105, 3, 105, 1962, 8, 105, 1, 105, 5, 105, 1965, 8, 105, 10, 105, 12, 105, 1968, 9, 105, 1, 106, 1, 106, 3, 106, 1972, 8, 106, 1, 106, 1, 106, 1, 107, 1, 107, 3, 107, 1978, 8, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 1986, 8, 107, 1, 107, 3, 107, 1989, 8, 107, 1, 107, 3, 107, 1992, 8, 107, 1, 107, 3, 107, 1995, 8, 107, 1, 107, 1, 107, 3, 107, 1999, 8, 107, 1, 107, 3, 107, 2002, 8, 107, 1, 107, 3, 107, 2005, 8, 107, 1, 107, 3, 107, 2008, 8, 107, 1, 107, 3, 107, 2011, 8, 107, 1, 108, 1, 108, 3, 108, 2015, 8, 108, 1, 108, 1, 108, 3, 108, 2019, 8, 108, 1, 108, 1, 108, 3, 108, 2023, 8, 108, 1, 108, 1, 108, 3, 108, 2027, 8, 108, 1, 108, 1, 108, 3, 108, 2031, 8, 108, 1, 108, 1, 108, 3, 108, 2035, 8, 108, 3, 108, 2037, 8, 108, 1, 108, 3, 108, 2040, 8, 108, 1, 108, 1, 108, 3, 108, 2044, 8, 108, 1, 108, 1, 108, 3, 108, 2048, 8, 108, 1, 108, 1, 108, 3, 108, 2052, 8, 108, 1, 108, 1, 108, 3, 108, 2056, 8, 108, 3, 108, 2058, 8, 108, 1, 108, 1, 108, 1, 109, 1, 109, 3, 109, 2064, 8, 109, 1, 109, 3, 109, 2067, 8, 109, 1, 109, 3, 109, 2070, 8, 109, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 2076, 8, 110, 1, 110, 3, 110, 2079, 8, 110, 1, 110, 3, 110, 2082, 8, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 2101, 8, 116, 10, 116, 12, 116, 2104, 9, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 5, 117, 2111, 8, 117, 10, 117, 12, 117, 2114, 9, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 2121, 8, 118, 10, 118, 12, 118, 2124, 9, 118, 1, 119, 1, 119, 3, 119, 2128, 8, 119, 5, 119, 2130, 8, 119, 10, 119, 12, 119, 2133, 9, 119, 1, 119, 1, 119, 1, 120, 1, 120, 3, 120, 2139, 8, 120, 1, 120, 1, 120, 3, 120, 2143, 8, 120, 1, 120, 1, 120, 3, 120, 2147, 8, 120, 1, 120, 1, 120, 3, 120, 2151, 8, 120, 1, 120, 1, 120, 3, 120, 2155, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 2163, 8, 120, 1, 120, 1, 120, 3, 120, 2167, 8, 120, 1, 120, 1, 120, 3, 120, 2171, 8, 120, 1, 120, 1, 120, 3, 120, 2175, 8, 120, 1, 120, 1, 120, 4, 120, 2179, 8, 120, 11, 120, 12, 120, 2180, 1, 120, 1, 120, 3, 120, 2185, 8, 120, 1, 121, 1, 121, 1, 122, 1, 122, 3, 122, 2191, 8, 122, 1, 122, 1, 122, 3, 122, 2195, 8, 122, 1, 122, 5, 122, 2198, 8, 122, 10, 122, 12, 122, 2201, 9, 122, 1, 123, 1, 123, 3, 123, 2205, 8, 123, 1, 123, 1, 123, 3, 123, 2209, 8, 123, 1, 123, 5, 123, 2212, 8, 123, 10, 123, 12, 123, 2215, 9, 123, 1, 124, 1, 124, 3, 124, 2219, 8, 124, 1, 124, 1, 124, 3, 124, 2223, 8, 124, 1, 124, 1, 124, 5, 124, 2227, 8, 124, 10, 124, 12, 124, 2230, 9, 124, 1, 125, 1, 125, 1, 126, 1, 126, 3, 126, 2236, 8, 126, 1, 126, 1, 126, 3, 126, 2240, 8, 126, 1, 126, 1, 126, 5, 126, 2244, 8, 126, 10, 126, 12, 126, 2247, 9, 126, 1, 127, 1, 127, 1, 128, 1, 128, 3, 128, 2253, 8, 128, 1, 128, 1, 128, 3, 128, 2257, 8, 128, 1, 128, 1, 128, 5, 128, 2261, 8, 128, 10, 128, 12, 128, 2264, 9, 128, 1, 129, 1, 129, 1, 130, 1, 130, 3, 130, 2270, 8, 130, 1, 130, 1, 130, 3, 130, 2274, 8, 130, 1, 130, 5, 130, 2277, 8, 130, 10, 130, 12, 130, 2280, 9, 130, 1, 131, 1, 131, 3, 131, 2284, 8, 131, 5, 131, 2286, 8, 131, 10, 131, 12, 131, 2289, 9, 131, 1, 131, 1, 131, 3, 131, 2293, 8, 131, 1, 131, 3, 131, 2296, 8, 131, 1, 132, 1, 132, 1, 132, 4, 132, 2301, 8, 132, 11, 132, 12, 132, 2302, 1, 132, 3, 132, 2306, 8, 132, 1, 133, 1, 133, 1, 133, 3, 133, 2311, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2320, 8, 133, 1, 133, 1, 133, 3, 133, 2324, 8, 133, 1, 133, 3, 133, 2327, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 2340, 8, 134, 1, 134, 3, 134, 2343, 8, 134, 1, 134, 1, 134, 1, 135, 3, 135, 2348, 8, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 2362, 8, 136, 1, 137, 1, 137, 3, 137, 2366, 8, 137, 1, 137, 5, 137, 2369, 8, 137, 10, 137, 12, 137, 2372, 9, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2384, 8, 138, 1, 139, 1, 139, 3, 139, 2388, 8, 139, 1, 139, 1, 139, 3, 139, 2392, 8, 139, 1, 139, 1, 139, 3, 139, 2396, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2402, 8, 139, 1, 139, 1, 139, 3, 139, 2406, 8, 139, 1, 139, 1, 139, 3, 139, 2410, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2416, 8, 139, 1, 139, 1, 139, 3, 139, 2420, 8, 139, 1, 139, 1, 139, 3, 139, 2424, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2430, 8, 139, 1, 139, 1, 139, 3, 139, 2434, 8, 139, 1, 139, 1, 139, 3, 139, 2438, 8, 139, 1, 139, 1, 139, 3, 139, 2442, 8, 139, 1, 140, 1, 140, 3, 140, 2446, 8, 140, 1, 140, 3, 140, 2449, 8, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 2463, 8, 142, 1, 143, 1, 143, 1, 144, 1, 144, 3, 144, 2469, 8, 144, 1, 144, 1, 144, 3, 144, 2473, 8, 144, 1, 144, 1, 144, 3, 144, 2477, 8, 144, 5, 144, 2479, 8, 144, 10, 144, 12, 144, 2482, 9, 144, 3, 144, 2484, 8, 144, 1, 144, 1, 144, 1, 145, 1, 145, 3, 145, 2490, 8, 145, 1, 145, 3, 145, 2493, 8, 145, 1, 146, 1, 146, 3, 146, 2497, 8, 146, 1, 146, 1, 146, 3, 146, 2501, 8, 146, 1, 146, 1, 146, 3, 146, 2505, 8, 146, 1, 146, 1, 146, 3, 146, 2509, 8, 146, 5, 146, 2511, 8, 146, 10, 146, 12, 146, 2514, 9, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2520, 8, 147, 1, 147, 3, 147, 2523, 8, 147, 1, 147, 1, 147, 3, 147, 2527, 8, 147, 1, 147, 1, 147, 1, 148, 1, 148, 3, 148, 2533, 8, 148, 1, 148, 1, 148, 3, 148, 2537, 8, 148, 1, 148, 1, 148, 1, 149, 1, 149, 3, 149, 2543, 8, 149, 1, 149, 1, 149, 3, 149, 2547, 8, 149, 1, 149, 1, 149, 3, 149, 2551, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2556, 8, 149, 1, 149, 1, 149, 3, 149, 2560, 8, 149, 1, 149, 1, 149, 3, 149, 2564, 8, 149, 1, 149, 1, 149, 3, 149, 2568, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2573, 8, 149, 1, 149, 3, 149, 2576, 8, 149, 1, 149, 3, 149, 2579, 8, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2585, 8, 149, 1, 149, 1, 149, 3, 149, 2589, 8, 149, 1, 149, 1, 149, 3, 149, 2593, 8, 149, 3, 149, 2595, 8, 149, 1, 149, 1, 149, 3, 149, 2599, 8, 149, 1, 149, 1, 149, 3, 149, 2603, 8, 149, 1, 149, 1, 149, 3, 149, 2607, 8, 149, 5, 149, 2609, 8, 149, 10, 149, 12, 149, 2612, 9, 149, 3, 149, 2614, 8, 149, 1, 149, 1, 149, 3, 149, 2618, 8, 149, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 2624, 8, 151, 1, 151, 1, 151, 1, 151, 3, 151, 2629, 8, 151, 3, 151, 2631, 8, 151, 1, 151, 1, 151, 3, 151, 2635, 8, 151, 1, 152, 1, 152, 3, 152, 2639, 8, 152, 1, 152, 1, 152, 1, 152, 3, 152, 2644, 8, 152, 1, 152, 1, 152, 3, 152, 2648, 8, 152, 1, 153, 1, 153, 1, 153, 3, 153, 2653, 8, 153, 1, 153, 1, 153, 3, 153, 2657, 8, 153, 1, 153, 1, 153, 3, 153, 2661, 8, 153, 1, 153, 1, 153, 3, 153, 2665, 8, 153, 5, 153, 2667, 8, 153, 10, 153, 12, 153, 2670, 9, 153, 1, 153, 1, 153, 3, 153, 2674, 8, 153, 1, 154, 1, 154, 3, 154, 2678, 8, 154, 1, 154, 4, 154, 2681, 8, 154, 11, 154, 12, 154, 2682, 1, 155, 1, 155, 3, 155, 2687, 8, 155, 1, 155, 1, 155, 3, 155, 2691, 8, 155, 1, 155, 1, 155, 3, 155, 2695, 8, 155, 1, 155, 1, 155, 3, 155, 2699, 8, 155, 1, 155, 3, 155, 2702, 8, 155, 1, 155, 3, 155, 2705, 8, 155, 1, 155, 1, 155, 1, 156, 1, 156, 3, 156, 2711, 8, 156, 1, 156, 1, 156, 3, 156, 2715, 8, 156, 1, 156, 1, 156, 3, 156, 2719, 8, 156, 1, 156, 1, 156, 3, 156, 2723, 8, 156, 1, 156, 3, 156, 2726, 8, 156, 1, 156, 3, 156, 2729, 8, 156, 1, 156, 1, 156, 1, 157, 1, 157, 3, 157, 2735, 8, 157, 1, 157, 1, 157, 3, 157, 2739, 8, 157, 1, 158, 1, 158, 3, 158, 2743, 8, 158, 1, 158, 4, 158, 2746, 8, 158, 11, 158, 12, 158, 2747, 1, 158, 1, 158, 3, 158, 2752, 8, 158, 1, 158, 1, 158, 3, 158, 2756, 8, 158, 1, 158, 4, 158, 2759, 8, 158, 11, 158, 12, 158, 2760, 3, 158, 2763, 8, 158, 1, 158, 3, 158, 2766, 8, 158, 1, 158, 1, 158, 3, 158, 2770, 8, 158, 1, 158, 3, 158, 2773, 8, 158, 1, 158, 3, 158, 2776, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 3, 159, 2782, 8, 159, 1, 159, 1, 159, 3, 159, 2786, 8, 159, 1, 159, 1, 159, 3, 159, 2790, 8, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 3, 161, 2798, 8, 161, 1, 162, 1, 162, 1, 162, 3, 162, 2803, 8, 162, 1, 163, 1, 163, 3, 163, 2807, 8, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 2824, 8, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 0, 2, 98, 154, 173, 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, 0, 11, 2, 0, 130, 130, 135, 135, 2, 0, 53, 54, 75, 76, 2, 0, 6, 6, 13, 17, 1, 0, 19, 20, 2, 0, 21, 21, 155, 155, 2, 0, 22, 23, 152, 152, 2, 0, 87, 87, 140, 140, 28, 0, 48, 48, 50, 50, 52, 52, 55, 58, 61, 61, 63, 64, 66, 68, 70, 71, 74, 74, 77, 77, 79, 79, 84, 86, 90, 90, 94, 95, 97, 97, 99, 99, 101, 104, 106, 109, 111, 112, 123, 128, 130, 131, 133, 133, 139, 139, 141, 141, 144, 144, 148, 148, 151, 151, 153, 153, 2, 0, 14, 14, 27, 30, 2, 0, 16, 16, 31, 34, 2, 0, 35, 45, 155, 155, 3216, 0, 346, 1, 0, 0, 0, 2, 366, 1, 0, 0, 0, 4, 399, 1, 0, 0, 0, 6, 401, 1, 0, 0, 0, 8, 423, 1, 0, 0, 0, 10, 465, 1, 0, 0, 0, 12, 467, 1, 0, 0, 0, 14, 497, 1, 0, 0, 0, 16, 518, 1, 0, 0, 0, 18, 529, 1, 0, 0, 0, 20, 535, 1, 0, 0, 0, 22, 586, 1, 0, 0, 0, 24, 588, 1, 0, 0, 0, 26, 602, 1, 0, 0, 0, 28, 606, 1, 0, 0, 0, 30, 625, 1, 0, 0, 0, 32, 627, 1, 0, 0, 0, 34, 639, 1, 0, 0, 0, 36, 682, 1, 0, 0, 0, 38, 696, 1, 0, 0, 0, 40, 740, 1, 0, 0, 0, 42, 742, 1, 0, 0, 0, 44, 752, 1, 0, 0, 0, 46, 758, 1, 0, 0, 0, 48, 793, 1, 0, 0, 0, 50, 838, 1, 0, 0, 0, 52, 897, 1, 0, 0, 0, 54, 905, 1, 0, 0, 0, 56, 922, 1, 0, 0, 0, 58, 939, 1, 0, 0, 0, 60, 941, 1, 0, 0, 0, 62, 961, 1, 0, 0, 0, 64, 972, 1, 0, 0, 0, 66, 974, 1, 0, 0, 0, 68, 987, 1, 0, 0, 0, 70, 991, 1, 0, 0, 0, 72, 995, 1, 0, 0, 0, 74, 1006, 1, 0, 0, 0, 76, 1018, 1, 0, 0, 0, 78, 1020, 1, 0, 0, 0, 80, 1029, 1, 0, 0, 0, 82, 1033, 1, 0, 0, 0, 84, 1037, 1, 0, 0, 0, 86, 1043, 1, 0, 0, 0, 88, 1051, 1, 0, 0, 0, 90, 1065, 1, 0, 0, 0, 92, 1069, 1, 0, 0, 0, 94, 1083, 1, 0, 0, 0, 96, 1094, 1, 0, 0, 0, 98, 1184, 1, 0, 0, 0, 100, 1193, 1, 0, 0, 0, 102, 1200, 1, 0, 0, 0, 104, 1208, 1, 0, 0, 0, 106, 1210, 1, 0, 0, 0, 108, 1215, 1, 0, 0, 0, 110, 1230, 1, 0, 0, 0, 112, 1234, 1, 0, 0, 0, 114, 1236, 1, 0, 0, 0, 116, 1244, 1, 0, 0, 0, 118, 1252, 1, 0, 0, 0, 120, 1256, 1, 0, 0, 0, 122, 1274, 1, 0, 0, 0, 124, 1309, 1, 0, 0, 0, 126, 1323, 1, 0, 0, 0, 128, 1327, 1, 0, 0, 0, 130, 1364, 1, 0, 0, 0, 132, 1370, 1, 0, 0, 0, 134, 1382, 1, 0, 0, 0, 136, 1400, 1, 0, 0, 0, 138, 1406, 1, 0, 0, 0, 140, 1408, 1, 0, 0, 0, 142, 1448, 1, 0, 0, 0, 144, 1459, 1, 0, 0, 0, 146, 1475, 1, 0, 0, 0, 148, 1489, 1, 0, 0, 0, 150, 1500, 1, 0, 0, 0, 152, 1515, 1, 0, 0, 0, 154, 1531, 1, 0, 0, 0, 156, 1552, 1, 0, 0, 0, 158, 1562, 1, 0, 0, 0, 160, 1568, 1, 0, 0, 0, 162, 1590, 1, 0, 0, 0, 164, 1592, 1, 0, 0, 0, 166, 1610, 1, 0, 0, 0, 168, 1622, 1, 0, 0, 0, 170, 1642, 1, 0, 0, 0, 172, 1650, 1, 0, 0, 0, 174, 1657, 1, 0, 0, 0, 176, 1701, 1, 0, 0, 0, 178, 1710, 1, 0, 0, 0, 180, 1712, 1, 0, 0, 0, 182, 1727, 1, 0, 0, 0, 184, 1731, 1, 0, 0, 0, 186, 1735, 1, 0, 0, 0, 188, 1742, 1, 0, 0, 0, 190, 1746, 1, 0, 0, 0, 192, 1771, 1, 0, 0, 0, 194, 1773, 1, 0, 0, 0, 196, 1789, 1, 0, 0, 0, 198, 1791, 1, 0, 0, 0, 200, 1815, 1, 0, 0, 0, 202, 1865, 1, 0, 0, 0, 204, 1867, 1, 0, 0, 0, 206, 1897, 1, 0, 0, 0, 208, 1938, 1, 0, 0, 0, 210, 1959, 1, 0, 0, 0, 212, 1969, 1, 0, 0, 0, 214, 1975, 1, 0, 0, 0, 216, 2012, 1, 0, 0, 0, 218, 2061, 1, 0, 0, 0, 220, 2073, 1, 0, 0, 0, 222, 2085, 1, 0, 0, 0, 224, 2087, 1, 0, 0, 0, 226, 2089, 1, 0, 0, 0, 228, 2091, 1, 0, 0, 0, 230, 2093, 1, 0, 0, 0, 232, 2095, 1, 0, 0, 0, 234, 2105, 1, 0, 0, 0, 236, 2115, 1, 0, 0, 0, 238, 2131, 1, 0, 0, 0, 240, 2184, 1, 0, 0, 0, 242, 2186, 1, 0, 0, 0, 244, 2188, 1, 0, 0, 0, 246, 2202, 1, 0, 0, 0, 248, 2216, 1, 0, 0, 0, 250, 2231, 1, 0, 0, 0, 252, 2233, 1, 0, 0, 0, 254, 2248, 1, 0, 0, 0, 256, 2250, 1, 0, 0, 0, 258, 2265, 1, 0, 0, 0, 260, 2267, 1, 0, 0, 0, 262, 2287, 1, 0, 0, 0, 264, 2297, 1, 0, 0, 0, 266, 2326, 1, 0, 0, 0, 268, 2339, 1, 0, 0, 0, 270, 2347, 1, 0, 0, 0, 272, 2361, 1, 0, 0, 0, 274, 2363, 1, 0, 0, 0, 276, 2383, 1, 0, 0, 0, 278, 2441, 1, 0, 0, 0, 280, 2443, 1, 0, 0, 0, 282, 2450, 1, 0, 0, 0, 284, 2462, 1, 0, 0, 0, 286, 2464, 1, 0, 0, 0, 288, 2466, 1, 0, 0, 0, 290, 2487, 1, 0, 0, 0, 292, 2494, 1, 0, 0, 0, 294, 2519, 1, 0, 0, 0, 296, 2530, 1, 0, 0, 0, 298, 2617, 1, 0, 0, 0, 300, 2619, 1, 0, 0, 0, 302, 2634, 1, 0, 0, 0, 304, 2636, 1, 0, 0, 0, 306, 2673, 1, 0, 0, 0, 308, 2675, 1, 0, 0, 0, 310, 2684, 1, 0, 0, 0, 312, 2708, 1, 0, 0, 0, 314, 2732, 1, 0, 0, 0, 316, 2762, 1, 0, 0, 0, 318, 2779, 1, 0, 0, 0, 320, 2793, 1, 0, 0, 0, 322, 2797, 1, 0, 0, 0, 324, 2799, 1, 0, 0, 0, 326, 2804, 1, 0, 0, 0, 328, 2810, 1, 0, 0, 0, 330, 2812, 1, 0, 0, 0, 332, 2814, 1, 0, 0, 0, 334, 2816, 1, 0, 0, 0, 336, 2823, 1, 0, 0, 0, 338, 2825, 1, 0, 0, 0, 340, 2827, 1, 0, 0, 0, 342, 2829, 1, 0, 0, 0, 344, 2831, 1, 0, 0, 0, 346, 357, 3, 2, 1, 0, 347, 349, 5, 172, 0, 0, 348, 347, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 352, 5, 1, 0, 0, 351, 353, 5, 172, 0, 0, 352, 351, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 356, 3, 2, 1, 0, 355, 348, 1, 0, 0, 0, 356, 359, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 360, 362, 5, 172, 0, 0, 361, 360, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 364, 5, 0, 0, 1, 364, 1, 1, 0, 0, 0, 365, 367, 3, 104, 52, 0, 366, 365, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 370, 5, 172, 0, 0, 369, 368, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 376, 3, 4, 2, 0, 372, 374, 5, 172, 0, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 5, 1, 0, 0, 376, 373, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 3, 1, 0, 0, 0, 378, 400, 3, 118, 59, 0, 379, 400, 3, 46, 23, 0, 380, 400, 3, 48, 24, 0, 381, 400, 3, 50, 25, 0, 382, 400, 3, 54, 27, 0, 383, 400, 3, 56, 28, 0, 384, 400, 3, 72, 36, 0, 385, 400, 3, 74, 37, 0, 386, 400, 3, 6, 3, 0, 387, 400, 3, 12, 6, 0, 388, 400, 3, 14, 7, 0, 389, 400, 3, 30, 15, 0, 390, 400, 3, 34, 17, 0, 391, 400, 3, 32, 16, 0, 392, 400, 3, 110, 55, 0, 393, 400, 3, 112, 56, 0, 394, 400, 3, 16, 8, 0, 395, 400, 3, 18, 9, 0, 396, 400, 3, 20, 10, 0, 397, 400, 3, 26, 13, 0, 398, 400, 3, 28, 14, 0, 399, 378, 1, 0, 0, 0, 399, 379, 1, 0, 0, 0, 399, 380, 1, 0, 0, 0, 399, 381, 1, 0, 0, 0, 399, 382, 1, 0, 0, 0, 399, 383, 1, 0, 0, 0, 399, 384, 1, 0, 0, 0, 399, 385, 1, 0, 0, 0, 399, 386, 1, 0, 0, 0, 399, 387, 1, 0, 0, 0, 399, 388, 1, 0, 0, 0, 399, 389, 1, 0, 0, 0, 399, 390, 1, 0, 0, 0, 399, 391, 1, 0, 0, 0, 399, 392, 1, 0, 0, 0, 399, 393, 1, 0, 0, 0, 399, 394, 1, 0, 0, 0, 399, 395, 1, 0, 0, 0, 399, 396, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 398, 1, 0, 0, 0, 400, 5, 1, 0, 0, 0, 401, 402, 5, 67, 0, 0, 402, 403, 5, 172, 0, 0, 403, 412, 3, 334, 167, 0, 404, 406, 5, 172, 0, 0, 405, 404, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 409, 3, 8, 4, 0, 408, 410, 5, 172, 0, 0, 409, 408, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 413, 1, 0, 0, 0, 411, 413, 5, 172, 0, 0, 412, 405, 1, 0, 0, 0, 412, 411, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 415, 5, 88, 0, 0, 415, 416, 5, 172, 0, 0, 416, 421, 3, 10, 5, 0, 417, 419, 5, 172, 0, 0, 418, 417, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 422, 3, 42, 21, 0, 421, 418, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 7, 1, 0, 0, 0, 423, 425, 5, 2, 0, 0, 424, 426, 5, 172, 0, 0, 425, 424, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 438, 3, 334, 167, 0, 428, 430, 5, 172, 0, 0, 429, 428, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 433, 5, 3, 0, 0, 432, 434, 5, 172, 0, 0, 433, 432, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 437, 3, 334, 167, 0, 436, 429, 1, 0, 0, 0, 437, 440, 1, 0, 0, 0, 438, 436, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 442, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 441, 443, 5, 172, 0, 0, 442, 441, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 445, 5, 4, 0, 0, 445, 9, 1, 0, 0, 0, 446, 466, 3, 40, 20, 0, 447, 449, 5, 2, 0, 0, 448, 450, 5, 172, 0, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 453, 3, 118, 59, 0, 452, 454, 5, 172, 0, 0, 453, 452, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 456, 5, 4, 0, 0, 456, 466, 1, 0, 0, 0, 457, 466, 3, 320, 160, 0, 458, 459, 3, 320, 160, 0, 459, 461, 5, 5, 0, 0, 460, 462, 5, 172, 0, 0, 461, 460, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 464, 3, 334, 167, 0, 464, 466, 1, 0, 0, 0, 465, 446, 1, 0, 0, 0, 465, 447, 1, 0, 0, 0, 465, 457, 1, 0, 0, 0, 465, 458, 1, 0, 0, 0, 466, 11, 1, 0, 0, 0, 467, 468, 5, 67, 0, 0, 468, 469, 5, 172, 0, 0, 469, 470, 3, 334, 167, 0, 470, 471, 5, 172, 0, 0, 471, 472, 5, 88, 0, 0, 472, 473, 5, 172, 0, 0, 473, 475, 5, 2, 0, 0, 474, 476, 5, 172, 0, 0, 475, 474, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 488, 5, 158, 0, 0, 478, 480, 5, 172, 0, 0, 479, 478, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 483, 5, 3, 0, 0, 482, 484, 5, 172, 0, 0, 483, 482, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 487, 5, 158, 0, 0, 486, 479, 1, 0, 0, 0, 487, 490, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 491, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 491, 492, 5, 4, 0, 0, 492, 493, 5, 172, 0, 0, 493, 494, 5, 57, 0, 0, 494, 495, 5, 172, 0, 0, 495, 496, 5, 62, 0, 0, 496, 13, 1, 0, 0, 0, 497, 498, 5, 67, 0, 0, 498, 499, 5, 172, 0, 0, 499, 501, 5, 2, 0, 0, 500, 502, 5, 172, 0, 0, 501, 500, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 505, 3, 118, 59, 0, 504, 506, 5, 172, 0, 0, 505, 504, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 5, 4, 0, 0, 508, 509, 5, 172, 0, 0, 509, 510, 5, 137, 0, 0, 510, 511, 5, 172, 0, 0, 511, 516, 5, 158, 0, 0, 512, 514, 5, 172, 0, 0, 513, 512, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 517, 3, 42, 21, 0, 516, 513, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 15, 1, 0, 0, 0, 518, 519, 5, 85, 0, 0, 519, 520, 5, 172, 0, 0, 520, 521, 5, 71, 0, 0, 521, 522, 5, 172, 0, 0, 522, 527, 5, 158, 0, 0, 523, 525, 5, 172, 0, 0, 524, 523, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 528, 3, 42, 21, 0, 527, 524, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 17, 1, 0, 0, 0, 529, 530, 5, 94, 0, 0, 530, 531, 5, 172, 0, 0, 531, 532, 5, 71, 0, 0, 532, 533, 5, 172, 0, 0, 533, 534, 5, 158, 0, 0, 534, 19, 1, 0, 0, 0, 535, 536, 5, 55, 0, 0, 536, 537, 5, 172, 0, 0, 537, 542, 5, 158, 0, 0, 538, 539, 5, 172, 0, 0, 539, 540, 5, 52, 0, 0, 540, 541, 5, 172, 0, 0, 541, 543, 3, 334, 167, 0, 542, 538, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 5, 172, 0, 0, 545, 547, 5, 2, 0, 0, 546, 548, 5, 172, 0, 0, 547, 546, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 550, 5, 72, 0, 0, 550, 551, 5, 172, 0, 0, 551, 560, 3, 336, 168, 0, 552, 554, 5, 172, 0, 0, 553, 552, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 557, 5, 3, 0, 0, 556, 558, 5, 172, 0, 0, 557, 556, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 561, 3, 24, 12, 0, 560, 553, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 563, 1, 0, 0, 0, 562, 564, 5, 172, 0, 0, 563, 562, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 5, 4, 0, 0, 566, 21, 1, 0, 0, 0, 567, 581, 3, 336, 168, 0, 568, 570, 5, 172, 0, 0, 569, 568, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 573, 5, 6, 0, 0, 572, 574, 5, 172, 0, 0, 573, 572, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 582, 1, 0, 0, 0, 575, 577, 5, 172, 0, 0, 576, 575, 1, 0, 0, 0, 577, 580, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 582, 1, 0, 0, 0, 580, 578, 1, 0, 0, 0, 581, 569, 1, 0, 0, 0, 581, 578, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 584, 3, 284, 142, 0, 584, 587, 1, 0, 0, 0, 585, 587, 3, 336, 168, 0, 586, 567, 1, 0, 0, 0, 586, 585, 1, 0, 0, 0, 587, 23, 1, 0, 0, 0, 588, 599, 3, 22, 11, 0, 589, 591, 5, 172, 0, 0, 590, 589, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 5, 3, 0, 0, 593, 595, 5, 172, 0, 0, 594, 593, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 598, 3, 22, 11, 0, 597, 590, 1, 0, 0, 0, 598, 601, 1, 0, 0, 0, 599, 597, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 25, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 602, 603, 5, 77, 0, 0, 603, 604, 5, 172, 0, 0, 604, 605, 3, 334, 167, 0, 605, 27, 1, 0, 0, 0, 606, 607, 5, 144, 0, 0, 607, 608, 5, 172, 0, 0, 608, 609, 3, 334, 167, 0, 609, 29, 1, 0, 0, 0, 610, 611, 5, 58, 0, 0, 611, 612, 5, 172, 0, 0, 612, 614, 3, 336, 168, 0, 613, 615, 5, 172, 0, 0, 614, 613, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 618, 5, 6, 0, 0, 617, 619, 5, 172, 0, 0, 618, 617, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 621, 3, 230, 115, 0, 621, 626, 1, 0, 0, 0, 622, 623, 5, 58, 0, 0, 623, 624, 5, 172, 0, 0, 624, 626, 3, 298, 149, 0, 625, 610, 1, 0, 0, 0, 625, 622, 1, 0, 0, 0, 626, 31, 1, 0, 0, 0, 627, 628, 5, 63, 0, 0, 628, 629, 5, 172, 0, 0, 629, 630, 5, 116, 0, 0, 630, 631, 5, 172, 0, 0, 631, 632, 5, 135, 0, 0, 632, 633, 5, 172, 0, 0, 633, 634, 3, 334, 167, 0, 634, 635, 5, 172, 0, 0, 635, 636, 5, 99, 0, 0, 636, 637, 5, 172, 0, 0, 637, 638, 5, 158, 0, 0, 638, 33, 1, 0, 0, 0, 639, 640, 5, 69, 0, 0, 640, 641, 5, 172, 0, 0, 641, 642, 5, 105, 0, 0, 642, 643, 5, 172, 0, 0, 643, 645, 3, 300, 150, 0, 644, 646, 5, 172, 0, 0, 645, 644, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 649, 5, 2, 0, 0, 648, 650, 5, 172, 0, 0, 649, 648, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 652, 1, 0, 0, 0, 651, 653, 3, 36, 18, 0, 652, 651, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 655, 1, 0, 0, 0, 654, 656, 5, 172, 0, 0, 655, 654, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 658, 1, 0, 0, 0, 657, 659, 3, 38, 19, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 670, 1, 0, 0, 0, 660, 662, 5, 172, 0, 0, 661, 660, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 665, 5, 3, 0, 0, 664, 666, 5, 172, 0, 0, 665, 664, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 669, 3, 38, 19, 0, 668, 661, 1, 0, 0, 0, 669, 672, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 674, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 673, 675, 5, 172, 0, 0, 674, 673, 1, 0, 0, 0, 674, 675, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, 677, 5, 4, 0, 0, 677, 678, 5, 172, 0, 0, 678, 679, 5, 52, 0, 0, 679, 680, 5, 172, 0, 0, 680, 681, 3, 230, 115, 0, 681, 35, 1, 0, 0, 0, 682, 693, 3, 336, 168, 0, 683, 685, 5, 172, 0, 0, 684, 683, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 688, 5, 3, 0, 0, 687, 689, 5, 172, 0, 0, 688, 687, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 692, 3, 336, 168, 0, 691, 684, 1, 0, 0, 0, 692, 695, 1, 0, 0, 0, 693, 691, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 37, 1, 0, 0, 0, 695, 693, 1, 0, 0, 0, 696, 698, 3, 336, 168, 0, 697, 699, 5, 172, 0, 0, 698, 697, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, 5, 157, 0, 0, 701, 703, 5, 6, 0, 0, 702, 704, 5, 172, 0, 0, 703, 702, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 706, 3, 284, 142, 0, 706, 39, 1, 0, 0, 0, 707, 709, 5, 7, 0, 0, 708, 710, 5, 172, 0, 0, 709, 708, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 722, 5, 158, 0, 0, 712, 714, 5, 172, 0, 0, 713, 712, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 717, 5, 3, 0, 0, 716, 718, 5, 172, 0, 0, 717, 716, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 721, 5, 158, 0, 0, 720, 713, 1, 0, 0, 0, 721, 724, 1, 0, 0, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 725, 1, 0, 0, 0, 724, 722, 1, 0, 0, 0, 725, 741, 5, 8, 0, 0, 726, 741, 5, 158, 0, 0, 727, 729, 5, 89, 0, 0, 728, 730, 5, 172, 0, 0, 729, 728, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 733, 5, 2, 0, 0, 732, 734, 5, 172, 0, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 737, 5, 158, 0, 0, 736, 738, 5, 172, 0, 0, 737, 736, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 741, 5, 4, 0, 0, 740, 707, 1, 0, 0, 0, 740, 726, 1, 0, 0, 0, 740, 727, 1, 0, 0, 0, 741, 41, 1, 0, 0, 0, 742, 744, 5, 2, 0, 0, 743, 745, 5, 172, 0, 0, 744, 743, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 748, 3, 24, 12, 0, 747, 749, 5, 172, 0, 0, 748, 747, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 751, 5, 4, 0, 0, 751, 43, 1, 0, 0, 0, 752, 753, 5, 95, 0, 0, 753, 754, 5, 172, 0, 0, 754, 755, 5, 113, 0, 0, 755, 756, 5, 172, 0, 0, 756, 757, 5, 83, 0, 0, 757, 45, 1, 0, 0, 0, 758, 759, 5, 69, 0, 0, 759, 760, 5, 172, 0, 0, 760, 761, 5, 112, 0, 0, 761, 762, 5, 172, 0, 0, 762, 763, 5, 135, 0, 0, 763, 767, 5, 172, 0, 0, 764, 765, 3, 44, 22, 0, 765, 766, 5, 172, 0, 0, 766, 768, 1, 0, 0, 0, 767, 764, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 771, 3, 334, 167, 0, 770, 772, 5, 172, 0, 0, 771, 770, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 775, 5, 2, 0, 0, 774, 776, 5, 172, 0, 0, 775, 774, 1, 0, 0, 0, 775, 776, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 779, 3, 92, 46, 0, 778, 780, 5, 172, 0, 0, 779, 778, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 786, 1, 0, 0, 0, 781, 783, 5, 3, 0, 0, 782, 784, 5, 172, 0, 0, 783, 782, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 787, 3, 96, 48, 0, 786, 781, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 789, 1, 0, 0, 0, 788, 790, 5, 172, 0, 0, 789, 788, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 5, 4, 0, 0, 792, 47, 1, 0, 0, 0, 793, 794, 5, 69, 0, 0, 794, 795, 5, 172, 0, 0, 795, 796, 5, 125, 0, 0, 796, 797, 5, 172, 0, 0, 797, 798, 5, 135, 0, 0, 798, 802, 5, 172, 0, 0, 799, 800, 3, 44, 22, 0, 800, 801, 5, 172, 0, 0, 801, 803, 1, 0, 0, 0, 802, 799, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 3, 334, 167, 0, 805, 807, 5, 172, 0, 0, 806, 805, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 810, 5, 2, 0, 0, 809, 811, 5, 172, 0, 0, 810, 809, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 814, 3, 52, 26, 0, 813, 815, 5, 172, 0, 0, 814, 813, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 824, 1, 0, 0, 0, 816, 818, 5, 3, 0, 0, 817, 819, 5, 172, 0, 0, 818, 817, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 822, 3, 92, 46, 0, 821, 823, 5, 172, 0, 0, 822, 821, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 825, 1, 0, 0, 0, 824, 816, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 834, 1, 0, 0, 0, 826, 828, 5, 3, 0, 0, 827, 829, 5, 172, 0, 0, 828, 827, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 830, 832, 3, 336, 168, 0, 831, 833, 5, 172, 0, 0, 832, 831, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 835, 1, 0, 0, 0, 834, 826, 1, 0, 0, 0, 834, 835, 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, 836, 837, 5, 4, 0, 0, 837, 49, 1, 0, 0, 0, 838, 839, 5, 69, 0, 0, 839, 840, 5, 172, 0, 0, 840, 841, 5, 125, 0, 0, 841, 842, 5, 172, 0, 0, 842, 843, 5, 135, 0, 0, 843, 844, 5, 172, 0, 0, 844, 845, 5, 91, 0, 0, 845, 849, 5, 172, 0, 0, 846, 847, 3, 44, 22, 0, 847, 848, 5, 172, 0, 0, 848, 850, 1, 0, 0, 0, 849, 846, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 853, 3, 334, 167, 0, 852, 854, 5, 172, 0, 0, 853, 852, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 857, 5, 2, 0, 0, 856, 858, 5, 172, 0, 0, 857, 856, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 868, 3, 52, 26, 0, 860, 862, 5, 172, 0, 0, 861, 860, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 865, 5, 3, 0, 0, 864, 866, 5, 172, 0, 0, 865, 864, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 869, 3, 52, 26, 0, 868, 861, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 868, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 873, 1, 0, 0, 0, 872, 874, 5, 172, 0, 0, 873, 872, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 883, 1, 0, 0, 0, 875, 877, 5, 3, 0, 0, 876, 878, 5, 172, 0, 0, 877, 876, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 881, 3, 92, 46, 0, 880, 882, 5, 172, 0, 0, 881, 880, 1, 0, 0, 0, 881, 882, 1, 0, 0, 0, 882, 884, 1, 0, 0, 0, 883, 875, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 893, 1, 0, 0, 0, 885, 887, 5, 3, 0, 0, 886, 888, 5, 172, 0, 0, 887, 886, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 891, 3, 336, 168, 0, 890, 892, 5, 172, 0, 0, 891, 890, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 894, 1, 0, 0, 0, 893, 885, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 896, 5, 4, 0, 0, 896, 51, 1, 0, 0, 0, 897, 898, 5, 88, 0, 0, 898, 899, 5, 172, 0, 0, 899, 900, 3, 334, 167, 0, 900, 901, 5, 172, 0, 0, 901, 902, 5, 137, 0, 0, 902, 903, 5, 172, 0, 0, 903, 904, 3, 334, 167, 0, 904, 53, 1, 0, 0, 0, 905, 906, 5, 69, 0, 0, 906, 907, 5, 172, 0, 0, 907, 908, 5, 130, 0, 0, 908, 912, 5, 172, 0, 0, 909, 910, 3, 44, 22, 0, 910, 911, 5, 172, 0, 0, 911, 913, 1, 0, 0, 0, 912, 909, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 919, 3, 334, 167, 0, 915, 916, 5, 172, 0, 0, 916, 918, 3, 58, 29, 0, 917, 915, 1, 0, 0, 0, 918, 921, 1, 0, 0, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 55, 1, 0, 0, 0, 921, 919, 1, 0, 0, 0, 922, 923, 5, 69, 0, 0, 923, 924, 5, 172, 0, 0, 924, 925, 5, 141, 0, 0, 925, 926, 5, 172, 0, 0, 926, 927, 3, 334, 167, 0, 927, 928, 5, 172, 0, 0, 928, 929, 5, 52, 0, 0, 929, 930, 5, 172, 0, 0, 930, 932, 3, 98, 49, 0, 931, 933, 5, 172, 0, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 57, 1, 0, 0, 0, 934, 940, 3, 60, 30, 0, 935, 940, 3, 62, 31, 0, 936, 940, 3, 64, 32, 0, 937, 940, 3, 66, 33, 0, 938, 940, 3, 68, 34, 0, 939, 934, 1, 0, 0, 0, 939, 935, 1, 0, 0, 0, 939, 936, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 939, 938, 1, 0, 0, 0, 940, 59, 1, 0, 0, 0, 941, 942, 5, 97, 0, 0, 942, 945, 5, 172, 0, 0, 943, 944, 5, 57, 0, 0, 944, 946, 5, 172, 0, 0, 945, 943, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 949, 5, 155, 0, 0, 948, 947, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 951, 3, 330, 165, 0, 951, 61, 1, 0, 0, 0, 952, 953, 5, 111, 0, 0, 953, 954, 5, 172, 0, 0, 954, 962, 5, 109, 0, 0, 955, 956, 5, 109, 0, 0, 956, 958, 5, 172, 0, 0, 957, 959, 5, 155, 0, 0, 958, 957, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 962, 3, 330, 165, 0, 961, 952, 1, 0, 0, 0, 961, 955, 1, 0, 0, 0, 962, 63, 1, 0, 0, 0, 963, 964, 5, 111, 0, 0, 964, 965, 5, 172, 0, 0, 965, 973, 5, 107, 0, 0, 966, 967, 5, 107, 0, 0, 967, 969, 5, 172, 0, 0, 968, 970, 5, 155, 0, 0, 969, 968, 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 973, 3, 330, 165, 0, 972, 963, 1, 0, 0, 0, 972, 966, 1, 0, 0, 0, 973, 65, 1, 0, 0, 0, 974, 975, 5, 133, 0, 0, 975, 978, 5, 172, 0, 0, 976, 977, 5, 147, 0, 0, 977, 979, 5, 172, 0, 0, 978, 976, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 981, 1, 0, 0, 0, 980, 982, 5, 155, 0, 0, 981, 980, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 984, 3, 330, 165, 0, 984, 67, 1, 0, 0, 0, 985, 986, 5, 111, 0, 0, 986, 988, 5, 172, 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 989, 990, 5, 70, 0, 0, 990, 69, 1, 0, 0, 0, 991, 992, 5, 95, 0, 0, 992, 993, 5, 172, 0, 0, 993, 994, 5, 83, 0, 0, 994, 71, 1, 0, 0, 0, 995, 996, 5, 79, 0, 0, 996, 997, 5, 172, 0, 0, 997, 998, 7, 0, 0, 0, 998, 1002, 5, 172, 0, 0, 999, 1000, 3, 70, 35, 0, 1000, 1001, 5, 172, 0, 0, 1001, 1003, 1, 0, 0, 0, 1002, 999, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1004, 1, 0, 0, 0, 1004, 1005, 3, 334, 167, 0, 1005, 73, 1, 0, 0, 0, 1006, 1007, 5, 50, 0, 0, 1007, 1008, 5, 172, 0, 0, 1008, 1009, 5, 135, 0, 0, 1009, 1010, 5, 172, 0, 0, 1010, 1011, 3, 334, 167, 0, 1011, 1012, 5, 172, 0, 0, 1012, 1013, 3, 76, 38, 0, 1013, 75, 1, 0, 0, 0, 1014, 1019, 3, 78, 39, 0, 1015, 1019, 3, 82, 41, 0, 1016, 1019, 3, 84, 42, 0, 1017, 1019, 3, 86, 43, 0, 1018, 1014, 1, 0, 0, 0, 1018, 1015, 1, 0, 0, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1017, 1, 0, 0, 0, 1019, 77, 1, 0, 0, 0, 1020, 1021, 5, 48, 0, 0, 1021, 1022, 5, 172, 0, 0, 1022, 1023, 3, 328, 164, 0, 1023, 1024, 5, 172, 0, 0, 1024, 1027, 3, 98, 49, 0, 1025, 1026, 5, 172, 0, 0, 1026, 1028, 3, 80, 40, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 79, 1, 0, 0, 0, 1029, 1030, 5, 73, 0, 0, 1030, 1031, 5, 172, 0, 0, 1031, 1032, 3, 230, 115, 0, 1032, 81, 1, 0, 0, 0, 1033, 1034, 5, 79, 0, 0, 1034, 1035, 5, 172, 0, 0, 1035, 1036, 3, 328, 164, 0, 1036, 83, 1, 0, 0, 0, 1037, 1038, 5, 126, 0, 0, 1038, 1039, 5, 172, 0, 0, 1039, 1040, 5, 137, 0, 0, 1040, 1041, 5, 172, 0, 0, 1041, 1042, 3, 334, 167, 0, 1042, 85, 1, 0, 0, 0, 1043, 1044, 5, 126, 0, 0, 1044, 1045, 5, 172, 0, 0, 1045, 1046, 3, 328, 164, 0, 1046, 1047, 5, 172, 0, 0, 1047, 1048, 5, 137, 0, 0, 1048, 1049, 5, 172, 0, 0, 1049, 1050, 3, 328, 164, 0, 1050, 87, 1, 0, 0, 0, 1051, 1062, 3, 90, 45, 0, 1052, 1054, 5, 172, 0, 0, 1053, 1052, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1057, 5, 3, 0, 0, 1056, 1058, 5, 172, 0, 0, 1057, 1056, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1059, 1, 0, 0, 0, 1059, 1061, 3, 90, 45, 0, 1060, 1053, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 89, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 3, 328, 164, 0, 1066, 1067, 5, 172, 0, 0, 1067, 1068, 3, 98, 49, 0, 1068, 91, 1, 0, 0, 0, 1069, 1080, 3, 94, 47, 0, 1070, 1072, 5, 172, 0, 0, 1071, 1070, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1075, 5, 3, 0, 0, 1074, 1076, 5, 172, 0, 0, 1075, 1074, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1079, 3, 94, 47, 0, 1078, 1071, 1, 0, 0, 0, 1079, 1082, 1, 0, 0, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 93, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1083, 1086, 3, 90, 45, 0, 1084, 1085, 5, 172, 0, 0, 1085, 1087, 3, 80, 40, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1092, 1, 0, 0, 0, 1088, 1089, 5, 172, 0, 0, 1089, 1090, 5, 121, 0, 0, 1090, 1091, 5, 172, 0, 0, 1091, 1093, 5, 101, 0, 0, 1092, 1088, 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 95, 1, 0, 0, 0, 1094, 1095, 5, 121, 0, 0, 1095, 1096, 5, 172, 0, 0, 1096, 1098, 5, 101, 0, 0, 1097, 1099, 5, 172, 0, 0, 1098, 1097, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1102, 5, 2, 0, 0, 1101, 1103, 5, 172, 0, 0, 1102, 1101, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1106, 3, 328, 164, 0, 1105, 1107, 5, 172, 0, 0, 1106, 1105, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1109, 5, 4, 0, 0, 1109, 97, 1, 0, 0, 0, 1110, 1111, 6, 49, -1, 0, 1111, 1185, 3, 336, 168, 0, 1112, 1114, 5, 142, 0, 0, 1113, 1115, 5, 172, 0, 0, 1114, 1113, 1, 0, 0, 0, 1114, 1115, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1118, 5, 2, 0, 0, 1117, 1119, 5, 172, 0, 0, 1118, 1117, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 1122, 3, 88, 44, 0, 1121, 1123, 5, 172, 0, 0, 1122, 1121, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1125, 5, 4, 0, 0, 1125, 1185, 1, 0, 0, 0, 1126, 1128, 3, 336, 168, 0, 1127, 1129, 5, 172, 0, 0, 1128, 1127, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1132, 5, 2, 0, 0, 1131, 1133, 5, 172, 0, 0, 1132, 1131, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1136, 3, 88, 44, 0, 1135, 1137, 5, 172, 0, 0, 1136, 1135, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1139, 5, 4, 0, 0, 1139, 1185, 1, 0, 0, 0, 1140, 1142, 3, 336, 168, 0, 1141, 1143, 5, 172, 0, 0, 1142, 1141, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1146, 5, 2, 0, 0, 1145, 1147, 5, 172, 0, 0, 1146, 1145, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1150, 3, 98, 49, 0, 1149, 1151, 5, 172, 0, 0, 1150, 1149, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1154, 5, 3, 0, 0, 1153, 1155, 5, 172, 0, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1158, 3, 98, 49, 0, 1157, 1159, 5, 172, 0, 0, 1158, 1157, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1161, 5, 4, 0, 0, 1161, 1185, 1, 0, 0, 0, 1162, 1164, 5, 151, 0, 0, 1163, 1165, 5, 172, 0, 0, 1164, 1163, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 1, 0, 0, 0, 1166, 1168, 5, 2, 0, 0, 1167, 1169, 5, 172, 0, 0, 1168, 1167, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1172, 3, 330, 165, 0, 1171, 1173, 5, 172, 0, 0, 1172, 1171, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1176, 5, 3, 0, 0, 1175, 1177, 5, 172, 0, 0, 1176, 1175, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1180, 3, 330, 165, 0, 1179, 1181, 5, 172, 0, 0, 1180, 1179, 1, 0, 0, 0, 1180, 1181, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1183, 5, 4, 0, 0, 1183, 1185, 1, 0, 0, 0, 1184, 1110, 1, 0, 0, 0, 1184, 1112, 1, 0, 0, 0, 1184, 1126, 1, 0, 0, 0, 1184, 1140, 1, 0, 0, 0, 1184, 1162, 1, 0, 0, 0, 1185, 1190, 1, 0, 0, 0, 1186, 1187, 10, 5, 0, 0, 1187, 1189, 3, 100, 50, 0, 1188, 1186, 1, 0, 0, 0, 1189, 1192, 1, 0, 0, 0, 1190, 1188, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 99, 1, 0, 0, 0, 1192, 1190, 1, 0, 0, 0, 1193, 1197, 3, 102, 51, 0, 1194, 1196, 3, 102, 51, 0, 1195, 1194, 1, 0, 0, 0, 1196, 1199, 1, 0, 0, 0, 1197, 1195, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 101, 1, 0, 0, 0, 1199, 1197, 1, 0, 0, 0, 1200, 1202, 5, 7, 0, 0, 1201, 1203, 3, 330, 165, 0, 1202, 1201, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1205, 5, 8, 0, 0, 1205, 103, 1, 0, 0, 0, 1206, 1209, 3, 106, 53, 0, 1207, 1209, 3, 108, 54, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1207, 1, 0, 0, 0, 1209, 105, 1, 0, 0, 0, 1210, 1213, 5, 84, 0, 0, 1211, 1212, 5, 172, 0, 0, 1212, 1214, 5, 104, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 107, 1, 0, 0, 0, 1215, 1216, 5, 122, 0, 0, 1216, 109, 1, 0, 0, 0, 1217, 1218, 5, 56, 0, 0, 1218, 1219, 5, 172, 0, 0, 1219, 1231, 5, 139, 0, 0, 1220, 1221, 5, 56, 0, 0, 1221, 1222, 5, 172, 0, 0, 1222, 1223, 5, 139, 0, 0, 1223, 1224, 5, 172, 0, 0, 1224, 1225, 5, 124, 0, 0, 1225, 1226, 5, 172, 0, 0, 1226, 1231, 5, 117, 0, 0, 1227, 1231, 5, 64, 0, 0, 1228, 1231, 5, 128, 0, 0, 1229, 1231, 5, 61, 0, 0, 1230, 1217, 1, 0, 0, 0, 1230, 1220, 1, 0, 0, 0, 1230, 1227, 1, 0, 0, 0, 1230, 1228, 1, 0, 0, 0, 1230, 1229, 1, 0, 0, 0, 1231, 111, 1, 0, 0, 0, 1232, 1235, 3, 114, 57, 0, 1233, 1235, 3, 116, 58, 0, 1234, 1232, 1, 0, 0, 0, 1234, 1233, 1, 0, 0, 0, 1235, 113, 1, 0, 0, 0, 1236, 1237, 5, 103, 0, 0, 1237, 1238, 5, 172, 0, 0, 1238, 1239, 5, 86, 0, 0, 1239, 1242, 5, 172, 0, 0, 1240, 1243, 5, 158, 0, 0, 1241, 1243, 3, 320, 160, 0, 1242, 1240, 1, 0, 0, 0, 1242, 1241, 1, 0, 0, 0, 1243, 115, 1, 0, 0, 0, 1244, 1245, 5, 98, 0, 0, 1245, 1246, 5, 172, 0, 0, 1246, 1247, 3, 320, 160, 0, 1247, 117, 1, 0, 0, 0, 1248, 1250, 3, 120, 60, 0, 1249, 1251, 5, 172, 0, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1253, 1, 0, 0, 0, 1252, 1248, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1255, 3, 124, 62, 0, 1255, 119, 1, 0, 0, 0, 1256, 1257, 5, 123, 0, 0, 1257, 1258, 5, 172, 0, 0, 1258, 1259, 5, 90, 0, 0, 1259, 1260, 5, 172, 0, 0, 1260, 1262, 3, 334, 167, 0, 1261, 1263, 5, 172, 0, 0, 1262, 1261, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1266, 5, 2, 0, 0, 1265, 1267, 5, 172, 0, 0, 1266, 1265, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1270, 3, 122, 61, 0, 1269, 1271, 5, 172, 0, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1273, 5, 4, 0, 0, 1273, 121, 1, 0, 0, 0, 1274, 1285, 3, 144, 72, 0, 1275, 1277, 5, 172, 0, 0, 1276, 1275, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 1, 0, 0, 0, 1278, 1280, 5, 3, 0, 0, 1279, 1281, 5, 172, 0, 0, 1280, 1279, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1284, 3, 144, 72, 0, 1283, 1276, 1, 0, 0, 0, 1284, 1287, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 123, 1, 0, 0, 0, 1287, 1285, 1, 0, 0, 0, 1288, 1295, 3, 128, 64, 0, 1289, 1291, 5, 172, 0, 0, 1290, 1289, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1292, 1, 0, 0, 0, 1292, 1294, 3, 126, 63, 0, 1293, 1290, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1310, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1300, 3, 172, 86, 0, 1299, 1301, 5, 172, 0, 0, 1300, 1299, 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1303, 1, 0, 0, 0, 1302, 1298, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1302, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1307, 3, 128, 64, 0, 1307, 1308, 6, 62, -1, 0, 1308, 1310, 1, 0, 0, 0, 1309, 1288, 1, 0, 0, 0, 1309, 1302, 1, 0, 0, 0, 1310, 125, 1, 0, 0, 0, 1311, 1312, 5, 142, 0, 0, 1312, 1313, 5, 172, 0, 0, 1313, 1315, 5, 49, 0, 0, 1314, 1316, 5, 172, 0, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1317, 1, 0, 0, 0, 1317, 1324, 3, 128, 64, 0, 1318, 1320, 5, 142, 0, 0, 1319, 1321, 5, 172, 0, 0, 1320, 1319, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1324, 3, 128, 64, 0, 1323, 1311, 1, 0, 0, 0, 1323, 1318, 1, 0, 0, 0, 1324, 127, 1, 0, 0, 0, 1325, 1328, 3, 130, 65, 0, 1326, 1328, 3, 132, 66, 0, 1327, 1325, 1, 0, 0, 0, 1327, 1326, 1, 0, 0, 0, 1328, 129, 1, 0, 0, 0, 1329, 1331, 3, 138, 69, 0, 1330, 1332, 5, 172, 0, 0, 1331, 1330, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1334, 1, 0, 0, 0, 1333, 1329, 1, 0, 0, 0, 1334, 1337, 1, 0, 0, 0, 1335, 1333, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1338, 1, 0, 0, 0, 1337, 1335, 1, 0, 0, 0, 1338, 1365, 3, 172, 86, 0, 1339, 1341, 3, 138, 69, 0, 1340, 1342, 5, 172, 0, 0, 1341, 1340, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1344, 1, 0, 0, 0, 1343, 1339, 1, 0, 0, 0, 1344, 1347, 1, 0, 0, 0, 1345, 1343, 1, 0, 0, 0, 1345, 1346, 1, 0, 0, 0, 1346, 1348, 1, 0, 0, 0, 1347, 1345, 1, 0, 0, 0, 1348, 1355, 3, 136, 68, 0, 1349, 1351, 5, 172, 0, 0, 1350, 1349, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1354, 3, 136, 68, 0, 1353, 1350, 1, 0, 0, 0, 1354, 1357, 1, 0, 0, 0, 1355, 1353, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1362, 1, 0, 0, 0, 1357, 1355, 1, 0, 0, 0, 1358, 1360, 5, 172, 0, 0, 1359, 1358, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 3, 172, 86, 0, 1362, 1359, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1365, 1, 0, 0, 0, 1364, 1335, 1, 0, 0, 0, 1364, 1345, 1, 0, 0, 0, 1365, 131, 1, 0, 0, 0, 1366, 1368, 3, 134, 67, 0, 1367, 1369, 5, 172, 0, 0, 1368, 1367, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1371, 1, 0, 0, 0, 1370, 1366, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1370, 1, 0, 0, 0, 1372, 1373, 1, 0, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1375, 3, 130, 65, 0, 1375, 133, 1, 0, 0, 0, 1376, 1378, 3, 138, 69, 0, 1377, 1379, 5, 172, 0, 0, 1378, 1377, 1, 0, 0, 0, 1378, 1379, 1, 0, 0, 0, 1379, 1381, 1, 0, 0, 0, 1380, 1376, 1, 0, 0, 0, 1381, 1384, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1391, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1385, 1387, 3, 136, 68, 0, 1386, 1388, 5, 172, 0, 0, 1387, 1386, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1385, 1, 0, 0, 0, 1390, 1393, 1, 0, 0, 0, 1391, 1389, 1, 0, 0, 0, 1391, 1392, 1, 0, 0, 0, 1392, 1394, 1, 0, 0, 0, 1393, 1391, 1, 0, 0, 0, 1394, 1395, 3, 170, 85, 0, 1395, 135, 1, 0, 0, 0, 1396, 1401, 3, 158, 79, 0, 1397, 1401, 3, 160, 80, 0, 1398, 1401, 3, 164, 82, 0, 1399, 1401, 3, 168, 84, 0, 1400, 1396, 1, 0, 0, 0, 1400, 1397, 1, 0, 0, 0, 1400, 1398, 1, 0, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 137, 1, 0, 0, 0, 1402, 1407, 3, 150, 75, 0, 1403, 1407, 3, 156, 78, 0, 1404, 1407, 3, 142, 71, 0, 1405, 1407, 3, 140, 70, 0, 1406, 1402, 1, 0, 0, 0, 1406, 1403, 1, 0, 0, 0, 1406, 1404, 1, 0, 0, 0, 1406, 1405, 1, 0, 0, 0, 1407, 139, 1, 0, 0, 0, 1408, 1426, 5, 103, 0, 0, 1409, 1410, 5, 172, 0, 0, 1410, 1411, 5, 147, 0, 0, 1411, 1412, 5, 172, 0, 0, 1412, 1414, 5, 92, 0, 0, 1413, 1415, 5, 172, 0, 0, 1414, 1413, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416, 1418, 5, 2, 0, 0, 1417, 1419, 5, 172, 0, 0, 1418, 1417, 1, 0, 0, 0, 1418, 1419, 1, 0, 0, 0, 1419, 1420, 1, 0, 0, 0, 1420, 1422, 3, 88, 44, 0, 1421, 1423, 5, 172, 0, 0, 1422, 1421, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1425, 5, 4, 0, 0, 1425, 1427, 1, 0, 0, 0, 1426, 1409, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1429, 5, 172, 0, 0, 1429, 1430, 5, 88, 0, 0, 1430, 1431, 5, 172, 0, 0, 1431, 1436, 3, 10, 5, 0, 1432, 1434, 5, 172, 0, 0, 1433, 1432, 1, 0, 0, 0, 1433, 1434, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1437, 3, 42, 21, 0, 1436, 1433, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1442, 1, 0, 0, 0, 1438, 1440, 5, 172, 0, 0, 1439, 1438, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1443, 3, 188, 94, 0, 1442, 1439, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 141, 1, 0, 0, 0, 1444, 1446, 3, 120, 60, 0, 1445, 1447, 5, 172, 0, 0, 1446, 1445, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1449, 1, 0, 0, 0, 1448, 1444, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1451, 5, 58, 0, 0, 1451, 1452, 5, 172, 0, 0, 1452, 1457, 3, 298, 149, 0, 1453, 1455, 5, 172, 0, 0, 1454, 1453, 1, 0, 0, 0, 1454, 1455, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1458, 3, 188, 94, 0, 1457, 1454, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 143, 1, 0, 0, 0, 1459, 1473, 3, 334, 167, 0, 1460, 1462, 5, 172, 0, 0, 1461, 1460, 1, 0, 0, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1465, 5, 9, 0, 0, 1464, 1466, 5, 172, 0, 0, 1465, 1464, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1469, 3, 146, 73, 0, 1468, 1470, 5, 172, 0, 0, 1469, 1468, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472, 5, 10, 0, 0, 1472, 1474, 1, 0, 0, 0, 1473, 1461, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 145, 1, 0, 0, 0, 1475, 1486, 3, 148, 74, 0, 1476, 1478, 5, 172, 0, 0, 1477, 1476, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1481, 5, 3, 0, 0, 1480, 1482, 5, 172, 0, 0, 1481, 1480, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1485, 3, 148, 74, 0, 1484, 1477, 1, 0, 0, 0, 1485, 1488, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 147, 1, 0, 0, 0, 1488, 1486, 1, 0, 0, 0, 1489, 1492, 3, 328, 164, 0, 1490, 1491, 5, 172, 0, 0, 1491, 1493, 3, 80, 40, 0, 1492, 1490, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1496, 1, 0, 0, 0, 1494, 1495, 5, 172, 0, 0, 1495, 1497, 3, 188, 94, 0, 1496, 1494, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 149, 1, 0, 0, 0, 1498, 1499, 5, 118, 0, 0, 1499, 1501, 5, 172, 0, 0, 1500, 1498, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1504, 5, 106, 0, 0, 1503, 1505, 5, 172, 0, 0, 1504, 1503, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1509, 3, 190, 95, 0, 1507, 1508, 5, 172, 0, 0, 1508, 1510, 3, 188, 94, 0, 1509, 1507, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1512, 5, 172, 0, 0, 1512, 1514, 3, 152, 76, 0, 1513, 1511, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 151, 1, 0, 0, 0, 1515, 1516, 5, 93, 0, 0, 1516, 1517, 5, 172, 0, 0, 1517, 1518, 3, 154, 77, 0, 1518, 153, 1, 0, 0, 0, 1519, 1520, 6, 77, -1, 0, 1520, 1522, 5, 2, 0, 0, 1521, 1523, 5, 172, 0, 0, 1522, 1521, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1526, 3, 154, 77, 0, 1525, 1527, 5, 172, 0, 0, 1526, 1525, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1528, 1, 0, 0, 0, 1528, 1529, 5, 4, 0, 0, 1529, 1532, 1, 0, 0, 0, 1530, 1532, 3, 334, 167, 0, 1531, 1519, 1, 0, 0, 0, 1531, 1530, 1, 0, 0, 0, 1532, 1549, 1, 0, 0, 0, 1533, 1534, 10, 4, 0, 0, 1534, 1535, 5, 172, 0, 0, 1535, 1536, 5, 100, 0, 0, 1536, 1537, 5, 172, 0, 0, 1537, 1548, 3, 154, 77, 5, 1538, 1543, 10, 3, 0, 0, 1539, 1540, 5, 172, 0, 0, 1540, 1541, 5, 110, 0, 0, 1541, 1542, 5, 172, 0, 0, 1542, 1544, 3, 334, 167, 0, 1543, 1539, 1, 0, 0, 0, 1544, 1545, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1548, 1, 0, 0, 0, 1547, 1533, 1, 0, 0, 0, 1547, 1538, 1, 0, 0, 0, 1548, 1551, 1, 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 155, 1, 0, 0, 0, 1551, 1549, 1, 0, 0, 0, 1552, 1554, 5, 143, 0, 0, 1553, 1555, 5, 172, 0, 0, 1554, 1553, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1556, 1, 0, 0, 0, 1556, 1557, 3, 230, 115, 0, 1557, 1558, 5, 172, 0, 0, 1558, 1559, 5, 52, 0, 0, 1559, 1560, 5, 172, 0, 0, 1560, 1561, 3, 320, 160, 0, 1561, 157, 1, 0, 0, 0, 1562, 1564, 5, 69, 0, 0, 1563, 1565, 5, 172, 0, 0, 1564, 1563, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1567, 3, 190, 95, 0, 1567, 159, 1, 0, 0, 0, 1568, 1570, 5, 108, 0, 0, 1569, 1571, 5, 172, 0, 0, 1570, 1569, 1, 0, 0, 0, 1570, 1571, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1577, 3, 190, 95, 0, 1573, 1574, 5, 172, 0, 0, 1574, 1576, 3, 162, 81, 0, 1575, 1573, 1, 0, 0, 0, 1576, 1579, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 161, 1, 0, 0, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1581, 5, 116, 0, 0, 1581, 1582, 5, 172, 0, 0, 1582, 1583, 5, 106, 0, 0, 1583, 1584, 5, 172, 0, 0, 1584, 1591, 3, 164, 82, 0, 1585, 1586, 5, 116, 0, 0, 1586, 1587, 5, 172, 0, 0, 1587, 1588, 5, 69, 0, 0, 1588, 1589, 5, 172, 0, 0, 1589, 1591, 3, 164, 82, 0, 1590, 1580, 1, 0, 0, 0, 1590, 1585, 1, 0, 0, 0, 1591, 163, 1, 0, 0, 0, 1592, 1594, 5, 131, 0, 0, 1593, 1595, 5, 172, 0, 0, 1594, 1593, 1, 0, 0, 0, 1594, 1595, 1, 0, 0, 0, 1595, 1596, 1, 0, 0, 0, 1596, 1607, 3, 166, 83, 0, 1597, 1599, 5, 172, 0, 0, 1598, 1597, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1600, 1, 0, 0, 0, 1600, 1602, 5, 3, 0, 0, 1601, 1603, 5, 172, 0, 0, 1602, 1601, 1, 0, 0, 0, 1602, 1603, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 3, 166, 83, 0, 1605, 1598, 1, 0, 0, 0, 1606, 1609, 1, 0, 0, 0, 1607, 1605, 1, 0, 0, 0, 1607, 1608, 1, 0, 0, 0, 1608, 165, 1, 0, 0, 0, 1609, 1607, 1, 0, 0, 0, 1610, 1612, 3, 326, 163, 0, 1611, 1613, 5, 172, 0, 0, 1612, 1611, 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1614, 1, 0, 0, 0, 1614, 1616, 5, 6, 0, 0, 1615, 1617, 5, 172, 0, 0, 1616, 1615, 1, 0, 0, 0, 1616, 1617, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1619, 3, 230, 115, 0, 1619, 167, 1, 0, 0, 0, 1620, 1621, 5, 77, 0, 0, 1621, 1623, 5, 172, 0, 0, 1622, 1620, 1, 0, 0, 0, 1622, 1623, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1626, 5, 74, 0, 0, 1625, 1627, 5, 172, 0, 0, 1626, 1625, 1, 0, 0, 0, 1626, 1627, 1, 0, 0, 0, 1627, 1628, 1, 0, 0, 0, 1628, 1639, 3, 230, 115, 0, 1629, 1631, 5, 172, 0, 0, 1630, 1629, 1, 0, 0, 0, 1630, 1631, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 1634, 5, 3, 0, 0, 1633, 1635, 5, 172, 0, 0, 1634, 1633, 1, 0, 0, 0, 1634, 1635, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1638, 3, 230, 115, 0, 1637, 1630, 1, 0, 0, 0, 1638, 1641, 1, 0, 0, 0, 1639, 1637, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 169, 1, 0, 0, 0, 1641, 1639, 1, 0, 0, 0, 1642, 1643, 5, 147, 0, 0, 1643, 1648, 3, 174, 87, 0, 1644, 1646, 5, 172, 0, 0, 1645, 1644, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 1647, 1, 0, 0, 0, 1647, 1649, 3, 188, 94, 0, 1648, 1645, 1, 0, 0, 0, 1648, 1649, 1, 0, 0, 0, 1649, 171, 1, 0, 0, 0, 1650, 1651, 5, 127, 0, 0, 1651, 1652, 3, 174, 87, 0, 1652, 173, 1, 0, 0, 0, 1653, 1655, 5, 172, 0, 0, 1654, 1653, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1658, 5, 78, 0, 0, 1657, 1654, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1659, 1, 0, 0, 0, 1659, 1660, 5, 172, 0, 0, 1660, 1663, 3, 176, 88, 0, 1661, 1662, 5, 172, 0, 0, 1662, 1664, 3, 180, 90, 0, 1663, 1661, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1667, 1, 0, 0, 0, 1665, 1666, 5, 172, 0, 0, 1666, 1668, 3, 182, 91, 0, 1667, 1665, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 1671, 1, 0, 0, 0, 1669, 1670, 5, 172, 0, 0, 1670, 1672, 3, 184, 92, 0, 1671, 1669, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 175, 1, 0, 0, 0, 1673, 1684, 5, 152, 0, 0, 1674, 1676, 5, 172, 0, 0, 1675, 1674, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1679, 5, 3, 0, 0, 1678, 1680, 5, 172, 0, 0, 1679, 1678, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1681, 1, 0, 0, 0, 1681, 1683, 3, 178, 89, 0, 1682, 1675, 1, 0, 0, 0, 1683, 1686, 1, 0, 0, 0, 1684, 1682, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1702, 1, 0, 0, 0, 1686, 1684, 1, 0, 0, 0, 1687, 1698, 3, 178, 89, 0, 1688, 1690, 5, 172, 0, 0, 1689, 1688, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, 5, 3, 0, 0, 1692, 1694, 5, 172, 0, 0, 1693, 1692, 1, 0, 0, 0, 1693, 1694, 1, 0, 0, 0, 1694, 1695, 1, 0, 0, 0, 1695, 1697, 3, 178, 89, 0, 1696, 1689, 1, 0, 0, 0, 1697, 1700, 1, 0, 0, 0, 1698, 1696, 1, 0, 0, 0, 1698, 1699, 1, 0, 0, 0, 1699, 1702, 1, 0, 0, 0, 1700, 1698, 1, 0, 0, 0, 1701, 1673, 1, 0, 0, 0, 1701, 1687, 1, 0, 0, 0, 1702, 177, 1, 0, 0, 0, 1703, 1704, 3, 230, 115, 0, 1704, 1705, 5, 172, 0, 0, 1705, 1706, 5, 52, 0, 0, 1706, 1707, 5, 172, 0, 0, 1707, 1708, 3, 320, 160, 0, 1708, 1711, 1, 0, 0, 0, 1709, 1711, 3, 230, 115, 0, 1710, 1703, 1, 0, 0, 0, 1710, 1709, 1, 0, 0, 0, 1711, 179, 1, 0, 0, 0, 1712, 1713, 5, 120, 0, 0, 1713, 1714, 5, 172, 0, 0, 1714, 1715, 5, 57, 0, 0, 1715, 1716, 5, 172, 0, 0, 1716, 1724, 3, 186, 93, 0, 1717, 1719, 5, 3, 0, 0, 1718, 1720, 5, 172, 0, 0, 1719, 1718, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1723, 3, 186, 93, 0, 1722, 1717, 1, 0, 0, 0, 1723, 1726, 1, 0, 0, 0, 1724, 1722, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 181, 1, 0, 0, 0, 1726, 1724, 1, 0, 0, 0, 1727, 1728, 5, 153, 0, 0, 1728, 1729, 5, 172, 0, 0, 1729, 1730, 3, 230, 115, 0, 1730, 183, 1, 0, 0, 0, 1731, 1732, 5, 102, 0, 0, 1732, 1733, 5, 172, 0, 0, 1733, 1734, 3, 230, 115, 0, 1734, 185, 1, 0, 0, 0, 1735, 1740, 3, 230, 115, 0, 1736, 1738, 5, 172, 0, 0, 1737, 1736, 1, 0, 0, 0, 1737, 1738, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1741, 7, 1, 0, 0, 1740, 1737, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 187, 1, 0, 0, 0, 1742, 1743, 5, 146, 0, 0, 1743, 1744, 5, 172, 0, 0, 1744, 1745, 3, 230, 115, 0, 1745, 189, 1, 0, 0, 0, 1746, 1757, 3, 192, 96, 0, 1747, 1749, 5, 172, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1752, 5, 3, 0, 0, 1751, 1753, 5, 172, 0, 0, 1752, 1751, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 1756, 3, 192, 96, 0, 1755, 1748, 1, 0, 0, 0, 1756, 1759, 1, 0, 0, 0, 1757, 1755, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 191, 1, 0, 0, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1762, 3, 320, 160, 0, 1761, 1763, 5, 172, 0, 0, 1762, 1761, 1, 0, 0, 0, 1762, 1763, 1, 0, 0, 0, 1763, 1764, 1, 0, 0, 0, 1764, 1766, 5, 6, 0, 0, 1765, 1767, 5, 172, 0, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1769, 3, 194, 97, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1772, 3, 194, 97, 0, 1771, 1760, 1, 0, 0, 0, 1771, 1770, 1, 0, 0, 0, 1772, 193, 1, 0, 0, 0, 1773, 1774, 3, 196, 98, 0, 1774, 195, 1, 0, 0, 0, 1775, 1782, 3, 198, 99, 0, 1776, 1778, 5, 172, 0, 0, 1777, 1776, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1781, 3, 200, 100, 0, 1780, 1777, 1, 0, 0, 0, 1781, 1784, 1, 0, 0, 0, 1782, 1780, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1790, 1, 0, 0, 0, 1784, 1782, 1, 0, 0, 0, 1785, 1786, 5, 2, 0, 0, 1786, 1787, 3, 196, 98, 0, 1787, 1788, 5, 4, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1775, 1, 0, 0, 0, 1789, 1785, 1, 0, 0, 0, 1790, 197, 1, 0, 0, 0, 1791, 1793, 5, 2, 0, 0, 1792, 1794, 5, 172, 0, 0, 1793, 1792, 1, 0, 0, 0, 1793, 1794, 1, 0, 0, 0, 1794, 1799, 1, 0, 0, 0, 1795, 1797, 3, 320, 160, 0, 1796, 1798, 5, 172, 0, 0, 1797, 1796, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1800, 1, 0, 0, 0, 1799, 1795, 1, 0, 0, 0, 1799, 1800, 1, 0, 0, 0, 1800, 1805, 1, 0, 0, 0, 1801, 1803, 3, 210, 105, 0, 1802, 1804, 5, 172, 0, 0, 1803, 1802, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1806, 1, 0, 0, 0, 1805, 1801, 1, 0, 0, 0, 1805, 1806, 1, 0, 0, 0, 1806, 1811, 1, 0, 0, 0, 1807, 1809, 3, 206, 103, 0, 1808, 1810, 5, 172, 0, 0, 1809, 1808, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 1812, 1, 0, 0, 0, 1811, 1807, 1, 0, 0, 0, 1811, 1812, 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1814, 5, 4, 0, 0, 1814, 199, 1, 0, 0, 0, 1815, 1817, 3, 202, 101, 0, 1816, 1818, 5, 172, 0, 0, 1817, 1816, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1820, 3, 198, 99, 0, 1820, 201, 1, 0, 0, 0, 1821, 1823, 3, 340, 170, 0, 1822, 1824, 5, 172, 0, 0, 1823, 1822, 1, 0, 0, 0, 1823, 1824, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1827, 3, 344, 172, 0, 1826, 1828, 5, 172, 0, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1830, 1, 0, 0, 0, 1829, 1831, 3, 204, 102, 0, 1830, 1829, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1833, 1, 0, 0, 0, 1832, 1834, 5, 172, 0, 0, 1833, 1832, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 1835, 1, 0, 0, 0, 1835, 1836, 3, 344, 172, 0, 1836, 1866, 1, 0, 0, 0, 1837, 1839, 3, 344, 172, 0, 1838, 1840, 5, 172, 0, 0, 1839, 1838, 1, 0, 0, 0, 1839, 1840, 1, 0, 0, 0, 1840, 1842, 1, 0, 0, 0, 1841, 1843, 3, 204, 102, 0, 1842, 1841, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1845, 1, 0, 0, 0, 1844, 1846, 5, 172, 0, 0, 1845, 1844, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1847, 1, 0, 0, 0, 1847, 1849, 3, 344, 172, 0, 1848, 1850, 5, 172, 0, 0, 1849, 1848, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 1851, 1, 0, 0, 0, 1851, 1852, 3, 342, 171, 0, 1852, 1866, 1, 0, 0, 0, 1853, 1855, 3, 344, 172, 0, 1854, 1856, 5, 172, 0, 0, 1855, 1854, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 1858, 1, 0, 0, 0, 1857, 1859, 3, 204, 102, 0, 1858, 1857, 1, 0, 0, 0, 1858, 1859, 1, 0, 0, 0, 1859, 1861, 1, 0, 0, 0, 1860, 1862, 5, 172, 0, 0, 1861, 1860, 1, 0, 0, 0, 1861, 1862, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 1864, 3, 344, 172, 0, 1864, 1866, 1, 0, 0, 0, 1865, 1821, 1, 0, 0, 0, 1865, 1837, 1, 0, 0, 0, 1865, 1853, 1, 0, 0, 0, 1866, 203, 1, 0, 0, 0, 1867, 1869, 5, 7, 0, 0, 1868, 1870, 5, 172, 0, 0, 1869, 1868, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1875, 1, 0, 0, 0, 1871, 1873, 3, 320, 160, 0, 1872, 1874, 5, 172, 0, 0, 1873, 1872, 1, 0, 0, 0, 1873, 1874, 1, 0, 0, 0, 1874, 1876, 1, 0, 0, 0, 1875, 1871, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1881, 1, 0, 0, 0, 1877, 1879, 3, 208, 104, 0, 1878, 1880, 5, 172, 0, 0, 1879, 1878, 1, 0, 0, 0, 1879, 1880, 1, 0, 0, 0, 1880, 1882, 1, 0, 0, 0, 1881, 1877, 1, 0, 0, 0, 1881, 1882, 1, 0, 0, 0, 1882, 1887, 1, 0, 0, 0, 1883, 1885, 3, 214, 107, 0, 1884, 1886, 5, 172, 0, 0, 1885, 1884, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1888, 1, 0, 0, 0, 1887, 1883, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 1893, 1, 0, 0, 0, 1889, 1891, 3, 206, 103, 0, 1890, 1892, 5, 172, 0, 0, 1891, 1890, 1, 0, 0, 0, 1891, 1892, 1, 0, 0, 0, 1892, 1894, 1, 0, 0, 0, 1893, 1889, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1896, 5, 8, 0, 0, 1896, 205, 1, 0, 0, 0, 1897, 1899, 5, 9, 0, 0, 1898, 1900, 5, 172, 0, 0, 1899, 1898, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 1934, 1, 0, 0, 0, 1901, 1903, 3, 328, 164, 0, 1902, 1904, 5, 172, 0, 0, 1903, 1902, 1, 0, 0, 0, 1903, 1904, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1907, 5, 157, 0, 0, 1906, 1908, 5, 172, 0, 0, 1907, 1906, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 1909, 1, 0, 0, 0, 1909, 1911, 3, 230, 115, 0, 1910, 1912, 5, 172, 0, 0, 1911, 1910, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1931, 1, 0, 0, 0, 1913, 1915, 5, 3, 0, 0, 1914, 1916, 5, 172, 0, 0, 1915, 1914, 1, 0, 0, 0, 1915, 1916, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1919, 3, 328, 164, 0, 1918, 1920, 5, 172, 0, 0, 1919, 1918, 1, 0, 0, 0, 1919, 1920, 1, 0, 0, 0, 1920, 1921, 1, 0, 0, 0, 1921, 1923, 5, 157, 0, 0, 1922, 1924, 5, 172, 0, 0, 1923, 1922, 1, 0, 0, 0, 1923, 1924, 1, 0, 0, 0, 1924, 1925, 1, 0, 0, 0, 1925, 1927, 3, 230, 115, 0, 1926, 1928, 5, 172, 0, 0, 1927, 1926, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1930, 1, 0, 0, 0, 1929, 1913, 1, 0, 0, 0, 1930, 1933, 1, 0, 0, 0, 1931, 1929, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1935, 1, 0, 0, 0, 1933, 1931, 1, 0, 0, 0, 1934, 1901, 1, 0, 0, 0, 1934, 1935, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1937, 5, 10, 0, 0, 1937, 207, 1, 0, 0, 0, 1938, 1940, 5, 157, 0, 0, 1939, 1941, 5, 172, 0, 0, 1940, 1939, 1, 0, 0, 0, 1940, 1941, 1, 0, 0, 0, 1941, 1942, 1, 0, 0, 0, 1942, 1956, 3, 228, 114, 0, 1943, 1945, 5, 172, 0, 0, 1944, 1943, 1, 0, 0, 0, 1944, 1945, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1948, 5, 11, 0, 0, 1947, 1949, 5, 157, 0, 0, 1948, 1947, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 1951, 1, 0, 0, 0, 1950, 1952, 5, 172, 0, 0, 1951, 1950, 1, 0, 0, 0, 1951, 1952, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 1955, 3, 228, 114, 0, 1954, 1944, 1, 0, 0, 0, 1955, 1958, 1, 0, 0, 0, 1956, 1954, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 209, 1, 0, 0, 0, 1958, 1956, 1, 0, 0, 0, 1959, 1966, 3, 212, 106, 0, 1960, 1962, 5, 172, 0, 0, 1961, 1960, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1965, 3, 212, 106, 0, 1964, 1961, 1, 0, 0, 0, 1965, 1968, 1, 0, 0, 0, 1966, 1964, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 211, 1, 0, 0, 0, 1968, 1966, 1, 0, 0, 0, 1969, 1971, 5, 157, 0, 0, 1970, 1972, 5, 172, 0, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1974, 3, 226, 113, 0, 1974, 213, 1, 0, 0, 0, 1975, 1977, 5, 152, 0, 0, 1976, 1978, 5, 172, 0, 0, 1977, 1976, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1985, 1, 0, 0, 0, 1979, 1986, 5, 132, 0, 0, 1980, 1981, 5, 49, 0, 0, 1981, 1982, 5, 172, 0, 0, 1982, 1986, 5, 132, 0, 0, 1983, 1986, 5, 138, 0, 0, 1984, 1986, 5, 46, 0, 0, 1985, 1979, 1, 0, 0, 0, 1985, 1980, 1, 0, 0, 0, 1985, 1983, 1, 0, 0, 0, 1985, 1984, 1, 0, 0, 0, 1985, 1986, 1, 0, 0, 0, 1986, 1988, 1, 0, 0, 0, 1987, 1989, 5, 172, 0, 0, 1988, 1987, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 2004, 1, 0, 0, 0, 1990, 1992, 3, 222, 111, 0, 1991, 1990, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1994, 1, 0, 0, 0, 1993, 1995, 5, 172, 0, 0, 1994, 1993, 1, 0, 0, 0, 1994, 1995, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1998, 5, 12, 0, 0, 1997, 1999, 5, 172, 0, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2001, 1, 0, 0, 0, 2000, 2002, 3, 224, 112, 0, 2001, 2000, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2005, 1, 0, 0, 0, 2003, 2005, 3, 330, 165, 0, 2004, 1991, 1, 0, 0, 0, 2004, 2003, 1, 0, 0, 0, 2004, 2005, 1, 0, 0, 0, 2005, 2010, 1, 0, 0, 0, 2006, 2008, 5, 172, 0, 0, 2007, 2006, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2009, 1, 0, 0, 0, 2009, 2011, 3, 216, 108, 0, 2010, 2007, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 215, 1, 0, 0, 0, 2012, 2014, 5, 2, 0, 0, 2013, 2015, 5, 172, 0, 0, 2014, 2013, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2016, 1, 0, 0, 0, 2016, 2018, 3, 320, 160, 0, 2017, 2019, 5, 172, 0, 0, 2018, 2017, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2020, 1, 0, 0, 0, 2020, 2022, 5, 3, 0, 0, 2021, 2023, 5, 172, 0, 0, 2022, 2021, 1, 0, 0, 0, 2022, 2023, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2036, 3, 320, 160, 0, 2025, 2027, 5, 172, 0, 0, 2026, 2025, 1, 0, 0, 0, 2026, 2027, 1, 0, 0, 0, 2027, 2028, 1, 0, 0, 0, 2028, 2030, 5, 11, 0, 0, 2029, 2031, 5, 172, 0, 0, 2030, 2029, 1, 0, 0, 0, 2030, 2031, 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 2034, 3, 188, 94, 0, 2033, 2035, 5, 172, 0, 0, 2034, 2033, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 2037, 1, 0, 0, 0, 2036, 2026, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 2057, 1, 0, 0, 0, 2038, 2040, 5, 172, 0, 0, 2039, 2038, 1, 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 2041, 1, 0, 0, 0, 2041, 2043, 5, 11, 0, 0, 2042, 2044, 5, 172, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2047, 3, 220, 110, 0, 2046, 2048, 5, 172, 0, 0, 2047, 2046, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2051, 5, 3, 0, 0, 2050, 2052, 5, 172, 0, 0, 2051, 2050, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2053, 1, 0, 0, 0, 2053, 2055, 3, 218, 109, 0, 2054, 2056, 5, 172, 0, 0, 2055, 2054, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2058, 1, 0, 0, 0, 2057, 2039, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 2060, 5, 4, 0, 0, 2060, 217, 1, 0, 0, 0, 2061, 2063, 5, 9, 0, 0, 2062, 2064, 5, 172, 0, 0, 2063, 2062, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2066, 1, 0, 0, 0, 2065, 2067, 3, 176, 88, 0, 2066, 2065, 1, 0, 0, 0, 2066, 2067, 1, 0, 0, 0, 2067, 2069, 1, 0, 0, 0, 2068, 2070, 5, 172, 0, 0, 2069, 2068, 1, 0, 0, 0, 2069, 2070, 1, 0, 0, 0, 2070, 2071, 1, 0, 0, 0, 2071, 2072, 5, 10, 0, 0, 2072, 219, 1, 0, 0, 0, 2073, 2075, 5, 9, 0, 0, 2074, 2076, 5, 172, 0, 0, 2075, 2074, 1, 0, 0, 0, 2075, 2076, 1, 0, 0, 0, 2076, 2078, 1, 0, 0, 0, 2077, 2079, 3, 176, 88, 0, 2078, 2077, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2081, 1, 0, 0, 0, 2080, 2082, 5, 172, 0, 0, 2081, 2080, 1, 0, 0, 0, 2081, 2082, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2084, 5, 10, 0, 0, 2084, 221, 1, 0, 0, 0, 2085, 2086, 5, 160, 0, 0, 2086, 223, 1, 0, 0, 0, 2087, 2088, 5, 160, 0, 0, 2088, 225, 1, 0, 0, 0, 2089, 2090, 3, 334, 167, 0, 2090, 227, 1, 0, 0, 0, 2091, 2092, 3, 334, 167, 0, 2092, 229, 1, 0, 0, 0, 2093, 2094, 3, 232, 116, 0, 2094, 231, 1, 0, 0, 0, 2095, 2102, 3, 234, 117, 0, 2096, 2097, 5, 172, 0, 0, 2097, 2098, 5, 119, 0, 0, 2098, 2099, 5, 172, 0, 0, 2099, 2101, 3, 234, 117, 0, 2100, 2096, 1, 0, 0, 0, 2101, 2104, 1, 0, 0, 0, 2102, 2100, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 233, 1, 0, 0, 0, 2104, 2102, 1, 0, 0, 0, 2105, 2112, 3, 236, 118, 0, 2106, 2107, 5, 172, 0, 0, 2107, 2108, 5, 149, 0, 0, 2108, 2109, 5, 172, 0, 0, 2109, 2111, 3, 236, 118, 0, 2110, 2106, 1, 0, 0, 0, 2111, 2114, 1, 0, 0, 0, 2112, 2110, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 235, 1, 0, 0, 0, 2114, 2112, 1, 0, 0, 0, 2115, 2122, 3, 238, 119, 0, 2116, 2117, 5, 172, 0, 0, 2117, 2118, 5, 51, 0, 0, 2118, 2119, 5, 172, 0, 0, 2119, 2121, 3, 238, 119, 0, 2120, 2116, 1, 0, 0, 0, 2121, 2124, 1, 0, 0, 0, 2122, 2120, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 237, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2125, 2127, 5, 113, 0, 0, 2126, 2128, 5, 172, 0, 0, 2127, 2126, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2130, 1, 0, 0, 0, 2129, 2125, 1, 0, 0, 0, 2130, 2133, 1, 0, 0, 0, 2131, 2129, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2134, 1, 0, 0, 0, 2133, 2131, 1, 0, 0, 0, 2134, 2135, 3, 240, 120, 0, 2135, 239, 1, 0, 0, 0, 2136, 2146, 3, 244, 122, 0, 2137, 2139, 5, 172, 0, 0, 2138, 2137, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2142, 3, 242, 121, 0, 2141, 2143, 5, 172, 0, 0, 2142, 2141, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2145, 3, 244, 122, 0, 2145, 2147, 1, 0, 0, 0, 2146, 2138, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2185, 1, 0, 0, 0, 2148, 2150, 3, 244, 122, 0, 2149, 2151, 5, 172, 0, 0, 2150, 2149, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2154, 5, 154, 0, 0, 2153, 2155, 5, 172, 0, 0, 2154, 2153, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 2157, 3, 244, 122, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2159, 6, 120, -1, 0, 2159, 2185, 1, 0, 0, 0, 2160, 2162, 3, 244, 122, 0, 2161, 2163, 5, 172, 0, 0, 2162, 2161, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2166, 3, 242, 121, 0, 2165, 2167, 5, 172, 0, 0, 2166, 2165, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2178, 3, 244, 122, 0, 2169, 2171, 5, 172, 0, 0, 2170, 2169, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2174, 3, 242, 121, 0, 2173, 2175, 5, 172, 0, 0, 2174, 2173, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2176, 1, 0, 0, 0, 2176, 2177, 3, 244, 122, 0, 2177, 2179, 1, 0, 0, 0, 2178, 2170, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2178, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2182, 1, 0, 0, 0, 2182, 2183, 6, 120, -1, 0, 2183, 2185, 1, 0, 0, 0, 2184, 2136, 1, 0, 0, 0, 2184, 2148, 1, 0, 0, 0, 2184, 2160, 1, 0, 0, 0, 2185, 241, 1, 0, 0, 0, 2186, 2187, 7, 2, 0, 0, 2187, 243, 1, 0, 0, 0, 2188, 2199, 3, 246, 123, 0, 2189, 2191, 5, 172, 0, 0, 2190, 2189, 1, 0, 0, 0, 2190, 2191, 1, 0, 0, 0, 2191, 2192, 1, 0, 0, 0, 2192, 2194, 5, 11, 0, 0, 2193, 2195, 5, 172, 0, 0, 2194, 2193, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 2196, 1, 0, 0, 0, 2196, 2198, 3, 246, 123, 0, 2197, 2190, 1, 0, 0, 0, 2198, 2201, 1, 0, 0, 0, 2199, 2197, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 245, 1, 0, 0, 0, 2201, 2199, 1, 0, 0, 0, 2202, 2213, 3, 248, 124, 0, 2203, 2205, 5, 172, 0, 0, 2204, 2203, 1, 0, 0, 0, 2204, 2205, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, 2208, 5, 18, 0, 0, 2207, 2209, 5, 172, 0, 0, 2208, 2207, 1, 0, 0, 0, 2208, 2209, 1, 0, 0, 0, 2209, 2210, 1, 0, 0, 0, 2210, 2212, 3, 248, 124, 0, 2211, 2204, 1, 0, 0, 0, 2212, 2215, 1, 0, 0, 0, 2213, 2211, 1, 0, 0, 0, 2213, 2214, 1, 0, 0, 0, 2214, 247, 1, 0, 0, 0, 2215, 2213, 1, 0, 0, 0, 2216, 2228, 3, 252, 126, 0, 2217, 2219, 5, 172, 0, 0, 2218, 2217, 1, 0, 0, 0, 2218, 2219, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 2222, 3, 250, 125, 0, 2221, 2223, 5, 172, 0, 0, 2222, 2221, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 2224, 1, 0, 0, 0, 2224, 2225, 3, 252, 126, 0, 2225, 2227, 1, 0, 0, 0, 2226, 2218, 1, 0, 0, 0, 2227, 2230, 1, 0, 0, 0, 2228, 2226, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 249, 1, 0, 0, 0, 2230, 2228, 1, 0, 0, 0, 2231, 2232, 7, 3, 0, 0, 2232, 251, 1, 0, 0, 0, 2233, 2245, 3, 256, 128, 0, 2234, 2236, 5, 172, 0, 0, 2235, 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2239, 3, 254, 127, 0, 2238, 2240, 5, 172, 0, 0, 2239, 2238, 1, 0, 0, 0, 2239, 2240, 1, 0, 0, 0, 2240, 2241, 1, 0, 0, 0, 2241, 2242, 3, 256, 128, 0, 2242, 2244, 1, 0, 0, 0, 2243, 2235, 1, 0, 0, 0, 2244, 2247, 1, 0, 0, 0, 2245, 2243, 1, 0, 0, 0, 2245, 2246, 1, 0, 0, 0, 2246, 253, 1, 0, 0, 0, 2247, 2245, 1, 0, 0, 0, 2248, 2249, 7, 4, 0, 0, 2249, 255, 1, 0, 0, 0, 2250, 2262, 3, 260, 130, 0, 2251, 2253, 5, 172, 0, 0, 2252, 2251, 1, 0, 0, 0, 2252, 2253, 1, 0, 0, 0, 2253, 2254, 1, 0, 0, 0, 2254, 2256, 3, 258, 129, 0, 2255, 2257, 5, 172, 0, 0, 2256, 2255, 1, 0, 0, 0, 2256, 2257, 1, 0, 0, 0, 2257, 2258, 1, 0, 0, 0, 2258, 2259, 3, 260, 130, 0, 2259, 2261, 1, 0, 0, 0, 2260, 2252, 1, 0, 0, 0, 2261, 2264, 1, 0, 0, 0, 2262, 2260, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 257, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2265, 2266, 7, 5, 0, 0, 2266, 259, 1, 0, 0, 0, 2267, 2278, 3, 262, 131, 0, 2268, 2270, 5, 172, 0, 0, 2269, 2268, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2271, 1, 0, 0, 0, 2271, 2273, 5, 24, 0, 0, 2272, 2274, 5, 172, 0, 0, 2273, 2272, 1, 0, 0, 0, 2273, 2274, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2277, 3, 262, 131, 0, 2276, 2269, 1, 0, 0, 0, 2277, 2280, 1, 0, 0, 0, 2278, 2276, 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 261, 1, 0, 0, 0, 2280, 2278, 1, 0, 0, 0, 2281, 2283, 5, 155, 0, 0, 2282, 2284, 5, 172, 0, 0, 2283, 2282, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2286, 1, 0, 0, 0, 2285, 2281, 1, 0, 0, 0, 2286, 2289, 1, 0, 0, 0, 2287, 2285, 1, 0, 0, 0, 2287, 2288, 1, 0, 0, 0, 2288, 2290, 1, 0, 0, 0, 2289, 2287, 1, 0, 0, 0, 2290, 2295, 3, 264, 132, 0, 2291, 2293, 5, 172, 0, 0, 2292, 2291, 1, 0, 0, 0, 2292, 2293, 1, 0, 0, 0, 2293, 2294, 1, 0, 0, 0, 2294, 2296, 5, 156, 0, 0, 2295, 2292, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 263, 1, 0, 0, 0, 2297, 2305, 3, 274, 137, 0, 2298, 2306, 3, 268, 134, 0, 2299, 2301, 3, 266, 133, 0, 2300, 2299, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2300, 1, 0, 0, 0, 2302, 2303, 1, 0, 0, 0, 2303, 2306, 1, 0, 0, 0, 2304, 2306, 3, 272, 136, 0, 2305, 2298, 1, 0, 0, 0, 2305, 2300, 1, 0, 0, 0, 2305, 2304, 1, 0, 0, 0, 2305, 2306, 1, 0, 0, 0, 2306, 265, 1, 0, 0, 0, 2307, 2308, 5, 172, 0, 0, 2308, 2310, 5, 96, 0, 0, 2309, 2311, 5, 172, 0, 0, 2310, 2309, 1, 0, 0, 0, 2310, 2311, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2327, 3, 274, 137, 0, 2313, 2314, 5, 7, 0, 0, 2314, 2315, 3, 230, 115, 0, 2315, 2316, 5, 8, 0, 0, 2316, 2327, 1, 0, 0, 0, 2317, 2319, 5, 7, 0, 0, 2318, 2320, 3, 230, 115, 0, 2319, 2318, 1, 0, 0, 0, 2319, 2320, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2323, 5, 157, 0, 0, 2322, 2324, 3, 230, 115, 0, 2323, 2322, 1, 0, 0, 0, 2323, 2324, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2327, 5, 8, 0, 0, 2326, 2307, 1, 0, 0, 0, 2326, 2313, 1, 0, 0, 0, 2326, 2317, 1, 0, 0, 0, 2327, 267, 1, 0, 0, 0, 2328, 2340, 3, 270, 135, 0, 2329, 2330, 5, 172, 0, 0, 2330, 2331, 5, 134, 0, 0, 2331, 2332, 5, 172, 0, 0, 2332, 2340, 5, 147, 0, 0, 2333, 2334, 5, 172, 0, 0, 2334, 2335, 5, 82, 0, 0, 2335, 2336, 5, 172, 0, 0, 2336, 2340, 5, 147, 0, 0, 2337, 2338, 5, 172, 0, 0, 2338, 2340, 5, 66, 0, 0, 2339, 2328, 1, 0, 0, 0, 2339, 2329, 1, 0, 0, 0, 2339, 2333, 1, 0, 0, 0, 2339, 2337, 1, 0, 0, 0, 2340, 2342, 1, 0, 0, 0, 2341, 2343, 5, 172, 0, 0, 2342, 2341, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2344, 1, 0, 0, 0, 2344, 2345, 3, 274, 137, 0, 2345, 269, 1, 0, 0, 0, 2346, 2348, 5, 172, 0, 0, 2347, 2346, 1, 0, 0, 0, 2347, 2348, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2350, 5, 25, 0, 0, 2350, 271, 1, 0, 0, 0, 2351, 2352, 5, 172, 0, 0, 2352, 2353, 5, 99, 0, 0, 2353, 2354, 5, 172, 0, 0, 2354, 2362, 5, 115, 0, 0, 2355, 2356, 5, 172, 0, 0, 2356, 2357, 5, 99, 0, 0, 2357, 2358, 5, 172, 0, 0, 2358, 2359, 5, 113, 0, 0, 2359, 2360, 5, 172, 0, 0, 2360, 2362, 5, 115, 0, 0, 2361, 2351, 1, 0, 0, 0, 2361, 2355, 1, 0, 0, 0, 2362, 273, 1, 0, 0, 0, 2363, 2370, 3, 276, 138, 0, 2364, 2366, 5, 172, 0, 0, 2365, 2364, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2367, 1, 0, 0, 0, 2367, 2369, 3, 314, 157, 0, 2368, 2365, 1, 0, 0, 0, 2369, 2372, 1, 0, 0, 0, 2370, 2368, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 275, 1, 0, 0, 0, 2372, 2370, 1, 0, 0, 0, 2373, 2384, 3, 284, 142, 0, 2374, 2384, 3, 324, 162, 0, 2375, 2384, 3, 316, 158, 0, 2376, 2384, 3, 296, 148, 0, 2377, 2384, 3, 298, 149, 0, 2378, 2384, 3, 308, 154, 0, 2379, 2384, 3, 310, 155, 0, 2380, 2384, 3, 312, 156, 0, 2381, 2384, 3, 320, 160, 0, 2382, 2384, 3, 278, 139, 0, 2383, 2373, 1, 0, 0, 0, 2383, 2374, 1, 0, 0, 0, 2383, 2375, 1, 0, 0, 0, 2383, 2376, 1, 0, 0, 0, 2383, 2377, 1, 0, 0, 0, 2383, 2378, 1, 0, 0, 0, 2383, 2379, 1, 0, 0, 0, 2383, 2380, 1, 0, 0, 0, 2383, 2381, 1, 0, 0, 0, 2383, 2382, 1, 0, 0, 0, 2384, 277, 1, 0, 0, 0, 2385, 2387, 5, 49, 0, 0, 2386, 2388, 5, 172, 0, 0, 2387, 2386, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2391, 5, 2, 0, 0, 2390, 2392, 5, 172, 0, 0, 2391, 2390, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2395, 3, 280, 140, 0, 2394, 2396, 5, 172, 0, 0, 2395, 2394, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2398, 5, 4, 0, 0, 2398, 2442, 1, 0, 0, 0, 2399, 2401, 5, 47, 0, 0, 2400, 2402, 5, 172, 0, 0, 2401, 2400, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2403, 1, 0, 0, 0, 2403, 2405, 5, 2, 0, 0, 2404, 2406, 5, 172, 0, 0, 2405, 2404, 1, 0, 0, 0, 2405, 2406, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2409, 3, 280, 140, 0, 2408, 2410, 5, 172, 0, 0, 2409, 2408, 1, 0, 0, 0, 2409, 2410, 1, 0, 0, 0, 2410, 2411, 1, 0, 0, 0, 2411, 2412, 5, 4, 0, 0, 2412, 2442, 1, 0, 0, 0, 2413, 2415, 5, 114, 0, 0, 2414, 2416, 5, 172, 0, 0, 2415, 2414, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2419, 5, 2, 0, 0, 2418, 2420, 5, 172, 0, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2423, 3, 280, 140, 0, 2422, 2424, 5, 172, 0, 0, 2423, 2422, 1, 0, 0, 0, 2423, 2424, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2426, 5, 4, 0, 0, 2426, 2442, 1, 0, 0, 0, 2427, 2429, 5, 150, 0, 0, 2428, 2430, 5, 172, 0, 0, 2429, 2428, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2433, 5, 2, 0, 0, 2432, 2434, 5, 172, 0, 0, 2433, 2432, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2437, 3, 280, 140, 0, 2436, 2438, 5, 172, 0, 0, 2437, 2436, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2439, 1, 0, 0, 0, 2439, 2440, 5, 4, 0, 0, 2440, 2442, 1, 0, 0, 0, 2441, 2385, 1, 0, 0, 0, 2441, 2399, 1, 0, 0, 0, 2441, 2413, 1, 0, 0, 0, 2441, 2427, 1, 0, 0, 0, 2442, 279, 1, 0, 0, 0, 2443, 2448, 3, 282, 141, 0, 2444, 2446, 5, 172, 0, 0, 2445, 2444, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2449, 3, 188, 94, 0, 2448, 2445, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 281, 1, 0, 0, 0, 2450, 2451, 3, 320, 160, 0, 2451, 2452, 5, 172, 0, 0, 2452, 2453, 5, 96, 0, 0, 2453, 2454, 5, 172, 0, 0, 2454, 2455, 3, 230, 115, 0, 2455, 283, 1, 0, 0, 0, 2456, 2463, 3, 322, 161, 0, 2457, 2463, 5, 158, 0, 0, 2458, 2463, 3, 286, 143, 0, 2459, 2463, 5, 115, 0, 0, 2460, 2463, 3, 288, 144, 0, 2461, 2463, 3, 292, 146, 0, 2462, 2456, 1, 0, 0, 0, 2462, 2457, 1, 0, 0, 0, 2462, 2458, 1, 0, 0, 0, 2462, 2459, 1, 0, 0, 0, 2462, 2460, 1, 0, 0, 0, 2462, 2461, 1, 0, 0, 0, 2463, 285, 1, 0, 0, 0, 2464, 2465, 7, 6, 0, 0, 2465, 287, 1, 0, 0, 0, 2466, 2468, 5, 7, 0, 0, 2467, 2469, 5, 172, 0, 0, 2468, 2467, 1, 0, 0, 0, 2468, 2469, 1, 0, 0, 0, 2469, 2483, 1, 0, 0, 0, 2470, 2472, 3, 230, 115, 0, 2471, 2473, 5, 172, 0, 0, 2472, 2471, 1, 0, 0, 0, 2472, 2473, 1, 0, 0, 0, 2473, 2480, 1, 0, 0, 0, 2474, 2476, 3, 290, 145, 0, 2475, 2477, 5, 172, 0, 0, 2476, 2475, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2479, 1, 0, 0, 0, 2478, 2474, 1, 0, 0, 0, 2479, 2482, 1, 0, 0, 0, 2480, 2478, 1, 0, 0, 0, 2480, 2481, 1, 0, 0, 0, 2481, 2484, 1, 0, 0, 0, 2482, 2480, 1, 0, 0, 0, 2483, 2470, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2486, 5, 8, 0, 0, 2486, 289, 1, 0, 0, 0, 2487, 2489, 5, 3, 0, 0, 2488, 2490, 5, 172, 0, 0, 2489, 2488, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 2492, 1, 0, 0, 0, 2491, 2493, 3, 230, 115, 0, 2492, 2491, 1, 0, 0, 0, 2492, 2493, 1, 0, 0, 0, 2493, 291, 1, 0, 0, 0, 2494, 2496, 5, 9, 0, 0, 2495, 2497, 5, 172, 0, 0, 2496, 2495, 1, 0, 0, 0, 2496, 2497, 1, 0, 0, 0, 2497, 2498, 1, 0, 0, 0, 2498, 2500, 3, 294, 147, 0, 2499, 2501, 5, 172, 0, 0, 2500, 2499, 1, 0, 0, 0, 2500, 2501, 1, 0, 0, 0, 2501, 2512, 1, 0, 0, 0, 2502, 2504, 5, 3, 0, 0, 2503, 2505, 5, 172, 0, 0, 2504, 2503, 1, 0, 0, 0, 2504, 2505, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2508, 3, 294, 147, 0, 2507, 2509, 5, 172, 0, 0, 2508, 2507, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2511, 1, 0, 0, 0, 2510, 2502, 1, 0, 0, 0, 2511, 2514, 1, 0, 0, 0, 2512, 2510, 1, 0, 0, 0, 2512, 2513, 1, 0, 0, 0, 2513, 2515, 1, 0, 0, 0, 2514, 2512, 1, 0, 0, 0, 2515, 2516, 5, 10, 0, 0, 2516, 293, 1, 0, 0, 0, 2517, 2520, 3, 336, 168, 0, 2518, 2520, 5, 158, 0, 0, 2519, 2517, 1, 0, 0, 0, 2519, 2518, 1, 0, 0, 0, 2520, 2522, 1, 0, 0, 0, 2521, 2523, 5, 172, 0, 0, 2522, 2521, 1, 0, 0, 0, 2522, 2523, 1, 0, 0, 0, 2523, 2524, 1, 0, 0, 0, 2524, 2526, 5, 157, 0, 0, 2525, 2527, 5, 172, 0, 0, 2526, 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2528, 1, 0, 0, 0, 2528, 2529, 3, 230, 115, 0, 2529, 295, 1, 0, 0, 0, 2530, 2532, 5, 2, 0, 0, 2531, 2533, 5, 172, 0, 0, 2532, 2531, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2536, 3, 230, 115, 0, 2535, 2537, 5, 172, 0, 0, 2536, 2535, 1, 0, 0, 0, 2536, 2537, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2539, 5, 4, 0, 0, 2539, 297, 1, 0, 0, 0, 2540, 2542, 5, 68, 0, 0, 2541, 2543, 5, 172, 0, 0, 2542, 2541, 1, 0, 0, 0, 2542, 2543, 1, 0, 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2546, 5, 2, 0, 0, 2545, 2547, 5, 172, 0, 0, 2546, 2545, 1, 0, 0, 0, 2546, 2547, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2550, 5, 152, 0, 0, 2549, 2551, 5, 172, 0, 0, 2550, 2549, 1, 0, 0, 0, 2550, 2551, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, 2618, 5, 4, 0, 0, 2553, 2555, 5, 60, 0, 0, 2554, 2556, 5, 172, 0, 0, 2555, 2554, 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 2557, 1, 0, 0, 0, 2557, 2559, 5, 2, 0, 0, 2558, 2560, 5, 172, 0, 0, 2559, 2558, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2561, 1, 0, 0, 0, 2561, 2563, 3, 302, 151, 0, 2562, 2564, 5, 172, 0, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, 2575, 1, 0, 0, 0, 2565, 2567, 5, 52, 0, 0, 2566, 2568, 5, 172, 0, 0, 2567, 2566, 1, 0, 0, 0, 2567, 2568, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2576, 3, 98, 49, 0, 2570, 2572, 5, 3, 0, 0, 2571, 2573, 5, 172, 0, 0, 2572, 2571, 1, 0, 0, 0, 2572, 2573, 1, 0, 0, 0, 2573, 2574, 1, 0, 0, 0, 2574, 2576, 3, 302, 151, 0, 2575, 2565, 1, 0, 0, 0, 2575, 2570, 1, 0, 0, 0, 2576, 2578, 1, 0, 0, 0, 2577, 2579, 5, 172, 0, 0, 2578, 2577, 1, 0, 0, 0, 2578, 2579, 1, 0, 0, 0, 2579, 2580, 1, 0, 0, 0, 2580, 2581, 5, 4, 0, 0, 2581, 2618, 1, 0, 0, 0, 2582, 2584, 3, 300, 150, 0, 2583, 2585, 5, 172, 0, 0, 2584, 2583, 1, 0, 0, 0, 2584, 2585, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2588, 5, 2, 0, 0, 2587, 2589, 5, 172, 0, 0, 2588, 2587, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 2594, 1, 0, 0, 0, 2590, 2592, 5, 78, 0, 0, 2591, 2593, 5, 172, 0, 0, 2592, 2591, 1, 0, 0, 0, 2592, 2593, 1, 0, 0, 0, 2593, 2595, 1, 0, 0, 0, 2594, 2590, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 2613, 1, 0, 0, 0, 2596, 2598, 3, 302, 151, 0, 2597, 2599, 5, 172, 0, 0, 2598, 2597, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2610, 1, 0, 0, 0, 2600, 2602, 5, 3, 0, 0, 2601, 2603, 5, 172, 0, 0, 2602, 2601, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 3, 302, 151, 0, 2605, 2607, 5, 172, 0, 0, 2606, 2605, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 2609, 1, 0, 0, 0, 2608, 2600, 1, 0, 0, 0, 2609, 2612, 1, 0, 0, 0, 2610, 2608, 1, 0, 0, 0, 2610, 2611, 1, 0, 0, 0, 2611, 2614, 1, 0, 0, 0, 2612, 2610, 1, 0, 0, 0, 2613, 2596, 1, 0, 0, 0, 2613, 2614, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 2616, 5, 4, 0, 0, 2616, 2618, 1, 0, 0, 0, 2617, 2540, 1, 0, 0, 0, 2617, 2553, 1, 0, 0, 0, 2617, 2582, 1, 0, 0, 0, 2618, 299, 1, 0, 0, 0, 2619, 2620, 3, 336, 168, 0, 2620, 301, 1, 0, 0, 0, 2621, 2623, 3, 336, 168, 0, 2622, 2624, 5, 172, 0, 0, 2623, 2622, 1, 0, 0, 0, 2623, 2624, 1, 0, 0, 0, 2624, 2625, 1, 0, 0, 0, 2625, 2626, 5, 157, 0, 0, 2626, 2628, 5, 6, 0, 0, 2627, 2629, 5, 172, 0, 0, 2628, 2627, 1, 0, 0, 0, 2628, 2629, 1, 0, 0, 0, 2629, 2631, 1, 0, 0, 0, 2630, 2621, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 2632, 1, 0, 0, 0, 2632, 2635, 3, 230, 115, 0, 2633, 2635, 3, 304, 152, 0, 2634, 2630, 1, 0, 0, 0, 2634, 2633, 1, 0, 0, 0, 2635, 303, 1, 0, 0, 0, 2636, 2638, 3, 306, 153, 0, 2637, 2639, 5, 172, 0, 0, 2638, 2637, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 2640, 1, 0, 0, 0, 2640, 2641, 5, 155, 0, 0, 2641, 2643, 5, 16, 0, 0, 2642, 2644, 5, 172, 0, 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2645, 1, 0, 0, 0, 2645, 2647, 3, 230, 115, 0, 2646, 2648, 5, 172, 0, 0, 2647, 2646, 1, 0, 0, 0, 2647, 2648, 1, 0, 0, 0, 2648, 305, 1, 0, 0, 0, 2649, 2674, 3, 336, 168, 0, 2650, 2652, 5, 2, 0, 0, 2651, 2653, 5, 172, 0, 0, 2652, 2651, 1, 0, 0, 0, 2652, 2653, 1, 0, 0, 0, 2653, 2654, 1, 0, 0, 0, 2654, 2656, 3, 336, 168, 0, 2655, 2657, 5, 172, 0, 0, 2656, 2655, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2668, 1, 0, 0, 0, 2658, 2660, 5, 3, 0, 0, 2659, 2661, 5, 172, 0, 0, 2660, 2659, 1, 0, 0, 0, 2660, 2661, 1, 0, 0, 0, 2661, 2662, 1, 0, 0, 0, 2662, 2664, 3, 336, 168, 0, 2663, 2665, 5, 172, 0, 0, 2664, 2663, 1, 0, 0, 0, 2664, 2665, 1, 0, 0, 0, 2665, 2667, 1, 0, 0, 0, 2666, 2658, 1, 0, 0, 0, 2667, 2670, 1, 0, 0, 0, 2668, 2666, 1, 0, 0, 0, 2668, 2669, 1, 0, 0, 0, 2669, 2671, 1, 0, 0, 0, 2670, 2668, 1, 0, 0, 0, 2671, 2672, 5, 4, 0, 0, 2672, 2674, 1, 0, 0, 0, 2673, 2649, 1, 0, 0, 0, 2673, 2650, 1, 0, 0, 0, 2674, 307, 1, 0, 0, 0, 2675, 2680, 3, 198, 99, 0, 2676, 2678, 5, 172, 0, 0, 2677, 2676, 1, 0, 0, 0, 2677, 2678, 1, 0, 0, 0, 2678, 2679, 1, 0, 0, 0, 2679, 2681, 3, 200, 100, 0, 2680, 2677, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2680, 1, 0, 0, 0, 2682, 2683, 1, 0, 0, 0, 2683, 309, 1, 0, 0, 0, 2684, 2686, 5, 83, 0, 0, 2685, 2687, 5, 172, 0, 0, 2686, 2685, 1, 0, 0, 0, 2686, 2687, 1, 0, 0, 0, 2687, 2688, 1, 0, 0, 0, 2688, 2690, 5, 9, 0, 0, 2689, 2691, 5, 172, 0, 0, 2690, 2689, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2694, 5, 106, 0, 0, 2693, 2695, 5, 172, 0, 0, 2694, 2693, 1, 0, 0, 0, 2694, 2695, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 2701, 3, 190, 95, 0, 2697, 2699, 5, 172, 0, 0, 2698, 2697, 1, 0, 0, 0, 2698, 2699, 1, 0, 0, 0, 2699, 2700, 1, 0, 0, 0, 2700, 2702, 3, 188, 94, 0, 2701, 2698, 1, 0, 0, 0, 2701, 2702, 1, 0, 0, 0, 2702, 2704, 1, 0, 0, 0, 2703, 2705, 5, 172, 0, 0, 2704, 2703, 1, 0, 0, 0, 2704, 2705, 1, 0, 0, 0, 2705, 2706, 1, 0, 0, 0, 2706, 2707, 5, 10, 0, 0, 2707, 311, 1, 0, 0, 0, 2708, 2710, 5, 68, 0, 0, 2709, 2711, 5, 172, 0, 0, 2710, 2709, 1, 0, 0, 0, 2710, 2711, 1, 0, 0, 0, 2711, 2712, 1, 0, 0, 0, 2712, 2714, 5, 9, 0, 0, 2713, 2715, 5, 172, 0, 0, 2714, 2713, 1, 0, 0, 0, 2714, 2715, 1, 0, 0, 0, 2715, 2716, 1, 0, 0, 0, 2716, 2718, 5, 106, 0, 0, 2717, 2719, 5, 172, 0, 0, 2718, 2717, 1, 0, 0, 0, 2718, 2719, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 2725, 3, 190, 95, 0, 2721, 2723, 5, 172, 0, 0, 2722, 2721, 1, 0, 0, 0, 2722, 2723, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2726, 3, 188, 94, 0, 2725, 2722, 1, 0, 0, 0, 2725, 2726, 1, 0, 0, 0, 2726, 2728, 1, 0, 0, 0, 2727, 2729, 5, 172, 0, 0, 2728, 2727, 1, 0, 0, 0, 2728, 2729, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2731, 5, 10, 0, 0, 2731, 313, 1, 0, 0, 0, 2732, 2734, 5, 5, 0, 0, 2733, 2735, 5, 172, 0, 0, 2734, 2733, 1, 0, 0, 0, 2734, 2735, 1, 0, 0, 0, 2735, 2738, 1, 0, 0, 0, 2736, 2739, 3, 328, 164, 0, 2737, 2739, 5, 152, 0, 0, 2738, 2736, 1, 0, 0, 0, 2738, 2737, 1, 0, 0, 0, 2739, 315, 1, 0, 0, 0, 2740, 2745, 5, 59, 0, 0, 2741, 2743, 5, 172, 0, 0, 2742, 2741, 1, 0, 0, 0, 2742, 2743, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 2746, 3, 318, 159, 0, 2745, 2742, 1, 0, 0, 0, 2746, 2747, 1, 0, 0, 0, 2747, 2745, 1, 0, 0, 0, 2747, 2748, 1, 0, 0, 0, 2748, 2763, 1, 0, 0, 0, 2749, 2751, 5, 59, 0, 0, 2750, 2752, 5, 172, 0, 0, 2751, 2750, 1, 0, 0, 0, 2751, 2752, 1, 0, 0, 0, 2752, 2753, 1, 0, 0, 0, 2753, 2758, 3, 230, 115, 0, 2754, 2756, 5, 172, 0, 0, 2755, 2754, 1, 0, 0, 0, 2755, 2756, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2759, 3, 318, 159, 0, 2758, 2755, 1, 0, 0, 0, 2759, 2760, 1, 0, 0, 0, 2760, 2758, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 2763, 1, 0, 0, 0, 2762, 2740, 1, 0, 0, 0, 2762, 2749, 1, 0, 0, 0, 2763, 2772, 1, 0, 0, 0, 2764, 2766, 5, 172, 0, 0, 2765, 2764, 1, 0, 0, 0, 2765, 2766, 1, 0, 0, 0, 2766, 2767, 1, 0, 0, 0, 2767, 2769, 5, 80, 0, 0, 2768, 2770, 5, 172, 0, 0, 2769, 2768, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2771, 1, 0, 0, 0, 2771, 2773, 3, 230, 115, 0, 2772, 2765, 1, 0, 0, 0, 2772, 2773, 1, 0, 0, 0, 2773, 2775, 1, 0, 0, 0, 2774, 2776, 5, 172, 0, 0, 2775, 2774, 1, 0, 0, 0, 2775, 2776, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2778, 5, 81, 0, 0, 2778, 317, 1, 0, 0, 0, 2779, 2781, 5, 145, 0, 0, 2780, 2782, 5, 172, 0, 0, 2781, 2780, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 2783, 1, 0, 0, 0, 2783, 2785, 3, 230, 115, 0, 2784, 2786, 5, 172, 0, 0, 2785, 2784, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 2787, 1, 0, 0, 0, 2787, 2789, 5, 136, 0, 0, 2788, 2790, 5, 172, 0, 0, 2789, 2788, 1, 0, 0, 0, 2789, 2790, 1, 0, 0, 0, 2790, 2791, 1, 0, 0, 0, 2791, 2792, 3, 230, 115, 0, 2792, 319, 1, 0, 0, 0, 2793, 2794, 3, 336, 168, 0, 2794, 321, 1, 0, 0, 0, 2795, 2798, 3, 332, 166, 0, 2796, 2798, 3, 330, 165, 0, 2797, 2795, 1, 0, 0, 0, 2797, 2796, 1, 0, 0, 0, 2798, 323, 1, 0, 0, 0, 2799, 2802, 5, 26, 0, 0, 2800, 2803, 3, 336, 168, 0, 2801, 2803, 5, 160, 0, 0, 2802, 2800, 1, 0, 0, 0, 2802, 2801, 1, 0, 0, 0, 2803, 325, 1, 0, 0, 0, 2804, 2806, 3, 276, 138, 0, 2805, 2807, 5, 172, 0, 0, 2806, 2805, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2809, 3, 314, 157, 0, 2809, 327, 1, 0, 0, 0, 2810, 2811, 3, 334, 167, 0, 2811, 329, 1, 0, 0, 0, 2812, 2813, 5, 160, 0, 0, 2813, 331, 1, 0, 0, 0, 2814, 2815, 5, 167, 0, 0, 2815, 333, 1, 0, 0, 0, 2816, 2817, 3, 336, 168, 0, 2817, 335, 1, 0, 0, 0, 2818, 2824, 5, 168, 0, 0, 2819, 2820, 5, 171, 0, 0, 2820, 2824, 6, 168, -1, 0, 2821, 2824, 5, 161, 0, 0, 2822, 2824, 3, 338, 169, 0, 2823, 2818, 1, 0, 0, 0, 2823, 2819, 1, 0, 0, 0, 2823, 2821, 1, 0, 0, 0, 2823, 2822, 1, 0, 0, 0, 2824, 337, 1, 0, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 339, 1, 0, 0, 0, 2827, 2828, 7, 8, 0, 0, 2828, 341, 1, 0, 0, 0, 2829, 2830, 7, 9, 0, 0, 2830, 343, 1, 0, 0, 0, 2831, 2832, 7, 10, 0, 0, 2832, 345, 1, 0, 0, 0, 491, 348, 352, 357, 361, 366, 369, 373, 376, 399, 405, 409, 412, 418, 421, 425, 429, 433, 438, 442, 449, 453, 461, 465, 475, 479, 483, 488, 501, 505, 513, 516, 524, 527, 542, 547, 553, 557, 560, 563, 569, 573, 578, 581, 586, 590, 594, 599, 614, 618, 625, 645, 649, 652, 655, 658, 661, 665, 670, 674, 684, 688, 693, 698, 703, 709, 713, 717, 722, 729, 733, 737, 740, 744, 748, 767, 771, 775, 779, 783, 786, 789, 802, 806, 810, 814, 818, 822, 824, 828, 832, 834, 849, 853, 857, 861, 865, 870, 873, 877, 881, 883, 887, 891, 893, 912, 919, 932, 939, 945, 948, 958, 961, 969, 972, 978, 981, 987, 1002, 1018, 1027, 1053, 1057, 1062, 1071, 1075, 1080, 1086, 1092, 1098, 1102, 1106, 1114, 1118, 1122, 1128, 1132, 1136, 1142, 1146, 1150, 1154, 1158, 1164, 1168, 1172, 1176, 1180, 1184, 1190, 1197, 1202, 1208, 1213, 1230, 1234, 1242, 1250, 1252, 1262, 1266, 1270, 1276, 1280, 1285, 1290, 1295, 1300, 1304, 1309, 1315, 1320, 1323, 1327, 1331, 1335, 1341, 1345, 1350, 1355, 1359, 1362, 1364, 1368, 1372, 1378, 1382, 1387, 1391, 1400, 1406, 1414, 1418, 1422, 1426, 1433, 1436, 1439, 1442, 1446, 1448, 1454, 1457, 1461, 1465, 1469, 1473, 1477, 1481, 1486, 1492, 1496, 1500, 1504, 1509, 1513, 1522, 1526, 1531, 1545, 1547, 1549, 1554, 1564, 1570, 1577, 1590, 1594, 1598, 1602, 1607, 1612, 1616, 1622, 1626, 1630, 1634, 1639, 1645, 1648, 1654, 1657, 1663, 1667, 1671, 1675, 1679, 1684, 1689, 1693, 1698, 1701, 1710, 1719, 1724, 1737, 1740, 1748, 1752, 1757, 1762, 1766, 1771, 1777, 1782, 1789, 1793, 1797, 1799, 1803, 1805, 1809, 1811, 1817, 1823, 1827, 1830, 1833, 1839, 1842, 1845, 1849, 1855, 1858, 1861, 1865, 1869, 1873, 1875, 1879, 1881, 1885, 1887, 1891, 1893, 1899, 1903, 1907, 1911, 1915, 1919, 1923, 1927, 1931, 1934, 1940, 1944, 1948, 1951, 1956, 1961, 1966, 1971, 1977, 1985, 1988, 1991, 1994, 1998, 2001, 2004, 2007, 2010, 2014, 2018, 2022, 2026, 2030, 2034, 2036, 2039, 2043, 2047, 2051, 2055, 2057, 2063, 2066, 2069, 2075, 2078, 2081, 2102, 2112, 2122, 2127, 2131, 2138, 2142, 2146, 2150, 2154, 2162, 2166, 2170, 2174, 2180, 2184, 2190, 2194, 2199, 2204, 2208, 2213, 2218, 2222, 2228, 2235, 2239, 2245, 2252, 2256, 2262, 2269, 2273, 2278, 2283, 2287, 2292, 2295, 2302, 2305, 2310, 2319, 2323, 2326, 2339, 2342, 2347, 2361, 2365, 2370, 2383, 2387, 2391, 2395, 2401, 2405, 2409, 2415, 2419, 2423, 2429, 2433, 2437, 2441, 2445, 2448, 2462, 2468, 2472, 2476, 2480, 2483, 2489, 2492, 2496, 2500, 2504, 2508, 2512, 2519, 2522, 2526, 2532, 2536, 2542, 2546, 2550, 2555, 2559, 2563, 2567, 2572, 2575, 2578, 2584, 2588, 2592, 2594, 2598, 2602, 2606, 2610, 2613, 2617, 2623, 2628, 2630, 2634, 2638, 2643, 2647, 2652, 2656, 2660, 2664, 2668, 2673, 2677, 2682, 2686, 2690, 2694, 2698, 2701, 2704, 2710, 2714, 2718, 2722, 2725, 2728, 2734, 2738, 2742, 2747, 2751, 2755, 2760, 2762, 2765, 2769, 2772, 2775, 2781, 2785, 2789, 2797, 2802, 2806, 2823]
\ No newline at end of file
diff --git a/src/utils/CypherParser/Cypher.tokens b/src/utils/CypherParser/Cypher.tokens
index 7293608..f3b7642 100644
--- a/src/utils/CypherParser/Cypher.tokens
+++ b/src/utils/CypherParser/Cypher.tokens
@@ -43,131 +43,136 @@ T__41=42
T__42=43
T__43=44
T__44=45
-ADD=46
-ALL=47
-ALTER=48
-AND=49
-AS=50
-ASC=51
-ASCENDING=52
-ATTACH=53
-BEGIN=54
-BY=55
-CALL=56
-CASE=57
-CAST=58
-CHECKPOINT=59
-COLUMN=60
-COMMENT=61
-COMMIT=62
-COMMIT_SKIP_CHECKPOINT=63
-CONTAINS=64
-COPY=65
-COUNT=66
-CREATE=67
-CYCLE=68
-DATABASE=69
-DBTYPE=70
-DEFAULT=71
-DELETE=72
-DESC=73
-DESCENDING=74
-DETACH=75
-DISTINCT=76
-DROP=77
-ELSE=78
-END=79
-ENDS=80
-EXISTS=81
-EXPLAIN=82
-EXPORT=83
-EXTENSION=84
-FALSE=85
-FROM=86
-GLOB=87
-GRAPH=88
-GROUP=89
-HEADERS=90
-HINT=91
-IMPORT=92
-IF=93
-IN=94
-INCREMENT=95
-INSTALL=96
-IS=97
-JOIN=98
-KEY=99
-LIMIT=100
-LOAD=101
-MACRO=102
-MATCH=103
-MAXVALUE=104
-MERGE=105
-MINVALUE=106
-MULTI_JOIN=107
-NO=108
-NODE=109
-NOT=110
-NULL=111
-ON=112
-ONLY=113
-OPTIONAL=114
-OR=115
-ORDER=116
-PRIMARY=117
-PROFILE=118
-PROJECT=119
-RDFGRAPH=120
-READ=121
-REL=122
-RENAME=123
-RETURN=124
-ROLLBACK=125
-ROLLBACK_SKIP_CHECKPOINT=126
-SEQUENCE=127
-SET=128
-SHORTEST=129
-START=130
-STARTS=131
-TABLE=132
-THEN=133
-TO=134
-TRANSACTION=135
-TRUE=136
-TYPE=137
-UNION=138
-UNWIND=139
-USE=140
-WHEN=141
-WHERE=142
-WITH=143
-WRITE=144
-XOR=145
-DECIMAL=146
-STAR=147
-L_SKIP=148
-INVALID_NOT_EQUAL=149
-MINUS=150
-FACTORIAL=151
-COLON=152
-StringLiteral=153
-EscapedChar=154
-DecimalInteger=155
-HexLetter=156
-HexDigit=157
-Digit=158
-NonZeroDigit=159
-NonZeroOctDigit=160
-ZeroDigit=161
-RegularDecimalReal=162
-UnescapedSymbolicName=163
-IdentifierStart=164
-IdentifierPart=165
-EscapedSymbolicName=166
-SP=167
-WHITESPACE=168
-CypherComment=169
-Unknown=170
+ACYCLIC=46
+ANY=47
+ADD=48
+ALL=49
+ALTER=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
+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
+TABLE=135
+THEN=136
+TO=137
+TRAIL=138
+TRANSACTION=139
+TRUE=140
+TYPE=141
+UNION=142
+UNWIND=143
+USE=144
+WHEN=145
+WHERE=146
+WITH=147
+WRITE=148
+XOR=149
+SINGLE=150
+DECIMAL=151
+STAR=152
+L_SKIP=153
+INVALID_NOT_EQUAL=154
+MINUS=155
+FACTORIAL=156
+COLON=157
+StringLiteral=158
+EscapedChar=159
+DecimalInteger=160
+HexLetter=161
+HexDigit=162
+Digit=163
+NonZeroDigit=164
+NonZeroOctDigit=165
+ZeroDigit=166
+RegularDecimalReal=167
+UnescapedSymbolicName=168
+IdentifierStart=169
+IdentifierPart=170
+EscapedSymbolicName=171
+SP=172
+WHITESPACE=173
+CypherComment=174
+Unknown=175
';'=1
'('=2
','=3
@@ -213,9 +218,9 @@ Unknown=170
'\ufe58'=43
'\ufe63'=44
'\uff0d'=45
-'*'=147
-'!='=149
-'-'=150
-'!'=151
-':'=152
-'0'=161
+'*'=152
+'!='=154
+'-'=155
+'!'=156
+':'=157
+'0'=166
diff --git a/src/utils/CypherParser/CypherLexer.interp b/src/utils/CypherParser/CypherLexer.interp
index 2e7851e..e08f9b7 100644
--- a/src/utils/CypherParser/CypherLexer.interp
+++ b/src/utils/CypherParser/CypherLexer.interp
@@ -146,6 +146,11 @@ null
null
null
null
+null
+null
+null
+null
+null
'*'
null
'!='
@@ -218,6 +223,8 @@ null
null
null
null
+ACYCLIC
+ANY
ADD
ALL
ALTER
@@ -274,6 +281,7 @@ JOIN
KEY
LIMIT
LOAD
+LOGICAL
MACRO
MATCH
MAXVALUE
@@ -283,6 +291,7 @@ MULTI_JOIN
NO
NODE
NOT
+NONE
NULL
ON
ONLY
@@ -292,7 +301,6 @@ ORDER
PRIMARY
PROFILE
PROJECT
-RDFGRAPH
READ
REL
RENAME
@@ -307,6 +315,7 @@ STARTS
TABLE
THEN
TO
+TRAIL
TRANSACTION
TRUE
TYPE
@@ -318,6 +327,7 @@ WHERE
WITH
WRITE
XOR
+SINGLE
DECIMAL
STAR
L_SKIP
@@ -390,6 +400,8 @@ T__41
T__42
T__43
T__44
+ACYCLIC
+ANY
ADD
ALL
ALTER
@@ -446,6 +458,7 @@ JOIN
KEY
LIMIT
LOAD
+LOGICAL
MACRO
MATCH
MAXVALUE
@@ -455,6 +468,7 @@ MULTI_JOIN
NO
NODE
NOT
+NONE
NULL
ON
ONLY
@@ -464,7 +478,6 @@ ORDER
PRIMARY
PROFILE
PROJECT
-RDFGRAPH
READ
REL
RENAME
@@ -479,6 +492,7 @@ STARTS
TABLE
THEN
TO
+TRAIL
TRANSACTION
TRUE
TYPE
@@ -490,6 +504,7 @@ WHERE
WITH
WRITE
XOR
+SINGLE
DECIMAL
STAR
L_SKIP
@@ -544,4 +559,4 @@ mode names:
DEFAULT_MODE
atn:
-[4, 0, 170, 1360, 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, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 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, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 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, 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, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 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, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 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, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 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, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 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, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 5, 152, 1164, 8, 152, 10, 152, 12, 152, 1167, 9, 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1173, 8, 152, 10, 152, 12, 152, 1176, 9, 152, 1, 152, 3, 152, 1179, 8, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 1199, 8, 153, 1, 154, 1, 154, 1, 154, 5, 154, 1204, 8, 154, 10, 154, 12, 154, 1207, 9, 154, 3, 154, 1209, 8, 154, 1, 155, 3, 155, 1212, 8, 155, 1, 156, 1, 156, 3, 156, 1216, 8, 156, 1, 157, 1, 157, 3, 157, 1220, 8, 157, 1, 158, 1, 158, 3, 158, 1224, 8, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 5, 161, 1231, 8, 161, 10, 161, 12, 161, 1234, 9, 161, 1, 161, 1, 161, 4, 161, 1238, 8, 161, 11, 161, 12, 161, 1239, 1, 162, 1, 162, 5, 162, 1244, 8, 162, 10, 162, 12, 162, 1247, 9, 162, 1, 163, 1, 163, 3, 163, 1251, 8, 163, 1, 164, 1, 164, 3, 164, 1255, 8, 164, 1, 165, 1, 165, 5, 165, 1259, 8, 165, 10, 165, 12, 165, 1262, 9, 165, 1, 165, 4, 165, 1265, 8, 165, 11, 165, 12, 165, 1266, 1, 166, 4, 166, 1270, 8, 166, 11, 166, 12, 166, 1271, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 1286, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 1294, 8, 168, 10, 168, 12, 168, 1297, 9, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 1305, 8, 168, 10, 168, 12, 168, 1308, 9, 168, 1, 168, 3, 168, 1311, 8, 168, 1, 168, 1, 168, 3, 168, 1315, 8, 168, 3, 168, 1317, 8, 168, 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, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 188, 1, 188, 1, 189, 1, 189, 0, 0, 190, 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, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, 0, 375, 0, 377, 0, 379, 170, 1, 0, 48, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 76, 76, 108, 108, 2, 0, 84, 84, 116, 116, 2, 0, 69, 69, 101, 101, 2, 0, 82, 82, 114, 114, 2, 0, 78, 78, 110, 110, 2, 0, 83, 83, 115, 115, 2, 0, 67, 67, 99, 99, 2, 0, 73, 73, 105, 105, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 66, 66, 98, 98, 2, 0, 89, 89, 121, 121, 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, 1376, 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, 379, 1, 0, 0, 0, 1, 381, 1, 0, 0, 0, 3, 383, 1, 0, 0, 0, 5, 385, 1, 0, 0, 0, 7, 387, 1, 0, 0, 0, 9, 389, 1, 0, 0, 0, 11, 391, 1, 0, 0, 0, 13, 393, 1, 0, 0, 0, 15, 395, 1, 0, 0, 0, 17, 397, 1, 0, 0, 0, 19, 399, 1, 0, 0, 0, 21, 401, 1, 0, 0, 0, 23, 403, 1, 0, 0, 0, 25, 406, 1, 0, 0, 0, 27, 409, 1, 0, 0, 0, 29, 411, 1, 0, 0, 0, 31, 414, 1, 0, 0, 0, 33, 416, 1, 0, 0, 0, 35, 419, 1, 0, 0, 0, 37, 421, 1, 0, 0, 0, 39, 424, 1, 0, 0, 0, 41, 427, 1, 0, 0, 0, 43, 429, 1, 0, 0, 0, 45, 431, 1, 0, 0, 0, 47, 433, 1, 0, 0, 0, 49, 435, 1, 0, 0, 0, 51, 438, 1, 0, 0, 0, 53, 440, 1, 0, 0, 0, 55, 442, 1, 0, 0, 0, 57, 444, 1, 0, 0, 0, 59, 446, 1, 0, 0, 0, 61, 448, 1, 0, 0, 0, 63, 450, 1, 0, 0, 0, 65, 452, 1, 0, 0, 0, 67, 454, 1, 0, 0, 0, 69, 456, 1, 0, 0, 0, 71, 458, 1, 0, 0, 0, 73, 460, 1, 0, 0, 0, 75, 462, 1, 0, 0, 0, 77, 464, 1, 0, 0, 0, 79, 466, 1, 0, 0, 0, 81, 468, 1, 0, 0, 0, 83, 470, 1, 0, 0, 0, 85, 472, 1, 0, 0, 0, 87, 474, 1, 0, 0, 0, 89, 476, 1, 0, 0, 0, 91, 478, 1, 0, 0, 0, 93, 482, 1, 0, 0, 0, 95, 486, 1, 0, 0, 0, 97, 492, 1, 0, 0, 0, 99, 496, 1, 0, 0, 0, 101, 499, 1, 0, 0, 0, 103, 503, 1, 0, 0, 0, 105, 513, 1, 0, 0, 0, 107, 520, 1, 0, 0, 0, 109, 526, 1, 0, 0, 0, 111, 529, 1, 0, 0, 0, 113, 534, 1, 0, 0, 0, 115, 539, 1, 0, 0, 0, 117, 544, 1, 0, 0, 0, 119, 555, 1, 0, 0, 0, 121, 562, 1, 0, 0, 0, 123, 570, 1, 0, 0, 0, 125, 577, 1, 0, 0, 0, 127, 600, 1, 0, 0, 0, 129, 609, 1, 0, 0, 0, 131, 614, 1, 0, 0, 0, 133, 620, 1, 0, 0, 0, 135, 627, 1, 0, 0, 0, 137, 633, 1, 0, 0, 0, 139, 642, 1, 0, 0, 0, 141, 649, 1, 0, 0, 0, 143, 657, 1, 0, 0, 0, 145, 664, 1, 0, 0, 0, 147, 669, 1, 0, 0, 0, 149, 680, 1, 0, 0, 0, 151, 687, 1, 0, 0, 0, 153, 696, 1, 0, 0, 0, 155, 701, 1, 0, 0, 0, 157, 706, 1, 0, 0, 0, 159, 710, 1, 0, 0, 0, 161, 715, 1, 0, 0, 0, 163, 722, 1, 0, 0, 0, 165, 730, 1, 0, 0, 0, 167, 737, 1, 0, 0, 0, 169, 747, 1, 0, 0, 0, 171, 753, 1, 0, 0, 0, 173, 758, 1, 0, 0, 0, 175, 763, 1, 0, 0, 0, 177, 769, 1, 0, 0, 0, 179, 775, 1, 0, 0, 0, 181, 783, 1, 0, 0, 0, 183, 788, 1, 0, 0, 0, 185, 795, 1, 0, 0, 0, 187, 798, 1, 0, 0, 0, 189, 801, 1, 0, 0, 0, 191, 811, 1, 0, 0, 0, 193, 819, 1, 0, 0, 0, 195, 822, 1, 0, 0, 0, 197, 827, 1, 0, 0, 0, 199, 831, 1, 0, 0, 0, 201, 837, 1, 0, 0, 0, 203, 842, 1, 0, 0, 0, 205, 848, 1, 0, 0, 0, 207, 854, 1, 0, 0, 0, 209, 863, 1, 0, 0, 0, 211, 869, 1, 0, 0, 0, 213, 878, 1, 0, 0, 0, 215, 889, 1, 0, 0, 0, 217, 892, 1, 0, 0, 0, 219, 897, 1, 0, 0, 0, 221, 901, 1, 0, 0, 0, 223, 906, 1, 0, 0, 0, 225, 909, 1, 0, 0, 0, 227, 914, 1, 0, 0, 0, 229, 923, 1, 0, 0, 0, 231, 926, 1, 0, 0, 0, 233, 932, 1, 0, 0, 0, 235, 940, 1, 0, 0, 0, 237, 948, 1, 0, 0, 0, 239, 956, 1, 0, 0, 0, 241, 965, 1, 0, 0, 0, 243, 970, 1, 0, 0, 0, 245, 974, 1, 0, 0, 0, 247, 981, 1, 0, 0, 0, 249, 988, 1, 0, 0, 0, 251, 997, 1, 0, 0, 0, 253, 1022, 1, 0, 0, 0, 255, 1031, 1, 0, 0, 0, 257, 1035, 1, 0, 0, 0, 259, 1044, 1, 0, 0, 0, 261, 1050, 1, 0, 0, 0, 263, 1057, 1, 0, 0, 0, 265, 1063, 1, 0, 0, 0, 267, 1068, 1, 0, 0, 0, 269, 1071, 1, 0, 0, 0, 271, 1083, 1, 0, 0, 0, 273, 1088, 1, 0, 0, 0, 275, 1093, 1, 0, 0, 0, 277, 1099, 1, 0, 0, 0, 279, 1106, 1, 0, 0, 0, 281, 1110, 1, 0, 0, 0, 283, 1115, 1, 0, 0, 0, 285, 1121, 1, 0, 0, 0, 287, 1126, 1, 0, 0, 0, 289, 1132, 1, 0, 0, 0, 291, 1136, 1, 0, 0, 0, 293, 1144, 1, 0, 0, 0, 295, 1146, 1, 0, 0, 0, 297, 1151, 1, 0, 0, 0, 299, 1154, 1, 0, 0, 0, 301, 1156, 1, 0, 0, 0, 303, 1158, 1, 0, 0, 0, 305, 1178, 1, 0, 0, 0, 307, 1180, 1, 0, 0, 0, 309, 1208, 1, 0, 0, 0, 311, 1211, 1, 0, 0, 0, 313, 1215, 1, 0, 0, 0, 315, 1219, 1, 0, 0, 0, 317, 1223, 1, 0, 0, 0, 319, 1225, 1, 0, 0, 0, 321, 1227, 1, 0, 0, 0, 323, 1232, 1, 0, 0, 0, 325, 1241, 1, 0, 0, 0, 327, 1250, 1, 0, 0, 0, 329, 1254, 1, 0, 0, 0, 331, 1264, 1, 0, 0, 0, 333, 1269, 1, 0, 0, 0, 335, 1285, 1, 0, 0, 0, 337, 1316, 1, 0, 0, 0, 339, 1318, 1, 0, 0, 0, 341, 1320, 1, 0, 0, 0, 343, 1322, 1, 0, 0, 0, 345, 1324, 1, 0, 0, 0, 347, 1326, 1, 0, 0, 0, 349, 1328, 1, 0, 0, 0, 351, 1330, 1, 0, 0, 0, 353, 1332, 1, 0, 0, 0, 355, 1334, 1, 0, 0, 0, 357, 1336, 1, 0, 0, 0, 359, 1338, 1, 0, 0, 0, 361, 1340, 1, 0, 0, 0, 363, 1342, 1, 0, 0, 0, 365, 1344, 1, 0, 0, 0, 367, 1346, 1, 0, 0, 0, 369, 1348, 1, 0, 0, 0, 371, 1350, 1, 0, 0, 0, 373, 1352, 1, 0, 0, 0, 375, 1354, 1, 0, 0, 0, 377, 1356, 1, 0, 0, 0, 379, 1358, 1, 0, 0, 0, 381, 382, 5, 59, 0, 0, 382, 2, 1, 0, 0, 0, 383, 384, 5, 40, 0, 0, 384, 4, 1, 0, 0, 0, 385, 386, 5, 44, 0, 0, 386, 6, 1, 0, 0, 0, 387, 388, 5, 41, 0, 0, 388, 8, 1, 0, 0, 0, 389, 390, 5, 46, 0, 0, 390, 10, 1, 0, 0, 0, 391, 392, 5, 61, 0, 0, 392, 12, 1, 0, 0, 0, 393, 394, 5, 91, 0, 0, 394, 14, 1, 0, 0, 0, 395, 396, 5, 93, 0, 0, 396, 16, 1, 0, 0, 0, 397, 398, 5, 123, 0, 0, 398, 18, 1, 0, 0, 0, 399, 400, 5, 125, 0, 0, 400, 20, 1, 0, 0, 0, 401, 402, 5, 124, 0, 0, 402, 22, 1, 0, 0, 0, 403, 404, 5, 46, 0, 0, 404, 405, 5, 46, 0, 0, 405, 24, 1, 0, 0, 0, 406, 407, 5, 60, 0, 0, 407, 408, 5, 62, 0, 0, 408, 26, 1, 0, 0, 0, 409, 410, 5, 60, 0, 0, 410, 28, 1, 0, 0, 0, 411, 412, 5, 60, 0, 0, 412, 413, 5, 61, 0, 0, 413, 30, 1, 0, 0, 0, 414, 415, 5, 62, 0, 0, 415, 32, 1, 0, 0, 0, 416, 417, 5, 62, 0, 0, 417, 418, 5, 61, 0, 0, 418, 34, 1, 0, 0, 0, 419, 420, 5, 38, 0, 0, 420, 36, 1, 0, 0, 0, 421, 422, 5, 62, 0, 0, 422, 423, 5, 62, 0, 0, 423, 38, 1, 0, 0, 0, 424, 425, 5, 60, 0, 0, 425, 426, 5, 60, 0, 0, 426, 40, 1, 0, 0, 0, 427, 428, 5, 43, 0, 0, 428, 42, 1, 0, 0, 0, 429, 430, 5, 47, 0, 0, 430, 44, 1, 0, 0, 0, 431, 432, 5, 37, 0, 0, 432, 46, 1, 0, 0, 0, 433, 434, 5, 94, 0, 0, 434, 48, 1, 0, 0, 0, 435, 436, 5, 61, 0, 0, 436, 437, 5, 126, 0, 0, 437, 50, 1, 0, 0, 0, 438, 439, 5, 36, 0, 0, 439, 52, 1, 0, 0, 0, 440, 441, 5, 10216, 0, 0, 441, 54, 1, 0, 0, 0, 442, 443, 5, 12296, 0, 0, 443, 56, 1, 0, 0, 0, 444, 445, 5, 65124, 0, 0, 445, 58, 1, 0, 0, 0, 446, 447, 5, 65308, 0, 0, 447, 60, 1, 0, 0, 0, 448, 449, 5, 10217, 0, 0, 449, 62, 1, 0, 0, 0, 450, 451, 5, 12297, 0, 0, 451, 64, 1, 0, 0, 0, 452, 453, 5, 65125, 0, 0, 453, 66, 1, 0, 0, 0, 454, 455, 5, 65310, 0, 0, 455, 68, 1, 0, 0, 0, 456, 457, 5, 173, 0, 0, 457, 70, 1, 0, 0, 0, 458, 459, 5, 8208, 0, 0, 459, 72, 1, 0, 0, 0, 460, 461, 5, 8209, 0, 0, 461, 74, 1, 0, 0, 0, 462, 463, 5, 8210, 0, 0, 463, 76, 1, 0, 0, 0, 464, 465, 5, 8211, 0, 0, 465, 78, 1, 0, 0, 0, 466, 467, 5, 8212, 0, 0, 467, 80, 1, 0, 0, 0, 468, 469, 5, 8213, 0, 0, 469, 82, 1, 0, 0, 0, 470, 471, 5, 8722, 0, 0, 471, 84, 1, 0, 0, 0, 472, 473, 5, 65112, 0, 0, 473, 86, 1, 0, 0, 0, 474, 475, 5, 65123, 0, 0, 475, 88, 1, 0, 0, 0, 476, 477, 5, 65293, 0, 0, 477, 90, 1, 0, 0, 0, 478, 479, 7, 0, 0, 0, 479, 480, 7, 1, 0, 0, 480, 481, 7, 1, 0, 0, 481, 92, 1, 0, 0, 0, 482, 483, 7, 0, 0, 0, 483, 484, 7, 2, 0, 0, 484, 485, 7, 2, 0, 0, 485, 94, 1, 0, 0, 0, 486, 487, 7, 0, 0, 0, 487, 488, 7, 2, 0, 0, 488, 489, 7, 3, 0, 0, 489, 490, 7, 4, 0, 0, 490, 491, 7, 5, 0, 0, 491, 96, 1, 0, 0, 0, 492, 493, 7, 0, 0, 0, 493, 494, 7, 6, 0, 0, 494, 495, 7, 1, 0, 0, 495, 98, 1, 0, 0, 0, 496, 497, 7, 0, 0, 0, 497, 498, 7, 7, 0, 0, 498, 100, 1, 0, 0, 0, 499, 500, 7, 0, 0, 0, 500, 501, 7, 7, 0, 0, 501, 502, 7, 8, 0, 0, 502, 102, 1, 0, 0, 0, 503, 504, 7, 0, 0, 0, 504, 505, 7, 7, 0, 0, 505, 506, 7, 8, 0, 0, 506, 507, 7, 4, 0, 0, 507, 508, 7, 6, 0, 0, 508, 509, 7, 1, 0, 0, 509, 510, 7, 9, 0, 0, 510, 511, 7, 6, 0, 0, 511, 512, 7, 10, 0, 0, 512, 104, 1, 0, 0, 0, 513, 514, 7, 0, 0, 0, 514, 515, 7, 3, 0, 0, 515, 516, 7, 3, 0, 0, 516, 517, 7, 0, 0, 0, 517, 518, 7, 8, 0, 0, 518, 519, 7, 11, 0, 0, 519, 106, 1, 0, 0, 0, 520, 521, 7, 12, 0, 0, 521, 522, 7, 4, 0, 0, 522, 523, 7, 10, 0, 0, 523, 524, 7, 9, 0, 0, 524, 525, 7, 6, 0, 0, 525, 108, 1, 0, 0, 0, 526, 527, 7, 12, 0, 0, 527, 528, 7, 13, 0, 0, 528, 110, 1, 0, 0, 0, 529, 530, 7, 8, 0, 0, 530, 531, 7, 0, 0, 0, 531, 532, 7, 2, 0, 0, 532, 533, 7, 2, 0, 0, 533, 112, 1, 0, 0, 0, 534, 535, 7, 8, 0, 0, 535, 536, 7, 0, 0, 0, 536, 537, 7, 7, 0, 0, 537, 538, 7, 4, 0, 0, 538, 114, 1, 0, 0, 0, 539, 540, 7, 8, 0, 0, 540, 541, 7, 0, 0, 0, 541, 542, 7, 7, 0, 0, 542, 543, 7, 3, 0, 0, 543, 116, 1, 0, 0, 0, 544, 545, 7, 8, 0, 0, 545, 546, 7, 11, 0, 0, 546, 547, 7, 4, 0, 0, 547, 548, 7, 8, 0, 0, 548, 549, 7, 14, 0, 0, 549, 550, 7, 15, 0, 0, 550, 551, 7, 16, 0, 0, 551, 552, 7, 9, 0, 0, 552, 553, 7, 6, 0, 0, 553, 554, 7, 3, 0, 0, 554, 118, 1, 0, 0, 0, 555, 556, 7, 8, 0, 0, 556, 557, 7, 16, 0, 0, 557, 558, 7, 2, 0, 0, 558, 559, 7, 17, 0, 0, 559, 560, 7, 18, 0, 0, 560, 561, 7, 6, 0, 0, 561, 120, 1, 0, 0, 0, 562, 563, 7, 8, 0, 0, 563, 564, 7, 16, 0, 0, 564, 565, 7, 18, 0, 0, 565, 566, 7, 18, 0, 0, 566, 567, 7, 4, 0, 0, 567, 568, 7, 6, 0, 0, 568, 569, 7, 3, 0, 0, 569, 122, 1, 0, 0, 0, 570, 571, 7, 8, 0, 0, 571, 572, 7, 16, 0, 0, 572, 573, 7, 18, 0, 0, 573, 574, 7, 18, 0, 0, 574, 575, 7, 9, 0, 0, 575, 576, 7, 3, 0, 0, 576, 124, 1, 0, 0, 0, 577, 578, 7, 8, 0, 0, 578, 579, 7, 16, 0, 0, 579, 580, 7, 18, 0, 0, 580, 581, 7, 18, 0, 0, 581, 582, 7, 9, 0, 0, 582, 583, 7, 3, 0, 0, 583, 584, 5, 95, 0, 0, 584, 585, 7, 7, 0, 0, 585, 586, 7, 14, 0, 0, 586, 587, 7, 9, 0, 0, 587, 588, 7, 15, 0, 0, 588, 589, 5, 95, 0, 0, 589, 590, 7, 8, 0, 0, 590, 591, 7, 11, 0, 0, 591, 592, 7, 4, 0, 0, 592, 593, 7, 8, 0, 0, 593, 594, 7, 14, 0, 0, 594, 595, 7, 15, 0, 0, 595, 596, 7, 16, 0, 0, 596, 597, 7, 9, 0, 0, 597, 598, 7, 6, 0, 0, 598, 599, 7, 3, 0, 0, 599, 126, 1, 0, 0, 0, 600, 601, 7, 8, 0, 0, 601, 602, 7, 16, 0, 0, 602, 603, 7, 6, 0, 0, 603, 604, 7, 3, 0, 0, 604, 605, 7, 0, 0, 0, 605, 606, 7, 9, 0, 0, 606, 607, 7, 6, 0, 0, 607, 608, 7, 7, 0, 0, 608, 128, 1, 0, 0, 0, 609, 610, 7, 8, 0, 0, 610, 611, 7, 16, 0, 0, 611, 612, 7, 15, 0, 0, 612, 613, 7, 13, 0, 0, 613, 130, 1, 0, 0, 0, 614, 615, 7, 8, 0, 0, 615, 616, 7, 16, 0, 0, 616, 617, 7, 17, 0, 0, 617, 618, 7, 6, 0, 0, 618, 619, 7, 3, 0, 0, 619, 132, 1, 0, 0, 0, 620, 621, 7, 8, 0, 0, 621, 622, 7, 5, 0, 0, 622, 623, 7, 4, 0, 0, 623, 624, 7, 0, 0, 0, 624, 625, 7, 3, 0, 0, 625, 626, 7, 4, 0, 0, 626, 134, 1, 0, 0, 0, 627, 628, 7, 8, 0, 0, 628, 629, 7, 13, 0, 0, 629, 630, 7, 8, 0, 0, 630, 631, 7, 2, 0, 0, 631, 632, 7, 4, 0, 0, 632, 136, 1, 0, 0, 0, 633, 634, 7, 1, 0, 0, 634, 635, 7, 0, 0, 0, 635, 636, 7, 3, 0, 0, 636, 637, 7, 0, 0, 0, 637, 638, 7, 12, 0, 0, 638, 639, 7, 0, 0, 0, 639, 640, 7, 7, 0, 0, 640, 641, 7, 4, 0, 0, 641, 138, 1, 0, 0, 0, 642, 643, 7, 1, 0, 0, 643, 644, 7, 12, 0, 0, 644, 645, 7, 3, 0, 0, 645, 646, 7, 13, 0, 0, 646, 647, 7, 15, 0, 0, 647, 648, 7, 4, 0, 0, 648, 140, 1, 0, 0, 0, 649, 650, 7, 1, 0, 0, 650, 651, 7, 4, 0, 0, 651, 652, 7, 19, 0, 0, 652, 653, 7, 0, 0, 0, 653, 654, 7, 17, 0, 0, 654, 655, 7, 2, 0, 0, 655, 656, 7, 3, 0, 0, 656, 142, 1, 0, 0, 0, 657, 658, 7, 1, 0, 0, 658, 659, 7, 4, 0, 0, 659, 660, 7, 2, 0, 0, 660, 661, 7, 4, 0, 0, 661, 662, 7, 3, 0, 0, 662, 663, 7, 4, 0, 0, 663, 144, 1, 0, 0, 0, 664, 665, 7, 1, 0, 0, 665, 666, 7, 4, 0, 0, 666, 667, 7, 7, 0, 0, 667, 668, 7, 8, 0, 0, 668, 146, 1, 0, 0, 0, 669, 670, 7, 1, 0, 0, 670, 671, 7, 4, 0, 0, 671, 672, 7, 7, 0, 0, 672, 673, 7, 8, 0, 0, 673, 674, 7, 4, 0, 0, 674, 675, 7, 6, 0, 0, 675, 676, 7, 1, 0, 0, 676, 677, 7, 9, 0, 0, 677, 678, 7, 6, 0, 0, 678, 679, 7, 10, 0, 0, 679, 148, 1, 0, 0, 0, 680, 681, 7, 1, 0, 0, 681, 682, 7, 4, 0, 0, 682, 683, 7, 3, 0, 0, 683, 684, 7, 0, 0, 0, 684, 685, 7, 8, 0, 0, 685, 686, 7, 11, 0, 0, 686, 150, 1, 0, 0, 0, 687, 688, 7, 1, 0, 0, 688, 689, 7, 9, 0, 0, 689, 690, 7, 7, 0, 0, 690, 691, 7, 3, 0, 0, 691, 692, 7, 9, 0, 0, 692, 693, 7, 6, 0, 0, 693, 694, 7, 8, 0, 0, 694, 695, 7, 3, 0, 0, 695, 152, 1, 0, 0, 0, 696, 697, 7, 1, 0, 0, 697, 698, 7, 5, 0, 0, 698, 699, 7, 16, 0, 0, 699, 700, 7, 15, 0, 0, 700, 154, 1, 0, 0, 0, 701, 702, 7, 4, 0, 0, 702, 703, 7, 2, 0, 0, 703, 704, 7, 7, 0, 0, 704, 705, 7, 4, 0, 0, 705, 156, 1, 0, 0, 0, 706, 707, 7, 4, 0, 0, 707, 708, 7, 6, 0, 0, 708, 709, 7, 1, 0, 0, 709, 158, 1, 0, 0, 0, 710, 711, 7, 4, 0, 0, 711, 712, 7, 6, 0, 0, 712, 713, 7, 1, 0, 0, 713, 714, 7, 7, 0, 0, 714, 160, 1, 0, 0, 0, 715, 716, 7, 4, 0, 0, 716, 717, 7, 20, 0, 0, 717, 718, 7, 9, 0, 0, 718, 719, 7, 7, 0, 0, 719, 720, 7, 3, 0, 0, 720, 721, 7, 7, 0, 0, 721, 162, 1, 0, 0, 0, 722, 723, 7, 4, 0, 0, 723, 724, 7, 20, 0, 0, 724, 725, 7, 15, 0, 0, 725, 726, 7, 2, 0, 0, 726, 727, 7, 0, 0, 0, 727, 728, 7, 9, 0, 0, 728, 729, 7, 6, 0, 0, 729, 164, 1, 0, 0, 0, 730, 731, 7, 4, 0, 0, 731, 732, 7, 20, 0, 0, 732, 733, 7, 15, 0, 0, 733, 734, 7, 16, 0, 0, 734, 735, 7, 5, 0, 0, 735, 736, 7, 3, 0, 0, 736, 166, 1, 0, 0, 0, 737, 738, 7, 4, 0, 0, 738, 739, 7, 20, 0, 0, 739, 740, 7, 3, 0, 0, 740, 741, 7, 4, 0, 0, 741, 742, 7, 6, 0, 0, 742, 743, 7, 7, 0, 0, 743, 744, 7, 9, 0, 0, 744, 745, 7, 16, 0, 0, 745, 746, 7, 6, 0, 0, 746, 168, 1, 0, 0, 0, 747, 748, 7, 19, 0, 0, 748, 749, 7, 0, 0, 0, 749, 750, 7, 2, 0, 0, 750, 751, 7, 7, 0, 0, 751, 752, 7, 4, 0, 0, 752, 170, 1, 0, 0, 0, 753, 754, 7, 19, 0, 0, 754, 755, 7, 5, 0, 0, 755, 756, 7, 16, 0, 0, 756, 757, 7, 18, 0, 0, 757, 172, 1, 0, 0, 0, 758, 759, 7, 10, 0, 0, 759, 760, 7, 2, 0, 0, 760, 761, 7, 16, 0, 0, 761, 762, 7, 12, 0, 0, 762, 174, 1, 0, 0, 0, 763, 764, 7, 10, 0, 0, 764, 765, 7, 5, 0, 0, 765, 766, 7, 0, 0, 0, 766, 767, 7, 15, 0, 0, 767, 768, 7, 11, 0, 0, 768, 176, 1, 0, 0, 0, 769, 770, 7, 10, 0, 0, 770, 771, 7, 5, 0, 0, 771, 772, 7, 16, 0, 0, 772, 773, 7, 17, 0, 0, 773, 774, 7, 15, 0, 0, 774, 178, 1, 0, 0, 0, 775, 776, 7, 11, 0, 0, 776, 777, 7, 4, 0, 0, 777, 778, 7, 0, 0, 0, 778, 779, 7, 1, 0, 0, 779, 780, 7, 4, 0, 0, 780, 781, 7, 5, 0, 0, 781, 782, 7, 7, 0, 0, 782, 180, 1, 0, 0, 0, 783, 784, 7, 11, 0, 0, 784, 785, 7, 9, 0, 0, 785, 786, 7, 6, 0, 0, 786, 787, 7, 3, 0, 0, 787, 182, 1, 0, 0, 0, 788, 789, 7, 9, 0, 0, 789, 790, 7, 18, 0, 0, 790, 791, 7, 15, 0, 0, 791, 792, 7, 16, 0, 0, 792, 793, 7, 5, 0, 0, 793, 794, 7, 3, 0, 0, 794, 184, 1, 0, 0, 0, 795, 796, 7, 9, 0, 0, 796, 797, 7, 19, 0, 0, 797, 186, 1, 0, 0, 0, 798, 799, 7, 9, 0, 0, 799, 800, 7, 6, 0, 0, 800, 188, 1, 0, 0, 0, 801, 802, 7, 9, 0, 0, 802, 803, 7, 6, 0, 0, 803, 804, 7, 8, 0, 0, 804, 805, 7, 5, 0, 0, 805, 806, 7, 4, 0, 0, 806, 807, 7, 18, 0, 0, 807, 808, 7, 4, 0, 0, 808, 809, 7, 6, 0, 0, 809, 810, 7, 3, 0, 0, 810, 190, 1, 0, 0, 0, 811, 812, 7, 9, 0, 0, 812, 813, 7, 6, 0, 0, 813, 814, 7, 7, 0, 0, 814, 815, 7, 3, 0, 0, 815, 816, 7, 0, 0, 0, 816, 817, 7, 2, 0, 0, 817, 818, 7, 2, 0, 0, 818, 192, 1, 0, 0, 0, 819, 820, 7, 9, 0, 0, 820, 821, 7, 7, 0, 0, 821, 194, 1, 0, 0, 0, 822, 823, 7, 21, 0, 0, 823, 824, 7, 16, 0, 0, 824, 825, 7, 9, 0, 0, 825, 826, 7, 6, 0, 0, 826, 196, 1, 0, 0, 0, 827, 828, 7, 14, 0, 0, 828, 829, 7, 4, 0, 0, 829, 830, 7, 13, 0, 0, 830, 198, 1, 0, 0, 0, 831, 832, 7, 2, 0, 0, 832, 833, 7, 9, 0, 0, 833, 834, 7, 18, 0, 0, 834, 835, 7, 9, 0, 0, 835, 836, 7, 3, 0, 0, 836, 200, 1, 0, 0, 0, 837, 838, 7, 2, 0, 0, 838, 839, 7, 16, 0, 0, 839, 840, 7, 0, 0, 0, 840, 841, 7, 1, 0, 0, 841, 202, 1, 0, 0, 0, 842, 843, 7, 18, 0, 0, 843, 844, 7, 0, 0, 0, 844, 845, 7, 8, 0, 0, 845, 846, 7, 5, 0, 0, 846, 847, 7, 16, 0, 0, 847, 204, 1, 0, 0, 0, 848, 849, 7, 18, 0, 0, 849, 850, 7, 0, 0, 0, 850, 851, 7, 3, 0, 0, 851, 852, 7, 8, 0, 0, 852, 853, 7, 11, 0, 0, 853, 206, 1, 0, 0, 0, 854, 855, 7, 18, 0, 0, 855, 856, 7, 0, 0, 0, 856, 857, 7, 20, 0, 0, 857, 858, 7, 22, 0, 0, 858, 859, 7, 0, 0, 0, 859, 860, 7, 2, 0, 0, 860, 861, 7, 17, 0, 0, 861, 862, 7, 4, 0, 0, 862, 208, 1, 0, 0, 0, 863, 864, 7, 18, 0, 0, 864, 865, 7, 4, 0, 0, 865, 866, 7, 5, 0, 0, 866, 867, 7, 10, 0, 0, 867, 868, 7, 4, 0, 0, 868, 210, 1, 0, 0, 0, 869, 870, 7, 18, 0, 0, 870, 871, 7, 9, 0, 0, 871, 872, 7, 6, 0, 0, 872, 873, 7, 22, 0, 0, 873, 874, 7, 0, 0, 0, 874, 875, 7, 2, 0, 0, 875, 876, 7, 17, 0, 0, 876, 877, 7, 4, 0, 0, 877, 212, 1, 0, 0, 0, 878, 879, 7, 18, 0, 0, 879, 880, 7, 17, 0, 0, 880, 881, 7, 2, 0, 0, 881, 882, 7, 3, 0, 0, 882, 883, 7, 9, 0, 0, 883, 884, 5, 95, 0, 0, 884, 885, 7, 21, 0, 0, 885, 886, 7, 16, 0, 0, 886, 887, 7, 9, 0, 0, 887, 888, 7, 6, 0, 0, 888, 214, 1, 0, 0, 0, 889, 890, 7, 6, 0, 0, 890, 891, 7, 16, 0, 0, 891, 216, 1, 0, 0, 0, 892, 893, 7, 6, 0, 0, 893, 894, 7, 16, 0, 0, 894, 895, 7, 1, 0, 0, 895, 896, 7, 4, 0, 0, 896, 218, 1, 0, 0, 0, 897, 898, 7, 6, 0, 0, 898, 899, 7, 16, 0, 0, 899, 900, 7, 3, 0, 0, 900, 220, 1, 0, 0, 0, 901, 902, 7, 6, 0, 0, 902, 903, 7, 17, 0, 0, 903, 904, 7, 2, 0, 0, 904, 905, 7, 2, 0, 0, 905, 222, 1, 0, 0, 0, 906, 907, 7, 16, 0, 0, 907, 908, 7, 6, 0, 0, 908, 224, 1, 0, 0, 0, 909, 910, 7, 16, 0, 0, 910, 911, 7, 6, 0, 0, 911, 912, 7, 2, 0, 0, 912, 913, 7, 13, 0, 0, 913, 226, 1, 0, 0, 0, 914, 915, 7, 16, 0, 0, 915, 916, 7, 15, 0, 0, 916, 917, 7, 3, 0, 0, 917, 918, 7, 9, 0, 0, 918, 919, 7, 16, 0, 0, 919, 920, 7, 6, 0, 0, 920, 921, 7, 0, 0, 0, 921, 922, 7, 2, 0, 0, 922, 228, 1, 0, 0, 0, 923, 924, 7, 16, 0, 0, 924, 925, 7, 5, 0, 0, 925, 230, 1, 0, 0, 0, 926, 927, 7, 16, 0, 0, 927, 928, 7, 5, 0, 0, 928, 929, 7, 1, 0, 0, 929, 930, 7, 4, 0, 0, 930, 931, 7, 5, 0, 0, 931, 232, 1, 0, 0, 0, 932, 933, 7, 15, 0, 0, 933, 934, 7, 5, 0, 0, 934, 935, 7, 9, 0, 0, 935, 936, 7, 18, 0, 0, 936, 937, 7, 0, 0, 0, 937, 938, 7, 5, 0, 0, 938, 939, 7, 13, 0, 0, 939, 234, 1, 0, 0, 0, 940, 941, 7, 15, 0, 0, 941, 942, 7, 5, 0, 0, 942, 943, 7, 16, 0, 0, 943, 944, 7, 19, 0, 0, 944, 945, 7, 9, 0, 0, 945, 946, 7, 2, 0, 0, 946, 947, 7, 4, 0, 0, 947, 236, 1, 0, 0, 0, 948, 949, 7, 15, 0, 0, 949, 950, 7, 5, 0, 0, 950, 951, 7, 16, 0, 0, 951, 952, 7, 21, 0, 0, 952, 953, 7, 4, 0, 0, 953, 954, 7, 8, 0, 0, 954, 955, 7, 3, 0, 0, 955, 238, 1, 0, 0, 0, 956, 957, 7, 5, 0, 0, 957, 958, 7, 1, 0, 0, 958, 959, 7, 19, 0, 0, 959, 960, 7, 10, 0, 0, 960, 961, 7, 5, 0, 0, 961, 962, 7, 0, 0, 0, 962, 963, 7, 15, 0, 0, 963, 964, 7, 11, 0, 0, 964, 240, 1, 0, 0, 0, 965, 966, 7, 5, 0, 0, 966, 967, 7, 4, 0, 0, 967, 968, 7, 0, 0, 0, 968, 969, 7, 1, 0, 0, 969, 242, 1, 0, 0, 0, 970, 971, 7, 5, 0, 0, 971, 972, 7, 4, 0, 0, 972, 973, 7, 2, 0, 0, 973, 244, 1, 0, 0, 0, 974, 975, 7, 5, 0, 0, 975, 976, 7, 4, 0, 0, 976, 977, 7, 6, 0, 0, 977, 978, 7, 0, 0, 0, 978, 979, 7, 18, 0, 0, 979, 980, 7, 4, 0, 0, 980, 246, 1, 0, 0, 0, 981, 982, 7, 5, 0, 0, 982, 983, 7, 4, 0, 0, 983, 984, 7, 3, 0, 0, 984, 985, 7, 17, 0, 0, 985, 986, 7, 5, 0, 0, 986, 987, 7, 6, 0, 0, 987, 248, 1, 0, 0, 0, 988, 989, 7, 5, 0, 0, 989, 990, 7, 16, 0, 0, 990, 991, 7, 2, 0, 0, 991, 992, 7, 2, 0, 0, 992, 993, 7, 12, 0, 0, 993, 994, 7, 0, 0, 0, 994, 995, 7, 8, 0, 0, 995, 996, 7, 14, 0, 0, 996, 250, 1, 0, 0, 0, 997, 998, 7, 5, 0, 0, 998, 999, 7, 16, 0, 0, 999, 1000, 7, 2, 0, 0, 1000, 1001, 7, 2, 0, 0, 1001, 1002, 7, 12, 0, 0, 1002, 1003, 7, 0, 0, 0, 1003, 1004, 7, 8, 0, 0, 1004, 1005, 7, 14, 0, 0, 1005, 1006, 5, 95, 0, 0, 1006, 1007, 7, 7, 0, 0, 1007, 1008, 7, 14, 0, 0, 1008, 1009, 7, 9, 0, 0, 1009, 1010, 7, 15, 0, 0, 1010, 1011, 5, 95, 0, 0, 1011, 1012, 7, 8, 0, 0, 1012, 1013, 7, 11, 0, 0, 1013, 1014, 7, 4, 0, 0, 1014, 1015, 7, 8, 0, 0, 1015, 1016, 7, 14, 0, 0, 1016, 1017, 7, 15, 0, 0, 1017, 1018, 7, 16, 0, 0, 1018, 1019, 7, 9, 0, 0, 1019, 1020, 7, 6, 0, 0, 1020, 1021, 7, 3, 0, 0, 1021, 252, 1, 0, 0, 0, 1022, 1023, 7, 7, 0, 0, 1023, 1024, 7, 4, 0, 0, 1024, 1025, 7, 23, 0, 0, 1025, 1026, 7, 17, 0, 0, 1026, 1027, 7, 4, 0, 0, 1027, 1028, 7, 6, 0, 0, 1028, 1029, 7, 8, 0, 0, 1029, 1030, 7, 4, 0, 0, 1030, 254, 1, 0, 0, 0, 1031, 1032, 7, 7, 0, 0, 1032, 1033, 7, 4, 0, 0, 1033, 1034, 7, 3, 0, 0, 1034, 256, 1, 0, 0, 0, 1035, 1036, 7, 7, 0, 0, 1036, 1037, 7, 11, 0, 0, 1037, 1038, 7, 16, 0, 0, 1038, 1039, 7, 5, 0, 0, 1039, 1040, 7, 3, 0, 0, 1040, 1041, 7, 4, 0, 0, 1041, 1042, 7, 7, 0, 0, 1042, 1043, 7, 3, 0, 0, 1043, 258, 1, 0, 0, 0, 1044, 1045, 7, 7, 0, 0, 1045, 1046, 7, 3, 0, 0, 1046, 1047, 7, 0, 0, 0, 1047, 1048, 7, 5, 0, 0, 1048, 1049, 7, 3, 0, 0, 1049, 260, 1, 0, 0, 0, 1050, 1051, 7, 7, 0, 0, 1051, 1052, 7, 3, 0, 0, 1052, 1053, 7, 0, 0, 0, 1053, 1054, 7, 5, 0, 0, 1054, 1055, 7, 3, 0, 0, 1055, 1056, 7, 7, 0, 0, 1056, 262, 1, 0, 0, 0, 1057, 1058, 7, 3, 0, 0, 1058, 1059, 7, 0, 0, 0, 1059, 1060, 7, 12, 0, 0, 1060, 1061, 7, 2, 0, 0, 1061, 1062, 7, 4, 0, 0, 1062, 264, 1, 0, 0, 0, 1063, 1064, 7, 3, 0, 0, 1064, 1065, 7, 11, 0, 0, 1065, 1066, 7, 4, 0, 0, 1066, 1067, 7, 6, 0, 0, 1067, 266, 1, 0, 0, 0, 1068, 1069, 7, 3, 0, 0, 1069, 1070, 7, 16, 0, 0, 1070, 268, 1, 0, 0, 0, 1071, 1072, 7, 3, 0, 0, 1072, 1073, 7, 5, 0, 0, 1073, 1074, 7, 0, 0, 0, 1074, 1075, 7, 6, 0, 0, 1075, 1076, 7, 7, 0, 0, 1076, 1077, 7, 0, 0, 0, 1077, 1078, 7, 8, 0, 0, 1078, 1079, 7, 3, 0, 0, 1079, 1080, 7, 9, 0, 0, 1080, 1081, 7, 16, 0, 0, 1081, 1082, 7, 6, 0, 0, 1082, 270, 1, 0, 0, 0, 1083, 1084, 7, 3, 0, 0, 1084, 1085, 7, 5, 0, 0, 1085, 1086, 7, 17, 0, 0, 1086, 1087, 7, 4, 0, 0, 1087, 272, 1, 0, 0, 0, 1088, 1089, 7, 3, 0, 0, 1089, 1090, 7, 13, 0, 0, 1090, 1091, 7, 15, 0, 0, 1091, 1092, 7, 4, 0, 0, 1092, 274, 1, 0, 0, 0, 1093, 1094, 7, 17, 0, 0, 1094, 1095, 7, 6, 0, 0, 1095, 1096, 7, 9, 0, 0, 1096, 1097, 7, 16, 0, 0, 1097, 1098, 7, 6, 0, 0, 1098, 276, 1, 0, 0, 0, 1099, 1100, 7, 17, 0, 0, 1100, 1101, 7, 6, 0, 0, 1101, 1102, 7, 24, 0, 0, 1102, 1103, 7, 9, 0, 0, 1103, 1104, 7, 6, 0, 0, 1104, 1105, 7, 1, 0, 0, 1105, 278, 1, 0, 0, 0, 1106, 1107, 7, 17, 0, 0, 1107, 1108, 7, 7, 0, 0, 1108, 1109, 7, 4, 0, 0, 1109, 280, 1, 0, 0, 0, 1110, 1111, 7, 24, 0, 0, 1111, 1112, 7, 11, 0, 0, 1112, 1113, 7, 4, 0, 0, 1113, 1114, 7, 6, 0, 0, 1114, 282, 1, 0, 0, 0, 1115, 1116, 7, 24, 0, 0, 1116, 1117, 7, 11, 0, 0, 1117, 1118, 7, 4, 0, 0, 1118, 1119, 7, 5, 0, 0, 1119, 1120, 7, 4, 0, 0, 1120, 284, 1, 0, 0, 0, 1121, 1122, 7, 24, 0, 0, 1122, 1123, 7, 9, 0, 0, 1123, 1124, 7, 3, 0, 0, 1124, 1125, 7, 11, 0, 0, 1125, 286, 1, 0, 0, 0, 1126, 1127, 7, 24, 0, 0, 1127, 1128, 7, 5, 0, 0, 1128, 1129, 7, 9, 0, 0, 1129, 1130, 7, 3, 0, 0, 1130, 1131, 7, 4, 0, 0, 1131, 288, 1, 0, 0, 0, 1132, 1133, 7, 20, 0, 0, 1133, 1134, 7, 16, 0, 0, 1134, 1135, 7, 5, 0, 0, 1135, 290, 1, 0, 0, 0, 1136, 1137, 7, 1, 0, 0, 1137, 1138, 7, 4, 0, 0, 1138, 1139, 7, 8, 0, 0, 1139, 1140, 7, 9, 0, 0, 1140, 1141, 7, 18, 0, 0, 1141, 1142, 7, 0, 0, 0, 1142, 1143, 7, 2, 0, 0, 1143, 292, 1, 0, 0, 0, 1144, 1145, 5, 42, 0, 0, 1145, 294, 1, 0, 0, 0, 1146, 1147, 7, 7, 0, 0, 1147, 1148, 7, 14, 0, 0, 1148, 1149, 7, 9, 0, 0, 1149, 1150, 7, 15, 0, 0, 1150, 296, 1, 0, 0, 0, 1151, 1152, 5, 33, 0, 0, 1152, 1153, 5, 61, 0, 0, 1153, 298, 1, 0, 0, 0, 1154, 1155, 5, 45, 0, 0, 1155, 300, 1, 0, 0, 0, 1156, 1157, 5, 33, 0, 0, 1157, 302, 1, 0, 0, 0, 1158, 1159, 5, 58, 0, 0, 1159, 304, 1, 0, 0, 0, 1160, 1165, 5, 34, 0, 0, 1161, 1164, 3, 369, 184, 0, 1162, 1164, 3, 307, 153, 0, 1163, 1161, 1, 0, 0, 0, 1163, 1162, 1, 0, 0, 0, 1164, 1167, 1, 0, 0, 0, 1165, 1163, 1, 0, 0, 0, 1165, 1166, 1, 0, 0, 0, 1166, 1168, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1168, 1179, 5, 34, 0, 0, 1169, 1174, 5, 39, 0, 0, 1170, 1173, 3, 349, 174, 0, 1171, 1173, 3, 307, 153, 0, 1172, 1170, 1, 0, 0, 0, 1172, 1171, 1, 0, 0, 0, 1173, 1176, 1, 0, 0, 0, 1174, 1172, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1177, 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1177, 1179, 5, 39, 0, 0, 1178, 1160, 1, 0, 0, 0, 1178, 1169, 1, 0, 0, 0, 1179, 306, 1, 0, 0, 0, 1180, 1198, 5, 92, 0, 0, 1181, 1199, 7, 25, 0, 0, 1182, 1183, 7, 17, 0, 0, 1183, 1184, 3, 313, 156, 0, 1184, 1185, 3, 313, 156, 0, 1185, 1186, 3, 313, 156, 0, 1186, 1187, 3, 313, 156, 0, 1187, 1199, 1, 0, 0, 0, 1188, 1189, 7, 17, 0, 0, 1189, 1190, 3, 313, 156, 0, 1190, 1191, 3, 313, 156, 0, 1191, 1192, 3, 313, 156, 0, 1192, 1193, 3, 313, 156, 0, 1193, 1194, 3, 313, 156, 0, 1194, 1195, 3, 313, 156, 0, 1195, 1196, 3, 313, 156, 0, 1196, 1197, 3, 313, 156, 0, 1197, 1199, 1, 0, 0, 0, 1198, 1181, 1, 0, 0, 0, 1198, 1182, 1, 0, 0, 0, 1198, 1188, 1, 0, 0, 0, 1199, 308, 1, 0, 0, 0, 1200, 1209, 3, 321, 160, 0, 1201, 1205, 3, 317, 158, 0, 1202, 1204, 3, 315, 157, 0, 1203, 1202, 1, 0, 0, 0, 1204, 1207, 1, 0, 0, 0, 1205, 1203, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1209, 1, 0, 0, 0, 1207, 1205, 1, 0, 0, 0, 1208, 1200, 1, 0, 0, 0, 1208, 1201, 1, 0, 0, 0, 1209, 310, 1, 0, 0, 0, 1210, 1212, 7, 26, 0, 0, 1211, 1210, 1, 0, 0, 0, 1212, 312, 1, 0, 0, 0, 1213, 1216, 3, 315, 157, 0, 1214, 1216, 3, 311, 155, 0, 1215, 1213, 1, 0, 0, 0, 1215, 1214, 1, 0, 0, 0, 1216, 314, 1, 0, 0, 0, 1217, 1220, 3, 321, 160, 0, 1218, 1220, 3, 317, 158, 0, 1219, 1217, 1, 0, 0, 0, 1219, 1218, 1, 0, 0, 0, 1220, 316, 1, 0, 0, 0, 1221, 1224, 3, 319, 159, 0, 1222, 1224, 2, 56, 57, 0, 1223, 1221, 1, 0, 0, 0, 1223, 1222, 1, 0, 0, 0, 1224, 318, 1, 0, 0, 0, 1225, 1226, 2, 49, 55, 0, 1226, 320, 1, 0, 0, 0, 1227, 1228, 5, 48, 0, 0, 1228, 322, 1, 0, 0, 0, 1229, 1231, 3, 315, 157, 0, 1230, 1229, 1, 0, 0, 0, 1231, 1234, 1, 0, 0, 0, 1232, 1230, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1235, 1, 0, 0, 0, 1234, 1232, 1, 0, 0, 0, 1235, 1237, 5, 46, 0, 0, 1236, 1238, 3, 315, 157, 0, 1237, 1236, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1237, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 324, 1, 0, 0, 0, 1241, 1245, 3, 327, 163, 0, 1242, 1244, 3, 329, 164, 0, 1243, 1242, 1, 0, 0, 0, 1244, 1247, 1, 0, 0, 0, 1245, 1243, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1246, 326, 1, 0, 0, 0, 1247, 1245, 1, 0, 0, 0, 1248, 1251, 3, 377, 188, 0, 1249, 1251, 3, 365, 182, 0, 1250, 1248, 1, 0, 0, 0, 1250, 1249, 1, 0, 0, 0, 1251, 328, 1, 0, 0, 0, 1252, 1255, 3, 345, 172, 0, 1253, 1255, 3, 361, 180, 0, 1254, 1252, 1, 0, 0, 0, 1254, 1253, 1, 0, 0, 0, 1255, 330, 1, 0, 0, 0, 1256, 1260, 5, 96, 0, 0, 1257, 1259, 3, 341, 170, 0, 1258, 1257, 1, 0, 0, 0, 1259, 1262, 1, 0, 0, 0, 1260, 1258, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1263, 1, 0, 0, 0, 1262, 1260, 1, 0, 0, 0, 1263, 1265, 5, 96, 0, 0, 1264, 1256, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 332, 1, 0, 0, 0, 1268, 1270, 3, 335, 167, 0, 1269, 1268, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1269, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 334, 1, 0, 0, 0, 1273, 1286, 3, 363, 181, 0, 1274, 1286, 3, 367, 183, 0, 1275, 1286, 3, 371, 185, 0, 1276, 1286, 3, 373, 186, 0, 1277, 1286, 3, 339, 169, 0, 1278, 1286, 3, 359, 179, 0, 1279, 1286, 3, 357, 178, 0, 1280, 1286, 3, 355, 177, 0, 1281, 1286, 3, 343, 171, 0, 1282, 1286, 3, 375, 187, 0, 1283, 1286, 7, 27, 0, 0, 1284, 1286, 3, 337, 168, 0, 1285, 1273, 1, 0, 0, 0, 1285, 1274, 1, 0, 0, 0, 1285, 1275, 1, 0, 0, 0, 1285, 1276, 1, 0, 0, 0, 1285, 1277, 1, 0, 0, 0, 1285, 1278, 1, 0, 0, 0, 1285, 1279, 1, 0, 0, 0, 1285, 1280, 1, 0, 0, 0, 1285, 1281, 1, 0, 0, 0, 1285, 1282, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1285, 1284, 1, 0, 0, 0, 1286, 336, 1, 0, 0, 0, 1287, 1288, 5, 47, 0, 0, 1288, 1289, 5, 42, 0, 0, 1289, 1295, 1, 0, 0, 0, 1290, 1294, 3, 347, 173, 0, 1291, 1292, 5, 42, 0, 0, 1292, 1294, 3, 353, 176, 0, 1293, 1290, 1, 0, 0, 0, 1293, 1291, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1298, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1299, 5, 42, 0, 0, 1299, 1317, 5, 47, 0, 0, 1300, 1301, 5, 47, 0, 0, 1301, 1302, 5, 47, 0, 0, 1302, 1306, 1, 0, 0, 0, 1303, 1305, 3, 351, 175, 0, 1304, 1303, 1, 0, 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1310, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1311, 3, 359, 179, 0, 1310, 1309, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1314, 1, 0, 0, 0, 1312, 1315, 3, 371, 185, 0, 1313, 1315, 5, 0, 0, 1, 1314, 1312, 1, 0, 0, 0, 1314, 1313, 1, 0, 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1287, 1, 0, 0, 0, 1316, 1300, 1, 0, 0, 0, 1317, 338, 1, 0, 0, 0, 1318, 1319, 7, 28, 0, 0, 1319, 340, 1, 0, 0, 0, 1320, 1321, 8, 29, 0, 0, 1321, 342, 1, 0, 0, 0, 1322, 1323, 7, 30, 0, 0, 1323, 344, 1, 0, 0, 0, 1324, 1325, 7, 31, 0, 0, 1325, 346, 1, 0, 0, 0, 1326, 1327, 8, 32, 0, 0, 1327, 348, 1, 0, 0, 0, 1328, 1329, 8, 33, 0, 0, 1329, 350, 1, 0, 0, 0, 1330, 1331, 8, 34, 0, 0, 1331, 352, 1, 0, 0, 0, 1332, 1333, 8, 35, 0, 0, 1333, 354, 1, 0, 0, 0, 1334, 1335, 7, 36, 0, 0, 1335, 356, 1, 0, 0, 0, 1336, 1337, 7, 37, 0, 0, 1337, 358, 1, 0, 0, 0, 1338, 1339, 7, 38, 0, 0, 1339, 360, 1, 0, 0, 0, 1340, 1341, 7, 39, 0, 0, 1341, 362, 1, 0, 0, 0, 1342, 1343, 7, 40, 0, 0, 1343, 364, 1, 0, 0, 0, 1344, 1345, 7, 41, 0, 0, 1345, 366, 1, 0, 0, 0, 1346, 1347, 7, 42, 0, 0, 1347, 368, 1, 0, 0, 0, 1348, 1349, 8, 43, 0, 0, 1349, 370, 1, 0, 0, 0, 1350, 1351, 7, 44, 0, 0, 1351, 372, 1, 0, 0, 0, 1352, 1353, 7, 45, 0, 0, 1353, 374, 1, 0, 0, 0, 1354, 1355, 7, 46, 0, 0, 1355, 376, 1, 0, 0, 0, 1356, 1357, 7, 47, 0, 0, 1357, 378, 1, 0, 0, 0, 1358, 1359, 9, 0, 0, 0, 1359, 380, 1, 0, 0, 0, 28, 0, 1163, 1165, 1172, 1174, 1178, 1198, 1205, 1208, 1211, 1215, 1219, 1223, 1232, 1239, 1245, 1250, 1254, 1260, 1266, 1271, 1285, 1293, 1295, 1306, 1310, 1314, 1316, 0]
\ No newline at end of file
+[4, 0, 175, 1399, 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, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 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, 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, 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, 135, 1, 135, 1, 135, 1, 135, 1, 135, 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, 138, 1, 138, 1, 138, 1, 138, 1, 138, 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, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 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, 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, 150, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 155, 1, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 5, 157, 1203, 8, 157, 10, 157, 12, 157, 1206, 9, 157, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1212, 8, 157, 10, 157, 12, 157, 1215, 9, 157, 1, 157, 3, 157, 1218, 8, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 3, 158, 1238, 8, 158, 1, 159, 1, 159, 1, 159, 5, 159, 1243, 8, 159, 10, 159, 12, 159, 1246, 9, 159, 3, 159, 1248, 8, 159, 1, 160, 3, 160, 1251, 8, 160, 1, 161, 1, 161, 3, 161, 1255, 8, 161, 1, 162, 1, 162, 3, 162, 1259, 8, 162, 1, 163, 1, 163, 3, 163, 1263, 8, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 5, 166, 1270, 8, 166, 10, 166, 12, 166, 1273, 9, 166, 1, 166, 1, 166, 4, 166, 1277, 8, 166, 11, 166, 12, 166, 1278, 1, 167, 1, 167, 5, 167, 1283, 8, 167, 10, 167, 12, 167, 1286, 9, 167, 1, 168, 1, 168, 3, 168, 1290, 8, 168, 1, 169, 1, 169, 3, 169, 1294, 8, 169, 1, 170, 1, 170, 5, 170, 1298, 8, 170, 10, 170, 12, 170, 1301, 9, 170, 1, 170, 4, 170, 1304, 8, 170, 11, 170, 12, 170, 1305, 1, 171, 4, 171, 1309, 8, 171, 11, 171, 12, 171, 1310, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 1325, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 5, 173, 1333, 8, 173, 10, 173, 12, 173, 1336, 9, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 5, 173, 1344, 8, 173, 10, 173, 12, 173, 1347, 9, 173, 1, 173, 3, 173, 1350, 8, 173, 1, 173, 1, 173, 3, 173, 1354, 8, 173, 3, 173, 1356, 8, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 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, 0, 0, 195, 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, 0, 351, 0, 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, 0, 375, 0, 377, 0, 379, 0, 381, 0, 383, 0, 385, 0, 387, 0, 389, 175, 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, 1415, 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, 389, 1, 0, 0, 0, 1, 391, 1, 0, 0, 0, 3, 393, 1, 0, 0, 0, 5, 395, 1, 0, 0, 0, 7, 397, 1, 0, 0, 0, 9, 399, 1, 0, 0, 0, 11, 401, 1, 0, 0, 0, 13, 403, 1, 0, 0, 0, 15, 405, 1, 0, 0, 0, 17, 407, 1, 0, 0, 0, 19, 409, 1, 0, 0, 0, 21, 411, 1, 0, 0, 0, 23, 413, 1, 0, 0, 0, 25, 416, 1, 0, 0, 0, 27, 419, 1, 0, 0, 0, 29, 421, 1, 0, 0, 0, 31, 424, 1, 0, 0, 0, 33, 426, 1, 0, 0, 0, 35, 429, 1, 0, 0, 0, 37, 431, 1, 0, 0, 0, 39, 434, 1, 0, 0, 0, 41, 437, 1, 0, 0, 0, 43, 439, 1, 0, 0, 0, 45, 441, 1, 0, 0, 0, 47, 443, 1, 0, 0, 0, 49, 445, 1, 0, 0, 0, 51, 448, 1, 0, 0, 0, 53, 450, 1, 0, 0, 0, 55, 452, 1, 0, 0, 0, 57, 454, 1, 0, 0, 0, 59, 456, 1, 0, 0, 0, 61, 458, 1, 0, 0, 0, 63, 460, 1, 0, 0, 0, 65, 462, 1, 0, 0, 0, 67, 464, 1, 0, 0, 0, 69, 466, 1, 0, 0, 0, 71, 468, 1, 0, 0, 0, 73, 470, 1, 0, 0, 0, 75, 472, 1, 0, 0, 0, 77, 474, 1, 0, 0, 0, 79, 476, 1, 0, 0, 0, 81, 478, 1, 0, 0, 0, 83, 480, 1, 0, 0, 0, 85, 482, 1, 0, 0, 0, 87, 484, 1, 0, 0, 0, 89, 486, 1, 0, 0, 0, 91, 488, 1, 0, 0, 0, 93, 496, 1, 0, 0, 0, 95, 500, 1, 0, 0, 0, 97, 504, 1, 0, 0, 0, 99, 508, 1, 0, 0, 0, 101, 514, 1, 0, 0, 0, 103, 518, 1, 0, 0, 0, 105, 521, 1, 0, 0, 0, 107, 525, 1, 0, 0, 0, 109, 535, 1, 0, 0, 0, 111, 542, 1, 0, 0, 0, 113, 548, 1, 0, 0, 0, 115, 551, 1, 0, 0, 0, 117, 556, 1, 0, 0, 0, 119, 561, 1, 0, 0, 0, 121, 566, 1, 0, 0, 0, 123, 577, 1, 0, 0, 0, 125, 584, 1, 0, 0, 0, 127, 592, 1, 0, 0, 0, 129, 599, 1, 0, 0, 0, 131, 622, 1, 0, 0, 0, 133, 631, 1, 0, 0, 0, 135, 636, 1, 0, 0, 0, 137, 642, 1, 0, 0, 0, 139, 649, 1, 0, 0, 0, 141, 655, 1, 0, 0, 0, 143, 664, 1, 0, 0, 0, 145, 671, 1, 0, 0, 0, 147, 679, 1, 0, 0, 0, 149, 686, 1, 0, 0, 0, 151, 691, 1, 0, 0, 0, 153, 702, 1, 0, 0, 0, 155, 709, 1, 0, 0, 0, 157, 718, 1, 0, 0, 0, 159, 723, 1, 0, 0, 0, 161, 728, 1, 0, 0, 0, 163, 732, 1, 0, 0, 0, 165, 737, 1, 0, 0, 0, 167, 744, 1, 0, 0, 0, 169, 752, 1, 0, 0, 0, 171, 759, 1, 0, 0, 0, 173, 769, 1, 0, 0, 0, 175, 775, 1, 0, 0, 0, 177, 780, 1, 0, 0, 0, 179, 785, 1, 0, 0, 0, 181, 791, 1, 0, 0, 0, 183, 797, 1, 0, 0, 0, 185, 805, 1, 0, 0, 0, 187, 810, 1, 0, 0, 0, 189, 817, 1, 0, 0, 0, 191, 820, 1, 0, 0, 0, 193, 823, 1, 0, 0, 0, 195, 833, 1, 0, 0, 0, 197, 841, 1, 0, 0, 0, 199, 844, 1, 0, 0, 0, 201, 849, 1, 0, 0, 0, 203, 853, 1, 0, 0, 0, 205, 859, 1, 0, 0, 0, 207, 864, 1, 0, 0, 0, 209, 872, 1, 0, 0, 0, 211, 878, 1, 0, 0, 0, 213, 884, 1, 0, 0, 0, 215, 893, 1, 0, 0, 0, 217, 899, 1, 0, 0, 0, 219, 908, 1, 0, 0, 0, 221, 919, 1, 0, 0, 0, 223, 922, 1, 0, 0, 0, 225, 927, 1, 0, 0, 0, 227, 931, 1, 0, 0, 0, 229, 936, 1, 0, 0, 0, 231, 941, 1, 0, 0, 0, 233, 944, 1, 0, 0, 0, 235, 949, 1, 0, 0, 0, 237, 958, 1, 0, 0, 0, 239, 961, 1, 0, 0, 0, 241, 967, 1, 0, 0, 0, 243, 975, 1, 0, 0, 0, 245, 983, 1, 0, 0, 0, 247, 991, 1, 0, 0, 0, 249, 996, 1, 0, 0, 0, 251, 1000, 1, 0, 0, 0, 253, 1007, 1, 0, 0, 0, 255, 1014, 1, 0, 0, 0, 257, 1023, 1, 0, 0, 0, 259, 1048, 1, 0, 0, 0, 261, 1057, 1, 0, 0, 0, 263, 1061, 1, 0, 0, 0, 265, 1070, 1, 0, 0, 0, 267, 1076, 1, 0, 0, 0, 269, 1083, 1, 0, 0, 0, 271, 1089, 1, 0, 0, 0, 273, 1094, 1, 0, 0, 0, 275, 1097, 1, 0, 0, 0, 277, 1103, 1, 0, 0, 0, 279, 1115, 1, 0, 0, 0, 281, 1120, 1, 0, 0, 0, 283, 1125, 1, 0, 0, 0, 285, 1131, 1, 0, 0, 0, 287, 1138, 1, 0, 0, 0, 289, 1142, 1, 0, 0, 0, 291, 1147, 1, 0, 0, 0, 293, 1153, 1, 0, 0, 0, 295, 1158, 1, 0, 0, 0, 297, 1164, 1, 0, 0, 0, 299, 1168, 1, 0, 0, 0, 301, 1175, 1, 0, 0, 0, 303, 1183, 1, 0, 0, 0, 305, 1185, 1, 0, 0, 0, 307, 1190, 1, 0, 0, 0, 309, 1193, 1, 0, 0, 0, 311, 1195, 1, 0, 0, 0, 313, 1197, 1, 0, 0, 0, 315, 1217, 1, 0, 0, 0, 317, 1219, 1, 0, 0, 0, 319, 1247, 1, 0, 0, 0, 321, 1250, 1, 0, 0, 0, 323, 1254, 1, 0, 0, 0, 325, 1258, 1, 0, 0, 0, 327, 1262, 1, 0, 0, 0, 329, 1264, 1, 0, 0, 0, 331, 1266, 1, 0, 0, 0, 333, 1271, 1, 0, 0, 0, 335, 1280, 1, 0, 0, 0, 337, 1289, 1, 0, 0, 0, 339, 1293, 1, 0, 0, 0, 341, 1303, 1, 0, 0, 0, 343, 1308, 1, 0, 0, 0, 345, 1324, 1, 0, 0, 0, 347, 1355, 1, 0, 0, 0, 349, 1357, 1, 0, 0, 0, 351, 1359, 1, 0, 0, 0, 353, 1361, 1, 0, 0, 0, 355, 1363, 1, 0, 0, 0, 357, 1365, 1, 0, 0, 0, 359, 1367, 1, 0, 0, 0, 361, 1369, 1, 0, 0, 0, 363, 1371, 1, 0, 0, 0, 365, 1373, 1, 0, 0, 0, 367, 1375, 1, 0, 0, 0, 369, 1377, 1, 0, 0, 0, 371, 1379, 1, 0, 0, 0, 373, 1381, 1, 0, 0, 0, 375, 1383, 1, 0, 0, 0, 377, 1385, 1, 0, 0, 0, 379, 1387, 1, 0, 0, 0, 381, 1389, 1, 0, 0, 0, 383, 1391, 1, 0, 0, 0, 385, 1393, 1, 0, 0, 0, 387, 1395, 1, 0, 0, 0, 389, 1397, 1, 0, 0, 0, 391, 392, 5, 59, 0, 0, 392, 2, 1, 0, 0, 0, 393, 394, 5, 40, 0, 0, 394, 4, 1, 0, 0, 0, 395, 396, 5, 44, 0, 0, 396, 6, 1, 0, 0, 0, 397, 398, 5, 41, 0, 0, 398, 8, 1, 0, 0, 0, 399, 400, 5, 46, 0, 0, 400, 10, 1, 0, 0, 0, 401, 402, 5, 61, 0, 0, 402, 12, 1, 0, 0, 0, 403, 404, 5, 91, 0, 0, 404, 14, 1, 0, 0, 0, 405, 406, 5, 93, 0, 0, 406, 16, 1, 0, 0, 0, 407, 408, 5, 123, 0, 0, 408, 18, 1, 0, 0, 0, 409, 410, 5, 125, 0, 0, 410, 20, 1, 0, 0, 0, 411, 412, 5, 124, 0, 0, 412, 22, 1, 0, 0, 0, 413, 414, 5, 46, 0, 0, 414, 415, 5, 46, 0, 0, 415, 24, 1, 0, 0, 0, 416, 417, 5, 60, 0, 0, 417, 418, 5, 62, 0, 0, 418, 26, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 28, 1, 0, 0, 0, 421, 422, 5, 60, 0, 0, 422, 423, 5, 61, 0, 0, 423, 30, 1, 0, 0, 0, 424, 425, 5, 62, 0, 0, 425, 32, 1, 0, 0, 0, 426, 427, 5, 62, 0, 0, 427, 428, 5, 61, 0, 0, 428, 34, 1, 0, 0, 0, 429, 430, 5, 38, 0, 0, 430, 36, 1, 0, 0, 0, 431, 432, 5, 62, 0, 0, 432, 433, 5, 62, 0, 0, 433, 38, 1, 0, 0, 0, 434, 435, 5, 60, 0, 0, 435, 436, 5, 60, 0, 0, 436, 40, 1, 0, 0, 0, 437, 438, 5, 43, 0, 0, 438, 42, 1, 0, 0, 0, 439, 440, 5, 47, 0, 0, 440, 44, 1, 0, 0, 0, 441, 442, 5, 37, 0, 0, 442, 46, 1, 0, 0, 0, 443, 444, 5, 94, 0, 0, 444, 48, 1, 0, 0, 0, 445, 446, 5, 61, 0, 0, 446, 447, 5, 126, 0, 0, 447, 50, 1, 0, 0, 0, 448, 449, 5, 36, 0, 0, 449, 52, 1, 0, 0, 0, 450, 451, 5, 10216, 0, 0, 451, 54, 1, 0, 0, 0, 452, 453, 5, 12296, 0, 0, 453, 56, 1, 0, 0, 0, 454, 455, 5, 65124, 0, 0, 455, 58, 1, 0, 0, 0, 456, 457, 5, 65308, 0, 0, 457, 60, 1, 0, 0, 0, 458, 459, 5, 10217, 0, 0, 459, 62, 1, 0, 0, 0, 460, 461, 5, 12297, 0, 0, 461, 64, 1, 0, 0, 0, 462, 463, 5, 65125, 0, 0, 463, 66, 1, 0, 0, 0, 464, 465, 5, 65310, 0, 0, 465, 68, 1, 0, 0, 0, 466, 467, 5, 173, 0, 0, 467, 70, 1, 0, 0, 0, 468, 469, 5, 8208, 0, 0, 469, 72, 1, 0, 0, 0, 470, 471, 5, 8209, 0, 0, 471, 74, 1, 0, 0, 0, 472, 473, 5, 8210, 0, 0, 473, 76, 1, 0, 0, 0, 474, 475, 5, 8211, 0, 0, 475, 78, 1, 0, 0, 0, 476, 477, 5, 8212, 0, 0, 477, 80, 1, 0, 0, 0, 478, 479, 5, 8213, 0, 0, 479, 82, 1, 0, 0, 0, 480, 481, 5, 8722, 0, 0, 481, 84, 1, 0, 0, 0, 482, 483, 5, 65112, 0, 0, 483, 86, 1, 0, 0, 0, 484, 485, 5, 65123, 0, 0, 485, 88, 1, 0, 0, 0, 486, 487, 5, 65293, 0, 0, 487, 90, 1, 0, 0, 0, 488, 489, 7, 0, 0, 0, 489, 490, 7, 1, 0, 0, 490, 491, 7, 2, 0, 0, 491, 492, 7, 1, 0, 0, 492, 493, 7, 3, 0, 0, 493, 494, 7, 4, 0, 0, 494, 495, 7, 1, 0, 0, 495, 92, 1, 0, 0, 0, 496, 497, 7, 0, 0, 0, 497, 498, 7, 5, 0, 0, 498, 499, 7, 2, 0, 0, 499, 94, 1, 0, 0, 0, 500, 501, 7, 0, 0, 0, 501, 502, 7, 6, 0, 0, 502, 503, 7, 6, 0, 0, 503, 96, 1, 0, 0, 0, 504, 505, 7, 0, 0, 0, 505, 506, 7, 3, 0, 0, 506, 507, 7, 3, 0, 0, 507, 98, 1, 0, 0, 0, 508, 509, 7, 0, 0, 0, 509, 510, 7, 3, 0, 0, 510, 511, 7, 7, 0, 0, 511, 512, 7, 8, 0, 0, 512, 513, 7, 9, 0, 0, 513, 100, 1, 0, 0, 0, 514, 515, 7, 0, 0, 0, 515, 516, 7, 5, 0, 0, 516, 517, 7, 6, 0, 0, 517, 102, 1, 0, 0, 0, 518, 519, 7, 0, 0, 0, 519, 520, 7, 10, 0, 0, 520, 104, 1, 0, 0, 0, 521, 522, 7, 0, 0, 0, 522, 523, 7, 10, 0, 0, 523, 524, 7, 1, 0, 0, 524, 106, 1, 0, 0, 0, 525, 526, 7, 0, 0, 0, 526, 527, 7, 10, 0, 0, 527, 528, 7, 1, 0, 0, 528, 529, 7, 8, 0, 0, 529, 530, 7, 5, 0, 0, 530, 531, 7, 6, 0, 0, 531, 532, 7, 4, 0, 0, 532, 533, 7, 5, 0, 0, 533, 534, 7, 11, 0, 0, 534, 108, 1, 0, 0, 0, 535, 536, 7, 0, 0, 0, 536, 537, 7, 7, 0, 0, 537, 538, 7, 7, 0, 0, 538, 539, 7, 0, 0, 0, 539, 540, 7, 1, 0, 0, 540, 541, 7, 12, 0, 0, 541, 110, 1, 0, 0, 0, 542, 543, 7, 13, 0, 0, 543, 544, 7, 8, 0, 0, 544, 545, 7, 11, 0, 0, 545, 546, 7, 4, 0, 0, 546, 547, 7, 5, 0, 0, 547, 112, 1, 0, 0, 0, 548, 549, 7, 13, 0, 0, 549, 550, 7, 2, 0, 0, 550, 114, 1, 0, 0, 0, 551, 552, 7, 1, 0, 0, 552, 553, 7, 0, 0, 0, 553, 554, 7, 3, 0, 0, 554, 555, 7, 3, 0, 0, 555, 116, 1, 0, 0, 0, 556, 557, 7, 1, 0, 0, 557, 558, 7, 0, 0, 0, 558, 559, 7, 10, 0, 0, 559, 560, 7, 8, 0, 0, 560, 118, 1, 0, 0, 0, 561, 562, 7, 1, 0, 0, 562, 563, 7, 0, 0, 0, 563, 564, 7, 10, 0, 0, 564, 565, 7, 7, 0, 0, 565, 120, 1, 0, 0, 0, 566, 567, 7, 1, 0, 0, 567, 568, 7, 12, 0, 0, 568, 569, 7, 8, 0, 0, 569, 570, 7, 1, 0, 0, 570, 571, 7, 14, 0, 0, 571, 572, 7, 15, 0, 0, 572, 573, 7, 16, 0, 0, 573, 574, 7, 4, 0, 0, 574, 575, 7, 5, 0, 0, 575, 576, 7, 7, 0, 0, 576, 122, 1, 0, 0, 0, 577, 578, 7, 1, 0, 0, 578, 579, 7, 16, 0, 0, 579, 580, 7, 3, 0, 0, 580, 581, 7, 17, 0, 0, 581, 582, 7, 18, 0, 0, 582, 583, 7, 5, 0, 0, 583, 124, 1, 0, 0, 0, 584, 585, 7, 1, 0, 0, 585, 586, 7, 16, 0, 0, 586, 587, 7, 18, 0, 0, 587, 588, 7, 18, 0, 0, 588, 589, 7, 8, 0, 0, 589, 590, 7, 5, 0, 0, 590, 591, 7, 7, 0, 0, 591, 126, 1, 0, 0, 0, 592, 593, 7, 1, 0, 0, 593, 594, 7, 16, 0, 0, 594, 595, 7, 18, 0, 0, 595, 596, 7, 18, 0, 0, 596, 597, 7, 4, 0, 0, 597, 598, 7, 7, 0, 0, 598, 128, 1, 0, 0, 0, 599, 600, 7, 1, 0, 0, 600, 601, 7, 16, 0, 0, 601, 602, 7, 18, 0, 0, 602, 603, 7, 18, 0, 0, 603, 604, 7, 4, 0, 0, 604, 605, 7, 7, 0, 0, 605, 606, 5, 95, 0, 0, 606, 607, 7, 10, 0, 0, 607, 608, 7, 14, 0, 0, 608, 609, 7, 4, 0, 0, 609, 610, 7, 15, 0, 0, 610, 611, 5, 95, 0, 0, 611, 612, 7, 1, 0, 0, 612, 613, 7, 12, 0, 0, 613, 614, 7, 8, 0, 0, 614, 615, 7, 1, 0, 0, 615, 616, 7, 14, 0, 0, 616, 617, 7, 15, 0, 0, 617, 618, 7, 16, 0, 0, 618, 619, 7, 4, 0, 0, 619, 620, 7, 5, 0, 0, 620, 621, 7, 7, 0, 0, 621, 130, 1, 0, 0, 0, 622, 623, 7, 1, 0, 0, 623, 624, 7, 16, 0, 0, 624, 625, 7, 5, 0, 0, 625, 626, 7, 7, 0, 0, 626, 627, 7, 0, 0, 0, 627, 628, 7, 4, 0, 0, 628, 629, 7, 5, 0, 0, 629, 630, 7, 10, 0, 0, 630, 132, 1, 0, 0, 0, 631, 632, 7, 1, 0, 0, 632, 633, 7, 16, 0, 0, 633, 634, 7, 15, 0, 0, 634, 635, 7, 2, 0, 0, 635, 134, 1, 0, 0, 0, 636, 637, 7, 1, 0, 0, 637, 638, 7, 16, 0, 0, 638, 639, 7, 17, 0, 0, 639, 640, 7, 5, 0, 0, 640, 641, 7, 7, 0, 0, 641, 136, 1, 0, 0, 0, 642, 643, 7, 1, 0, 0, 643, 644, 7, 9, 0, 0, 644, 645, 7, 8, 0, 0, 645, 646, 7, 0, 0, 0, 646, 647, 7, 7, 0, 0, 647, 648, 7, 8, 0, 0, 648, 138, 1, 0, 0, 0, 649, 650, 7, 1, 0, 0, 650, 651, 7, 2, 0, 0, 651, 652, 7, 1, 0, 0, 652, 653, 7, 3, 0, 0, 653, 654, 7, 8, 0, 0, 654, 140, 1, 0, 0, 0, 655, 656, 7, 6, 0, 0, 656, 657, 7, 0, 0, 0, 657, 658, 7, 7, 0, 0, 658, 659, 7, 0, 0, 0, 659, 660, 7, 13, 0, 0, 660, 661, 7, 0, 0, 0, 661, 662, 7, 10, 0, 0, 662, 663, 7, 8, 0, 0, 663, 142, 1, 0, 0, 0, 664, 665, 7, 6, 0, 0, 665, 666, 7, 13, 0, 0, 666, 667, 7, 7, 0, 0, 667, 668, 7, 2, 0, 0, 668, 669, 7, 15, 0, 0, 669, 670, 7, 8, 0, 0, 670, 144, 1, 0, 0, 0, 671, 672, 7, 6, 0, 0, 672, 673, 7, 8, 0, 0, 673, 674, 7, 19, 0, 0, 674, 675, 7, 0, 0, 0, 675, 676, 7, 17, 0, 0, 676, 677, 7, 3, 0, 0, 677, 678, 7, 7, 0, 0, 678, 146, 1, 0, 0, 0, 679, 680, 7, 6, 0, 0, 680, 681, 7, 8, 0, 0, 681, 682, 7, 3, 0, 0, 682, 683, 7, 8, 0, 0, 683, 684, 7, 7, 0, 0, 684, 685, 7, 8, 0, 0, 685, 148, 1, 0, 0, 0, 686, 687, 7, 6, 0, 0, 687, 688, 7, 8, 0, 0, 688, 689, 7, 10, 0, 0, 689, 690, 7, 1, 0, 0, 690, 150, 1, 0, 0, 0, 691, 692, 7, 6, 0, 0, 692, 693, 7, 8, 0, 0, 693, 694, 7, 10, 0, 0, 694, 695, 7, 1, 0, 0, 695, 696, 7, 8, 0, 0, 696, 697, 7, 5, 0, 0, 697, 698, 7, 6, 0, 0, 698, 699, 7, 4, 0, 0, 699, 700, 7, 5, 0, 0, 700, 701, 7, 11, 0, 0, 701, 152, 1, 0, 0, 0, 702, 703, 7, 6, 0, 0, 703, 704, 7, 8, 0, 0, 704, 705, 7, 7, 0, 0, 705, 706, 7, 0, 0, 0, 706, 707, 7, 1, 0, 0, 707, 708, 7, 12, 0, 0, 708, 154, 1, 0, 0, 0, 709, 710, 7, 6, 0, 0, 710, 711, 7, 4, 0, 0, 711, 712, 7, 10, 0, 0, 712, 713, 7, 7, 0, 0, 713, 714, 7, 4, 0, 0, 714, 715, 7, 5, 0, 0, 715, 716, 7, 1, 0, 0, 716, 717, 7, 7, 0, 0, 717, 156, 1, 0, 0, 0, 718, 719, 7, 6, 0, 0, 719, 720, 7, 9, 0, 0, 720, 721, 7, 16, 0, 0, 721, 722, 7, 15, 0, 0, 722, 158, 1, 0, 0, 0, 723, 724, 7, 8, 0, 0, 724, 725, 7, 3, 0, 0, 725, 726, 7, 10, 0, 0, 726, 727, 7, 8, 0, 0, 727, 160, 1, 0, 0, 0, 728, 729, 7, 8, 0, 0, 729, 730, 7, 5, 0, 0, 730, 731, 7, 6, 0, 0, 731, 162, 1, 0, 0, 0, 732, 733, 7, 8, 0, 0, 733, 734, 7, 5, 0, 0, 734, 735, 7, 6, 0, 0, 735, 736, 7, 10, 0, 0, 736, 164, 1, 0, 0, 0, 737, 738, 7, 8, 0, 0, 738, 739, 7, 20, 0, 0, 739, 740, 7, 4, 0, 0, 740, 741, 7, 10, 0, 0, 741, 742, 7, 7, 0, 0, 742, 743, 7, 10, 0, 0, 743, 166, 1, 0, 0, 0, 744, 745, 7, 8, 0, 0, 745, 746, 7, 20, 0, 0, 746, 747, 7, 15, 0, 0, 747, 748, 7, 3, 0, 0, 748, 749, 7, 0, 0, 0, 749, 750, 7, 4, 0, 0, 750, 751, 7, 5, 0, 0, 751, 168, 1, 0, 0, 0, 752, 753, 7, 8, 0, 0, 753, 754, 7, 20, 0, 0, 754, 755, 7, 15, 0, 0, 755, 756, 7, 16, 0, 0, 756, 757, 7, 9, 0, 0, 757, 758, 7, 7, 0, 0, 758, 170, 1, 0, 0, 0, 759, 760, 7, 8, 0, 0, 760, 761, 7, 20, 0, 0, 761, 762, 7, 7, 0, 0, 762, 763, 7, 8, 0, 0, 763, 764, 7, 5, 0, 0, 764, 765, 7, 10, 0, 0, 765, 766, 7, 4, 0, 0, 766, 767, 7, 16, 0, 0, 767, 768, 7, 5, 0, 0, 768, 172, 1, 0, 0, 0, 769, 770, 7, 19, 0, 0, 770, 771, 7, 0, 0, 0, 771, 772, 7, 3, 0, 0, 772, 773, 7, 10, 0, 0, 773, 774, 7, 8, 0, 0, 774, 174, 1, 0, 0, 0, 775, 776, 7, 19, 0, 0, 776, 777, 7, 9, 0, 0, 777, 778, 7, 16, 0, 0, 778, 779, 7, 18, 0, 0, 779, 176, 1, 0, 0, 0, 780, 781, 7, 11, 0, 0, 781, 782, 7, 3, 0, 0, 782, 783, 7, 16, 0, 0, 783, 784, 7, 13, 0, 0, 784, 178, 1, 0, 0, 0, 785, 786, 7, 11, 0, 0, 786, 787, 7, 9, 0, 0, 787, 788, 7, 0, 0, 0, 788, 789, 7, 15, 0, 0, 789, 790, 7, 12, 0, 0, 790, 180, 1, 0, 0, 0, 791, 792, 7, 11, 0, 0, 792, 793, 7, 9, 0, 0, 793, 794, 7, 16, 0, 0, 794, 795, 7, 17, 0, 0, 795, 796, 7, 15, 0, 0, 796, 182, 1, 0, 0, 0, 797, 798, 7, 12, 0, 0, 798, 799, 7, 8, 0, 0, 799, 800, 7, 0, 0, 0, 800, 801, 7, 6, 0, 0, 801, 802, 7, 8, 0, 0, 802, 803, 7, 9, 0, 0, 803, 804, 7, 10, 0, 0, 804, 184, 1, 0, 0, 0, 805, 806, 7, 12, 0, 0, 806, 807, 7, 4, 0, 0, 807, 808, 7, 5, 0, 0, 808, 809, 7, 7, 0, 0, 809, 186, 1, 0, 0, 0, 810, 811, 7, 4, 0, 0, 811, 812, 7, 18, 0, 0, 812, 813, 7, 15, 0, 0, 813, 814, 7, 16, 0, 0, 814, 815, 7, 9, 0, 0, 815, 816, 7, 7, 0, 0, 816, 188, 1, 0, 0, 0, 817, 818, 7, 4, 0, 0, 818, 819, 7, 19, 0, 0, 819, 190, 1, 0, 0, 0, 820, 821, 7, 4, 0, 0, 821, 822, 7, 5, 0, 0, 822, 192, 1, 0, 0, 0, 823, 824, 7, 4, 0, 0, 824, 825, 7, 5, 0, 0, 825, 826, 7, 1, 0, 0, 826, 827, 7, 9, 0, 0, 827, 828, 7, 8, 0, 0, 828, 829, 7, 18, 0, 0, 829, 830, 7, 8, 0, 0, 830, 831, 7, 5, 0, 0, 831, 832, 7, 7, 0, 0, 832, 194, 1, 0, 0, 0, 833, 834, 7, 4, 0, 0, 834, 835, 7, 5, 0, 0, 835, 836, 7, 10, 0, 0, 836, 837, 7, 7, 0, 0, 837, 838, 7, 0, 0, 0, 838, 839, 7, 3, 0, 0, 839, 840, 7, 3, 0, 0, 840, 196, 1, 0, 0, 0, 841, 842, 7, 4, 0, 0, 842, 843, 7, 10, 0, 0, 843, 198, 1, 0, 0, 0, 844, 845, 7, 21, 0, 0, 845, 846, 7, 16, 0, 0, 846, 847, 7, 4, 0, 0, 847, 848, 7, 5, 0, 0, 848, 200, 1, 0, 0, 0, 849, 850, 7, 14, 0, 0, 850, 851, 7, 8, 0, 0, 851, 852, 7, 2, 0, 0, 852, 202, 1, 0, 0, 0, 853, 854, 7, 3, 0, 0, 854, 855, 7, 4, 0, 0, 855, 856, 7, 18, 0, 0, 856, 857, 7, 4, 0, 0, 857, 858, 7, 7, 0, 0, 858, 204, 1, 0, 0, 0, 859, 860, 7, 3, 0, 0, 860, 861, 7, 16, 0, 0, 861, 862, 7, 0, 0, 0, 862, 863, 7, 6, 0, 0, 863, 206, 1, 0, 0, 0, 864, 865, 7, 3, 0, 0, 865, 866, 7, 16, 0, 0, 866, 867, 7, 11, 0, 0, 867, 868, 7, 4, 0, 0, 868, 869, 7, 1, 0, 0, 869, 870, 7, 0, 0, 0, 870, 871, 7, 3, 0, 0, 871, 208, 1, 0, 0, 0, 872, 873, 7, 18, 0, 0, 873, 874, 7, 0, 0, 0, 874, 875, 7, 1, 0, 0, 875, 876, 7, 9, 0, 0, 876, 877, 7, 16, 0, 0, 877, 210, 1, 0, 0, 0, 878, 879, 7, 18, 0, 0, 879, 880, 7, 0, 0, 0, 880, 881, 7, 7, 0, 0, 881, 882, 7, 1, 0, 0, 882, 883, 7, 12, 0, 0, 883, 212, 1, 0, 0, 0, 884, 885, 7, 18, 0, 0, 885, 886, 7, 0, 0, 0, 886, 887, 7, 20, 0, 0, 887, 888, 7, 22, 0, 0, 888, 889, 7, 0, 0, 0, 889, 890, 7, 3, 0, 0, 890, 891, 7, 17, 0, 0, 891, 892, 7, 8, 0, 0, 892, 214, 1, 0, 0, 0, 893, 894, 7, 18, 0, 0, 894, 895, 7, 8, 0, 0, 895, 896, 7, 9, 0, 0, 896, 897, 7, 11, 0, 0, 897, 898, 7, 8, 0, 0, 898, 216, 1, 0, 0, 0, 899, 900, 7, 18, 0, 0, 900, 901, 7, 4, 0, 0, 901, 902, 7, 5, 0, 0, 902, 903, 7, 22, 0, 0, 903, 904, 7, 0, 0, 0, 904, 905, 7, 3, 0, 0, 905, 906, 7, 17, 0, 0, 906, 907, 7, 8, 0, 0, 907, 218, 1, 0, 0, 0, 908, 909, 7, 18, 0, 0, 909, 910, 7, 17, 0, 0, 910, 911, 7, 3, 0, 0, 911, 912, 7, 7, 0, 0, 912, 913, 7, 4, 0, 0, 913, 914, 5, 95, 0, 0, 914, 915, 7, 21, 0, 0, 915, 916, 7, 16, 0, 0, 916, 917, 7, 4, 0, 0, 917, 918, 7, 5, 0, 0, 918, 220, 1, 0, 0, 0, 919, 920, 7, 5, 0, 0, 920, 921, 7, 16, 0, 0, 921, 222, 1, 0, 0, 0, 922, 923, 7, 5, 0, 0, 923, 924, 7, 16, 0, 0, 924, 925, 7, 6, 0, 0, 925, 926, 7, 8, 0, 0, 926, 224, 1, 0, 0, 0, 927, 928, 7, 5, 0, 0, 928, 929, 7, 16, 0, 0, 929, 930, 7, 7, 0, 0, 930, 226, 1, 0, 0, 0, 931, 932, 7, 5, 0, 0, 932, 933, 7, 16, 0, 0, 933, 934, 7, 5, 0, 0, 934, 935, 7, 8, 0, 0, 935, 228, 1, 0, 0, 0, 936, 937, 7, 5, 0, 0, 937, 938, 7, 17, 0, 0, 938, 939, 7, 3, 0, 0, 939, 940, 7, 3, 0, 0, 940, 230, 1, 0, 0, 0, 941, 942, 7, 16, 0, 0, 942, 943, 7, 5, 0, 0, 943, 232, 1, 0, 0, 0, 944, 945, 7, 16, 0, 0, 945, 946, 7, 5, 0, 0, 946, 947, 7, 3, 0, 0, 947, 948, 7, 2, 0, 0, 948, 234, 1, 0, 0, 0, 949, 950, 7, 16, 0, 0, 950, 951, 7, 15, 0, 0, 951, 952, 7, 7, 0, 0, 952, 953, 7, 4, 0, 0, 953, 954, 7, 16, 0, 0, 954, 955, 7, 5, 0, 0, 955, 956, 7, 0, 0, 0, 956, 957, 7, 3, 0, 0, 957, 236, 1, 0, 0, 0, 958, 959, 7, 16, 0, 0, 959, 960, 7, 9, 0, 0, 960, 238, 1, 0, 0, 0, 961, 962, 7, 16, 0, 0, 962, 963, 7, 9, 0, 0, 963, 964, 7, 6, 0, 0, 964, 965, 7, 8, 0, 0, 965, 966, 7, 9, 0, 0, 966, 240, 1, 0, 0, 0, 967, 968, 7, 15, 0, 0, 968, 969, 7, 9, 0, 0, 969, 970, 7, 4, 0, 0, 970, 971, 7, 18, 0, 0, 971, 972, 7, 0, 0, 0, 972, 973, 7, 9, 0, 0, 973, 974, 7, 2, 0, 0, 974, 242, 1, 0, 0, 0, 975, 976, 7, 15, 0, 0, 976, 977, 7, 9, 0, 0, 977, 978, 7, 16, 0, 0, 978, 979, 7, 19, 0, 0, 979, 980, 7, 4, 0, 0, 980, 981, 7, 3, 0, 0, 981, 982, 7, 8, 0, 0, 982, 244, 1, 0, 0, 0, 983, 984, 7, 15, 0, 0, 984, 985, 7, 9, 0, 0, 985, 986, 7, 16, 0, 0, 986, 987, 7, 21, 0, 0, 987, 988, 7, 8, 0, 0, 988, 989, 7, 1, 0, 0, 989, 990, 7, 7, 0, 0, 990, 246, 1, 0, 0, 0, 991, 992, 7, 9, 0, 0, 992, 993, 7, 8, 0, 0, 993, 994, 7, 0, 0, 0, 994, 995, 7, 6, 0, 0, 995, 248, 1, 0, 0, 0, 996, 997, 7, 9, 0, 0, 997, 998, 7, 8, 0, 0, 998, 999, 7, 3, 0, 0, 999, 250, 1, 0, 0, 0, 1000, 1001, 7, 9, 0, 0, 1001, 1002, 7, 8, 0, 0, 1002, 1003, 7, 5, 0, 0, 1003, 1004, 7, 0, 0, 0, 1004, 1005, 7, 18, 0, 0, 1005, 1006, 7, 8, 0, 0, 1006, 252, 1, 0, 0, 0, 1007, 1008, 7, 9, 0, 0, 1008, 1009, 7, 8, 0, 0, 1009, 1010, 7, 7, 0, 0, 1010, 1011, 7, 17, 0, 0, 1011, 1012, 7, 9, 0, 0, 1012, 1013, 7, 5, 0, 0, 1013, 254, 1, 0, 0, 0, 1014, 1015, 7, 9, 0, 0, 1015, 1016, 7, 16, 0, 0, 1016, 1017, 7, 3, 0, 0, 1017, 1018, 7, 3, 0, 0, 1018, 1019, 7, 13, 0, 0, 1019, 1020, 7, 0, 0, 0, 1020, 1021, 7, 1, 0, 0, 1021, 1022, 7, 14, 0, 0, 1022, 256, 1, 0, 0, 0, 1023, 1024, 7, 9, 0, 0, 1024, 1025, 7, 16, 0, 0, 1025, 1026, 7, 3, 0, 0, 1026, 1027, 7, 3, 0, 0, 1027, 1028, 7, 13, 0, 0, 1028, 1029, 7, 0, 0, 0, 1029, 1030, 7, 1, 0, 0, 1030, 1031, 7, 14, 0, 0, 1031, 1032, 5, 95, 0, 0, 1032, 1033, 7, 10, 0, 0, 1033, 1034, 7, 14, 0, 0, 1034, 1035, 7, 4, 0, 0, 1035, 1036, 7, 15, 0, 0, 1036, 1037, 5, 95, 0, 0, 1037, 1038, 7, 1, 0, 0, 1038, 1039, 7, 12, 0, 0, 1039, 1040, 7, 8, 0, 0, 1040, 1041, 7, 1, 0, 0, 1041, 1042, 7, 14, 0, 0, 1042, 1043, 7, 15, 0, 0, 1043, 1044, 7, 16, 0, 0, 1044, 1045, 7, 4, 0, 0, 1045, 1046, 7, 5, 0, 0, 1046, 1047, 7, 7, 0, 0, 1047, 258, 1, 0, 0, 0, 1048, 1049, 7, 10, 0, 0, 1049, 1050, 7, 8, 0, 0, 1050, 1051, 7, 23, 0, 0, 1051, 1052, 7, 17, 0, 0, 1052, 1053, 7, 8, 0, 0, 1053, 1054, 7, 5, 0, 0, 1054, 1055, 7, 1, 0, 0, 1055, 1056, 7, 8, 0, 0, 1056, 260, 1, 0, 0, 0, 1057, 1058, 7, 10, 0, 0, 1058, 1059, 7, 8, 0, 0, 1059, 1060, 7, 7, 0, 0, 1060, 262, 1, 0, 0, 0, 1061, 1062, 7, 10, 0, 0, 1062, 1063, 7, 12, 0, 0, 1063, 1064, 7, 16, 0, 0, 1064, 1065, 7, 9, 0, 0, 1065, 1066, 7, 7, 0, 0, 1066, 1067, 7, 8, 0, 0, 1067, 1068, 7, 10, 0, 0, 1068, 1069, 7, 7, 0, 0, 1069, 264, 1, 0, 0, 0, 1070, 1071, 7, 10, 0, 0, 1071, 1072, 7, 7, 0, 0, 1072, 1073, 7, 0, 0, 0, 1073, 1074, 7, 9, 0, 0, 1074, 1075, 7, 7, 0, 0, 1075, 266, 1, 0, 0, 0, 1076, 1077, 7, 10, 0, 0, 1077, 1078, 7, 7, 0, 0, 1078, 1079, 7, 0, 0, 0, 1079, 1080, 7, 9, 0, 0, 1080, 1081, 7, 7, 0, 0, 1081, 1082, 7, 10, 0, 0, 1082, 268, 1, 0, 0, 0, 1083, 1084, 7, 7, 0, 0, 1084, 1085, 7, 0, 0, 0, 1085, 1086, 7, 13, 0, 0, 1086, 1087, 7, 3, 0, 0, 1087, 1088, 7, 8, 0, 0, 1088, 270, 1, 0, 0, 0, 1089, 1090, 7, 7, 0, 0, 1090, 1091, 7, 12, 0, 0, 1091, 1092, 7, 8, 0, 0, 1092, 1093, 7, 5, 0, 0, 1093, 272, 1, 0, 0, 0, 1094, 1095, 7, 7, 0, 0, 1095, 1096, 7, 16, 0, 0, 1096, 274, 1, 0, 0, 0, 1097, 1098, 7, 7, 0, 0, 1098, 1099, 7, 9, 0, 0, 1099, 1100, 7, 0, 0, 0, 1100, 1101, 7, 4, 0, 0, 1101, 1102, 7, 3, 0, 0, 1102, 276, 1, 0, 0, 0, 1103, 1104, 7, 7, 0, 0, 1104, 1105, 7, 9, 0, 0, 1105, 1106, 7, 0, 0, 0, 1106, 1107, 7, 5, 0, 0, 1107, 1108, 7, 10, 0, 0, 1108, 1109, 7, 0, 0, 0, 1109, 1110, 7, 1, 0, 0, 1110, 1111, 7, 7, 0, 0, 1111, 1112, 7, 4, 0, 0, 1112, 1113, 7, 16, 0, 0, 1113, 1114, 7, 5, 0, 0, 1114, 278, 1, 0, 0, 0, 1115, 1116, 7, 7, 0, 0, 1116, 1117, 7, 9, 0, 0, 1117, 1118, 7, 17, 0, 0, 1118, 1119, 7, 8, 0, 0, 1119, 280, 1, 0, 0, 0, 1120, 1121, 7, 7, 0, 0, 1121, 1122, 7, 2, 0, 0, 1122, 1123, 7, 15, 0, 0, 1123, 1124, 7, 8, 0, 0, 1124, 282, 1, 0, 0, 0, 1125, 1126, 7, 17, 0, 0, 1126, 1127, 7, 5, 0, 0, 1127, 1128, 7, 4, 0, 0, 1128, 1129, 7, 16, 0, 0, 1129, 1130, 7, 5, 0, 0, 1130, 284, 1, 0, 0, 0, 1131, 1132, 7, 17, 0, 0, 1132, 1133, 7, 5, 0, 0, 1133, 1134, 7, 24, 0, 0, 1134, 1135, 7, 4, 0, 0, 1135, 1136, 7, 5, 0, 0, 1136, 1137, 7, 6, 0, 0, 1137, 286, 1, 0, 0, 0, 1138, 1139, 7, 17, 0, 0, 1139, 1140, 7, 10, 0, 0, 1140, 1141, 7, 8, 0, 0, 1141, 288, 1, 0, 0, 0, 1142, 1143, 7, 24, 0, 0, 1143, 1144, 7, 12, 0, 0, 1144, 1145, 7, 8, 0, 0, 1145, 1146, 7, 5, 0, 0, 1146, 290, 1, 0, 0, 0, 1147, 1148, 7, 24, 0, 0, 1148, 1149, 7, 12, 0, 0, 1149, 1150, 7, 8, 0, 0, 1150, 1151, 7, 9, 0, 0, 1151, 1152, 7, 8, 0, 0, 1152, 292, 1, 0, 0, 0, 1153, 1154, 7, 24, 0, 0, 1154, 1155, 7, 4, 0, 0, 1155, 1156, 7, 7, 0, 0, 1156, 1157, 7, 12, 0, 0, 1157, 294, 1, 0, 0, 0, 1158, 1159, 7, 24, 0, 0, 1159, 1160, 7, 9, 0, 0, 1160, 1161, 7, 4, 0, 0, 1161, 1162, 7, 7, 0, 0, 1162, 1163, 7, 8, 0, 0, 1163, 296, 1, 0, 0, 0, 1164, 1165, 7, 20, 0, 0, 1165, 1166, 7, 16, 0, 0, 1166, 1167, 7, 9, 0, 0, 1167, 298, 1, 0, 0, 0, 1168, 1169, 7, 10, 0, 0, 1169, 1170, 7, 4, 0, 0, 1170, 1171, 7, 5, 0, 0, 1171, 1172, 7, 11, 0, 0, 1172, 1173, 7, 3, 0, 0, 1173, 1174, 7, 8, 0, 0, 1174, 300, 1, 0, 0, 0, 1175, 1176, 7, 6, 0, 0, 1176, 1177, 7, 8, 0, 0, 1177, 1178, 7, 1, 0, 0, 1178, 1179, 7, 4, 0, 0, 1179, 1180, 7, 18, 0, 0, 1180, 1181, 7, 0, 0, 0, 1181, 1182, 7, 3, 0, 0, 1182, 302, 1, 0, 0, 0, 1183, 1184, 5, 42, 0, 0, 1184, 304, 1, 0, 0, 0, 1185, 1186, 7, 10, 0, 0, 1186, 1187, 7, 14, 0, 0, 1187, 1188, 7, 4, 0, 0, 1188, 1189, 7, 15, 0, 0, 1189, 306, 1, 0, 0, 0, 1190, 1191, 5, 33, 0, 0, 1191, 1192, 5, 61, 0, 0, 1192, 308, 1, 0, 0, 0, 1193, 1194, 5, 45, 0, 0, 1194, 310, 1, 0, 0, 0, 1195, 1196, 5, 33, 0, 0, 1196, 312, 1, 0, 0, 0, 1197, 1198, 5, 58, 0, 0, 1198, 314, 1, 0, 0, 0, 1199, 1204, 5, 34, 0, 0, 1200, 1203, 3, 379, 189, 0, 1201, 1203, 3, 317, 158, 0, 1202, 1200, 1, 0, 0, 0, 1202, 1201, 1, 0, 0, 0, 1203, 1206, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1207, 1, 0, 0, 0, 1206, 1204, 1, 0, 0, 0, 1207, 1218, 5, 34, 0, 0, 1208, 1213, 5, 39, 0, 0, 1209, 1212, 3, 359, 179, 0, 1210, 1212, 3, 317, 158, 0, 1211, 1209, 1, 0, 0, 0, 1211, 1210, 1, 0, 0, 0, 1212, 1215, 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1216, 1, 0, 0, 0, 1215, 1213, 1, 0, 0, 0, 1216, 1218, 5, 39, 0, 0, 1217, 1199, 1, 0, 0, 0, 1217, 1208, 1, 0, 0, 0, 1218, 316, 1, 0, 0, 0, 1219, 1237, 5, 92, 0, 0, 1220, 1238, 7, 25, 0, 0, 1221, 1222, 7, 17, 0, 0, 1222, 1223, 3, 323, 161, 0, 1223, 1224, 3, 323, 161, 0, 1224, 1225, 3, 323, 161, 0, 1225, 1226, 3, 323, 161, 0, 1226, 1238, 1, 0, 0, 0, 1227, 1228, 7, 17, 0, 0, 1228, 1229, 3, 323, 161, 0, 1229, 1230, 3, 323, 161, 0, 1230, 1231, 3, 323, 161, 0, 1231, 1232, 3, 323, 161, 0, 1232, 1233, 3, 323, 161, 0, 1233, 1234, 3, 323, 161, 0, 1234, 1235, 3, 323, 161, 0, 1235, 1236, 3, 323, 161, 0, 1236, 1238, 1, 0, 0, 0, 1237, 1220, 1, 0, 0, 0, 1237, 1221, 1, 0, 0, 0, 1237, 1227, 1, 0, 0, 0, 1238, 318, 1, 0, 0, 0, 1239, 1248, 3, 331, 165, 0, 1240, 1244, 3, 327, 163, 0, 1241, 1243, 3, 325, 162, 0, 1242, 1241, 1, 0, 0, 0, 1243, 1246, 1, 0, 0, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1248, 1, 0, 0, 0, 1246, 1244, 1, 0, 0, 0, 1247, 1239, 1, 0, 0, 0, 1247, 1240, 1, 0, 0, 0, 1248, 320, 1, 0, 0, 0, 1249, 1251, 7, 26, 0, 0, 1250, 1249, 1, 0, 0, 0, 1251, 322, 1, 0, 0, 0, 1252, 1255, 3, 325, 162, 0, 1253, 1255, 3, 321, 160, 0, 1254, 1252, 1, 0, 0, 0, 1254, 1253, 1, 0, 0, 0, 1255, 324, 1, 0, 0, 0, 1256, 1259, 3, 331, 165, 0, 1257, 1259, 3, 327, 163, 0, 1258, 1256, 1, 0, 0, 0, 1258, 1257, 1, 0, 0, 0, 1259, 326, 1, 0, 0, 0, 1260, 1263, 3, 329, 164, 0, 1261, 1263, 2, 56, 57, 0, 1262, 1260, 1, 0, 0, 0, 1262, 1261, 1, 0, 0, 0, 1263, 328, 1, 0, 0, 0, 1264, 1265, 2, 49, 55, 0, 1265, 330, 1, 0, 0, 0, 1266, 1267, 5, 48, 0, 0, 1267, 332, 1, 0, 0, 0, 1268, 1270, 3, 325, 162, 0, 1269, 1268, 1, 0, 0, 0, 1270, 1273, 1, 0, 0, 0, 1271, 1269, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1274, 1, 0, 0, 0, 1273, 1271, 1, 0, 0, 0, 1274, 1276, 5, 46, 0, 0, 1275, 1277, 3, 325, 162, 0, 1276, 1275, 1, 0, 0, 0, 1277, 1278, 1, 0, 0, 0, 1278, 1276, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 334, 1, 0, 0, 0, 1280, 1284, 3, 337, 168, 0, 1281, 1283, 3, 339, 169, 0, 1282, 1281, 1, 0, 0, 0, 1283, 1286, 1, 0, 0, 0, 1284, 1282, 1, 0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 336, 1, 0, 0, 0, 1286, 1284, 1, 0, 0, 0, 1287, 1290, 3, 387, 193, 0, 1288, 1290, 3, 375, 187, 0, 1289, 1287, 1, 0, 0, 0, 1289, 1288, 1, 0, 0, 0, 1290, 338, 1, 0, 0, 0, 1291, 1294, 3, 355, 177, 0, 1292, 1294, 3, 371, 185, 0, 1293, 1291, 1, 0, 0, 0, 1293, 1292, 1, 0, 0, 0, 1294, 340, 1, 0, 0, 0, 1295, 1299, 5, 96, 0, 0, 1296, 1298, 3, 351, 175, 0, 1297, 1296, 1, 0, 0, 0, 1298, 1301, 1, 0, 0, 0, 1299, 1297, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1302, 1, 0, 0, 0, 1301, 1299, 1, 0, 0, 0, 1302, 1304, 5, 96, 0, 0, 1303, 1295, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1303, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 342, 1, 0, 0, 0, 1307, 1309, 3, 345, 172, 0, 1308, 1307, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1308, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 344, 1, 0, 0, 0, 1312, 1325, 3, 373, 186, 0, 1313, 1325, 3, 377, 188, 0, 1314, 1325, 3, 381, 190, 0, 1315, 1325, 3, 383, 191, 0, 1316, 1325, 3, 349, 174, 0, 1317, 1325, 3, 369, 184, 0, 1318, 1325, 3, 367, 183, 0, 1319, 1325, 3, 365, 182, 0, 1320, 1325, 3, 353, 176, 0, 1321, 1325, 3, 385, 192, 0, 1322, 1325, 7, 27, 0, 0, 1323, 1325, 3, 347, 173, 0, 1324, 1312, 1, 0, 0, 0, 1324, 1313, 1, 0, 0, 0, 1324, 1314, 1, 0, 0, 0, 1324, 1315, 1, 0, 0, 0, 1324, 1316, 1, 0, 0, 0, 1324, 1317, 1, 0, 0, 0, 1324, 1318, 1, 0, 0, 0, 1324, 1319, 1, 0, 0, 0, 1324, 1320, 1, 0, 0, 0, 1324, 1321, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1324, 1323, 1, 0, 0, 0, 1325, 346, 1, 0, 0, 0, 1326, 1327, 5, 47, 0, 0, 1327, 1328, 5, 42, 0, 0, 1328, 1334, 1, 0, 0, 0, 1329, 1333, 3, 357, 178, 0, 1330, 1331, 5, 42, 0, 0, 1331, 1333, 3, 363, 181, 0, 1332, 1329, 1, 0, 0, 0, 1332, 1330, 1, 0, 0, 0, 1333, 1336, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 1337, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1337, 1338, 5, 42, 0, 0, 1338, 1356, 5, 47, 0, 0, 1339, 1340, 5, 47, 0, 0, 1340, 1341, 5, 47, 0, 0, 1341, 1345, 1, 0, 0, 0, 1342, 1344, 3, 361, 180, 0, 1343, 1342, 1, 0, 0, 0, 1344, 1347, 1, 0, 0, 0, 1345, 1343, 1, 0, 0, 0, 1345, 1346, 1, 0, 0, 0, 1346, 1349, 1, 0, 0, 0, 1347, 1345, 1, 0, 0, 0, 1348, 1350, 3, 369, 184, 0, 1349, 1348, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1353, 1, 0, 0, 0, 1351, 1354, 3, 381, 190, 0, 1352, 1354, 5, 0, 0, 1, 1353, 1351, 1, 0, 0, 0, 1353, 1352, 1, 0, 0, 0, 1354, 1356, 1, 0, 0, 0, 1355, 1326, 1, 0, 0, 0, 1355, 1339, 1, 0, 0, 0, 1356, 348, 1, 0, 0, 0, 1357, 1358, 7, 28, 0, 0, 1358, 350, 1, 0, 0, 0, 1359, 1360, 8, 29, 0, 0, 1360, 352, 1, 0, 0, 0, 1361, 1362, 7, 30, 0, 0, 1362, 354, 1, 0, 0, 0, 1363, 1364, 7, 31, 0, 0, 1364, 356, 1, 0, 0, 0, 1365, 1366, 8, 32, 0, 0, 1366, 358, 1, 0, 0, 0, 1367, 1368, 8, 33, 0, 0, 1368, 360, 1, 0, 0, 0, 1369, 1370, 8, 34, 0, 0, 1370, 362, 1, 0, 0, 0, 1371, 1372, 8, 35, 0, 0, 1372, 364, 1, 0, 0, 0, 1373, 1374, 7, 36, 0, 0, 1374, 366, 1, 0, 0, 0, 1375, 1376, 7, 37, 0, 0, 1376, 368, 1, 0, 0, 0, 1377, 1378, 7, 38, 0, 0, 1378, 370, 1, 0, 0, 0, 1379, 1380, 7, 39, 0, 0, 1380, 372, 1, 0, 0, 0, 1381, 1382, 7, 40, 0, 0, 1382, 374, 1, 0, 0, 0, 1383, 1384, 7, 41, 0, 0, 1384, 376, 1, 0, 0, 0, 1385, 1386, 7, 42, 0, 0, 1386, 378, 1, 0, 0, 0, 1387, 1388, 8, 43, 0, 0, 1388, 380, 1, 0, 0, 0, 1389, 1390, 7, 44, 0, 0, 1390, 382, 1, 0, 0, 0, 1391, 1392, 7, 45, 0, 0, 1392, 384, 1, 0, 0, 0, 1393, 1394, 7, 46, 0, 0, 1394, 386, 1, 0, 0, 0, 1395, 1396, 7, 47, 0, 0, 1396, 388, 1, 0, 0, 0, 1397, 1398, 9, 0, 0, 0, 1398, 390, 1, 0, 0, 0, 28, 0, 1202, 1204, 1211, 1213, 1217, 1237, 1244, 1247, 1250, 1254, 1258, 1262, 1271, 1278, 1284, 1289, 1293, 1299, 1305, 1310, 1324, 1332, 1334, 1345, 1349, 1353, 1355, 0]
\ No newline at end of file
diff --git a/src/utils/CypherParser/CypherLexer.tokens b/src/utils/CypherParser/CypherLexer.tokens
index 7293608..f3b7642 100644
--- a/src/utils/CypherParser/CypherLexer.tokens
+++ b/src/utils/CypherParser/CypherLexer.tokens
@@ -43,131 +43,136 @@ T__41=42
T__42=43
T__43=44
T__44=45
-ADD=46
-ALL=47
-ALTER=48
-AND=49
-AS=50
-ASC=51
-ASCENDING=52
-ATTACH=53
-BEGIN=54
-BY=55
-CALL=56
-CASE=57
-CAST=58
-CHECKPOINT=59
-COLUMN=60
-COMMENT=61
-COMMIT=62
-COMMIT_SKIP_CHECKPOINT=63
-CONTAINS=64
-COPY=65
-COUNT=66
-CREATE=67
-CYCLE=68
-DATABASE=69
-DBTYPE=70
-DEFAULT=71
-DELETE=72
-DESC=73
-DESCENDING=74
-DETACH=75
-DISTINCT=76
-DROP=77
-ELSE=78
-END=79
-ENDS=80
-EXISTS=81
-EXPLAIN=82
-EXPORT=83
-EXTENSION=84
-FALSE=85
-FROM=86
-GLOB=87
-GRAPH=88
-GROUP=89
-HEADERS=90
-HINT=91
-IMPORT=92
-IF=93
-IN=94
-INCREMENT=95
-INSTALL=96
-IS=97
-JOIN=98
-KEY=99
-LIMIT=100
-LOAD=101
-MACRO=102
-MATCH=103
-MAXVALUE=104
-MERGE=105
-MINVALUE=106
-MULTI_JOIN=107
-NO=108
-NODE=109
-NOT=110
-NULL=111
-ON=112
-ONLY=113
-OPTIONAL=114
-OR=115
-ORDER=116
-PRIMARY=117
-PROFILE=118
-PROJECT=119
-RDFGRAPH=120
-READ=121
-REL=122
-RENAME=123
-RETURN=124
-ROLLBACK=125
-ROLLBACK_SKIP_CHECKPOINT=126
-SEQUENCE=127
-SET=128
-SHORTEST=129
-START=130
-STARTS=131
-TABLE=132
-THEN=133
-TO=134
-TRANSACTION=135
-TRUE=136
-TYPE=137
-UNION=138
-UNWIND=139
-USE=140
-WHEN=141
-WHERE=142
-WITH=143
-WRITE=144
-XOR=145
-DECIMAL=146
-STAR=147
-L_SKIP=148
-INVALID_NOT_EQUAL=149
-MINUS=150
-FACTORIAL=151
-COLON=152
-StringLiteral=153
-EscapedChar=154
-DecimalInteger=155
-HexLetter=156
-HexDigit=157
-Digit=158
-NonZeroDigit=159
-NonZeroOctDigit=160
-ZeroDigit=161
-RegularDecimalReal=162
-UnescapedSymbolicName=163
-IdentifierStart=164
-IdentifierPart=165
-EscapedSymbolicName=166
-SP=167
-WHITESPACE=168
-CypherComment=169
-Unknown=170
+ACYCLIC=46
+ANY=47
+ADD=48
+ALL=49
+ALTER=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
+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
+TABLE=135
+THEN=136
+TO=137
+TRAIL=138
+TRANSACTION=139
+TRUE=140
+TYPE=141
+UNION=142
+UNWIND=143
+USE=144
+WHEN=145
+WHERE=146
+WITH=147
+WRITE=148
+XOR=149
+SINGLE=150
+DECIMAL=151
+STAR=152
+L_SKIP=153
+INVALID_NOT_EQUAL=154
+MINUS=155
+FACTORIAL=156
+COLON=157
+StringLiteral=158
+EscapedChar=159
+DecimalInteger=160
+HexLetter=161
+HexDigit=162
+Digit=163
+NonZeroDigit=164
+NonZeroOctDigit=165
+ZeroDigit=166
+RegularDecimalReal=167
+UnescapedSymbolicName=168
+IdentifierStart=169
+IdentifierPart=170
+EscapedSymbolicName=171
+SP=172
+WHITESPACE=173
+CypherComment=174
+Unknown=175
';'=1
'('=2
','=3
@@ -213,9 +218,9 @@ Unknown=170
'\ufe58'=43
'\ufe63'=44
'\uff0d'=45
-'*'=147
-'!='=149
-'-'=150
-'!'=151
-':'=152
-'0'=161
+'*'=152
+'!='=154
+'-'=155
+'!'=156
+':'=157
+'0'=166
diff --git a/src/utils/CypherParser/CypherLexer.ts b/src/utils/CypherParser/CypherLexer.ts
index 67039ce..b395992 100644
--- a/src/utils/CypherParser/CypherLexer.ts
+++ b/src/utils/CypherParser/CypherLexer.ts
@@ -50,131 +50,136 @@ export class CypherLexer extends antlr.Lexer {
public static readonly T__42 = 43;
public static readonly T__43 = 44;
public static readonly T__44 = 45;
- public static readonly ADD = 46;
- public static readonly ALL = 47;
- public static readonly ALTER = 48;
- public static readonly AND = 49;
- public static readonly AS = 50;
- public static readonly ASC = 51;
- public static readonly ASCENDING = 52;
- public static readonly ATTACH = 53;
- public static readonly BEGIN = 54;
- public static readonly BY = 55;
- public static readonly CALL = 56;
- public static readonly CASE = 57;
- public static readonly CAST = 58;
- public static readonly CHECKPOINT = 59;
- public static readonly COLUMN = 60;
- public static readonly COMMENT = 61;
- public static readonly COMMIT = 62;
- public static readonly COMMIT_SKIP_CHECKPOINT = 63;
- public static readonly CONTAINS = 64;
- public static readonly COPY = 65;
- public static readonly COUNT = 66;
- public static readonly CREATE = 67;
- public static readonly CYCLE = 68;
- public static readonly DATABASE = 69;
- public static readonly DBTYPE = 70;
- public static readonly DEFAULT = 71;
- public static readonly DELETE = 72;
- public static readonly DESC = 73;
- public static readonly DESCENDING = 74;
- public static readonly DETACH = 75;
- public static readonly DISTINCT = 76;
- public static readonly DROP = 77;
- public static readonly ELSE = 78;
- public static readonly END = 79;
- public static readonly ENDS = 80;
- public static readonly EXISTS = 81;
- public static readonly EXPLAIN = 82;
- public static readonly EXPORT = 83;
- public static readonly EXTENSION = 84;
- public static readonly FALSE = 85;
- public static readonly FROM = 86;
- public static readonly GLOB = 87;
- public static readonly GRAPH = 88;
- public static readonly GROUP = 89;
- public static readonly HEADERS = 90;
- public static readonly HINT = 91;
- public static readonly IMPORT = 92;
- public static readonly IF = 93;
- public static readonly IN = 94;
- public static readonly INCREMENT = 95;
- public static readonly INSTALL = 96;
- public static readonly IS = 97;
- public static readonly JOIN = 98;
- public static readonly KEY = 99;
- public static readonly LIMIT = 100;
- public static readonly LOAD = 101;
- public static readonly MACRO = 102;
- public static readonly MATCH = 103;
- public static readonly MAXVALUE = 104;
- public static readonly MERGE = 105;
- public static readonly MINVALUE = 106;
- public static readonly MULTI_JOIN = 107;
- public static readonly NO = 108;
- public static readonly NODE = 109;
- public static readonly NOT = 110;
- public static readonly NULL = 111;
- public static readonly ON = 112;
- public static readonly ONLY = 113;
- public static readonly OPTIONAL = 114;
- public static readonly OR = 115;
- public static readonly ORDER = 116;
- public static readonly PRIMARY = 117;
- public static readonly PROFILE = 118;
- public static readonly PROJECT = 119;
- public static readonly RDFGRAPH = 120;
- public static readonly READ = 121;
- public static readonly REL = 122;
- public static readonly RENAME = 123;
- public static readonly RETURN = 124;
- public static readonly ROLLBACK = 125;
- public static readonly ROLLBACK_SKIP_CHECKPOINT = 126;
- public static readonly SEQUENCE = 127;
- public static readonly SET = 128;
- public static readonly SHORTEST = 129;
- public static readonly START = 130;
- public static readonly STARTS = 131;
- public static readonly TABLE = 132;
- public static readonly THEN = 133;
- public static readonly TO = 134;
- public static readonly TRANSACTION = 135;
- public static readonly TRUE = 136;
- public static readonly TYPE = 137;
- public static readonly UNION = 138;
- public static readonly UNWIND = 139;
- public static readonly USE = 140;
- public static readonly WHEN = 141;
- public static readonly WHERE = 142;
- public static readonly WITH = 143;
- public static readonly WRITE = 144;
- public static readonly XOR = 145;
- public static readonly DECIMAL = 146;
- public static readonly STAR = 147;
- public static readonly L_SKIP = 148;
- public static readonly INVALID_NOT_EQUAL = 149;
- public static readonly MINUS = 150;
- public static readonly FACTORIAL = 151;
- public static readonly COLON = 152;
- public static readonly StringLiteral = 153;
- public static readonly EscapedChar = 154;
- public static readonly DecimalInteger = 155;
- public static readonly HexLetter = 156;
- public static readonly HexDigit = 157;
- public static readonly Digit = 158;
- public static readonly NonZeroDigit = 159;
- public static readonly NonZeroOctDigit = 160;
- public static readonly ZeroDigit = 161;
- public static readonly RegularDecimalReal = 162;
- public static readonly UnescapedSymbolicName = 163;
- public static readonly IdentifierStart = 164;
- public static readonly IdentifierPart = 165;
- public static readonly EscapedSymbolicName = 166;
- public static readonly SP = 167;
- public static readonly WHITESPACE = 168;
- public static readonly CypherComment = 169;
- public static readonly Unknown = 170;
+ public static readonly ACYCLIC = 46;
+ public static readonly ANY = 47;
+ public static readonly ADD = 48;
+ public static readonly ALL = 49;
+ public static readonly ALTER = 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 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 TABLE = 135;
+ public static readonly THEN = 136;
+ public static readonly TO = 137;
+ public static readonly TRAIL = 138;
+ public static readonly TRANSACTION = 139;
+ public static readonly TRUE = 140;
+ public static readonly TYPE = 141;
+ public static readonly UNION = 142;
+ public static readonly UNWIND = 143;
+ public static readonly USE = 144;
+ public static readonly WHEN = 145;
+ public static readonly WHERE = 146;
+ public static readonly WITH = 147;
+ public static readonly WRITE = 148;
+ public static readonly XOR = 149;
+ public static readonly SINGLE = 150;
+ public static readonly DECIMAL = 151;
+ public static readonly STAR = 152;
+ public static readonly L_SKIP = 153;
+ public static readonly INVALID_NOT_EQUAL = 154;
+ public static readonly MINUS = 155;
+ public static readonly FACTORIAL = 156;
+ public static readonly COLON = 157;
+ public static readonly StringLiteral = 158;
+ public static readonly EscapedChar = 159;
+ public static readonly DecimalInteger = 160;
+ public static readonly HexLetter = 161;
+ public static readonly HexDigit = 162;
+ public static readonly Digit = 163;
+ public static readonly NonZeroDigit = 164;
+ public static readonly NonZeroOctDigit = 165;
+ public static readonly ZeroDigit = 166;
+ public static readonly RegularDecimalReal = 167;
+ public static readonly UnescapedSymbolicName = 168;
+ public static readonly IdentifierStart = 169;
+ public static readonly IdentifierPart = 170;
+ public static readonly EscapedSymbolicName = 171;
+ public static readonly SP = 172;
+ public static readonly WHITESPACE = 173;
+ public static readonly CypherComment = 174;
+ public static readonly Unknown = 175;
public static readonly channelNames = [
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
@@ -196,9 +201,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, null, null, null, null, null, null, null,
- "'0'"
+ null, null, null, null, null, null, null, null, null, null, null,
+ null, null, "'*'", null, "'!='", "'-'", "'!'", "':'", null, null,
+ null, null, null, null, null, null, "'0'"
];
public static readonly symbolicNames = [
@@ -206,26 +211,26 @@ 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, "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",
- "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", "IMPORT", "IF", "IN",
- "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", "LIMIT", "LOAD", "MACRO",
- "MATCH", "MAXVALUE", "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE",
- "NOT", "NULL", "ON", "ONLY", "OPTIONAL", "OR", "ORDER", "PRIMARY",
- "PROFILE", "PROJECT", "RDFGRAPH", "READ", "REL", "RENAME", "RETURN",
- "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SHORTEST",
- "START", "STARTS", "TABLE", "THEN", "TO", "TRANSACTION", "TRUE",
- "TYPE", "UNION", "UNWIND", "USE", "WHEN", "WHERE", "WITH", "WRITE",
- "XOR", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL", "MINUS",
- "FACTORIAL", "COLON", "StringLiteral", "EscapedChar", "DecimalInteger",
- "HexLetter", "HexDigit", "Digit", "NonZeroDigit", "NonZeroOctDigit",
- "ZeroDigit", "RegularDecimalReal", "UnescapedSymbolicName", "IdentifierStart",
- "IdentifierPart", "EscapedSymbolicName", "SP", "WHITESPACE", "CypherComment",
- "Unknown"
+ 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", "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", "TABLE", "THEN",
+ "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND",
+ "USE", "WHEN", "WHERE", "WITH", "WRITE", "XOR", "SINGLE", "DECIMAL",
+ "STAR", "L_SKIP", "INVALID_NOT_EQUAL", "MINUS", "FACTORIAL", "COLON",
+ "StringLiteral", "EscapedChar", "DecimalInteger", "HexLetter", "HexDigit",
+ "Digit", "NonZeroDigit", "NonZeroOctDigit", "ZeroDigit", "RegularDecimalReal",
+ "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", "EscapedSymbolicName",
+ "SP", "WHITESPACE", "CypherComment", "Unknown"
];
public static readonly modeNames = [
@@ -238,21 +243,22 @@ export class CypherLexer extends antlr.Lexer {
"T__16", "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23",
"T__24", "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31",
"T__32", "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39",
- "T__40", "T__41", "T__42", "T__43", "T__44", "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", "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", "IMPORT",
- "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", "LIMIT",
- "LOAD", "MACRO", "MATCH", "MAXVALUE", "MERGE", "MINVALUE", "MULTI_JOIN",
- "NO", "NODE", "NOT", "NULL", "ON", "ONLY", "OPTIONAL", "OR", "ORDER",
- "PRIMARY", "PROFILE", "PROJECT", "RDFGRAPH", "READ", "REL", "RENAME",
- "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET",
- "SHORTEST", "START", "STARTS", "TABLE", "THEN", "TO", "TRANSACTION",
+ "T__40", "T__41", "T__42", "T__43", "T__44", "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", "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", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION",
"TRUE", "TYPE", "UNION", "UNWIND", "USE", "WHEN", "WHERE", "WITH",
- "WRITE", "XOR", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL",
+ "WRITE", "XOR", "SINGLE", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL",
"MINUS", "FACTORIAL", "COLON", "StringLiteral", "EscapedChar", "DecimalInteger",
"HexLetter", "HexDigit", "Digit", "NonZeroDigit", "NonZeroOctDigit",
"ZeroDigit", "RegularDecimalReal", "UnescapedSymbolicName", "IdentifierStart",
@@ -282,7 +288,7 @@ export class CypherLexer extends antlr.Lexer {
public get modeNames(): string[] { return CypherLexer.modeNames; }
public static readonly _serializedATN: number[] = [
- 4,0,170,1360,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,175,1399,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,
@@ -313,230 +319,234 @@ export class CypherLexer extends antlr.Lexer {
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,1,0,1,0,1,1,1,1,
- 1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,
- 1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,14,1,14,1,14,
- 1,15,1,15,1,16,1,16,1,16,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,
- 1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,24,1,25,1,25,
- 1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,
- 1,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,
- 1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,45,
- 1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,
- 1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,51,1,51,
- 1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,
- 1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,55,1,55,
- 1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,
- 1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,
- 1,59,1,59,1,59,1,59,1,59,1,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,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,
- 1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,
- 1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,
- 1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,
- 1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,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,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,73,1,73,1,73,1,73,1,73,
- 1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,
- 1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,
- 1,76,1,77,1,77,1,77,1,77,1,77,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,80,1,80,1,80,1,81,1,81,1,81,1,81,
- 1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,
- 1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,
- 1,84,1,85,1,85,1,85,1,85,1,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,88,1,89,1,89,1,89,
- 1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,
- 1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,93,1,93,1,93,1,94,1,94,1,94,
- 1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,
- 1,95,1,95,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,
- 1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,100,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,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,
- 1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,
- 1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,
- 1,106,1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,
- 1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,111,1,111,
- 1,111,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,
- 1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,115,1,115,1,115,1,115,
- 1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,
- 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,
- 1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,
- 1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,
- 1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,
- 1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,
- 1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,
- 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,
- 1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,
- 1,126,1,126,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,
- 1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,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,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,134,1,134,
- 1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,
- 1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,137,1,137,
- 1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138,
- 1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,
- 1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,
- 1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,145,1,145,1,145,
- 1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,147,1,147,1,147,1,147,
- 1,147,1,148,1,148,1,148,1,149,1,149,1,150,1,150,1,151,1,151,1,152,
- 1,152,1,152,5,152,1164,8,152,10,152,12,152,1167,9,152,1,152,1,152,
- 1,152,1,152,5,152,1173,8,152,10,152,12,152,1176,9,152,1,152,3,152,
- 1179,8,152,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,
- 1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,3,153,1199,
- 8,153,1,154,1,154,1,154,5,154,1204,8,154,10,154,12,154,1207,9,154,
- 3,154,1209,8,154,1,155,3,155,1212,8,155,1,156,1,156,3,156,1216,8,
- 156,1,157,1,157,3,157,1220,8,157,1,158,1,158,3,158,1224,8,158,1,
- 159,1,159,1,160,1,160,1,161,5,161,1231,8,161,10,161,12,161,1234,
- 9,161,1,161,1,161,4,161,1238,8,161,11,161,12,161,1239,1,162,1,162,
- 5,162,1244,8,162,10,162,12,162,1247,9,162,1,163,1,163,3,163,1251,
- 8,163,1,164,1,164,3,164,1255,8,164,1,165,1,165,5,165,1259,8,165,
- 10,165,12,165,1262,9,165,1,165,4,165,1265,8,165,11,165,12,165,1266,
- 1,166,4,166,1270,8,166,11,166,12,166,1271,1,167,1,167,1,167,1,167,
- 1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,3,167,1286,8,167,
- 1,168,1,168,1,168,1,168,1,168,1,168,5,168,1294,8,168,10,168,12,168,
- 1297,9,168,1,168,1,168,1,168,1,168,1,168,1,168,5,168,1305,8,168,
- 10,168,12,168,1308,9,168,1,168,3,168,1311,8,168,1,168,1,168,3,168,
- 1315,8,168,3,168,1317,8,168,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,175,1,175,1,176,1,176,1,177,
- 1,177,1,178,1,178,1,179,1,179,1,180,1,180,1,181,1,181,1,182,1,182,
- 1,183,1,183,1,184,1,184,1,185,1,185,1,186,1,186,1,187,1,187,1,188,
- 1,188,1,189,1,189,0,0,190,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,0,341,0,343,0,345,
- 0,347,0,349,0,351,0,353,0,355,0,357,0,359,0,361,0,363,0,365,0,367,
- 0,369,0,371,0,373,0,375,0,377,0,379,170,1,0,48,2,0,65,65,97,97,2,
- 0,68,68,100,100,2,0,76,76,108,108,2,0,84,84,116,116,2,0,69,69,101,
- 101,2,0,82,82,114,114,2,0,78,78,110,110,2,0,83,83,115,115,2,0,67,
- 67,99,99,2,0,73,73,105,105,2,0,71,71,103,103,2,0,72,72,104,104,2,
- 0,66,66,98,98,2,0,89,89,121,121,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,
+ 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,1,0,1,0,1,1,1,1,1,2,1,
+ 2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,
+ 10,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,14,1,14,1,14,1,15,1,
+ 15,1,16,1,16,1,16,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,
+ 20,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,26,1,
+ 26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,
+ 33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,
+ 39,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,45,1,45,1,
+ 45,1,45,1,45,1,45,1,45,1,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,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,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,135,1,135,1,135,1,135,1,135,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,138,1,138,1,138,1,138,1,138,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,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,143,
+ 1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,
+ 1,145,1,145,1,145,1,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,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,150,
+ 1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,154,
+ 1,154,1,155,1,155,1,156,1,156,1,157,1,157,1,157,5,157,1203,8,157,
+ 10,157,12,157,1206,9,157,1,157,1,157,1,157,1,157,5,157,1212,8,157,
+ 10,157,12,157,1215,9,157,1,157,3,157,1218,8,157,1,158,1,158,1,158,
+ 1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,
+ 1,158,1,158,1,158,1,158,3,158,1238,8,158,1,159,1,159,1,159,5,159,
+ 1243,8,159,10,159,12,159,1246,9,159,3,159,1248,8,159,1,160,3,160,
+ 1251,8,160,1,161,1,161,3,161,1255,8,161,1,162,1,162,3,162,1259,8,
+ 162,1,163,1,163,3,163,1263,8,163,1,164,1,164,1,165,1,165,1,166,5,
+ 166,1270,8,166,10,166,12,166,1273,9,166,1,166,1,166,4,166,1277,8,
+ 166,11,166,12,166,1278,1,167,1,167,5,167,1283,8,167,10,167,12,167,
+ 1286,9,167,1,168,1,168,3,168,1290,8,168,1,169,1,169,3,169,1294,8,
+ 169,1,170,1,170,5,170,1298,8,170,10,170,12,170,1301,9,170,1,170,
+ 4,170,1304,8,170,11,170,12,170,1305,1,171,4,171,1309,8,171,11,171,
+ 12,171,1310,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,
+ 1,172,1,172,1,172,3,172,1325,8,172,1,173,1,173,1,173,1,173,1,173,
+ 1,173,5,173,1333,8,173,10,173,12,173,1336,9,173,1,173,1,173,1,173,
+ 1,173,1,173,1,173,5,173,1344,8,173,10,173,12,173,1347,9,173,1,173,
+ 3,173,1350,8,173,1,173,1,173,3,173,1354,8,173,3,173,1356,8,173,1,
+ 174,1,174,1,175,1,175,1,176,1,176,1,177,1,177,1,178,1,178,1,179,
+ 1,179,1,180,1,180,1,181,1,181,1,182,1,182,1,183,1,183,1,184,1,184,
+ 1,185,1,185,1,186,1,186,1,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,0,0,195,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,0,351,0,
+ 353,0,355,0,357,0,359,0,361,0,363,0,365,0,367,0,369,0,371,0,373,
+ 0,375,0,377,0,379,0,381,0,383,0,385,0,387,0,389,175,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,
@@ -682,7 +692,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,1376,0,1,1,0,0,0,0,3,1,
+ 194560,195101,196608,201546,201552,205743,1415,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,
@@ -718,324 +728,334 @@ export class CypherLexer extends antlr.Lexer {
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,379,1,0,0,0,1,381,1,0,0,0,3,
- 383,1,0,0,0,5,385,1,0,0,0,7,387,1,0,0,0,9,389,1,0,0,0,11,391,1,0,
- 0,0,13,393,1,0,0,0,15,395,1,0,0,0,17,397,1,0,0,0,19,399,1,0,0,0,
- 21,401,1,0,0,0,23,403,1,0,0,0,25,406,1,0,0,0,27,409,1,0,0,0,29,411,
- 1,0,0,0,31,414,1,0,0,0,33,416,1,0,0,0,35,419,1,0,0,0,37,421,1,0,
- 0,0,39,424,1,0,0,0,41,427,1,0,0,0,43,429,1,0,0,0,45,431,1,0,0,0,
- 47,433,1,0,0,0,49,435,1,0,0,0,51,438,1,0,0,0,53,440,1,0,0,0,55,442,
- 1,0,0,0,57,444,1,0,0,0,59,446,1,0,0,0,61,448,1,0,0,0,63,450,1,0,
- 0,0,65,452,1,0,0,0,67,454,1,0,0,0,69,456,1,0,0,0,71,458,1,0,0,0,
- 73,460,1,0,0,0,75,462,1,0,0,0,77,464,1,0,0,0,79,466,1,0,0,0,81,468,
- 1,0,0,0,83,470,1,0,0,0,85,472,1,0,0,0,87,474,1,0,0,0,89,476,1,0,
- 0,0,91,478,1,0,0,0,93,482,1,0,0,0,95,486,1,0,0,0,97,492,1,0,0,0,
- 99,496,1,0,0,0,101,499,1,0,0,0,103,503,1,0,0,0,105,513,1,0,0,0,107,
- 520,1,0,0,0,109,526,1,0,0,0,111,529,1,0,0,0,113,534,1,0,0,0,115,
- 539,1,0,0,0,117,544,1,0,0,0,119,555,1,0,0,0,121,562,1,0,0,0,123,
- 570,1,0,0,0,125,577,1,0,0,0,127,600,1,0,0,0,129,609,1,0,0,0,131,
- 614,1,0,0,0,133,620,1,0,0,0,135,627,1,0,0,0,137,633,1,0,0,0,139,
- 642,1,0,0,0,141,649,1,0,0,0,143,657,1,0,0,0,145,664,1,0,0,0,147,
- 669,1,0,0,0,149,680,1,0,0,0,151,687,1,0,0,0,153,696,1,0,0,0,155,
- 701,1,0,0,0,157,706,1,0,0,0,159,710,1,0,0,0,161,715,1,0,0,0,163,
- 722,1,0,0,0,165,730,1,0,0,0,167,737,1,0,0,0,169,747,1,0,0,0,171,
- 753,1,0,0,0,173,758,1,0,0,0,175,763,1,0,0,0,177,769,1,0,0,0,179,
- 775,1,0,0,0,181,783,1,0,0,0,183,788,1,0,0,0,185,795,1,0,0,0,187,
- 798,1,0,0,0,189,801,1,0,0,0,191,811,1,0,0,0,193,819,1,0,0,0,195,
- 822,1,0,0,0,197,827,1,0,0,0,199,831,1,0,0,0,201,837,1,0,0,0,203,
- 842,1,0,0,0,205,848,1,0,0,0,207,854,1,0,0,0,209,863,1,0,0,0,211,
- 869,1,0,0,0,213,878,1,0,0,0,215,889,1,0,0,0,217,892,1,0,0,0,219,
- 897,1,0,0,0,221,901,1,0,0,0,223,906,1,0,0,0,225,909,1,0,0,0,227,
- 914,1,0,0,0,229,923,1,0,0,0,231,926,1,0,0,0,233,932,1,0,0,0,235,
- 940,1,0,0,0,237,948,1,0,0,0,239,956,1,0,0,0,241,965,1,0,0,0,243,
- 970,1,0,0,0,245,974,1,0,0,0,247,981,1,0,0,0,249,988,1,0,0,0,251,
- 997,1,0,0,0,253,1022,1,0,0,0,255,1031,1,0,0,0,257,1035,1,0,0,0,259,
- 1044,1,0,0,0,261,1050,1,0,0,0,263,1057,1,0,0,0,265,1063,1,0,0,0,
- 267,1068,1,0,0,0,269,1071,1,0,0,0,271,1083,1,0,0,0,273,1088,1,0,
- 0,0,275,1093,1,0,0,0,277,1099,1,0,0,0,279,1106,1,0,0,0,281,1110,
- 1,0,0,0,283,1115,1,0,0,0,285,1121,1,0,0,0,287,1126,1,0,0,0,289,1132,
- 1,0,0,0,291,1136,1,0,0,0,293,1144,1,0,0,0,295,1146,1,0,0,0,297,1151,
- 1,0,0,0,299,1154,1,0,0,0,301,1156,1,0,0,0,303,1158,1,0,0,0,305,1178,
- 1,0,0,0,307,1180,1,0,0,0,309,1208,1,0,0,0,311,1211,1,0,0,0,313,1215,
- 1,0,0,0,315,1219,1,0,0,0,317,1223,1,0,0,0,319,1225,1,0,0,0,321,1227,
- 1,0,0,0,323,1232,1,0,0,0,325,1241,1,0,0,0,327,1250,1,0,0,0,329,1254,
- 1,0,0,0,331,1264,1,0,0,0,333,1269,1,0,0,0,335,1285,1,0,0,0,337,1316,
- 1,0,0,0,339,1318,1,0,0,0,341,1320,1,0,0,0,343,1322,1,0,0,0,345,1324,
- 1,0,0,0,347,1326,1,0,0,0,349,1328,1,0,0,0,351,1330,1,0,0,0,353,1332,
- 1,0,0,0,355,1334,1,0,0,0,357,1336,1,0,0,0,359,1338,1,0,0,0,361,1340,
- 1,0,0,0,363,1342,1,0,0,0,365,1344,1,0,0,0,367,1346,1,0,0,0,369,1348,
- 1,0,0,0,371,1350,1,0,0,0,373,1352,1,0,0,0,375,1354,1,0,0,0,377,1356,
- 1,0,0,0,379,1358,1,0,0,0,381,382,5,59,0,0,382,2,1,0,0,0,383,384,
- 5,40,0,0,384,4,1,0,0,0,385,386,5,44,0,0,386,6,1,0,0,0,387,388,5,
- 41,0,0,388,8,1,0,0,0,389,390,5,46,0,0,390,10,1,0,0,0,391,392,5,61,
- 0,0,392,12,1,0,0,0,393,394,5,91,0,0,394,14,1,0,0,0,395,396,5,93,
- 0,0,396,16,1,0,0,0,397,398,5,123,0,0,398,18,1,0,0,0,399,400,5,125,
- 0,0,400,20,1,0,0,0,401,402,5,124,0,0,402,22,1,0,0,0,403,404,5,46,
- 0,0,404,405,5,46,0,0,405,24,1,0,0,0,406,407,5,60,0,0,407,408,5,62,
- 0,0,408,26,1,0,0,0,409,410,5,60,0,0,410,28,1,0,0,0,411,412,5,60,
- 0,0,412,413,5,61,0,0,413,30,1,0,0,0,414,415,5,62,0,0,415,32,1,0,
- 0,0,416,417,5,62,0,0,417,418,5,61,0,0,418,34,1,0,0,0,419,420,5,38,
- 0,0,420,36,1,0,0,0,421,422,5,62,0,0,422,423,5,62,0,0,423,38,1,0,
- 0,0,424,425,5,60,0,0,425,426,5,60,0,0,426,40,1,0,0,0,427,428,5,43,
- 0,0,428,42,1,0,0,0,429,430,5,47,0,0,430,44,1,0,0,0,431,432,5,37,
- 0,0,432,46,1,0,0,0,433,434,5,94,0,0,434,48,1,0,0,0,435,436,5,61,
- 0,0,436,437,5,126,0,0,437,50,1,0,0,0,438,439,5,36,0,0,439,52,1,0,
- 0,0,440,441,5,10216,0,0,441,54,1,0,0,0,442,443,5,12296,0,0,443,56,
- 1,0,0,0,444,445,5,65124,0,0,445,58,1,0,0,0,446,447,5,65308,0,0,447,
- 60,1,0,0,0,448,449,5,10217,0,0,449,62,1,0,0,0,450,451,5,12297,0,
- 0,451,64,1,0,0,0,452,453,5,65125,0,0,453,66,1,0,0,0,454,455,5,65310,
- 0,0,455,68,1,0,0,0,456,457,5,173,0,0,457,70,1,0,0,0,458,459,5,8208,
- 0,0,459,72,1,0,0,0,460,461,5,8209,0,0,461,74,1,0,0,0,462,463,5,8210,
- 0,0,463,76,1,0,0,0,464,465,5,8211,0,0,465,78,1,0,0,0,466,467,5,8212,
- 0,0,467,80,1,0,0,0,468,469,5,8213,0,0,469,82,1,0,0,0,470,471,5,8722,
- 0,0,471,84,1,0,0,0,472,473,5,65112,0,0,473,86,1,0,0,0,474,475,5,
- 65123,0,0,475,88,1,0,0,0,476,477,5,65293,0,0,477,90,1,0,0,0,478,
- 479,7,0,0,0,479,480,7,1,0,0,480,481,7,1,0,0,481,92,1,0,0,0,482,483,
- 7,0,0,0,483,484,7,2,0,0,484,485,7,2,0,0,485,94,1,0,0,0,486,487,7,
- 0,0,0,487,488,7,2,0,0,488,489,7,3,0,0,489,490,7,4,0,0,490,491,7,
- 5,0,0,491,96,1,0,0,0,492,493,7,0,0,0,493,494,7,6,0,0,494,495,7,1,
- 0,0,495,98,1,0,0,0,496,497,7,0,0,0,497,498,7,7,0,0,498,100,1,0,0,
- 0,499,500,7,0,0,0,500,501,7,7,0,0,501,502,7,8,0,0,502,102,1,0,0,
- 0,503,504,7,0,0,0,504,505,7,7,0,0,505,506,7,8,0,0,506,507,7,4,0,
- 0,507,508,7,6,0,0,508,509,7,1,0,0,509,510,7,9,0,0,510,511,7,6,0,
- 0,511,512,7,10,0,0,512,104,1,0,0,0,513,514,7,0,0,0,514,515,7,3,0,
- 0,515,516,7,3,0,0,516,517,7,0,0,0,517,518,7,8,0,0,518,519,7,11,0,
- 0,519,106,1,0,0,0,520,521,7,12,0,0,521,522,7,4,0,0,522,523,7,10,
- 0,0,523,524,7,9,0,0,524,525,7,6,0,0,525,108,1,0,0,0,526,527,7,12,
- 0,0,527,528,7,13,0,0,528,110,1,0,0,0,529,530,7,8,0,0,530,531,7,0,
- 0,0,531,532,7,2,0,0,532,533,7,2,0,0,533,112,1,0,0,0,534,535,7,8,
- 0,0,535,536,7,0,0,0,536,537,7,7,0,0,537,538,7,4,0,0,538,114,1,0,
- 0,0,539,540,7,8,0,0,540,541,7,0,0,0,541,542,7,7,0,0,542,543,7,3,
- 0,0,543,116,1,0,0,0,544,545,7,8,0,0,545,546,7,11,0,0,546,547,7,4,
- 0,0,547,548,7,8,0,0,548,549,7,14,0,0,549,550,7,15,0,0,550,551,7,
- 16,0,0,551,552,7,9,0,0,552,553,7,6,0,0,553,554,7,3,0,0,554,118,1,
- 0,0,0,555,556,7,8,0,0,556,557,7,16,0,0,557,558,7,2,0,0,558,559,7,
- 17,0,0,559,560,7,18,0,0,560,561,7,6,0,0,561,120,1,0,0,0,562,563,
- 7,8,0,0,563,564,7,16,0,0,564,565,7,18,0,0,565,566,7,18,0,0,566,567,
- 7,4,0,0,567,568,7,6,0,0,568,569,7,3,0,0,569,122,1,0,0,0,570,571,
- 7,8,0,0,571,572,7,16,0,0,572,573,7,18,0,0,573,574,7,18,0,0,574,575,
- 7,9,0,0,575,576,7,3,0,0,576,124,1,0,0,0,577,578,7,8,0,0,578,579,
- 7,16,0,0,579,580,7,18,0,0,580,581,7,18,0,0,581,582,7,9,0,0,582,583,
- 7,3,0,0,583,584,5,95,0,0,584,585,7,7,0,0,585,586,7,14,0,0,586,587,
- 7,9,0,0,587,588,7,15,0,0,588,589,5,95,0,0,589,590,7,8,0,0,590,591,
- 7,11,0,0,591,592,7,4,0,0,592,593,7,8,0,0,593,594,7,14,0,0,594,595,
- 7,15,0,0,595,596,7,16,0,0,596,597,7,9,0,0,597,598,7,6,0,0,598,599,
- 7,3,0,0,599,126,1,0,0,0,600,601,7,8,0,0,601,602,7,16,0,0,602,603,
- 7,6,0,0,603,604,7,3,0,0,604,605,7,0,0,0,605,606,7,9,0,0,606,607,
- 7,6,0,0,607,608,7,7,0,0,608,128,1,0,0,0,609,610,7,8,0,0,610,611,
- 7,16,0,0,611,612,7,15,0,0,612,613,7,13,0,0,613,130,1,0,0,0,614,615,
- 7,8,0,0,615,616,7,16,0,0,616,617,7,17,0,0,617,618,7,6,0,0,618,619,
- 7,3,0,0,619,132,1,0,0,0,620,621,7,8,0,0,621,622,7,5,0,0,622,623,
- 7,4,0,0,623,624,7,0,0,0,624,625,7,3,0,0,625,626,7,4,0,0,626,134,
- 1,0,0,0,627,628,7,8,0,0,628,629,7,13,0,0,629,630,7,8,0,0,630,631,
- 7,2,0,0,631,632,7,4,0,0,632,136,1,0,0,0,633,634,7,1,0,0,634,635,
- 7,0,0,0,635,636,7,3,0,0,636,637,7,0,0,0,637,638,7,12,0,0,638,639,
- 7,0,0,0,639,640,7,7,0,0,640,641,7,4,0,0,641,138,1,0,0,0,642,643,
- 7,1,0,0,643,644,7,12,0,0,644,645,7,3,0,0,645,646,7,13,0,0,646,647,
- 7,15,0,0,647,648,7,4,0,0,648,140,1,0,0,0,649,650,7,1,0,0,650,651,
- 7,4,0,0,651,652,7,19,0,0,652,653,7,0,0,0,653,654,7,17,0,0,654,655,
- 7,2,0,0,655,656,7,3,0,0,656,142,1,0,0,0,657,658,7,1,0,0,658,659,
- 7,4,0,0,659,660,7,2,0,0,660,661,7,4,0,0,661,662,7,3,0,0,662,663,
- 7,4,0,0,663,144,1,0,0,0,664,665,7,1,0,0,665,666,7,4,0,0,666,667,
- 7,7,0,0,667,668,7,8,0,0,668,146,1,0,0,0,669,670,7,1,0,0,670,671,
- 7,4,0,0,671,672,7,7,0,0,672,673,7,8,0,0,673,674,7,4,0,0,674,675,
- 7,6,0,0,675,676,7,1,0,0,676,677,7,9,0,0,677,678,7,6,0,0,678,679,
- 7,10,0,0,679,148,1,0,0,0,680,681,7,1,0,0,681,682,7,4,0,0,682,683,
- 7,3,0,0,683,684,7,0,0,0,684,685,7,8,0,0,685,686,7,11,0,0,686,150,
- 1,0,0,0,687,688,7,1,0,0,688,689,7,9,0,0,689,690,7,7,0,0,690,691,
- 7,3,0,0,691,692,7,9,0,0,692,693,7,6,0,0,693,694,7,8,0,0,694,695,
- 7,3,0,0,695,152,1,0,0,0,696,697,7,1,0,0,697,698,7,5,0,0,698,699,
- 7,16,0,0,699,700,7,15,0,0,700,154,1,0,0,0,701,702,7,4,0,0,702,703,
- 7,2,0,0,703,704,7,7,0,0,704,705,7,4,0,0,705,156,1,0,0,0,706,707,
- 7,4,0,0,707,708,7,6,0,0,708,709,7,1,0,0,709,158,1,0,0,0,710,711,
- 7,4,0,0,711,712,7,6,0,0,712,713,7,1,0,0,713,714,7,7,0,0,714,160,
- 1,0,0,0,715,716,7,4,0,0,716,717,7,20,0,0,717,718,7,9,0,0,718,719,
- 7,7,0,0,719,720,7,3,0,0,720,721,7,7,0,0,721,162,1,0,0,0,722,723,
- 7,4,0,0,723,724,7,20,0,0,724,725,7,15,0,0,725,726,7,2,0,0,726,727,
- 7,0,0,0,727,728,7,9,0,0,728,729,7,6,0,0,729,164,1,0,0,0,730,731,
- 7,4,0,0,731,732,7,20,0,0,732,733,7,15,0,0,733,734,7,16,0,0,734,735,
- 7,5,0,0,735,736,7,3,0,0,736,166,1,0,0,0,737,738,7,4,0,0,738,739,
- 7,20,0,0,739,740,7,3,0,0,740,741,7,4,0,0,741,742,7,6,0,0,742,743,
- 7,7,0,0,743,744,7,9,0,0,744,745,7,16,0,0,745,746,7,6,0,0,746,168,
- 1,0,0,0,747,748,7,19,0,0,748,749,7,0,0,0,749,750,7,2,0,0,750,751,
- 7,7,0,0,751,752,7,4,0,0,752,170,1,0,0,0,753,754,7,19,0,0,754,755,
- 7,5,0,0,755,756,7,16,0,0,756,757,7,18,0,0,757,172,1,0,0,0,758,759,
- 7,10,0,0,759,760,7,2,0,0,760,761,7,16,0,0,761,762,7,12,0,0,762,174,
- 1,0,0,0,763,764,7,10,0,0,764,765,7,5,0,0,765,766,7,0,0,0,766,767,
- 7,15,0,0,767,768,7,11,0,0,768,176,1,0,0,0,769,770,7,10,0,0,770,771,
- 7,5,0,0,771,772,7,16,0,0,772,773,7,17,0,0,773,774,7,15,0,0,774,178,
- 1,0,0,0,775,776,7,11,0,0,776,777,7,4,0,0,777,778,7,0,0,0,778,779,
- 7,1,0,0,779,780,7,4,0,0,780,781,7,5,0,0,781,782,7,7,0,0,782,180,
- 1,0,0,0,783,784,7,11,0,0,784,785,7,9,0,0,785,786,7,6,0,0,786,787,
- 7,3,0,0,787,182,1,0,0,0,788,789,7,9,0,0,789,790,7,18,0,0,790,791,
- 7,15,0,0,791,792,7,16,0,0,792,793,7,5,0,0,793,794,7,3,0,0,794,184,
- 1,0,0,0,795,796,7,9,0,0,796,797,7,19,0,0,797,186,1,0,0,0,798,799,
- 7,9,0,0,799,800,7,6,0,0,800,188,1,0,0,0,801,802,7,9,0,0,802,803,
- 7,6,0,0,803,804,7,8,0,0,804,805,7,5,0,0,805,806,7,4,0,0,806,807,
- 7,18,0,0,807,808,7,4,0,0,808,809,7,6,0,0,809,810,7,3,0,0,810,190,
- 1,0,0,0,811,812,7,9,0,0,812,813,7,6,0,0,813,814,7,7,0,0,814,815,
- 7,3,0,0,815,816,7,0,0,0,816,817,7,2,0,0,817,818,7,2,0,0,818,192,
- 1,0,0,0,819,820,7,9,0,0,820,821,7,7,0,0,821,194,1,0,0,0,822,823,
- 7,21,0,0,823,824,7,16,0,0,824,825,7,9,0,0,825,826,7,6,0,0,826,196,
- 1,0,0,0,827,828,7,14,0,0,828,829,7,4,0,0,829,830,7,13,0,0,830,198,
- 1,0,0,0,831,832,7,2,0,0,832,833,7,9,0,0,833,834,7,18,0,0,834,835,
- 7,9,0,0,835,836,7,3,0,0,836,200,1,0,0,0,837,838,7,2,0,0,838,839,
- 7,16,0,0,839,840,7,0,0,0,840,841,7,1,0,0,841,202,1,0,0,0,842,843,
- 7,18,0,0,843,844,7,0,0,0,844,845,7,8,0,0,845,846,7,5,0,0,846,847,
- 7,16,0,0,847,204,1,0,0,0,848,849,7,18,0,0,849,850,7,0,0,0,850,851,
- 7,3,0,0,851,852,7,8,0,0,852,853,7,11,0,0,853,206,1,0,0,0,854,855,
- 7,18,0,0,855,856,7,0,0,0,856,857,7,20,0,0,857,858,7,22,0,0,858,859,
- 7,0,0,0,859,860,7,2,0,0,860,861,7,17,0,0,861,862,7,4,0,0,862,208,
- 1,0,0,0,863,864,7,18,0,0,864,865,7,4,0,0,865,866,7,5,0,0,866,867,
- 7,10,0,0,867,868,7,4,0,0,868,210,1,0,0,0,869,870,7,18,0,0,870,871,
- 7,9,0,0,871,872,7,6,0,0,872,873,7,22,0,0,873,874,7,0,0,0,874,875,
- 7,2,0,0,875,876,7,17,0,0,876,877,7,4,0,0,877,212,1,0,0,0,878,879,
- 7,18,0,0,879,880,7,17,0,0,880,881,7,2,0,0,881,882,7,3,0,0,882,883,
- 7,9,0,0,883,884,5,95,0,0,884,885,7,21,0,0,885,886,7,16,0,0,886,887,
- 7,9,0,0,887,888,7,6,0,0,888,214,1,0,0,0,889,890,7,6,0,0,890,891,
- 7,16,0,0,891,216,1,0,0,0,892,893,7,6,0,0,893,894,7,16,0,0,894,895,
- 7,1,0,0,895,896,7,4,0,0,896,218,1,0,0,0,897,898,7,6,0,0,898,899,
- 7,16,0,0,899,900,7,3,0,0,900,220,1,0,0,0,901,902,7,6,0,0,902,903,
- 7,17,0,0,903,904,7,2,0,0,904,905,7,2,0,0,905,222,1,0,0,0,906,907,
- 7,16,0,0,907,908,7,6,0,0,908,224,1,0,0,0,909,910,7,16,0,0,910,911,
- 7,6,0,0,911,912,7,2,0,0,912,913,7,13,0,0,913,226,1,0,0,0,914,915,
- 7,16,0,0,915,916,7,15,0,0,916,917,7,3,0,0,917,918,7,9,0,0,918,919,
- 7,16,0,0,919,920,7,6,0,0,920,921,7,0,0,0,921,922,7,2,0,0,922,228,
- 1,0,0,0,923,924,7,16,0,0,924,925,7,5,0,0,925,230,1,0,0,0,926,927,
- 7,16,0,0,927,928,7,5,0,0,928,929,7,1,0,0,929,930,7,4,0,0,930,931,
- 7,5,0,0,931,232,1,0,0,0,932,933,7,15,0,0,933,934,7,5,0,0,934,935,
- 7,9,0,0,935,936,7,18,0,0,936,937,7,0,0,0,937,938,7,5,0,0,938,939,
- 7,13,0,0,939,234,1,0,0,0,940,941,7,15,0,0,941,942,7,5,0,0,942,943,
- 7,16,0,0,943,944,7,19,0,0,944,945,7,9,0,0,945,946,7,2,0,0,946,947,
- 7,4,0,0,947,236,1,0,0,0,948,949,7,15,0,0,949,950,7,5,0,0,950,951,
- 7,16,0,0,951,952,7,21,0,0,952,953,7,4,0,0,953,954,7,8,0,0,954,955,
- 7,3,0,0,955,238,1,0,0,0,956,957,7,5,0,0,957,958,7,1,0,0,958,959,
- 7,19,0,0,959,960,7,10,0,0,960,961,7,5,0,0,961,962,7,0,0,0,962,963,
- 7,15,0,0,963,964,7,11,0,0,964,240,1,0,0,0,965,966,7,5,0,0,966,967,
- 7,4,0,0,967,968,7,0,0,0,968,969,7,1,0,0,969,242,1,0,0,0,970,971,
- 7,5,0,0,971,972,7,4,0,0,972,973,7,2,0,0,973,244,1,0,0,0,974,975,
- 7,5,0,0,975,976,7,4,0,0,976,977,7,6,0,0,977,978,7,0,0,0,978,979,
- 7,18,0,0,979,980,7,4,0,0,980,246,1,0,0,0,981,982,7,5,0,0,982,983,
- 7,4,0,0,983,984,7,3,0,0,984,985,7,17,0,0,985,986,7,5,0,0,986,987,
- 7,6,0,0,987,248,1,0,0,0,988,989,7,5,0,0,989,990,7,16,0,0,990,991,
- 7,2,0,0,991,992,7,2,0,0,992,993,7,12,0,0,993,994,7,0,0,0,994,995,
- 7,8,0,0,995,996,7,14,0,0,996,250,1,0,0,0,997,998,7,5,0,0,998,999,
- 7,16,0,0,999,1000,7,2,0,0,1000,1001,7,2,0,0,1001,1002,7,12,0,0,1002,
- 1003,7,0,0,0,1003,1004,7,8,0,0,1004,1005,7,14,0,0,1005,1006,5,95,
- 0,0,1006,1007,7,7,0,0,1007,1008,7,14,0,0,1008,1009,7,9,0,0,1009,
- 1010,7,15,0,0,1010,1011,5,95,0,0,1011,1012,7,8,0,0,1012,1013,7,11,
- 0,0,1013,1014,7,4,0,0,1014,1015,7,8,0,0,1015,1016,7,14,0,0,1016,
- 1017,7,15,0,0,1017,1018,7,16,0,0,1018,1019,7,9,0,0,1019,1020,7,6,
- 0,0,1020,1021,7,3,0,0,1021,252,1,0,0,0,1022,1023,7,7,0,0,1023,1024,
- 7,4,0,0,1024,1025,7,23,0,0,1025,1026,7,17,0,0,1026,1027,7,4,0,0,
- 1027,1028,7,6,0,0,1028,1029,7,8,0,0,1029,1030,7,4,0,0,1030,254,1,
- 0,0,0,1031,1032,7,7,0,0,1032,1033,7,4,0,0,1033,1034,7,3,0,0,1034,
- 256,1,0,0,0,1035,1036,7,7,0,0,1036,1037,7,11,0,0,1037,1038,7,16,
- 0,0,1038,1039,7,5,0,0,1039,1040,7,3,0,0,1040,1041,7,4,0,0,1041,1042,
- 7,7,0,0,1042,1043,7,3,0,0,1043,258,1,0,0,0,1044,1045,7,7,0,0,1045,
- 1046,7,3,0,0,1046,1047,7,0,0,0,1047,1048,7,5,0,0,1048,1049,7,3,0,
- 0,1049,260,1,0,0,0,1050,1051,7,7,0,0,1051,1052,7,3,0,0,1052,1053,
- 7,0,0,0,1053,1054,7,5,0,0,1054,1055,7,3,0,0,1055,1056,7,7,0,0,1056,
- 262,1,0,0,0,1057,1058,7,3,0,0,1058,1059,7,0,0,0,1059,1060,7,12,0,
- 0,1060,1061,7,2,0,0,1061,1062,7,4,0,0,1062,264,1,0,0,0,1063,1064,
- 7,3,0,0,1064,1065,7,11,0,0,1065,1066,7,4,0,0,1066,1067,7,6,0,0,1067,
- 266,1,0,0,0,1068,1069,7,3,0,0,1069,1070,7,16,0,0,1070,268,1,0,0,
- 0,1071,1072,7,3,0,0,1072,1073,7,5,0,0,1073,1074,7,0,0,0,1074,1075,
- 7,6,0,0,1075,1076,7,7,0,0,1076,1077,7,0,0,0,1077,1078,7,8,0,0,1078,
- 1079,7,3,0,0,1079,1080,7,9,0,0,1080,1081,7,16,0,0,1081,1082,7,6,
- 0,0,1082,270,1,0,0,0,1083,1084,7,3,0,0,1084,1085,7,5,0,0,1085,1086,
- 7,17,0,0,1086,1087,7,4,0,0,1087,272,1,0,0,0,1088,1089,7,3,0,0,1089,
- 1090,7,13,0,0,1090,1091,7,15,0,0,1091,1092,7,4,0,0,1092,274,1,0,
- 0,0,1093,1094,7,17,0,0,1094,1095,7,6,0,0,1095,1096,7,9,0,0,1096,
- 1097,7,16,0,0,1097,1098,7,6,0,0,1098,276,1,0,0,0,1099,1100,7,17,
- 0,0,1100,1101,7,6,0,0,1101,1102,7,24,0,0,1102,1103,7,9,0,0,1103,
- 1104,7,6,0,0,1104,1105,7,1,0,0,1105,278,1,0,0,0,1106,1107,7,17,0,
- 0,1107,1108,7,7,0,0,1108,1109,7,4,0,0,1109,280,1,0,0,0,1110,1111,
- 7,24,0,0,1111,1112,7,11,0,0,1112,1113,7,4,0,0,1113,1114,7,6,0,0,
- 1114,282,1,0,0,0,1115,1116,7,24,0,0,1116,1117,7,11,0,0,1117,1118,
- 7,4,0,0,1118,1119,7,5,0,0,1119,1120,7,4,0,0,1120,284,1,0,0,0,1121,
- 1122,7,24,0,0,1122,1123,7,9,0,0,1123,1124,7,3,0,0,1124,1125,7,11,
- 0,0,1125,286,1,0,0,0,1126,1127,7,24,0,0,1127,1128,7,5,0,0,1128,1129,
- 7,9,0,0,1129,1130,7,3,0,0,1130,1131,7,4,0,0,1131,288,1,0,0,0,1132,
- 1133,7,20,0,0,1133,1134,7,16,0,0,1134,1135,7,5,0,0,1135,290,1,0,
- 0,0,1136,1137,7,1,0,0,1137,1138,7,4,0,0,1138,1139,7,8,0,0,1139,1140,
- 7,9,0,0,1140,1141,7,18,0,0,1141,1142,7,0,0,0,1142,1143,7,2,0,0,1143,
- 292,1,0,0,0,1144,1145,5,42,0,0,1145,294,1,0,0,0,1146,1147,7,7,0,
- 0,1147,1148,7,14,0,0,1148,1149,7,9,0,0,1149,1150,7,15,0,0,1150,296,
- 1,0,0,0,1151,1152,5,33,0,0,1152,1153,5,61,0,0,1153,298,1,0,0,0,1154,
- 1155,5,45,0,0,1155,300,1,0,0,0,1156,1157,5,33,0,0,1157,302,1,0,0,
- 0,1158,1159,5,58,0,0,1159,304,1,0,0,0,1160,1165,5,34,0,0,1161,1164,
- 3,369,184,0,1162,1164,3,307,153,0,1163,1161,1,0,0,0,1163,1162,1,
- 0,0,0,1164,1167,1,0,0,0,1165,1163,1,0,0,0,1165,1166,1,0,0,0,1166,
- 1168,1,0,0,0,1167,1165,1,0,0,0,1168,1179,5,34,0,0,1169,1174,5,39,
- 0,0,1170,1173,3,349,174,0,1171,1173,3,307,153,0,1172,1170,1,0,0,
- 0,1172,1171,1,0,0,0,1173,1176,1,0,0,0,1174,1172,1,0,0,0,1174,1175,
- 1,0,0,0,1175,1177,1,0,0,0,1176,1174,1,0,0,0,1177,1179,5,39,0,0,1178,
- 1160,1,0,0,0,1178,1169,1,0,0,0,1179,306,1,0,0,0,1180,1198,5,92,0,
- 0,1181,1199,7,25,0,0,1182,1183,7,17,0,0,1183,1184,3,313,156,0,1184,
- 1185,3,313,156,0,1185,1186,3,313,156,0,1186,1187,3,313,156,0,1187,
- 1199,1,0,0,0,1188,1189,7,17,0,0,1189,1190,3,313,156,0,1190,1191,
- 3,313,156,0,1191,1192,3,313,156,0,1192,1193,3,313,156,0,1193,1194,
- 3,313,156,0,1194,1195,3,313,156,0,1195,1196,3,313,156,0,1196,1197,
- 3,313,156,0,1197,1199,1,0,0,0,1198,1181,1,0,0,0,1198,1182,1,0,0,
- 0,1198,1188,1,0,0,0,1199,308,1,0,0,0,1200,1209,3,321,160,0,1201,
- 1205,3,317,158,0,1202,1204,3,315,157,0,1203,1202,1,0,0,0,1204,1207,
- 1,0,0,0,1205,1203,1,0,0,0,1205,1206,1,0,0,0,1206,1209,1,0,0,0,1207,
- 1205,1,0,0,0,1208,1200,1,0,0,0,1208,1201,1,0,0,0,1209,310,1,0,0,
- 0,1210,1212,7,26,0,0,1211,1210,1,0,0,0,1212,312,1,0,0,0,1213,1216,
- 3,315,157,0,1214,1216,3,311,155,0,1215,1213,1,0,0,0,1215,1214,1,
- 0,0,0,1216,314,1,0,0,0,1217,1220,3,321,160,0,1218,1220,3,317,158,
- 0,1219,1217,1,0,0,0,1219,1218,1,0,0,0,1220,316,1,0,0,0,1221,1224,
- 3,319,159,0,1222,1224,2,56,57,0,1223,1221,1,0,0,0,1223,1222,1,0,
- 0,0,1224,318,1,0,0,0,1225,1226,2,49,55,0,1226,320,1,0,0,0,1227,1228,
- 5,48,0,0,1228,322,1,0,0,0,1229,1231,3,315,157,0,1230,1229,1,0,0,
- 0,1231,1234,1,0,0,0,1232,1230,1,0,0,0,1232,1233,1,0,0,0,1233,1235,
- 1,0,0,0,1234,1232,1,0,0,0,1235,1237,5,46,0,0,1236,1238,3,315,157,
- 0,1237,1236,1,0,0,0,1238,1239,1,0,0,0,1239,1237,1,0,0,0,1239,1240,
- 1,0,0,0,1240,324,1,0,0,0,1241,1245,3,327,163,0,1242,1244,3,329,164,
- 0,1243,1242,1,0,0,0,1244,1247,1,0,0,0,1245,1243,1,0,0,0,1245,1246,
- 1,0,0,0,1246,326,1,0,0,0,1247,1245,1,0,0,0,1248,1251,3,377,188,0,
- 1249,1251,3,365,182,0,1250,1248,1,0,0,0,1250,1249,1,0,0,0,1251,328,
- 1,0,0,0,1252,1255,3,345,172,0,1253,1255,3,361,180,0,1254,1252,1,
- 0,0,0,1254,1253,1,0,0,0,1255,330,1,0,0,0,1256,1260,5,96,0,0,1257,
- 1259,3,341,170,0,1258,1257,1,0,0,0,1259,1262,1,0,0,0,1260,1258,1,
- 0,0,0,1260,1261,1,0,0,0,1261,1263,1,0,0,0,1262,1260,1,0,0,0,1263,
- 1265,5,96,0,0,1264,1256,1,0,0,0,1265,1266,1,0,0,0,1266,1264,1,0,
- 0,0,1266,1267,1,0,0,0,1267,332,1,0,0,0,1268,1270,3,335,167,0,1269,
- 1268,1,0,0,0,1270,1271,1,0,0,0,1271,1269,1,0,0,0,1271,1272,1,0,0,
- 0,1272,334,1,0,0,0,1273,1286,3,363,181,0,1274,1286,3,367,183,0,1275,
- 1286,3,371,185,0,1276,1286,3,373,186,0,1277,1286,3,339,169,0,1278,
- 1286,3,359,179,0,1279,1286,3,357,178,0,1280,1286,3,355,177,0,1281,
- 1286,3,343,171,0,1282,1286,3,375,187,0,1283,1286,7,27,0,0,1284,1286,
- 3,337,168,0,1285,1273,1,0,0,0,1285,1274,1,0,0,0,1285,1275,1,0,0,
- 0,1285,1276,1,0,0,0,1285,1277,1,0,0,0,1285,1278,1,0,0,0,1285,1279,
- 1,0,0,0,1285,1280,1,0,0,0,1285,1281,1,0,0,0,1285,1282,1,0,0,0,1285,
- 1283,1,0,0,0,1285,1284,1,0,0,0,1286,336,1,0,0,0,1287,1288,5,47,0,
- 0,1288,1289,5,42,0,0,1289,1295,1,0,0,0,1290,1294,3,347,173,0,1291,
- 1292,5,42,0,0,1292,1294,3,353,176,0,1293,1290,1,0,0,0,1293,1291,
- 1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0,0,0,1295,1296,1,0,0,0,1296,
- 1298,1,0,0,0,1297,1295,1,0,0,0,1298,1299,5,42,0,0,1299,1317,5,47,
- 0,0,1300,1301,5,47,0,0,1301,1302,5,47,0,0,1302,1306,1,0,0,0,1303,
- 1305,3,351,175,0,1304,1303,1,0,0,0,1305,1308,1,0,0,0,1306,1304,1,
- 0,0,0,1306,1307,1,0,0,0,1307,1310,1,0,0,0,1308,1306,1,0,0,0,1309,
- 1311,3,359,179,0,1310,1309,1,0,0,0,1310,1311,1,0,0,0,1311,1314,1,
- 0,0,0,1312,1315,3,371,185,0,1313,1315,5,0,0,1,1314,1312,1,0,0,0,
- 1314,1313,1,0,0,0,1315,1317,1,0,0,0,1316,1287,1,0,0,0,1316,1300,
- 1,0,0,0,1317,338,1,0,0,0,1318,1319,7,28,0,0,1319,340,1,0,0,0,1320,
- 1321,8,29,0,0,1321,342,1,0,0,0,1322,1323,7,30,0,0,1323,344,1,0,0,
- 0,1324,1325,7,31,0,0,1325,346,1,0,0,0,1326,1327,8,32,0,0,1327,348,
- 1,0,0,0,1328,1329,8,33,0,0,1329,350,1,0,0,0,1330,1331,8,34,0,0,1331,
- 352,1,0,0,0,1332,1333,8,35,0,0,1333,354,1,0,0,0,1334,1335,7,36,0,
- 0,1335,356,1,0,0,0,1336,1337,7,37,0,0,1337,358,1,0,0,0,1338,1339,
- 7,38,0,0,1339,360,1,0,0,0,1340,1341,7,39,0,0,1341,362,1,0,0,0,1342,
- 1343,7,40,0,0,1343,364,1,0,0,0,1344,1345,7,41,0,0,1345,366,1,0,0,
- 0,1346,1347,7,42,0,0,1347,368,1,0,0,0,1348,1349,8,43,0,0,1349,370,
- 1,0,0,0,1350,1351,7,44,0,0,1351,372,1,0,0,0,1352,1353,7,45,0,0,1353,
- 374,1,0,0,0,1354,1355,7,46,0,0,1355,376,1,0,0,0,1356,1357,7,47,0,
- 0,1357,378,1,0,0,0,1358,1359,9,0,0,0,1359,380,1,0,0,0,28,0,1163,
- 1165,1172,1174,1178,1198,1205,1208,1211,1215,1219,1223,1232,1239,
- 1245,1250,1254,1260,1266,1271,1285,1293,1295,1306,1310,1314,1316,
- 0
+ 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,389,1,0,0,0,1,391,1,0,
+ 0,0,3,393,1,0,0,0,5,395,1,0,0,0,7,397,1,0,0,0,9,399,1,0,0,0,11,401,
+ 1,0,0,0,13,403,1,0,0,0,15,405,1,0,0,0,17,407,1,0,0,0,19,409,1,0,
+ 0,0,21,411,1,0,0,0,23,413,1,0,0,0,25,416,1,0,0,0,27,419,1,0,0,0,
+ 29,421,1,0,0,0,31,424,1,0,0,0,33,426,1,0,0,0,35,429,1,0,0,0,37,431,
+ 1,0,0,0,39,434,1,0,0,0,41,437,1,0,0,0,43,439,1,0,0,0,45,441,1,0,
+ 0,0,47,443,1,0,0,0,49,445,1,0,0,0,51,448,1,0,0,0,53,450,1,0,0,0,
+ 55,452,1,0,0,0,57,454,1,0,0,0,59,456,1,0,0,0,61,458,1,0,0,0,63,460,
+ 1,0,0,0,65,462,1,0,0,0,67,464,1,0,0,0,69,466,1,0,0,0,71,468,1,0,
+ 0,0,73,470,1,0,0,0,75,472,1,0,0,0,77,474,1,0,0,0,79,476,1,0,0,0,
+ 81,478,1,0,0,0,83,480,1,0,0,0,85,482,1,0,0,0,87,484,1,0,0,0,89,486,
+ 1,0,0,0,91,488,1,0,0,0,93,496,1,0,0,0,95,500,1,0,0,0,97,504,1,0,
+ 0,0,99,508,1,0,0,0,101,514,1,0,0,0,103,518,1,0,0,0,105,521,1,0,0,
+ 0,107,525,1,0,0,0,109,535,1,0,0,0,111,542,1,0,0,0,113,548,1,0,0,
+ 0,115,551,1,0,0,0,117,556,1,0,0,0,119,561,1,0,0,0,121,566,1,0,0,
+ 0,123,577,1,0,0,0,125,584,1,0,0,0,127,592,1,0,0,0,129,599,1,0,0,
+ 0,131,622,1,0,0,0,133,631,1,0,0,0,135,636,1,0,0,0,137,642,1,0,0,
+ 0,139,649,1,0,0,0,141,655,1,0,0,0,143,664,1,0,0,0,145,671,1,0,0,
+ 0,147,679,1,0,0,0,149,686,1,0,0,0,151,691,1,0,0,0,153,702,1,0,0,
+ 0,155,709,1,0,0,0,157,718,1,0,0,0,159,723,1,0,0,0,161,728,1,0,0,
+ 0,163,732,1,0,0,0,165,737,1,0,0,0,167,744,1,0,0,0,169,752,1,0,0,
+ 0,171,759,1,0,0,0,173,769,1,0,0,0,175,775,1,0,0,0,177,780,1,0,0,
+ 0,179,785,1,0,0,0,181,791,1,0,0,0,183,797,1,0,0,0,185,805,1,0,0,
+ 0,187,810,1,0,0,0,189,817,1,0,0,0,191,820,1,0,0,0,193,823,1,0,0,
+ 0,195,833,1,0,0,0,197,841,1,0,0,0,199,844,1,0,0,0,201,849,1,0,0,
+ 0,203,853,1,0,0,0,205,859,1,0,0,0,207,864,1,0,0,0,209,872,1,0,0,
+ 0,211,878,1,0,0,0,213,884,1,0,0,0,215,893,1,0,0,0,217,899,1,0,0,
+ 0,219,908,1,0,0,0,221,919,1,0,0,0,223,922,1,0,0,0,225,927,1,0,0,
+ 0,227,931,1,0,0,0,229,936,1,0,0,0,231,941,1,0,0,0,233,944,1,0,0,
+ 0,235,949,1,0,0,0,237,958,1,0,0,0,239,961,1,0,0,0,241,967,1,0,0,
+ 0,243,975,1,0,0,0,245,983,1,0,0,0,247,991,1,0,0,0,249,996,1,0,0,
+ 0,251,1000,1,0,0,0,253,1007,1,0,0,0,255,1014,1,0,0,0,257,1023,1,
+ 0,0,0,259,1048,1,0,0,0,261,1057,1,0,0,0,263,1061,1,0,0,0,265,1070,
+ 1,0,0,0,267,1076,1,0,0,0,269,1083,1,0,0,0,271,1089,1,0,0,0,273,1094,
+ 1,0,0,0,275,1097,1,0,0,0,277,1103,1,0,0,0,279,1115,1,0,0,0,281,1120,
+ 1,0,0,0,283,1125,1,0,0,0,285,1131,1,0,0,0,287,1138,1,0,0,0,289,1142,
+ 1,0,0,0,291,1147,1,0,0,0,293,1153,1,0,0,0,295,1158,1,0,0,0,297,1164,
+ 1,0,0,0,299,1168,1,0,0,0,301,1175,1,0,0,0,303,1183,1,0,0,0,305,1185,
+ 1,0,0,0,307,1190,1,0,0,0,309,1193,1,0,0,0,311,1195,1,0,0,0,313,1197,
+ 1,0,0,0,315,1217,1,0,0,0,317,1219,1,0,0,0,319,1247,1,0,0,0,321,1250,
+ 1,0,0,0,323,1254,1,0,0,0,325,1258,1,0,0,0,327,1262,1,0,0,0,329,1264,
+ 1,0,0,0,331,1266,1,0,0,0,333,1271,1,0,0,0,335,1280,1,0,0,0,337,1289,
+ 1,0,0,0,339,1293,1,0,0,0,341,1303,1,0,0,0,343,1308,1,0,0,0,345,1324,
+ 1,0,0,0,347,1355,1,0,0,0,349,1357,1,0,0,0,351,1359,1,0,0,0,353,1361,
+ 1,0,0,0,355,1363,1,0,0,0,357,1365,1,0,0,0,359,1367,1,0,0,0,361,1369,
+ 1,0,0,0,363,1371,1,0,0,0,365,1373,1,0,0,0,367,1375,1,0,0,0,369,1377,
+ 1,0,0,0,371,1379,1,0,0,0,373,1381,1,0,0,0,375,1383,1,0,0,0,377,1385,
+ 1,0,0,0,379,1387,1,0,0,0,381,1389,1,0,0,0,383,1391,1,0,0,0,385,1393,
+ 1,0,0,0,387,1395,1,0,0,0,389,1397,1,0,0,0,391,392,5,59,0,0,392,2,
+ 1,0,0,0,393,394,5,40,0,0,394,4,1,0,0,0,395,396,5,44,0,0,396,6,1,
+ 0,0,0,397,398,5,41,0,0,398,8,1,0,0,0,399,400,5,46,0,0,400,10,1,0,
+ 0,0,401,402,5,61,0,0,402,12,1,0,0,0,403,404,5,91,0,0,404,14,1,0,
+ 0,0,405,406,5,93,0,0,406,16,1,0,0,0,407,408,5,123,0,0,408,18,1,0,
+ 0,0,409,410,5,125,0,0,410,20,1,0,0,0,411,412,5,124,0,0,412,22,1,
+ 0,0,0,413,414,5,46,0,0,414,415,5,46,0,0,415,24,1,0,0,0,416,417,5,
+ 60,0,0,417,418,5,62,0,0,418,26,1,0,0,0,419,420,5,60,0,0,420,28,1,
+ 0,0,0,421,422,5,60,0,0,422,423,5,61,0,0,423,30,1,0,0,0,424,425,5,
+ 62,0,0,425,32,1,0,0,0,426,427,5,62,0,0,427,428,5,61,0,0,428,34,1,
+ 0,0,0,429,430,5,38,0,0,430,36,1,0,0,0,431,432,5,62,0,0,432,433,5,
+ 62,0,0,433,38,1,0,0,0,434,435,5,60,0,0,435,436,5,60,0,0,436,40,1,
+ 0,0,0,437,438,5,43,0,0,438,42,1,0,0,0,439,440,5,47,0,0,440,44,1,
+ 0,0,0,441,442,5,37,0,0,442,46,1,0,0,0,443,444,5,94,0,0,444,48,1,
+ 0,0,0,445,446,5,61,0,0,446,447,5,126,0,0,447,50,1,0,0,0,448,449,
+ 5,36,0,0,449,52,1,0,0,0,450,451,5,10216,0,0,451,54,1,0,0,0,452,453,
+ 5,12296,0,0,453,56,1,0,0,0,454,455,5,65124,0,0,455,58,1,0,0,0,456,
+ 457,5,65308,0,0,457,60,1,0,0,0,458,459,5,10217,0,0,459,62,1,0,0,
+ 0,460,461,5,12297,0,0,461,64,1,0,0,0,462,463,5,65125,0,0,463,66,
+ 1,0,0,0,464,465,5,65310,0,0,465,68,1,0,0,0,466,467,5,173,0,0,467,
+ 70,1,0,0,0,468,469,5,8208,0,0,469,72,1,0,0,0,470,471,5,8209,0,0,
+ 471,74,1,0,0,0,472,473,5,8210,0,0,473,76,1,0,0,0,474,475,5,8211,
+ 0,0,475,78,1,0,0,0,476,477,5,8212,0,0,477,80,1,0,0,0,478,479,5,8213,
+ 0,0,479,82,1,0,0,0,480,481,5,8722,0,0,481,84,1,0,0,0,482,483,5,65112,
+ 0,0,483,86,1,0,0,0,484,485,5,65123,0,0,485,88,1,0,0,0,486,487,5,
+ 65293,0,0,487,90,1,0,0,0,488,489,7,0,0,0,489,490,7,1,0,0,490,491,
+ 7,2,0,0,491,492,7,1,0,0,492,493,7,3,0,0,493,494,7,4,0,0,494,495,
+ 7,1,0,0,495,92,1,0,0,0,496,497,7,0,0,0,497,498,7,5,0,0,498,499,7,
+ 2,0,0,499,94,1,0,0,0,500,501,7,0,0,0,501,502,7,6,0,0,502,503,7,6,
+ 0,0,503,96,1,0,0,0,504,505,7,0,0,0,505,506,7,3,0,0,506,507,7,3,0,
+ 0,507,98,1,0,0,0,508,509,7,0,0,0,509,510,7,3,0,0,510,511,7,7,0,0,
+ 511,512,7,8,0,0,512,513,7,9,0,0,513,100,1,0,0,0,514,515,7,0,0,0,
+ 515,516,7,5,0,0,516,517,7,6,0,0,517,102,1,0,0,0,518,519,7,0,0,0,
+ 519,520,7,10,0,0,520,104,1,0,0,0,521,522,7,0,0,0,522,523,7,10,0,
+ 0,523,524,7,1,0,0,524,106,1,0,0,0,525,526,7,0,0,0,526,527,7,10,0,
+ 0,527,528,7,1,0,0,528,529,7,8,0,0,529,530,7,5,0,0,530,531,7,6,0,
+ 0,531,532,7,4,0,0,532,533,7,5,0,0,533,534,7,11,0,0,534,108,1,0,0,
+ 0,535,536,7,0,0,0,536,537,7,7,0,0,537,538,7,7,0,0,538,539,7,0,0,
+ 0,539,540,7,1,0,0,540,541,7,12,0,0,541,110,1,0,0,0,542,543,7,13,
+ 0,0,543,544,7,8,0,0,544,545,7,11,0,0,545,546,7,4,0,0,546,547,7,5,
+ 0,0,547,112,1,0,0,0,548,549,7,13,0,0,549,550,7,2,0,0,550,114,1,0,
+ 0,0,551,552,7,1,0,0,552,553,7,0,0,0,553,554,7,3,0,0,554,555,7,3,
+ 0,0,555,116,1,0,0,0,556,557,7,1,0,0,557,558,7,0,0,0,558,559,7,10,
+ 0,0,559,560,7,8,0,0,560,118,1,0,0,0,561,562,7,1,0,0,562,563,7,0,
+ 0,0,563,564,7,10,0,0,564,565,7,7,0,0,565,120,1,0,0,0,566,567,7,1,
+ 0,0,567,568,7,12,0,0,568,569,7,8,0,0,569,570,7,1,0,0,570,571,7,14,
+ 0,0,571,572,7,15,0,0,572,573,7,16,0,0,573,574,7,4,0,0,574,575,7,
+ 5,0,0,575,576,7,7,0,0,576,122,1,0,0,0,577,578,7,1,0,0,578,579,7,
+ 16,0,0,579,580,7,3,0,0,580,581,7,17,0,0,581,582,7,18,0,0,582,583,
+ 7,5,0,0,583,124,1,0,0,0,584,585,7,1,0,0,585,586,7,16,0,0,586,587,
+ 7,18,0,0,587,588,7,18,0,0,588,589,7,8,0,0,589,590,7,5,0,0,590,591,
+ 7,7,0,0,591,126,1,0,0,0,592,593,7,1,0,0,593,594,7,16,0,0,594,595,
+ 7,18,0,0,595,596,7,18,0,0,596,597,7,4,0,0,597,598,7,7,0,0,598,128,
+ 1,0,0,0,599,600,7,1,0,0,600,601,7,16,0,0,601,602,7,18,0,0,602,603,
+ 7,18,0,0,603,604,7,4,0,0,604,605,7,7,0,0,605,606,5,95,0,0,606,607,
+ 7,10,0,0,607,608,7,14,0,0,608,609,7,4,0,0,609,610,7,15,0,0,610,611,
+ 5,95,0,0,611,612,7,1,0,0,612,613,7,12,0,0,613,614,7,8,0,0,614,615,
+ 7,1,0,0,615,616,7,14,0,0,616,617,7,15,0,0,617,618,7,16,0,0,618,619,
+ 7,4,0,0,619,620,7,5,0,0,620,621,7,7,0,0,621,130,1,0,0,0,622,623,
+ 7,1,0,0,623,624,7,16,0,0,624,625,7,5,0,0,625,626,7,7,0,0,626,627,
+ 7,0,0,0,627,628,7,4,0,0,628,629,7,5,0,0,629,630,7,10,0,0,630,132,
+ 1,0,0,0,631,632,7,1,0,0,632,633,7,16,0,0,633,634,7,15,0,0,634,635,
+ 7,2,0,0,635,134,1,0,0,0,636,637,7,1,0,0,637,638,7,16,0,0,638,639,
+ 7,17,0,0,639,640,7,5,0,0,640,641,7,7,0,0,641,136,1,0,0,0,642,643,
+ 7,1,0,0,643,644,7,9,0,0,644,645,7,8,0,0,645,646,7,0,0,0,646,647,
+ 7,7,0,0,647,648,7,8,0,0,648,138,1,0,0,0,649,650,7,1,0,0,650,651,
+ 7,2,0,0,651,652,7,1,0,0,652,653,7,3,0,0,653,654,7,8,0,0,654,140,
+ 1,0,0,0,655,656,7,6,0,0,656,657,7,0,0,0,657,658,7,7,0,0,658,659,
+ 7,0,0,0,659,660,7,13,0,0,660,661,7,0,0,0,661,662,7,10,0,0,662,663,
+ 7,8,0,0,663,142,1,0,0,0,664,665,7,6,0,0,665,666,7,13,0,0,666,667,
+ 7,7,0,0,667,668,7,2,0,0,668,669,7,15,0,0,669,670,7,8,0,0,670,144,
+ 1,0,0,0,671,672,7,6,0,0,672,673,7,8,0,0,673,674,7,19,0,0,674,675,
+ 7,0,0,0,675,676,7,17,0,0,676,677,7,3,0,0,677,678,7,7,0,0,678,146,
+ 1,0,0,0,679,680,7,6,0,0,680,681,7,8,0,0,681,682,7,3,0,0,682,683,
+ 7,8,0,0,683,684,7,7,0,0,684,685,7,8,0,0,685,148,1,0,0,0,686,687,
+ 7,6,0,0,687,688,7,8,0,0,688,689,7,10,0,0,689,690,7,1,0,0,690,150,
+ 1,0,0,0,691,692,7,6,0,0,692,693,7,8,0,0,693,694,7,10,0,0,694,695,
+ 7,1,0,0,695,696,7,8,0,0,696,697,7,5,0,0,697,698,7,6,0,0,698,699,
+ 7,4,0,0,699,700,7,5,0,0,700,701,7,11,0,0,701,152,1,0,0,0,702,703,
+ 7,6,0,0,703,704,7,8,0,0,704,705,7,7,0,0,705,706,7,0,0,0,706,707,
+ 7,1,0,0,707,708,7,12,0,0,708,154,1,0,0,0,709,710,7,6,0,0,710,711,
+ 7,4,0,0,711,712,7,10,0,0,712,713,7,7,0,0,713,714,7,4,0,0,714,715,
+ 7,5,0,0,715,716,7,1,0,0,716,717,7,7,0,0,717,156,1,0,0,0,718,719,
+ 7,6,0,0,719,720,7,9,0,0,720,721,7,16,0,0,721,722,7,15,0,0,722,158,
+ 1,0,0,0,723,724,7,8,0,0,724,725,7,3,0,0,725,726,7,10,0,0,726,727,
+ 7,8,0,0,727,160,1,0,0,0,728,729,7,8,0,0,729,730,7,5,0,0,730,731,
+ 7,6,0,0,731,162,1,0,0,0,732,733,7,8,0,0,733,734,7,5,0,0,734,735,
+ 7,6,0,0,735,736,7,10,0,0,736,164,1,0,0,0,737,738,7,8,0,0,738,739,
+ 7,20,0,0,739,740,7,4,0,0,740,741,7,10,0,0,741,742,7,7,0,0,742,743,
+ 7,10,0,0,743,166,1,0,0,0,744,745,7,8,0,0,745,746,7,20,0,0,746,747,
+ 7,15,0,0,747,748,7,3,0,0,748,749,7,0,0,0,749,750,7,4,0,0,750,751,
+ 7,5,0,0,751,168,1,0,0,0,752,753,7,8,0,0,753,754,7,20,0,0,754,755,
+ 7,15,0,0,755,756,7,16,0,0,756,757,7,9,0,0,757,758,7,7,0,0,758,170,
+ 1,0,0,0,759,760,7,8,0,0,760,761,7,20,0,0,761,762,7,7,0,0,762,763,
+ 7,8,0,0,763,764,7,5,0,0,764,765,7,10,0,0,765,766,7,4,0,0,766,767,
+ 7,16,0,0,767,768,7,5,0,0,768,172,1,0,0,0,769,770,7,19,0,0,770,771,
+ 7,0,0,0,771,772,7,3,0,0,772,773,7,10,0,0,773,774,7,8,0,0,774,174,
+ 1,0,0,0,775,776,7,19,0,0,776,777,7,9,0,0,777,778,7,16,0,0,778,779,
+ 7,18,0,0,779,176,1,0,0,0,780,781,7,11,0,0,781,782,7,3,0,0,782,783,
+ 7,16,0,0,783,784,7,13,0,0,784,178,1,0,0,0,785,786,7,11,0,0,786,787,
+ 7,9,0,0,787,788,7,0,0,0,788,789,7,15,0,0,789,790,7,12,0,0,790,180,
+ 1,0,0,0,791,792,7,11,0,0,792,793,7,9,0,0,793,794,7,16,0,0,794,795,
+ 7,17,0,0,795,796,7,15,0,0,796,182,1,0,0,0,797,798,7,12,0,0,798,799,
+ 7,8,0,0,799,800,7,0,0,0,800,801,7,6,0,0,801,802,7,8,0,0,802,803,
+ 7,9,0,0,803,804,7,10,0,0,804,184,1,0,0,0,805,806,7,12,0,0,806,807,
+ 7,4,0,0,807,808,7,5,0,0,808,809,7,7,0,0,809,186,1,0,0,0,810,811,
+ 7,4,0,0,811,812,7,18,0,0,812,813,7,15,0,0,813,814,7,16,0,0,814,815,
+ 7,9,0,0,815,816,7,7,0,0,816,188,1,0,0,0,817,818,7,4,0,0,818,819,
+ 7,19,0,0,819,190,1,0,0,0,820,821,7,4,0,0,821,822,7,5,0,0,822,192,
+ 1,0,0,0,823,824,7,4,0,0,824,825,7,5,0,0,825,826,7,1,0,0,826,827,
+ 7,9,0,0,827,828,7,8,0,0,828,829,7,18,0,0,829,830,7,8,0,0,830,831,
+ 7,5,0,0,831,832,7,7,0,0,832,194,1,0,0,0,833,834,7,4,0,0,834,835,
+ 7,5,0,0,835,836,7,10,0,0,836,837,7,7,0,0,837,838,7,0,0,0,838,839,
+ 7,3,0,0,839,840,7,3,0,0,840,196,1,0,0,0,841,842,7,4,0,0,842,843,
+ 7,10,0,0,843,198,1,0,0,0,844,845,7,21,0,0,845,846,7,16,0,0,846,847,
+ 7,4,0,0,847,848,7,5,0,0,848,200,1,0,0,0,849,850,7,14,0,0,850,851,
+ 7,8,0,0,851,852,7,2,0,0,852,202,1,0,0,0,853,854,7,3,0,0,854,855,
+ 7,4,0,0,855,856,7,18,0,0,856,857,7,4,0,0,857,858,7,7,0,0,858,204,
+ 1,0,0,0,859,860,7,3,0,0,860,861,7,16,0,0,861,862,7,0,0,0,862,863,
+ 7,6,0,0,863,206,1,0,0,0,864,865,7,3,0,0,865,866,7,16,0,0,866,867,
+ 7,11,0,0,867,868,7,4,0,0,868,869,7,1,0,0,869,870,7,0,0,0,870,871,
+ 7,3,0,0,871,208,1,0,0,0,872,873,7,18,0,0,873,874,7,0,0,0,874,875,
+ 7,1,0,0,875,876,7,9,0,0,876,877,7,16,0,0,877,210,1,0,0,0,878,879,
+ 7,18,0,0,879,880,7,0,0,0,880,881,7,7,0,0,881,882,7,1,0,0,882,883,
+ 7,12,0,0,883,212,1,0,0,0,884,885,7,18,0,0,885,886,7,0,0,0,886,887,
+ 7,20,0,0,887,888,7,22,0,0,888,889,7,0,0,0,889,890,7,3,0,0,890,891,
+ 7,17,0,0,891,892,7,8,0,0,892,214,1,0,0,0,893,894,7,18,0,0,894,895,
+ 7,8,0,0,895,896,7,9,0,0,896,897,7,11,0,0,897,898,7,8,0,0,898,216,
+ 1,0,0,0,899,900,7,18,0,0,900,901,7,4,0,0,901,902,7,5,0,0,902,903,
+ 7,22,0,0,903,904,7,0,0,0,904,905,7,3,0,0,905,906,7,17,0,0,906,907,
+ 7,8,0,0,907,218,1,0,0,0,908,909,7,18,0,0,909,910,7,17,0,0,910,911,
+ 7,3,0,0,911,912,7,7,0,0,912,913,7,4,0,0,913,914,5,95,0,0,914,915,
+ 7,21,0,0,915,916,7,16,0,0,916,917,7,4,0,0,917,918,7,5,0,0,918,220,
+ 1,0,0,0,919,920,7,5,0,0,920,921,7,16,0,0,921,222,1,0,0,0,922,923,
+ 7,5,0,0,923,924,7,16,0,0,924,925,7,6,0,0,925,926,7,8,0,0,926,224,
+ 1,0,0,0,927,928,7,5,0,0,928,929,7,16,0,0,929,930,7,7,0,0,930,226,
+ 1,0,0,0,931,932,7,5,0,0,932,933,7,16,0,0,933,934,7,5,0,0,934,935,
+ 7,8,0,0,935,228,1,0,0,0,936,937,7,5,0,0,937,938,7,17,0,0,938,939,
+ 7,3,0,0,939,940,7,3,0,0,940,230,1,0,0,0,941,942,7,16,0,0,942,943,
+ 7,5,0,0,943,232,1,0,0,0,944,945,7,16,0,0,945,946,7,5,0,0,946,947,
+ 7,3,0,0,947,948,7,2,0,0,948,234,1,0,0,0,949,950,7,16,0,0,950,951,
+ 7,15,0,0,951,952,7,7,0,0,952,953,7,4,0,0,953,954,7,16,0,0,954,955,
+ 7,5,0,0,955,956,7,0,0,0,956,957,7,3,0,0,957,236,1,0,0,0,958,959,
+ 7,16,0,0,959,960,7,9,0,0,960,238,1,0,0,0,961,962,7,16,0,0,962,963,
+ 7,9,0,0,963,964,7,6,0,0,964,965,7,8,0,0,965,966,7,9,0,0,966,240,
+ 1,0,0,0,967,968,7,15,0,0,968,969,7,9,0,0,969,970,7,4,0,0,970,971,
+ 7,18,0,0,971,972,7,0,0,0,972,973,7,9,0,0,973,974,7,2,0,0,974,242,
+ 1,0,0,0,975,976,7,15,0,0,976,977,7,9,0,0,977,978,7,16,0,0,978,979,
+ 7,19,0,0,979,980,7,4,0,0,980,981,7,3,0,0,981,982,7,8,0,0,982,244,
+ 1,0,0,0,983,984,7,15,0,0,984,985,7,9,0,0,985,986,7,16,0,0,986,987,
+ 7,21,0,0,987,988,7,8,0,0,988,989,7,1,0,0,989,990,7,7,0,0,990,246,
+ 1,0,0,0,991,992,7,9,0,0,992,993,7,8,0,0,993,994,7,0,0,0,994,995,
+ 7,6,0,0,995,248,1,0,0,0,996,997,7,9,0,0,997,998,7,8,0,0,998,999,
+ 7,3,0,0,999,250,1,0,0,0,1000,1001,7,9,0,0,1001,1002,7,8,0,0,1002,
+ 1003,7,5,0,0,1003,1004,7,0,0,0,1004,1005,7,18,0,0,1005,1006,7,8,
+ 0,0,1006,252,1,0,0,0,1007,1008,7,9,0,0,1008,1009,7,8,0,0,1009,1010,
+ 7,7,0,0,1010,1011,7,17,0,0,1011,1012,7,9,0,0,1012,1013,7,5,0,0,1013,
+ 254,1,0,0,0,1014,1015,7,9,0,0,1015,1016,7,16,0,0,1016,1017,7,3,0,
+ 0,1017,1018,7,3,0,0,1018,1019,7,13,0,0,1019,1020,7,0,0,0,1020,1021,
+ 7,1,0,0,1021,1022,7,14,0,0,1022,256,1,0,0,0,1023,1024,7,9,0,0,1024,
+ 1025,7,16,0,0,1025,1026,7,3,0,0,1026,1027,7,3,0,0,1027,1028,7,13,
+ 0,0,1028,1029,7,0,0,0,1029,1030,7,1,0,0,1030,1031,7,14,0,0,1031,
+ 1032,5,95,0,0,1032,1033,7,10,0,0,1033,1034,7,14,0,0,1034,1035,7,
+ 4,0,0,1035,1036,7,15,0,0,1036,1037,5,95,0,0,1037,1038,7,1,0,0,1038,
+ 1039,7,12,0,0,1039,1040,7,8,0,0,1040,1041,7,1,0,0,1041,1042,7,14,
+ 0,0,1042,1043,7,15,0,0,1043,1044,7,16,0,0,1044,1045,7,4,0,0,1045,
+ 1046,7,5,0,0,1046,1047,7,7,0,0,1047,258,1,0,0,0,1048,1049,7,10,0,
+ 0,1049,1050,7,8,0,0,1050,1051,7,23,0,0,1051,1052,7,17,0,0,1052,1053,
+ 7,8,0,0,1053,1054,7,5,0,0,1054,1055,7,1,0,0,1055,1056,7,8,0,0,1056,
+ 260,1,0,0,0,1057,1058,7,10,0,0,1058,1059,7,8,0,0,1059,1060,7,7,0,
+ 0,1060,262,1,0,0,0,1061,1062,7,10,0,0,1062,1063,7,12,0,0,1063,1064,
+ 7,16,0,0,1064,1065,7,9,0,0,1065,1066,7,7,0,0,1066,1067,7,8,0,0,1067,
+ 1068,7,10,0,0,1068,1069,7,7,0,0,1069,264,1,0,0,0,1070,1071,7,10,
+ 0,0,1071,1072,7,7,0,0,1072,1073,7,0,0,0,1073,1074,7,9,0,0,1074,1075,
+ 7,7,0,0,1075,266,1,0,0,0,1076,1077,7,10,0,0,1077,1078,7,7,0,0,1078,
+ 1079,7,0,0,0,1079,1080,7,9,0,0,1080,1081,7,7,0,0,1081,1082,7,10,
+ 0,0,1082,268,1,0,0,0,1083,1084,7,7,0,0,1084,1085,7,0,0,0,1085,1086,
+ 7,13,0,0,1086,1087,7,3,0,0,1087,1088,7,8,0,0,1088,270,1,0,0,0,1089,
+ 1090,7,7,0,0,1090,1091,7,12,0,0,1091,1092,7,8,0,0,1092,1093,7,5,
+ 0,0,1093,272,1,0,0,0,1094,1095,7,7,0,0,1095,1096,7,16,0,0,1096,274,
+ 1,0,0,0,1097,1098,7,7,0,0,1098,1099,7,9,0,0,1099,1100,7,0,0,0,1100,
+ 1101,7,4,0,0,1101,1102,7,3,0,0,1102,276,1,0,0,0,1103,1104,7,7,0,
+ 0,1104,1105,7,9,0,0,1105,1106,7,0,0,0,1106,1107,7,5,0,0,1107,1108,
+ 7,10,0,0,1108,1109,7,0,0,0,1109,1110,7,1,0,0,1110,1111,7,7,0,0,1111,
+ 1112,7,4,0,0,1112,1113,7,16,0,0,1113,1114,7,5,0,0,1114,278,1,0,0,
+ 0,1115,1116,7,7,0,0,1116,1117,7,9,0,0,1117,1118,7,17,0,0,1118,1119,
+ 7,8,0,0,1119,280,1,0,0,0,1120,1121,7,7,0,0,1121,1122,7,2,0,0,1122,
+ 1123,7,15,0,0,1123,1124,7,8,0,0,1124,282,1,0,0,0,1125,1126,7,17,
+ 0,0,1126,1127,7,5,0,0,1127,1128,7,4,0,0,1128,1129,7,16,0,0,1129,
+ 1130,7,5,0,0,1130,284,1,0,0,0,1131,1132,7,17,0,0,1132,1133,7,5,0,
+ 0,1133,1134,7,24,0,0,1134,1135,7,4,0,0,1135,1136,7,5,0,0,1136,1137,
+ 7,6,0,0,1137,286,1,0,0,0,1138,1139,7,17,0,0,1139,1140,7,10,0,0,1140,
+ 1141,7,8,0,0,1141,288,1,0,0,0,1142,1143,7,24,0,0,1143,1144,7,12,
+ 0,0,1144,1145,7,8,0,0,1145,1146,7,5,0,0,1146,290,1,0,0,0,1147,1148,
+ 7,24,0,0,1148,1149,7,12,0,0,1149,1150,7,8,0,0,1150,1151,7,9,0,0,
+ 1151,1152,7,8,0,0,1152,292,1,0,0,0,1153,1154,7,24,0,0,1154,1155,
+ 7,4,0,0,1155,1156,7,7,0,0,1156,1157,7,12,0,0,1157,294,1,0,0,0,1158,
+ 1159,7,24,0,0,1159,1160,7,9,0,0,1160,1161,7,4,0,0,1161,1162,7,7,
+ 0,0,1162,1163,7,8,0,0,1163,296,1,0,0,0,1164,1165,7,20,0,0,1165,1166,
+ 7,16,0,0,1166,1167,7,9,0,0,1167,298,1,0,0,0,1168,1169,7,10,0,0,1169,
+ 1170,7,4,0,0,1170,1171,7,5,0,0,1171,1172,7,11,0,0,1172,1173,7,3,
+ 0,0,1173,1174,7,8,0,0,1174,300,1,0,0,0,1175,1176,7,6,0,0,1176,1177,
+ 7,8,0,0,1177,1178,7,1,0,0,1178,1179,7,4,0,0,1179,1180,7,18,0,0,1180,
+ 1181,7,0,0,0,1181,1182,7,3,0,0,1182,302,1,0,0,0,1183,1184,5,42,0,
+ 0,1184,304,1,0,0,0,1185,1186,7,10,0,0,1186,1187,7,14,0,0,1187,1188,
+ 7,4,0,0,1188,1189,7,15,0,0,1189,306,1,0,0,0,1190,1191,5,33,0,0,1191,
+ 1192,5,61,0,0,1192,308,1,0,0,0,1193,1194,5,45,0,0,1194,310,1,0,0,
+ 0,1195,1196,5,33,0,0,1196,312,1,0,0,0,1197,1198,5,58,0,0,1198,314,
+ 1,0,0,0,1199,1204,5,34,0,0,1200,1203,3,379,189,0,1201,1203,3,317,
+ 158,0,1202,1200,1,0,0,0,1202,1201,1,0,0,0,1203,1206,1,0,0,0,1204,
+ 1202,1,0,0,0,1204,1205,1,0,0,0,1205,1207,1,0,0,0,1206,1204,1,0,0,
+ 0,1207,1218,5,34,0,0,1208,1213,5,39,0,0,1209,1212,3,359,179,0,1210,
+ 1212,3,317,158,0,1211,1209,1,0,0,0,1211,1210,1,0,0,0,1212,1215,1,
+ 0,0,0,1213,1211,1,0,0,0,1213,1214,1,0,0,0,1214,1216,1,0,0,0,1215,
+ 1213,1,0,0,0,1216,1218,5,39,0,0,1217,1199,1,0,0,0,1217,1208,1,0,
+ 0,0,1218,316,1,0,0,0,1219,1237,5,92,0,0,1220,1238,7,25,0,0,1221,
+ 1222,7,17,0,0,1222,1223,3,323,161,0,1223,1224,3,323,161,0,1224,1225,
+ 3,323,161,0,1225,1226,3,323,161,0,1226,1238,1,0,0,0,1227,1228,7,
+ 17,0,0,1228,1229,3,323,161,0,1229,1230,3,323,161,0,1230,1231,3,323,
+ 161,0,1231,1232,3,323,161,0,1232,1233,3,323,161,0,1233,1234,3,323,
+ 161,0,1234,1235,3,323,161,0,1235,1236,3,323,161,0,1236,1238,1,0,
+ 0,0,1237,1220,1,0,0,0,1237,1221,1,0,0,0,1237,1227,1,0,0,0,1238,318,
+ 1,0,0,0,1239,1248,3,331,165,0,1240,1244,3,327,163,0,1241,1243,3,
+ 325,162,0,1242,1241,1,0,0,0,1243,1246,1,0,0,0,1244,1242,1,0,0,0,
+ 1244,1245,1,0,0,0,1245,1248,1,0,0,0,1246,1244,1,0,0,0,1247,1239,
+ 1,0,0,0,1247,1240,1,0,0,0,1248,320,1,0,0,0,1249,1251,7,26,0,0,1250,
+ 1249,1,0,0,0,1251,322,1,0,0,0,1252,1255,3,325,162,0,1253,1255,3,
+ 321,160,0,1254,1252,1,0,0,0,1254,1253,1,0,0,0,1255,324,1,0,0,0,1256,
+ 1259,3,331,165,0,1257,1259,3,327,163,0,1258,1256,1,0,0,0,1258,1257,
+ 1,0,0,0,1259,326,1,0,0,0,1260,1263,3,329,164,0,1261,1263,2,56,57,
+ 0,1262,1260,1,0,0,0,1262,1261,1,0,0,0,1263,328,1,0,0,0,1264,1265,
+ 2,49,55,0,1265,330,1,0,0,0,1266,1267,5,48,0,0,1267,332,1,0,0,0,1268,
+ 1270,3,325,162,0,1269,1268,1,0,0,0,1270,1273,1,0,0,0,1271,1269,1,
+ 0,0,0,1271,1272,1,0,0,0,1272,1274,1,0,0,0,1273,1271,1,0,0,0,1274,
+ 1276,5,46,0,0,1275,1277,3,325,162,0,1276,1275,1,0,0,0,1277,1278,
+ 1,0,0,0,1278,1276,1,0,0,0,1278,1279,1,0,0,0,1279,334,1,0,0,0,1280,
+ 1284,3,337,168,0,1281,1283,3,339,169,0,1282,1281,1,0,0,0,1283,1286,
+ 1,0,0,0,1284,1282,1,0,0,0,1284,1285,1,0,0,0,1285,336,1,0,0,0,1286,
+ 1284,1,0,0,0,1287,1290,3,387,193,0,1288,1290,3,375,187,0,1289,1287,
+ 1,0,0,0,1289,1288,1,0,0,0,1290,338,1,0,0,0,1291,1294,3,355,177,0,
+ 1292,1294,3,371,185,0,1293,1291,1,0,0,0,1293,1292,1,0,0,0,1294,340,
+ 1,0,0,0,1295,1299,5,96,0,0,1296,1298,3,351,175,0,1297,1296,1,0,0,
+ 0,1298,1301,1,0,0,0,1299,1297,1,0,0,0,1299,1300,1,0,0,0,1300,1302,
+ 1,0,0,0,1301,1299,1,0,0,0,1302,1304,5,96,0,0,1303,1295,1,0,0,0,1304,
+ 1305,1,0,0,0,1305,1303,1,0,0,0,1305,1306,1,0,0,0,1306,342,1,0,0,
+ 0,1307,1309,3,345,172,0,1308,1307,1,0,0,0,1309,1310,1,0,0,0,1310,
+ 1308,1,0,0,0,1310,1311,1,0,0,0,1311,344,1,0,0,0,1312,1325,3,373,
+ 186,0,1313,1325,3,377,188,0,1314,1325,3,381,190,0,1315,1325,3,383,
+ 191,0,1316,1325,3,349,174,0,1317,1325,3,369,184,0,1318,1325,3,367,
+ 183,0,1319,1325,3,365,182,0,1320,1325,3,353,176,0,1321,1325,3,385,
+ 192,0,1322,1325,7,27,0,0,1323,1325,3,347,173,0,1324,1312,1,0,0,0,
+ 1324,1313,1,0,0,0,1324,1314,1,0,0,0,1324,1315,1,0,0,0,1324,1316,
+ 1,0,0,0,1324,1317,1,0,0,0,1324,1318,1,0,0,0,1324,1319,1,0,0,0,1324,
+ 1320,1,0,0,0,1324,1321,1,0,0,0,1324,1322,1,0,0,0,1324,1323,1,0,0,
+ 0,1325,346,1,0,0,0,1326,1327,5,47,0,0,1327,1328,5,42,0,0,1328,1334,
+ 1,0,0,0,1329,1333,3,357,178,0,1330,1331,5,42,0,0,1331,1333,3,363,
+ 181,0,1332,1329,1,0,0,0,1332,1330,1,0,0,0,1333,1336,1,0,0,0,1334,
+ 1332,1,0,0,0,1334,1335,1,0,0,0,1335,1337,1,0,0,0,1336,1334,1,0,0,
+ 0,1337,1338,5,42,0,0,1338,1356,5,47,0,0,1339,1340,5,47,0,0,1340,
+ 1341,5,47,0,0,1341,1345,1,0,0,0,1342,1344,3,361,180,0,1343,1342,
+ 1,0,0,0,1344,1347,1,0,0,0,1345,1343,1,0,0,0,1345,1346,1,0,0,0,1346,
+ 1349,1,0,0,0,1347,1345,1,0,0,0,1348,1350,3,369,184,0,1349,1348,1,
+ 0,0,0,1349,1350,1,0,0,0,1350,1353,1,0,0,0,1351,1354,3,381,190,0,
+ 1352,1354,5,0,0,1,1353,1351,1,0,0,0,1353,1352,1,0,0,0,1354,1356,
+ 1,0,0,0,1355,1326,1,0,0,0,1355,1339,1,0,0,0,1356,348,1,0,0,0,1357,
+ 1358,7,28,0,0,1358,350,1,0,0,0,1359,1360,8,29,0,0,1360,352,1,0,0,
+ 0,1361,1362,7,30,0,0,1362,354,1,0,0,0,1363,1364,7,31,0,0,1364,356,
+ 1,0,0,0,1365,1366,8,32,0,0,1366,358,1,0,0,0,1367,1368,8,33,0,0,1368,
+ 360,1,0,0,0,1369,1370,8,34,0,0,1370,362,1,0,0,0,1371,1372,8,35,0,
+ 0,1372,364,1,0,0,0,1373,1374,7,36,0,0,1374,366,1,0,0,0,1375,1376,
+ 7,37,0,0,1376,368,1,0,0,0,1377,1378,7,38,0,0,1378,370,1,0,0,0,1379,
+ 1380,7,39,0,0,1380,372,1,0,0,0,1381,1382,7,40,0,0,1382,374,1,0,0,
+ 0,1383,1384,7,41,0,0,1384,376,1,0,0,0,1385,1386,7,42,0,0,1386,378,
+ 1,0,0,0,1387,1388,8,43,0,0,1388,380,1,0,0,0,1389,1390,7,44,0,0,1390,
+ 382,1,0,0,0,1391,1392,7,45,0,0,1392,384,1,0,0,0,1393,1394,7,46,0,
+ 0,1394,386,1,0,0,0,1395,1396,7,47,0,0,1396,388,1,0,0,0,1397,1398,
+ 9,0,0,0,1398,390,1,0,0,0,28,0,1202,1204,1211,1213,1217,1237,1244,
+ 1247,1250,1254,1258,1262,1271,1278,1284,1289,1293,1299,1305,1310,
+ 1324,1332,1334,1345,1349,1353,1355,0
];
private static __ATN: antlr.ATN;
diff --git a/src/utils/CypherParser/CypherParser.ts b/src/utils/CypherParser/CypherParser.ts
index 88436ae..96f2525 100644
--- a/src/utils/CypherParser/CypherParser.ts
+++ b/src/utils/CypherParser/CypherParser.ts
@@ -54,131 +54,136 @@ export class CypherParser extends antlr.Parser {
public static readonly T__42 = 43;
public static readonly T__43 = 44;
public static readonly T__44 = 45;
- public static readonly ADD = 46;
- public static readonly ALL = 47;
- public static readonly ALTER = 48;
- public static readonly AND = 49;
- public static readonly AS = 50;
- public static readonly ASC = 51;
- public static readonly ASCENDING = 52;
- public static readonly ATTACH = 53;
- public static readonly BEGIN = 54;
- public static readonly BY = 55;
- public static readonly CALL = 56;
- public static readonly CASE = 57;
- public static readonly CAST = 58;
- public static readonly CHECKPOINT = 59;
- public static readonly COLUMN = 60;
- public static readonly COMMENT = 61;
- public static readonly COMMIT = 62;
- public static readonly COMMIT_SKIP_CHECKPOINT = 63;
- public static readonly CONTAINS = 64;
- public static readonly COPY = 65;
- public static readonly COUNT = 66;
- public static readonly CREATE = 67;
- public static readonly CYCLE = 68;
- public static readonly DATABASE = 69;
- public static readonly DBTYPE = 70;
- public static readonly DEFAULT = 71;
- public static readonly DELETE = 72;
- public static readonly DESC = 73;
- public static readonly DESCENDING = 74;
- public static readonly DETACH = 75;
- public static readonly DISTINCT = 76;
- public static readonly DROP = 77;
- public static readonly ELSE = 78;
- public static readonly END = 79;
- public static readonly ENDS = 80;
- public static readonly EXISTS = 81;
- public static readonly EXPLAIN = 82;
- public static readonly EXPORT = 83;
- public static readonly EXTENSION = 84;
- public static readonly FALSE = 85;
- public static readonly FROM = 86;
- public static readonly GLOB = 87;
- public static readonly GRAPH = 88;
- public static readonly GROUP = 89;
- public static readonly HEADERS = 90;
- public static readonly HINT = 91;
- public static readonly IMPORT = 92;
- public static readonly IF = 93;
- public static readonly IN = 94;
- public static readonly INCREMENT = 95;
- public static readonly INSTALL = 96;
- public static readonly IS = 97;
- public static readonly JOIN = 98;
- public static readonly KEY = 99;
- public static readonly LIMIT = 100;
- public static readonly LOAD = 101;
- public static readonly MACRO = 102;
- public static readonly MATCH = 103;
- public static readonly MAXVALUE = 104;
- public static readonly MERGE = 105;
- public static readonly MINVALUE = 106;
- public static readonly MULTI_JOIN = 107;
- public static readonly NO = 108;
- public static readonly NODE = 109;
- public static readonly NOT = 110;
- public static readonly NULL = 111;
- public static readonly ON = 112;
- public static readonly ONLY = 113;
- public static readonly OPTIONAL = 114;
- public static readonly OR = 115;
- public static readonly ORDER = 116;
- public static readonly PRIMARY = 117;
- public static readonly PROFILE = 118;
- public static readonly PROJECT = 119;
- public static readonly RDFGRAPH = 120;
- public static readonly READ = 121;
- public static readonly REL = 122;
- public static readonly RENAME = 123;
- public static readonly RETURN = 124;
- public static readonly ROLLBACK = 125;
- public static readonly ROLLBACK_SKIP_CHECKPOINT = 126;
- public static readonly SEQUENCE = 127;
- public static readonly SET = 128;
- public static readonly SHORTEST = 129;
- public static readonly START = 130;
- public static readonly STARTS = 131;
- public static readonly TABLE = 132;
- public static readonly THEN = 133;
- public static readonly TO = 134;
- public static readonly TRANSACTION = 135;
- public static readonly TRUE = 136;
- public static readonly TYPE = 137;
- public static readonly UNION = 138;
- public static readonly UNWIND = 139;
- public static readonly USE = 140;
- public static readonly WHEN = 141;
- public static readonly WHERE = 142;
- public static readonly WITH = 143;
- public static readonly WRITE = 144;
- public static readonly XOR = 145;
- public static readonly DECIMAL = 146;
- public static readonly STAR = 147;
- public static readonly L_SKIP = 148;
- public static readonly INVALID_NOT_EQUAL = 149;
- public static readonly MINUS = 150;
- public static readonly FACTORIAL = 151;
- public static readonly COLON = 152;
- public static readonly StringLiteral = 153;
- public static readonly EscapedChar = 154;
- public static readonly DecimalInteger = 155;
- public static readonly HexLetter = 156;
- public static readonly HexDigit = 157;
- public static readonly Digit = 158;
- public static readonly NonZeroDigit = 159;
- public static readonly NonZeroOctDigit = 160;
- public static readonly ZeroDigit = 161;
- public static readonly RegularDecimalReal = 162;
- public static readonly UnescapedSymbolicName = 163;
- public static readonly IdentifierStart = 164;
- public static readonly IdentifierPart = 165;
- public static readonly EscapedSymbolicName = 166;
- public static readonly SP = 167;
- public static readonly WHITESPACE = 168;
- public static readonly CypherComment = 169;
- public static readonly Unknown = 170;
+ public static readonly ACYCLIC = 46;
+ public static readonly ANY = 47;
+ public static readonly ADD = 48;
+ public static readonly ALL = 49;
+ public static readonly ALTER = 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 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 TABLE = 135;
+ public static readonly THEN = 136;
+ public static readonly TO = 137;
+ public static readonly TRAIL = 138;
+ public static readonly TRANSACTION = 139;
+ public static readonly TRUE = 140;
+ public static readonly TYPE = 141;
+ public static readonly UNION = 142;
+ public static readonly UNWIND = 143;
+ public static readonly USE = 144;
+ public static readonly WHEN = 145;
+ public static readonly WHERE = 146;
+ public static readonly WITH = 147;
+ public static readonly WRITE = 148;
+ public static readonly XOR = 149;
+ public static readonly SINGLE = 150;
+ public static readonly DECIMAL = 151;
+ public static readonly STAR = 152;
+ public static readonly L_SKIP = 153;
+ public static readonly INVALID_NOT_EQUAL = 154;
+ public static readonly MINUS = 155;
+ public static readonly FACTORIAL = 156;
+ public static readonly COLON = 157;
+ public static readonly StringLiteral = 158;
+ public static readonly EscapedChar = 159;
+ public static readonly DecimalInteger = 160;
+ public static readonly HexLetter = 161;
+ public static readonly HexDigit = 162;
+ public static readonly Digit = 163;
+ public static readonly NonZeroDigit = 164;
+ public static readonly NonZeroOctDigit = 165;
+ public static readonly ZeroDigit = 166;
+ public static readonly RegularDecimalReal = 167;
+ public static readonly UnescapedSymbolicName = 168;
+ public static readonly IdentifierStart = 169;
+ public static readonly IdentifierPart = 170;
+ public static readonly EscapedSymbolicName = 171;
+ public static readonly SP = 172;
+ public static readonly WHITESPACE = 173;
+ public static readonly CypherComment = 174;
+ public static readonly Unknown = 175;
public static readonly RULE_ku_Statements = 0;
public static readonly RULE_oC_Cypher = 1;
public static readonly RULE_oC_Statement = 2;
@@ -206,150 +211,152 @@ export class CypherParser extends antlr.Parser {
public static readonly RULE_kU_CreateRelTable = 24;
public static readonly RULE_kU_CreateRelTableGroup = 25;
public static readonly RULE_kU_RelTableConnection = 26;
- public static readonly RULE_kU_CreateRdfGraph = 27;
- public static readonly RULE_kU_CreateSequence = 28;
- public static readonly RULE_kU_CreateType = 29;
- public static readonly RULE_kU_SequenceOptions = 30;
- public static readonly RULE_kU_IncrementBy = 31;
- public static readonly RULE_kU_MinValue = 32;
- public static readonly RULE_kU_MaxValue = 33;
- public static readonly RULE_kU_StartWith = 34;
- public static readonly RULE_kU_Cycle = 35;
- public static readonly RULE_kU_IfExists = 36;
- public static readonly RULE_kU_Drop = 37;
- public static readonly RULE_kU_AlterTable = 38;
- public static readonly RULE_kU_AlterOptions = 39;
- public static readonly RULE_kU_AddProperty = 40;
- public static readonly RULE_kU_Default = 41;
- public static readonly RULE_kU_DropProperty = 42;
- public static readonly RULE_kU_RenameTable = 43;
- public static readonly RULE_kU_RenameProperty = 44;
- public static readonly RULE_kU_PropertyDefinitions = 45;
- public static readonly RULE_kU_PropertyDefinition = 46;
- public static readonly RULE_kU_PropertyDefinitionsDDL = 47;
- public static readonly RULE_kU_PropertyDefinitionDDL = 48;
- public static readonly RULE_kU_CreateNodeConstraint = 49;
- public static readonly RULE_kU_DataType = 50;
- public static readonly RULE_kU_ListIdentifiers = 51;
- public static readonly RULE_kU_ListIdentifier = 52;
- public static readonly RULE_oC_AnyCypherOption = 53;
- public static readonly RULE_oC_Explain = 54;
- public static readonly RULE_oC_Profile = 55;
- public static readonly RULE_kU_Transaction = 56;
- public static readonly RULE_kU_Extension = 57;
- public static readonly RULE_kU_LoadExtension = 58;
- public static readonly RULE_kU_InstallExtension = 59;
- public static readonly RULE_oC_Query = 60;
- public static readonly RULE_kU_ProjectGraph = 61;
- public static readonly RULE_kU_GraphProjectionTableItems = 62;
- public static readonly RULE_oC_RegularQuery = 63;
- public static readonly RULE_oC_Union = 64;
- public static readonly RULE_oC_SingleQuery = 65;
- public static readonly RULE_oC_SinglePartQuery = 66;
- public static readonly RULE_oC_MultiPartQuery = 67;
- public static readonly RULE_kU_QueryPart = 68;
- public static readonly RULE_oC_UpdatingClause = 69;
- public static readonly RULE_oC_ReadingClause = 70;
- public static readonly RULE_kU_LoadFrom = 71;
- public static readonly RULE_kU_InQueryCall = 72;
- public static readonly RULE_kU_GraphProjectionTableItem = 73;
- public static readonly RULE_kU_GraphProjectionColumnItems = 74;
- public static readonly RULE_kU_GraphProjectionColumnItem = 75;
- public static readonly RULE_oC_Match = 76;
- public static readonly RULE_kU_Hint = 77;
- public static readonly RULE_kU_JoinNode = 78;
- public static readonly RULE_oC_Unwind = 79;
- public static readonly RULE_oC_Create = 80;
- public static readonly RULE_oC_Merge = 81;
- public static readonly RULE_oC_MergeAction = 82;
- public static readonly RULE_oC_Set = 83;
- public static readonly RULE_oC_SetItem = 84;
- public static readonly RULE_oC_Delete = 85;
- public static readonly RULE_oC_With = 86;
- public static readonly RULE_oC_Return = 87;
- public static readonly RULE_oC_ProjectionBody = 88;
- public static readonly RULE_oC_ProjectionItems = 89;
- public static readonly RULE_oC_ProjectionItem = 90;
- public static readonly RULE_oC_Order = 91;
- public static readonly RULE_oC_Skip = 92;
- public static readonly RULE_oC_Limit = 93;
- public static readonly RULE_oC_SortItem = 94;
- public static readonly RULE_oC_Where = 95;
- public static readonly RULE_oC_Pattern = 96;
- public static readonly RULE_oC_PatternPart = 97;
- public static readonly RULE_oC_AnonymousPatternPart = 98;
- public static readonly RULE_oC_PatternElement = 99;
- public static readonly RULE_oC_NodePattern = 100;
- public static readonly RULE_oC_PatternElementChain = 101;
- public static readonly RULE_oC_RelationshipPattern = 102;
- public static readonly RULE_oC_RelationshipDetail = 103;
- public static readonly RULE_kU_Properties = 104;
- public static readonly RULE_oC_RelationshipTypes = 105;
- public static readonly RULE_oC_NodeLabels = 106;
- public static readonly RULE_oC_NodeLabel = 107;
- public static readonly RULE_oC_RangeLiteral = 108;
- public static readonly RULE_kU_RecursiveRelationshipComprehension = 109;
- public static readonly RULE_kU_IntermediateNodeProjectionItems = 110;
- public static readonly RULE_kU_IntermediateRelProjectionItems = 111;
- public static readonly RULE_oC_LowerBound = 112;
- public static readonly RULE_oC_UpperBound = 113;
- public static readonly RULE_oC_LabelName = 114;
- public static readonly RULE_oC_RelTypeName = 115;
- public static readonly RULE_oC_Expression = 116;
- public static readonly RULE_oC_OrExpression = 117;
- public static readonly RULE_oC_XorExpression = 118;
- public static readonly RULE_oC_AndExpression = 119;
- public static readonly RULE_oC_NotExpression = 120;
- public static readonly RULE_oC_ComparisonExpression = 121;
- public static readonly RULE_kU_ComparisonOperator = 122;
- public static readonly RULE_kU_BitwiseOrOperatorExpression = 123;
- public static readonly RULE_kU_BitwiseAndOperatorExpression = 124;
- public static readonly RULE_kU_BitShiftOperatorExpression = 125;
- public static readonly RULE_kU_BitShiftOperator = 126;
- public static readonly RULE_oC_AddOrSubtractExpression = 127;
- public static readonly RULE_kU_AddOrSubtractOperator = 128;
- public static readonly RULE_oC_MultiplyDivideModuloExpression = 129;
- public static readonly RULE_kU_MultiplyDivideModuloOperator = 130;
- public static readonly RULE_oC_PowerOfExpression = 131;
- public static readonly RULE_oC_UnaryAddSubtractOrFactorialExpression = 132;
- public static readonly RULE_oC_StringListNullOperatorExpression = 133;
- public static readonly RULE_oC_ListOperatorExpression = 134;
- public static readonly RULE_oC_StringOperatorExpression = 135;
- public static readonly RULE_oC_RegularExpression = 136;
- public static readonly RULE_oC_NullOperatorExpression = 137;
- public static readonly RULE_oC_PropertyOrLabelsExpression = 138;
- public static readonly RULE_oC_Atom = 139;
- public static readonly RULE_oC_Literal = 140;
- public static readonly RULE_oC_BooleanLiteral = 141;
- public static readonly RULE_oC_ListLiteral = 142;
- public static readonly RULE_kU_ListEntry = 143;
- public static readonly RULE_kU_StructLiteral = 144;
- public static readonly RULE_kU_StructField = 145;
- public static readonly RULE_oC_ParenthesizedExpression = 146;
- public static readonly RULE_oC_FunctionInvocation = 147;
- public static readonly RULE_oC_FunctionName = 148;
- public static readonly RULE_kU_FunctionParameter = 149;
- public static readonly RULE_kU_LambdaParameter = 150;
- public static readonly RULE_kU_LambdaVars = 151;
- public static readonly RULE_oC_PathPatterns = 152;
- public static readonly RULE_oC_ExistSubquery = 153;
- public static readonly RULE_kU_CountSubquery = 154;
- public static readonly RULE_oC_PropertyLookup = 155;
- public static readonly RULE_oC_CaseExpression = 156;
- public static readonly RULE_oC_CaseAlternative = 157;
- public static readonly RULE_oC_Variable = 158;
- public static readonly RULE_oC_NumberLiteral = 159;
- public static readonly RULE_oC_Parameter = 160;
- public static readonly RULE_oC_PropertyExpression = 161;
- public static readonly RULE_oC_PropertyKeyName = 162;
- public static readonly RULE_oC_IntegerLiteral = 163;
- public static readonly RULE_oC_DoubleLiteral = 164;
- public static readonly RULE_oC_SchemaName = 165;
- public static readonly RULE_oC_SymbolicName = 166;
- public static readonly RULE_kU_NonReservedKeywords = 167;
- public static readonly RULE_oC_LeftArrowHead = 168;
- public static readonly RULE_oC_RightArrowHead = 169;
- public static readonly RULE_oC_Dash = 170;
+ public static readonly RULE_kU_CreateSequence = 27;
+ public static readonly RULE_kU_CreateType = 28;
+ public static readonly RULE_kU_SequenceOptions = 29;
+ public static readonly RULE_kU_IncrementBy = 30;
+ public static readonly RULE_kU_MinValue = 31;
+ public static readonly RULE_kU_MaxValue = 32;
+ public static readonly RULE_kU_StartWith = 33;
+ public static readonly RULE_kU_Cycle = 34;
+ public static readonly RULE_kU_IfExists = 35;
+ public static readonly RULE_kU_Drop = 36;
+ public static readonly RULE_kU_AlterTable = 37;
+ public static readonly RULE_kU_AlterOptions = 38;
+ public static readonly RULE_kU_AddProperty = 39;
+ public static readonly RULE_kU_Default = 40;
+ public static readonly RULE_kU_DropProperty = 41;
+ public static readonly RULE_kU_RenameTable = 42;
+ public static readonly RULE_kU_RenameProperty = 43;
+ public static readonly RULE_kU_ColumnDefinitions = 44;
+ public static readonly RULE_kU_ColumnDefinition = 45;
+ public static readonly RULE_kU_PropertyDefinitions = 46;
+ public static readonly RULE_kU_PropertyDefinition = 47;
+ public static readonly RULE_kU_CreateNodeConstraint = 48;
+ public static readonly RULE_kU_DataType = 49;
+ public static readonly RULE_kU_ListIdentifiers = 50;
+ public static readonly RULE_kU_ListIdentifier = 51;
+ public static readonly RULE_oC_AnyCypherOption = 52;
+ public static readonly RULE_oC_Explain = 53;
+ public static readonly RULE_oC_Profile = 54;
+ public static readonly RULE_kU_Transaction = 55;
+ public static readonly RULE_kU_Extension = 56;
+ public static readonly RULE_kU_LoadExtension = 57;
+ public static readonly RULE_kU_InstallExtension = 58;
+ public static readonly RULE_oC_Query = 59;
+ public static readonly RULE_kU_ProjectGraph = 60;
+ public static readonly RULE_kU_GraphProjectionTableItems = 61;
+ public static readonly RULE_oC_RegularQuery = 62;
+ public static readonly RULE_oC_Union = 63;
+ public static readonly RULE_oC_SingleQuery = 64;
+ public static readonly RULE_oC_SinglePartQuery = 65;
+ public static readonly RULE_oC_MultiPartQuery = 66;
+ public static readonly RULE_kU_QueryPart = 67;
+ public static readonly RULE_oC_UpdatingClause = 68;
+ public static readonly RULE_oC_ReadingClause = 69;
+ public static readonly RULE_kU_LoadFrom = 70;
+ public static readonly RULE_kU_InQueryCall = 71;
+ public static readonly RULE_kU_GraphProjectionTableItem = 72;
+ public static readonly RULE_kU_GraphProjectionColumnItems = 73;
+ public static readonly RULE_kU_GraphProjectionColumnItem = 74;
+ public static readonly RULE_oC_Match = 75;
+ public static readonly RULE_kU_Hint = 76;
+ public static readonly RULE_kU_JoinNode = 77;
+ public static readonly RULE_oC_Unwind = 78;
+ public static readonly RULE_oC_Create = 79;
+ public static readonly RULE_oC_Merge = 80;
+ public static readonly RULE_oC_MergeAction = 81;
+ public static readonly RULE_oC_Set = 82;
+ public static readonly RULE_oC_SetItem = 83;
+ public static readonly RULE_oC_Delete = 84;
+ public static readonly RULE_oC_With = 85;
+ public static readonly RULE_oC_Return = 86;
+ public static readonly RULE_oC_ProjectionBody = 87;
+ public static readonly RULE_oC_ProjectionItems = 88;
+ public static readonly RULE_oC_ProjectionItem = 89;
+ public static readonly RULE_oC_Order = 90;
+ public static readonly RULE_oC_Skip = 91;
+ public static readonly RULE_oC_Limit = 92;
+ public static readonly RULE_oC_SortItem = 93;
+ public static readonly RULE_oC_Where = 94;
+ public static readonly RULE_oC_Pattern = 95;
+ public static readonly RULE_oC_PatternPart = 96;
+ public static readonly RULE_oC_AnonymousPatternPart = 97;
+ public static readonly RULE_oC_PatternElement = 98;
+ public static readonly RULE_oC_NodePattern = 99;
+ public static readonly RULE_oC_PatternElementChain = 100;
+ public static readonly RULE_oC_RelationshipPattern = 101;
+ public static readonly RULE_oC_RelationshipDetail = 102;
+ public static readonly RULE_kU_Properties = 103;
+ public static readonly RULE_oC_RelationshipTypes = 104;
+ public static readonly RULE_oC_NodeLabels = 105;
+ public static readonly RULE_oC_NodeLabel = 106;
+ public static readonly RULE_oC_RangeLiteral = 107;
+ public static readonly RULE_kU_RecursiveRelationshipComprehension = 108;
+ public static readonly RULE_kU_IntermediateNodeProjectionItems = 109;
+ public static readonly RULE_kU_IntermediateRelProjectionItems = 110;
+ public static readonly RULE_oC_LowerBound = 111;
+ public static readonly RULE_oC_UpperBound = 112;
+ public static readonly RULE_oC_LabelName = 113;
+ public static readonly RULE_oC_RelTypeName = 114;
+ public static readonly RULE_oC_Expression = 115;
+ public static readonly RULE_oC_OrExpression = 116;
+ public static readonly RULE_oC_XorExpression = 117;
+ public static readonly RULE_oC_AndExpression = 118;
+ public static readonly RULE_oC_NotExpression = 119;
+ public static readonly RULE_oC_ComparisonExpression = 120;
+ public static readonly RULE_kU_ComparisonOperator = 121;
+ public static readonly RULE_kU_BitwiseOrOperatorExpression = 122;
+ public static readonly RULE_kU_BitwiseAndOperatorExpression = 123;
+ public static readonly RULE_kU_BitShiftOperatorExpression = 124;
+ public static readonly RULE_kU_BitShiftOperator = 125;
+ public static readonly RULE_oC_AddOrSubtractExpression = 126;
+ public static readonly RULE_kU_AddOrSubtractOperator = 127;
+ public static readonly RULE_oC_MultiplyDivideModuloExpression = 128;
+ public static readonly RULE_kU_MultiplyDivideModuloOperator = 129;
+ public static readonly RULE_oC_PowerOfExpression = 130;
+ public static readonly RULE_oC_UnaryAddSubtractOrFactorialExpression = 131;
+ public static readonly RULE_oC_StringListNullOperatorExpression = 132;
+ public static readonly RULE_oC_ListOperatorExpression = 133;
+ public static readonly RULE_oC_StringOperatorExpression = 134;
+ public static readonly RULE_oC_RegularExpression = 135;
+ public static readonly RULE_oC_NullOperatorExpression = 136;
+ public static readonly RULE_oC_PropertyOrLabelsExpression = 137;
+ public static readonly RULE_oC_Atom = 138;
+ public static readonly RULE_oC_Quantifier = 139;
+ public static readonly RULE_oC_FilterExpression = 140;
+ public static readonly RULE_oC_IdInColl = 141;
+ public static readonly RULE_oC_Literal = 142;
+ public static readonly RULE_oC_BooleanLiteral = 143;
+ public static readonly RULE_oC_ListLiteral = 144;
+ public static readonly RULE_kU_ListEntry = 145;
+ public static readonly RULE_kU_StructLiteral = 146;
+ public static readonly RULE_kU_StructField = 147;
+ public static readonly RULE_oC_ParenthesizedExpression = 148;
+ public static readonly RULE_oC_FunctionInvocation = 149;
+ public static readonly RULE_oC_FunctionName = 150;
+ public static readonly RULE_kU_FunctionParameter = 151;
+ public static readonly RULE_kU_LambdaParameter = 152;
+ public static readonly RULE_kU_LambdaVars = 153;
+ public static readonly RULE_oC_PathPatterns = 154;
+ public static readonly RULE_oC_ExistSubquery = 155;
+ public static readonly RULE_kU_CountSubquery = 156;
+ public static readonly RULE_oC_PropertyLookup = 157;
+ public static readonly RULE_oC_CaseExpression = 158;
+ public static readonly RULE_oC_CaseAlternative = 159;
+ public static readonly RULE_oC_Variable = 160;
+ public static readonly RULE_oC_NumberLiteral = 161;
+ public static readonly RULE_oC_Parameter = 162;
+ public static readonly RULE_oC_PropertyExpression = 163;
+ public static readonly RULE_oC_PropertyKeyName = 164;
+ public static readonly RULE_oC_IntegerLiteral = 165;
+ public static readonly RULE_oC_DoubleLiteral = 166;
+ public static readonly RULE_oC_SchemaName = 167;
+ public static readonly RULE_oC_SymbolicName = 168;
+ public static readonly RULE_kU_NonReservedKeywords = 169;
+ public static readonly RULE_oC_LeftArrowHead = 170;
+ public static readonly RULE_oC_RightArrowHead = 171;
+ public static readonly RULE_oC_Dash = 172;
public static readonly literalNames = [
null, "';'", "'('", "','", "')'", "'.'", "'='", "'['", "']'", "'{'",
@@ -367,9 +374,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, null, null, null, null, null, null, null,
- "'0'"
+ null, null, null, null, null, null, null, null, null, null, null,
+ null, null, "'*'", null, "'!='", "'-'", "'!'", "':'", null, null,
+ null, null, null, null, null, null, "'0'"
];
public static readonly symbolicNames = [
@@ -377,26 +384,26 @@ 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, "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",
- "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", "IMPORT", "IF", "IN",
- "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", "LIMIT", "LOAD", "MACRO",
- "MATCH", "MAXVALUE", "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE",
- "NOT", "NULL", "ON", "ONLY", "OPTIONAL", "OR", "ORDER", "PRIMARY",
- "PROFILE", "PROJECT", "RDFGRAPH", "READ", "REL", "RENAME", "RETURN",
- "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SHORTEST",
- "START", "STARTS", "TABLE", "THEN", "TO", "TRANSACTION", "TRUE",
- "TYPE", "UNION", "UNWIND", "USE", "WHEN", "WHERE", "WITH", "WRITE",
- "XOR", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL", "MINUS",
- "FACTORIAL", "COLON", "StringLiteral", "EscapedChar", "DecimalInteger",
- "HexLetter", "HexDigit", "Digit", "NonZeroDigit", "NonZeroOctDigit",
- "ZeroDigit", "RegularDecimalReal", "UnescapedSymbolicName", "IdentifierStart",
- "IdentifierPart", "EscapedSymbolicName", "SP", "WHITESPACE", "CypherComment",
- "Unknown"
+ 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", "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", "TABLE", "THEN",
+ "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND",
+ "USE", "WHEN", "WHERE", "WITH", "WRITE", "XOR", "SINGLE", "DECIMAL",
+ "STAR", "L_SKIP", "INVALID_NOT_EQUAL", "MINUS", "FACTORIAL", "COLON",
+ "StringLiteral", "EscapedChar", "DecimalInteger", "HexLetter", "HexDigit",
+ "Digit", "NonZeroDigit", "NonZeroOctDigit", "ZeroDigit", "RegularDecimalReal",
+ "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", "EscapedSymbolicName",
+ "SP", "WHITESPACE", "CypherComment", "Unknown"
];
public static readonly ruleNames = [
"ku_Statements", "oC_Cypher", "oC_Statement", "kU_CopyFrom", "kU_ColumnNames",
@@ -405,29 +412,28 @@ export class CypherParser extends antlr.Parser {
"kU_DetachDatabase", "kU_UseDatabase", "kU_StandaloneCall", "kU_CommentOn",
"kU_CreateMacro", "kU_PositionalArgs", "kU_DefaultArg", "kU_FilePaths",
"kU_ParsingOptions", "kU_IfNotExists", "kU_CreateNodeTable", "kU_CreateRelTable",
- "kU_CreateRelTableGroup", "kU_RelTableConnection", "kU_CreateRdfGraph",
- "kU_CreateSequence", "kU_CreateType", "kU_SequenceOptions", "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_PropertyDefinitions", "kU_PropertyDefinition", "kU_PropertyDefinitionsDDL",
- "kU_PropertyDefinitionDDL", "kU_CreateNodeConstraint", "kU_DataType",
- "kU_ListIdentifiers", "kU_ListIdentifier", "oC_AnyCypherOption",
- "oC_Explain", "oC_Profile", "kU_Transaction", "kU_Extension", "kU_LoadExtension",
- "kU_InstallExtension", "oC_Query", "kU_ProjectGraph", "kU_GraphProjectionTableItems",
- "oC_RegularQuery", "oC_Union", "oC_SingleQuery", "oC_SinglePartQuery",
- "oC_MultiPartQuery", "kU_QueryPart", "oC_UpdatingClause", "oC_ReadingClause",
- "kU_LoadFrom", "kU_InQueryCall", "kU_GraphProjectionTableItem",
- "kU_GraphProjectionColumnItems", "kU_GraphProjectionColumnItem",
- "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", "oC_NodeLabel", "oC_RangeLiteral",
- "kU_RecursiveRelationshipComprehension", "kU_IntermediateNodeProjectionItems",
+ "kU_CreateRelTableGroup", "kU_RelTableConnection", "kU_CreateSequence",
+ "kU_CreateType", "kU_SequenceOptions", "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_ColumnDefinitions",
+ "kU_ColumnDefinition", "kU_PropertyDefinitions", "kU_PropertyDefinition",
+ "kU_CreateNodeConstraint", "kU_DataType", "kU_ListIdentifiers",
+ "kU_ListIdentifier", "oC_AnyCypherOption", "oC_Explain", "oC_Profile",
+ "kU_Transaction", "kU_Extension", "kU_LoadExtension", "kU_InstallExtension",
+ "oC_Query", "kU_ProjectGraph", "kU_GraphProjectionTableItems", "oC_RegularQuery",
+ "oC_Union", "oC_SingleQuery", "oC_SinglePartQuery", "oC_MultiPartQuery",
+ "kU_QueryPart", "oC_UpdatingClause", "oC_ReadingClause", "kU_LoadFrom",
+ "kU_InQueryCall", "kU_GraphProjectionTableItem", "kU_GraphProjectionColumnItems",
+ "kU_GraphProjectionColumnItem", "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", "oC_NodeLabel",
+ "oC_RangeLiteral", "kU_RecursiveRelationshipComprehension", "kU_IntermediateNodeProjectionItems",
"kU_IntermediateRelProjectionItems", "oC_LowerBound", "oC_UpperBound",
"oC_LabelName", "oC_RelTypeName", "oC_Expression", "oC_OrExpression",
"oC_XorExpression", "oC_AndExpression", "oC_NotExpression", "oC_ComparisonExpression",
@@ -437,15 +443,16 @@ export class CypherParser extends antlr.Parser {
"kU_MultiplyDivideModuloOperator", "oC_PowerOfExpression", "oC_UnaryAddSubtractOrFactorialExpression",
"oC_StringListNullOperatorExpression", "oC_ListOperatorExpression",
"oC_StringOperatorExpression", "oC_RegularExpression", "oC_NullOperatorExpression",
- "oC_PropertyOrLabelsExpression", "oC_Atom", "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_ExistSubquery", "kU_CountSubquery", "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_RightArrowHead", "oC_Dash",
+ "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_ExistSubquery",
+ "kU_CountSubquery", "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_RightArrowHead", "oC_Dash",
];
public get grammarFileName(): string { return "Cypher.g4"; }
@@ -470,57 +477,57 @@ export class CypherParser extends antlr.Parser {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 342;
+ this.state = 346;
this.oC_Cypher();
- this.state = 353;
+ this.state = 357;
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 = 344;
+ this.state = 348;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 343;
+ this.state = 347;
this.match(CypherParser.SP);
}
}
- this.state = 346;
+ this.state = 350;
this.match(CypherParser.T__0);
- this.state = 348;
+ this.state = 352;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 1, this._ctx) ) {
case 1:
{
- this.state = 347;
+ this.state = 351;
this.match(CypherParser.SP);
}
break;
}
- this.state = 350;
+ this.state = 354;
this.oC_Cypher();
}
}
}
- this.state = 355;
+ this.state = 359;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input, 2, this._ctx);
}
- this.state = 357;
+ this.state = 361;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 356;
+ this.state = 360;
this.match(CypherParser.SP);
}
}
- this.state = 359;
+ this.state = 363;
this.match(CypherParser.EOF);
}
}
@@ -545,46 +552,46 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 362;
+ this.state = 366;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===82 || _la===118) {
+ if (_la===84 || _la===122) {
{
- this.state = 361;
+ this.state = 365;
this.oC_AnyCypherOption();
}
}
- this.state = 365;
+ this.state = 369;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 364;
+ this.state = 368;
this.match(CypherParser.SP);
}
}
{
- this.state = 367;
+ this.state = 371;
this.oC_Statement();
}
- this.state = 372;
+ this.state = 376;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) {
case 1:
{
- this.state = 369;
+ this.state = 373;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 368;
+ this.state = 372;
this.match(CypherParser.SP);
}
}
- this.state = 371;
+ this.state = 375;
this.match(CypherParser.T__0);
}
break;
@@ -609,160 +616,153 @@ 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 = 396;
+ this.state = 399;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 8, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 374;
+ this.state = 378;
this.oC_Query();
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 375;
+ this.state = 379;
this.kU_CreateNodeTable();
}
break;
case 3:
this.enterOuterAlt(localctx, 3);
{
- this.state = 376;
+ this.state = 380;
this.kU_CreateRelTable();
}
break;
case 4:
this.enterOuterAlt(localctx, 4);
{
- this.state = 377;
+ this.state = 381;
this.kU_CreateRelTableGroup();
}
break;
case 5:
this.enterOuterAlt(localctx, 5);
{
- this.state = 378;
- this.kU_CreateRdfGraph();
+ this.state = 382;
+ this.kU_CreateSequence();
}
break;
case 6:
this.enterOuterAlt(localctx, 6);
{
- this.state = 379;
- this.kU_CreateSequence();
+ this.state = 383;
+ this.kU_CreateType();
}
break;
case 7:
this.enterOuterAlt(localctx, 7);
{
- this.state = 380;
- this.kU_CreateType();
+ this.state = 384;
+ this.kU_Drop();
}
break;
case 8:
this.enterOuterAlt(localctx, 8);
{
- this.state = 381;
- this.kU_Drop();
+ this.state = 385;
+ this.kU_AlterTable();
}
break;
case 9:
this.enterOuterAlt(localctx, 9);
{
- this.state = 382;
- this.kU_AlterTable();
+ this.state = 386;
+ this.kU_CopyFrom();
}
break;
case 10:
this.enterOuterAlt(localctx, 10);
{
- this.state = 383;
- this.kU_CopyFrom();
+ this.state = 387;
+ this.kU_CopyFromByColumn();
}
break;
case 11:
this.enterOuterAlt(localctx, 11);
{
- this.state = 384;
- this.kU_CopyFromByColumn();
+ this.state = 388;
+ this.kU_CopyTO();
}
break;
case 12:
this.enterOuterAlt(localctx, 12);
{
- this.state = 385;
- this.kU_CopyTO();
+ this.state = 389;
+ this.kU_StandaloneCall();
}
break;
case 13:
this.enterOuterAlt(localctx, 13);
{
- this.state = 386;
- this.kU_StandaloneCall();
+ this.state = 390;
+ this.kU_CreateMacro();
}
break;
case 14:
this.enterOuterAlt(localctx, 14);
{
- this.state = 387;
- this.kU_CreateMacro();
+ this.state = 391;
+ this.kU_CommentOn();
}
break;
case 15:
this.enterOuterAlt(localctx, 15);
{
- this.state = 388;
- this.kU_CommentOn();
+ this.state = 392;
+ this.kU_Transaction();
}
break;
case 16:
this.enterOuterAlt(localctx, 16);
{
- this.state = 389;
- this.kU_Transaction();
+ this.state = 393;
+ this.kU_Extension();
}
break;
case 17:
this.enterOuterAlt(localctx, 17);
{
- this.state = 390;
- this.kU_Extension();
+ this.state = 394;
+ this.kU_ExportDatabase();
}
break;
case 18:
this.enterOuterAlt(localctx, 18);
{
- this.state = 391;
- this.kU_ExportDatabase();
+ this.state = 395;
+ this.kU_ImportDatabase();
}
break;
case 19:
this.enterOuterAlt(localctx, 19);
{
- this.state = 392;
- this.kU_ImportDatabase();
+ this.state = 396;
+ this.kU_AttachDatabase();
}
break;
case 20:
this.enterOuterAlt(localctx, 20);
{
- this.state = 393;
- this.kU_AttachDatabase();
+ this.state = 397;
+ this.kU_DetachDatabase();
}
break;
case 21:
this.enterOuterAlt(localctx, 21);
{
- this.state = 394;
- this.kU_DetachDatabase();
- }
- break;
- case 22:
- this.enterOuterAlt(localctx, 22);
- {
- this.state = 395;
+ this.state = 398;
this.kU_UseDatabase();
}
break;
@@ -789,36 +789,36 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 398;
+ this.state = 401;
this.match(CypherParser.COPY);
- this.state = 399;
+ this.state = 402;
this.match(CypherParser.SP);
- this.state = 400;
+ this.state = 403;
this.oC_SchemaName();
- this.state = 409;
+ this.state = 412;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 11, this._ctx) ) {
case 1:
{
{
- this.state = 402;
+ this.state = 405;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 401;
+ this.state = 404;
this.match(CypherParser.SP);
}
}
- this.state = 404;
+ this.state = 407;
this.kU_ColumnNames();
- this.state = 406;
+ this.state = 409;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 405;
+ this.state = 408;
this.match(CypherParser.SP);
}
}
@@ -828,33 +828,33 @@ export class CypherParser extends antlr.Parser {
break;
case 2:
{
- this.state = 408;
+ this.state = 411;
this.match(CypherParser.SP);
}
break;
}
- this.state = 411;
+ this.state = 414;
this.match(CypherParser.FROM);
- this.state = 412;
+ this.state = 415;
this.match(CypherParser.SP);
- this.state = 413;
+ this.state = 416;
this.kU_ScanSource();
- this.state = 418;
+ this.state = 421;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 13, this._ctx) ) {
case 1:
{
- this.state = 415;
+ this.state = 418;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 414;
+ this.state = 417;
this.match(CypherParser.SP);
}
}
- this.state = 417;
+ this.state = 420;
this.kU_ParsingOptions();
}
break;
@@ -883,69 +883,69 @@ export class CypherParser extends antlr.Parser {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 420;
+ this.state = 423;
this.match(CypherParser.T__1);
- this.state = 422;
+ this.state = 425;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 421;
+ this.state = 424;
this.match(CypherParser.SP);
}
}
- this.state = 424;
+ this.state = 427;
this.oC_SchemaName();
- this.state = 435;
+ this.state = 438;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input, 17, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 426;
+ this.state = 429;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 425;
+ this.state = 428;
this.match(CypherParser.SP);
}
}
- this.state = 428;
+ this.state = 431;
this.match(CypherParser.T__2);
- this.state = 430;
+ this.state = 433;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 429;
+ this.state = 432;
this.match(CypherParser.SP);
}
}
- this.state = 432;
+ this.state = 435;
this.oC_SchemaName();
}
}
}
- this.state = 437;
+ this.state = 440;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input, 17, this._ctx);
}
- this.state = 439;
+ this.state = 442;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 438;
+ this.state = 441;
this.match(CypherParser.SP);
}
}
- this.state = 441;
+ this.state = 444;
this.match(CypherParser.T__3);
}
}
@@ -968,72 +968,72 @@ export class CypherParser extends antlr.Parser {
this.enterRule(localctx, 10, CypherParser.RULE_kU_ScanSource);
let _la: number;
try {
- this.state = 462;
+ this.state = 465;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 22, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 443;
+ this.state = 446;
this.kU_FilePaths();
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 444;
+ this.state = 447;
this.match(CypherParser.T__1);
- this.state = 446;
+ this.state = 449;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 445;
+ this.state = 448;
this.match(CypherParser.SP);
}
}
- this.state = 448;
+ this.state = 451;
this.oC_Query();
- this.state = 450;
+ this.state = 453;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 449;
+ this.state = 452;
this.match(CypherParser.SP);
}
}
- this.state = 452;
+ this.state = 455;
this.match(CypherParser.T__3);
}
break;
case 3:
this.enterOuterAlt(localctx, 3);
{
- this.state = 454;
+ this.state = 457;
this.oC_Variable();
}
break;
case 4:
this.enterOuterAlt(localctx, 4);
{
- this.state = 455;
+ this.state = 458;
this.oC_Variable();
- this.state = 456;
+ this.state = 459;
this.match(CypherParser.T__4);
- this.state = 458;
+ this.state = 461;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 457;
+ this.state = 460;
this.match(CypherParser.SP);
}
}
- this.state = 460;
+ this.state = 463;
this.oC_SchemaName();
}
break;
@@ -1060,77 +1060,77 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 464;
+ this.state = 467;
this.match(CypherParser.COPY);
- this.state = 465;
+ this.state = 468;
this.match(CypherParser.SP);
- this.state = 466;
+ this.state = 469;
this.oC_SchemaName();
- this.state = 467;
+ this.state = 470;
this.match(CypherParser.SP);
- this.state = 468;
+ this.state = 471;
this.match(CypherParser.FROM);
- this.state = 469;
+ this.state = 472;
this.match(CypherParser.SP);
- this.state = 470;
+ this.state = 473;
this.match(CypherParser.T__1);
- this.state = 472;
+ this.state = 475;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 471;
+ this.state = 474;
this.match(CypherParser.SP);
}
}
- this.state = 474;
+ this.state = 477;
this.match(CypherParser.StringLiteral);
- this.state = 485;
+ this.state = 488;
this._errHandler.sync(this);
_la = this._input.LA(1);
- while (_la===3 || _la===167) {
+ while (_la===3 || _la===172) {
{
{
- this.state = 476;
+ this.state = 479;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 475;
+ this.state = 478;
this.match(CypherParser.SP);
}
}
- this.state = 478;
+ this.state = 481;
this.match(CypherParser.T__2);
- this.state = 480;
+ this.state = 483;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 479;
+ this.state = 482;
this.match(CypherParser.SP);
}
}
- this.state = 482;
+ this.state = 485;
this.match(CypherParser.StringLiteral);
}
}
- this.state = 487;
+ this.state = 490;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 488;
+ this.state = 491;
this.match(CypherParser.T__3);
- this.state = 489;
+ this.state = 492;
this.match(CypherParser.SP);
- this.state = 490;
+ this.state = 493;
this.match(CypherParser.BY);
- this.state = 491;
+ this.state = 494;
this.match(CypherParser.SP);
- this.state = 492;
+ this.state = 495;
this.match(CypherParser.COLUMN);
}
}
@@ -1155,60 +1155,60 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 494;
+ this.state = 497;
this.match(CypherParser.COPY);
- this.state = 495;
+ this.state = 498;
this.match(CypherParser.SP);
- this.state = 496;
+ this.state = 499;
this.match(CypherParser.T__1);
- this.state = 498;
+ this.state = 501;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 497;
+ this.state = 500;
this.match(CypherParser.SP);
}
}
- this.state = 500;
+ this.state = 503;
this.oC_Query();
- this.state = 502;
+ this.state = 505;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 501;
+ this.state = 504;
this.match(CypherParser.SP);
}
}
- this.state = 504;
+ this.state = 507;
this.match(CypherParser.T__3);
- this.state = 505;
+ this.state = 508;
this.match(CypherParser.SP);
- this.state = 506;
+ this.state = 509;
this.match(CypherParser.TO);
- this.state = 507;
+ this.state = 510;
this.match(CypherParser.SP);
- this.state = 508;
+ this.state = 511;
this.match(CypherParser.StringLiteral);
- this.state = 513;
+ this.state = 516;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 30, this._ctx) ) {
case 1:
{
- this.state = 510;
+ this.state = 513;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 509;
+ this.state = 512;
this.match(CypherParser.SP);
}
}
- this.state = 512;
+ this.state = 515;
this.kU_ParsingOptions();
}
break;
@@ -1236,32 +1236,32 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 515;
+ this.state = 518;
this.match(CypherParser.EXPORT);
- this.state = 516;
+ this.state = 519;
this.match(CypherParser.SP);
- this.state = 517;
+ this.state = 520;
this.match(CypherParser.DATABASE);
- this.state = 518;
+ this.state = 521;
this.match(CypherParser.SP);
- this.state = 519;
+ this.state = 522;
this.match(CypherParser.StringLiteral);
- this.state = 524;
+ this.state = 527;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 32, this._ctx) ) {
case 1:
{
- this.state = 521;
+ this.state = 524;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 520;
+ this.state = 523;
this.match(CypherParser.SP);
}
}
- this.state = 523;
+ this.state = 526;
this.kU_ParsingOptions();
}
break;
@@ -1288,15 +1288,15 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 526;
+ this.state = 529;
this.match(CypherParser.IMPORT);
- this.state = 527;
+ this.state = 530;
this.match(CypherParser.SP);
- this.state = 528;
+ this.state = 531;
this.match(CypherParser.DATABASE);
- this.state = 529;
+ this.state = 532;
this.match(CypherParser.SP);
- this.state = 530;
+ this.state = 533;
this.match(CypherParser.StringLiteral);
}
}
@@ -1321,91 +1321,91 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 532;
+ this.state = 535;
this.match(CypherParser.ATTACH);
- this.state = 533;
+ this.state = 536;
this.match(CypherParser.SP);
- this.state = 534;
+ this.state = 537;
this.match(CypherParser.StringLiteral);
- this.state = 539;
+ this.state = 542;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 33, this._ctx) ) {
case 1:
{
- this.state = 535;
+ this.state = 538;
this.match(CypherParser.SP);
- this.state = 536;
+ this.state = 539;
this.match(CypherParser.AS);
- this.state = 537;
+ this.state = 540;
this.match(CypherParser.SP);
- this.state = 538;
+ this.state = 541;
this.oC_SchemaName();
}
break;
}
- this.state = 541;
+ this.state = 544;
this.match(CypherParser.SP);
- this.state = 542;
+ this.state = 545;
this.match(CypherParser.T__1);
- this.state = 544;
+ this.state = 547;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 543;
+ this.state = 546;
this.match(CypherParser.SP);
}
}
- this.state = 546;
+ this.state = 549;
this.match(CypherParser.DBTYPE);
- this.state = 547;
+ this.state = 550;
this.match(CypherParser.SP);
- this.state = 548;
+ this.state = 551;
this.oC_SymbolicName();
- this.state = 557;
+ this.state = 560;
this._errHandler.sync(this);
switch ( this._interp.adaptivePredict(this._input, 37, this._ctx) ) {
case 1:
{
- this.state = 550;
+ this.state = 553;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 549;
+ this.state = 552;
this.match(CypherParser.SP);
}
}
- this.state = 552;
+ this.state = 555;
this.match(CypherParser.T__2);
- this.state = 554;
+ this.state = 557;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 553;
+ this.state = 556;
this.match(CypherParser.SP);
}
}
- this.state = 556;
+ this.state = 559;
this.kU_Options();
}
break;
}
- this.state = 560;
+ this.state = 563;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 559;
+ this.state = 562;
this.match(CypherParser.SP);
}
}
- this.state = 562;
+ this.state = 565;
this.match(CypherParser.T__3);
}
}
@@ -1428,34 +1428,73 @@ export class CypherParser extends antlr.Parser {
this.enterRule(localctx, 22, CypherParser.RULE_kU_Option);
let _la: number;
try {
- this.enterOuterAlt(localctx, 1);
- {
- this.state = 564;
- this.oC_SymbolicName();
- this.state = 566;
+ this.state = 586;
this._errHandler.sync(this);
- _la = this._input.LA(1);
- if (_la===167) {
+ switch ( this._interp.adaptivePredict(this._input, 43, this._ctx) ) {
+ case 1:
+ this.enterOuterAlt(localctx, 1);
{
- this.state = 565;
- this.match(CypherParser.SP);
- }
- }
+ this.state = 567;
+ this.oC_SymbolicName();
+ this.state = 581;
+ this._errHandler.sync(this);
+ switch ( this._interp.adaptivePredict(this._input, 42, this._ctx) ) {
+ case 1:
+ {
+ this.state = 569;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 568;
+ this.match(CypherParser.SP);
+ }
+ }
- this.state = 568;
- this.match(CypherParser.T__5);
- this.state = 570;
- this._errHandler.sync(this);
- _la = this._input.LA(1);
- if (_la===167) {
+ this.state = 571;
+ this.match(CypherParser.T__5);
+ this.state = 573;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 572;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ }
+ break;
+ case 2:
+ {
+ this.state = 578;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ while (_la===172) {
+ {
+ {
+ this.state = 575;
+ this.match(CypherParser.SP);
+ }
+ }
+ this.state = 580;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ }
+ }
+ break;
+ }
+ this.state = 583;
+ this.oC_Literal();
+ }
+ break;
+ case 2:
+ this.enterOuterAlt(localctx, 2);
{
- this.state = 569;
- this.match(CypherParser.SP);
+ this.state = 585;
+ this.oC_SymbolicName();
}
- }
-
- this.state = 572;
- this.oC_Literal();
+ break;
}
}
catch (re) {
@@ -1480,45 +1519,45 @@ export class CypherParser extends antlr.Parser {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 574;
+ this.state = 588;
this.kU_Option();
- this.state = 585;
+ this.state = 599;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 43, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 46, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 576;
+ this.state = 590;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 575;
+ this.state = 589;
this.match(CypherParser.SP);
}
}
- this.state = 578;
+ this.state = 592;
this.match(CypherParser.T__2);
- this.state = 580;
+ this.state = 594;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 579;
+ this.state = 593;
this.match(CypherParser.SP);
}
}
- this.state = 582;
+ this.state = 596;
this.kU_Option();
}
}
}
- this.state = 587;
+ this.state = 601;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 43, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 46, this._ctx);
}
}
}
@@ -1542,11 +1581,11 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 588;
+ this.state = 602;
this.match(CypherParser.DETACH);
- this.state = 589;
+ this.state = 603;
this.match(CypherParser.SP);
- this.state = 590;
+ this.state = 604;
this.oC_SchemaName();
}
}
@@ -1570,11 +1609,11 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 592;
+ this.state = 606;
this.match(CypherParser.USE);
- this.state = 593;
+ this.state = 607;
this.match(CypherParser.SP);
- this.state = 594;
+ this.state = 608;
this.oC_SchemaName();
}
}
@@ -1597,38 +1636,55 @@ export class CypherParser extends antlr.Parser {
this.enterRule(localctx, 30, CypherParser.RULE_kU_StandaloneCall);
let _la: number;
try {
- this.enterOuterAlt(localctx, 1);
- {
- this.state = 596;
- this.match(CypherParser.CALL);
- this.state = 597;
- this.match(CypherParser.SP);
- this.state = 598;
- this.oC_SymbolicName();
- this.state = 600;
+ this.state = 625;
this._errHandler.sync(this);
- _la = this._input.LA(1);
- if (_la===167) {
+ switch ( this._interp.adaptivePredict(this._input, 49, this._ctx) ) {
+ case 1:
+ this.enterOuterAlt(localctx, 1);
{
- this.state = 599;
+ this.state = 610;
+ this.match(CypherParser.CALL);
+ this.state = 611;
this.match(CypherParser.SP);
+ this.state = 612;
+ this.oC_SymbolicName();
+ this.state = 614;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 613;
+ this.match(CypherParser.SP);
+ }
}
- }
- this.state = 602;
- this.match(CypherParser.T__5);
- this.state = 604;
- this._errHandler.sync(this);
- _la = this._input.LA(1);
- if (_la===167) {
+ this.state = 616;
+ this.match(CypherParser.T__5);
+ this.state = 618;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 617;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 620;
+ this.oC_Expression();
+ }
+ break;
+ case 2:
+ this.enterOuterAlt(localctx, 2);
{
- this.state = 603;
+ this.state = 622;
+ this.match(CypherParser.CALL);
+ this.state = 623;
this.match(CypherParser.SP);
+ this.state = 624;
+ this.oC_FunctionInvocation();
}
- }
-
- this.state = 606;
- this.oC_Expression();
+ break;
}
}
catch (re) {
@@ -1651,27 +1707,27 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 608;
+ this.state = 627;
this.match(CypherParser.COMMENT);
- this.state = 609;
+ this.state = 628;
this.match(CypherParser.SP);
- this.state = 610;
+ this.state = 629;
this.match(CypherParser.ON);
- this.state = 611;
+ this.state = 630;
this.match(CypherParser.SP);
- this.state = 612;
+ this.state = 631;
this.match(CypherParser.TABLE);
- this.state = 613;
+ this.state = 632;
this.match(CypherParser.SP);
- this.state = 614;
+ this.state = 633;
this.oC_SchemaName();
- this.state = 615;
+ this.state = 634;
this.match(CypherParser.SP);
- this.state = 616;
+ this.state = 635;
this.match(CypherParser.IS);
- this.state = 617;
+ this.state = 636;
this.match(CypherParser.SP);
- this.state = 618;
+ this.state = 637;
this.match(CypherParser.StringLiteral);
}
}
@@ -1697,125 +1753,125 @@ export class CypherParser extends antlr.Parser {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 620;
+ this.state = 639;
this.match(CypherParser.CREATE);
- this.state = 621;
+ this.state = 640;
this.match(CypherParser.SP);
- this.state = 622;
+ this.state = 641;
this.match(CypherParser.MACRO);
- this.state = 623;
+ this.state = 642;
this.match(CypherParser.SP);
- this.state = 624;
+ this.state = 643;
this.oC_FunctionName();
- this.state = 626;
+ this.state = 645;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 625;
+ this.state = 644;
this.match(CypherParser.SP);
}
}
- this.state = 628;
+ this.state = 647;
this.match(CypherParser.T__1);
- this.state = 630;
+ this.state = 649;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 47, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 51, this._ctx) ) {
case 1:
{
- this.state = 629;
+ this.state = 648;
this.match(CypherParser.SP);
}
break;
}
- this.state = 633;
+ this.state = 652;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 48, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 52, this._ctx) ) {
case 1:
{
- this.state = 632;
+ this.state = 651;
this.kU_PositionalArgs();
}
break;
}
- this.state = 636;
+ this.state = 655;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 49, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 53, this._ctx) ) {
case 1:
{
- this.state = 635;
+ this.state = 654;
this.match(CypherParser.SP);
}
break;
}
- this.state = 639;
+ this.state = 658;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765989781) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 233483335) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 707070845) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & 1153) !== 0)) {
+ if (((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 2765989781) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 467577927) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1378158015) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 1153) !== 0)) {
{
- this.state = 638;
+ this.state = 657;
this.kU_DefaultArg();
}
}
- this.state = 651;
+ this.state = 670;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 53, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 57, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 642;
+ this.state = 661;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 641;
+ this.state = 660;
this.match(CypherParser.SP);
}
}
- this.state = 644;
+ this.state = 663;
this.match(CypherParser.T__2);
- this.state = 646;
+ this.state = 665;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 645;
+ this.state = 664;
this.match(CypherParser.SP);
}
}
- this.state = 648;
+ this.state = 667;
this.kU_DefaultArg();
}
}
}
- this.state = 653;
+ this.state = 672;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 53, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 57, this._ctx);
}
- this.state = 655;
+ this.state = 674;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 654;
+ this.state = 673;
this.match(CypherParser.SP);
}
}
- this.state = 657;
+ this.state = 676;
this.match(CypherParser.T__3);
- this.state = 658;
+ this.state = 677;
this.match(CypherParser.SP);
- this.state = 659;
+ this.state = 678;
this.match(CypherParser.AS);
- this.state = 660;
+ this.state = 679;
this.match(CypherParser.SP);
- this.state = 661;
+ this.state = 680;
this.oC_Expression();
}
}
@@ -1841,45 +1897,45 @@ export class CypherParser extends antlr.Parser {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 663;
+ this.state = 682;
this.oC_SymbolicName();
- this.state = 674;
+ this.state = 693;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 57, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 61, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 665;
+ this.state = 684;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 664;
+ this.state = 683;
this.match(CypherParser.SP);
}
}
- this.state = 667;
+ this.state = 686;
this.match(CypherParser.T__2);
- this.state = 669;
+ this.state = 688;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 668;
+ this.state = 687;
this.match(CypherParser.SP);
}
}
- this.state = 671;
+ this.state = 690;
this.oC_SymbolicName();
}
}
}
- this.state = 676;
+ this.state = 695;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 57, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 61, this._ctx);
}
}
}
@@ -1904,33 +1960,33 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 677;
+ this.state = 696;
this.oC_SymbolicName();
- this.state = 679;
+ this.state = 698;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 678;
+ this.state = 697;
this.match(CypherParser.SP);
}
}
- this.state = 681;
+ this.state = 700;
this.match(CypherParser.COLON);
- this.state = 682;
+ this.state = 701;
this.match(CypherParser.T__5);
- this.state = 684;
+ this.state = 703;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 683;
+ this.state = 702;
this.match(CypherParser.SP);
}
}
- this.state = 686;
+ this.state = 705;
this.oC_Literal();
}
}
@@ -1953,113 +2009,113 @@ export class CypherParser extends antlr.Parser {
this.enterRule(localctx, 40, CypherParser.RULE_kU_FilePaths);
let _la: number;
try {
- this.state = 721;
+ this.state = 740;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.T__6:
this.enterOuterAlt(localctx, 1);
{
- this.state = 688;
+ this.state = 707;
this.match(CypherParser.T__6);
- this.state = 690;
+ this.state = 709;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 689;
+ this.state = 708;
this.match(CypherParser.SP);
}
}
- this.state = 692;
+ this.state = 711;
this.match(CypherParser.StringLiteral);
- this.state = 703;
+ this.state = 722;
this._errHandler.sync(this);
_la = this._input.LA(1);
- while (_la===3 || _la===167) {
+ while (_la===3 || _la===172) {
{
{
- this.state = 694;
+ this.state = 713;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 693;
+ this.state = 712;
this.match(CypherParser.SP);
}
}
- this.state = 696;
+ this.state = 715;
this.match(CypherParser.T__2);
- this.state = 698;
+ this.state = 717;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 697;
+ this.state = 716;
this.match(CypherParser.SP);
}
}
- this.state = 700;
+ this.state = 719;
this.match(CypherParser.StringLiteral);
}
}
- this.state = 705;
+ this.state = 724;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 706;
+ this.state = 725;
this.match(CypherParser.T__7);
}
break;
case CypherParser.StringLiteral:
this.enterOuterAlt(localctx, 2);
{
- this.state = 707;
+ this.state = 726;
this.match(CypherParser.StringLiteral);
}
break;
case CypherParser.GLOB:
this.enterOuterAlt(localctx, 3);
{
- this.state = 708;
+ this.state = 727;
this.match(CypherParser.GLOB);
- this.state = 710;
+ this.state = 729;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 709;
+ this.state = 728;
this.match(CypherParser.SP);
}
}
- this.state = 712;
+ this.state = 731;
this.match(CypherParser.T__1);
- this.state = 714;
+ this.state = 733;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 713;
+ this.state = 732;
this.match(CypherParser.SP);
}
}
- this.state = 716;
+ this.state = 735;
this.match(CypherParser.StringLiteral);
- this.state = 718;
+ this.state = 737;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 717;
+ this.state = 736;
this.match(CypherParser.SP);
}
}
- this.state = 720;
+ this.state = 739;
this.match(CypherParser.T__3);
}
break;
@@ -2088,31 +2144,31 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 723;
+ this.state = 742;
this.match(CypherParser.T__1);
- this.state = 725;
+ this.state = 744;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 724;
+ this.state = 743;
this.match(CypherParser.SP);
}
}
- this.state = 727;
+ this.state = 746;
this.kU_Options();
- this.state = 729;
+ this.state = 748;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 728;
+ this.state = 747;
this.match(CypherParser.SP);
}
}
- this.state = 731;
+ this.state = 750;
this.match(CypherParser.T__3);
}
}
@@ -2136,15 +2192,15 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 733;
+ this.state = 752;
this.match(CypherParser.IF);
- this.state = 734;
+ this.state = 753;
this.match(CypherParser.SP);
- this.state = 735;
+ this.state = 754;
this.match(CypherParser.NOT);
- this.state = 736;
+ this.state = 755;
this.match(CypherParser.SP);
- this.state = 737;
+ this.state = 756;
this.match(CypherParser.EXISTS);
}
}
@@ -2169,93 +2225,99 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 739;
+ this.state = 758;
this.match(CypherParser.CREATE);
- this.state = 740;
+ this.state = 759;
this.match(CypherParser.SP);
- this.state = 741;
+ this.state = 760;
this.match(CypherParser.NODE);
- this.state = 742;
+ this.state = 761;
this.match(CypherParser.SP);
- this.state = 743;
+ this.state = 762;
this.match(CypherParser.TABLE);
- this.state = 744;
+ this.state = 763;
this.match(CypherParser.SP);
- this.state = 748;
+ this.state = 767;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 70, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 74, this._ctx) ) {
case 1:
{
- this.state = 745;
+ this.state = 764;
this.kU_IfNotExists();
- this.state = 746;
+ this.state = 765;
this.match(CypherParser.SP);
}
break;
}
- this.state = 750;
+ this.state = 769;
this.oC_SchemaName();
- this.state = 752;
+ this.state = 771;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 751;
+ this.state = 770;
this.match(CypherParser.SP);
}
}
- this.state = 754;
+ this.state = 773;
this.match(CypherParser.T__1);
- this.state = 756;
+ this.state = 775;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 755;
+ this.state = 774;
this.match(CypherParser.SP);
}
}
- this.state = 758;
- this.kU_PropertyDefinitionsDDL();
- this.state = 760;
+ this.state = 777;
+ this.kU_PropertyDefinitions();
+ this.state = 779;
this._errHandler.sync(this);
- _la = this._input.LA(1);
- if (_la===167) {
+ switch ( this._interp.adaptivePredict(this._input, 77, this._ctx) ) {
+ case 1:
{
- this.state = 759;
+ this.state = 778;
this.match(CypherParser.SP);
}
+ break;
}
-
- {
- this.state = 762;
- this.match(CypherParser.T__2);
- this.state = 764;
+ this.state = 786;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===3) {
{
- this.state = 763;
- this.match(CypherParser.SP);
+ this.state = 781;
+ this.match(CypherParser.T__2);
+ this.state = 783;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 782;
+ this.match(CypherParser.SP);
+ }
}
- }
- this.state = 766;
- this.kU_CreateNodeConstraint();
+ this.state = 785;
+ this.kU_CreateNodeConstraint();
+ }
}
- this.state = 769;
+
+ this.state = 789;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 768;
+ this.state = 788;
this.match(CypherParser.SP);
}
}
- this.state = 771;
+ this.state = 791;
this.match(CypherParser.T__3);
}
}
@@ -2280,91 +2342,91 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 773;
+ this.state = 793;
this.match(CypherParser.CREATE);
- this.state = 774;
+ this.state = 794;
this.match(CypherParser.SP);
- this.state = 775;
+ this.state = 795;
this.match(CypherParser.REL);
- this.state = 776;
+ this.state = 796;
this.match(CypherParser.SP);
- this.state = 777;
+ this.state = 797;
this.match(CypherParser.TABLE);
- this.state = 778;
+ this.state = 798;
this.match(CypherParser.SP);
- this.state = 782;
+ this.state = 802;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 76, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 81, this._ctx) ) {
case 1:
{
- this.state = 779;
+ this.state = 799;
this.kU_IfNotExists();
- this.state = 780;
+ this.state = 800;
this.match(CypherParser.SP);
}
break;
}
- this.state = 784;
+ this.state = 804;
this.oC_SchemaName();
- this.state = 786;
+ this.state = 806;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 785;
+ this.state = 805;
this.match(CypherParser.SP);
}
}
- this.state = 788;
+ this.state = 808;
this.match(CypherParser.T__1);
- this.state = 790;
+ this.state = 810;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 789;
+ this.state = 809;
this.match(CypherParser.SP);
}
}
- this.state = 792;
+ this.state = 812;
this.kU_RelTableConnection();
- this.state = 794;
+ this.state = 814;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 793;
+ this.state = 813;
this.match(CypherParser.SP);
}
}
- this.state = 804;
+ this.state = 824;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 82, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 87, this._ctx) ) {
case 1:
{
- this.state = 796;
+ this.state = 816;
this.match(CypherParser.T__2);
- this.state = 798;
+ this.state = 818;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 797;
+ this.state = 817;
this.match(CypherParser.SP);
}
}
- this.state = 800;
- this.kU_PropertyDefinitionsDDL();
- this.state = 802;
+ this.state = 820;
+ this.kU_PropertyDefinitions();
+ this.state = 822;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 801;
+ this.state = 821;
this.match(CypherParser.SP);
}
}
@@ -2372,31 +2434,31 @@ export class CypherParser extends antlr.Parser {
}
break;
}
- this.state = 814;
+ this.state = 834;
this._errHandler.sync(this);
_la = this._input.LA(1);
if (_la===3) {
{
- this.state = 806;
+ this.state = 826;
this.match(CypherParser.T__2);
- this.state = 808;
+ this.state = 828;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 807;
+ this.state = 827;
this.match(CypherParser.SP);
}
}
- this.state = 810;
+ this.state = 830;
this.oC_SymbolicName();
- this.state = 812;
+ this.state = 832;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 811;
+ this.state = 831;
this.match(CypherParser.SP);
}
}
@@ -2404,7 +2466,7 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 816;
+ this.state = 836;
this.match(CypherParser.T__3);
}
}
@@ -2430,61 +2492,61 @@ export class CypherParser extends antlr.Parser {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 818;
+ this.state = 838;
this.match(CypherParser.CREATE);
- this.state = 819;
+ this.state = 839;
this.match(CypherParser.SP);
- this.state = 820;
+ this.state = 840;
this.match(CypherParser.REL);
- this.state = 821;
+ this.state = 841;
this.match(CypherParser.SP);
- this.state = 822;
+ this.state = 842;
this.match(CypherParser.TABLE);
- this.state = 823;
+ this.state = 843;
this.match(CypherParser.SP);
- this.state = 824;
+ this.state = 844;
this.match(CypherParser.GROUP);
- this.state = 825;
+ this.state = 845;
this.match(CypherParser.SP);
- this.state = 829;
+ this.state = 849;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 86, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 91, this._ctx) ) {
case 1:
{
- this.state = 826;
+ this.state = 846;
this.kU_IfNotExists();
- this.state = 827;
+ this.state = 847;
this.match(CypherParser.SP);
}
break;
}
- this.state = 831;
+ this.state = 851;
this.oC_SchemaName();
- this.state = 833;
+ this.state = 853;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 832;
+ this.state = 852;
this.match(CypherParser.SP);
}
}
- this.state = 835;
+ this.state = 855;
this.match(CypherParser.T__1);
- this.state = 837;
+ this.state = 857;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 836;
+ this.state = 856;
this.match(CypherParser.SP);
}
}
- this.state = 839;
+ this.state = 859;
this.kU_RelTableConnection();
- this.state = 848;
+ this.state = 868;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -2492,29 +2554,29 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 841;
+ this.state = 861;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 840;
+ this.state = 860;
this.match(CypherParser.SP);
}
}
- this.state = 843;
+ this.state = 863;
this.match(CypherParser.T__2);
- this.state = 845;
+ this.state = 865;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 844;
+ this.state = 864;
this.match(CypherParser.SP);
}
}
- this.state = 847;
+ this.state = 867;
this.kU_RelTableConnection();
}
}
@@ -2522,45 +2584,45 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 850;
+ this.state = 870;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 91, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 96, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
- this.state = 853;
+ this.state = 873;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 852;
+ this.state = 872;
this.match(CypherParser.SP);
}
}
- this.state = 863;
+ this.state = 883;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 95, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 100, this._ctx) ) {
case 1:
{
- this.state = 855;
+ this.state = 875;
this.match(CypherParser.T__2);
- this.state = 857;
+ this.state = 877;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 856;
+ this.state = 876;
this.match(CypherParser.SP);
}
}
- this.state = 859;
- this.kU_PropertyDefinitionsDDL();
- this.state = 861;
+ this.state = 879;
+ this.kU_PropertyDefinitions();
+ this.state = 881;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 860;
+ this.state = 880;
this.match(CypherParser.SP);
}
}
@@ -2568,31 +2630,31 @@ export class CypherParser extends antlr.Parser {
}
break;
}
- this.state = 873;
+ this.state = 893;
this._errHandler.sync(this);
_la = this._input.LA(1);
if (_la===3) {
{
- this.state = 865;
+ this.state = 885;
this.match(CypherParser.T__2);
- this.state = 867;
+ this.state = 887;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 866;
+ this.state = 886;
this.match(CypherParser.SP);
}
}
- this.state = 869;
+ this.state = 889;
this.oC_SymbolicName();
- this.state = 871;
+ this.state = 891;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 870;
+ this.state = 890;
this.match(CypherParser.SP);
}
}
@@ -2600,7 +2662,7 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 875;
+ this.state = 895;
this.match(CypherParser.T__3);
}
}
@@ -2624,63 +2686,19 @@ export class CypherParser extends antlr.Parser {
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 877;
+ this.state = 897;
this.match(CypherParser.FROM);
- this.state = 878;
+ this.state = 898;
this.match(CypherParser.SP);
- this.state = 879;
+ this.state = 899;
this.oC_SchemaName();
- this.state = 880;
+ this.state = 900;
this.match(CypherParser.SP);
- this.state = 881;
+ this.state = 901;
this.match(CypherParser.TO);
- this.state = 882;
- this.match(CypherParser.SP);
- this.state = 883;
- this.oC_SchemaName();
- }
- }
- 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 kU_CreateRdfGraph(): KU_CreateRdfGraphContext {
- let localctx: KU_CreateRdfGraphContext = new KU_CreateRdfGraphContext(this._ctx, this.state);
- this.enterRule(localctx, 54, CypherParser.RULE_kU_CreateRdfGraph);
- try {
- this.enterOuterAlt(localctx, 1);
- {
- this.state = 885;
- this.match(CypherParser.CREATE);
- this.state = 886;
- this.match(CypherParser.SP);
- this.state = 887;
- this.match(CypherParser.RDFGRAPH);
- this.state = 888;
+ this.state = 902;
this.match(CypherParser.SP);
- this.state = 892;
- this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 99, this._ctx) ) {
- case 1:
- {
- this.state = 889;
- this.kU_IfNotExists();
- this.state = 890;
- this.match(CypherParser.SP);
- }
- break;
- }
- this.state = 894;
+ this.state = 903;
this.oC_SchemaName();
}
}
@@ -2700,50 +2718,50 @@ export class CypherParser extends antlr.Parser {
}
public kU_CreateSequence(): KU_CreateSequenceContext {
let localctx: KU_CreateSequenceContext = new KU_CreateSequenceContext(this._ctx, this.state);
- this.enterRule(localctx, 56, CypherParser.RULE_kU_CreateSequence);
+ this.enterRule(localctx, 54, CypherParser.RULE_kU_CreateSequence);
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 896;
+ this.state = 905;
this.match(CypherParser.CREATE);
- this.state = 897;
+ this.state = 906;
this.match(CypherParser.SP);
- this.state = 898;
+ this.state = 907;
this.match(CypherParser.SEQUENCE);
- this.state = 899;
+ this.state = 908;
this.match(CypherParser.SP);
- this.state = 903;
+ this.state = 912;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 100, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 104, this._ctx) ) {
case 1:
{
- this.state = 900;
+ this.state = 909;
this.kU_IfNotExists();
- this.state = 901;
+ this.state = 910;
this.match(CypherParser.SP);
}
break;
}
- this.state = 905;
+ this.state = 914;
this.oC_SchemaName();
- this.state = 910;
+ this.state = 919;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 101, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 105, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 906;
+ this.state = 915;
this.match(CypherParser.SP);
- this.state = 907;
+ this.state = 916;
this.kU_SequenceOptions();
}
}
}
- this.state = 912;
+ this.state = 921;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 101, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 105, this._ctx);
}
}
}
@@ -2763,34 +2781,34 @@ export class CypherParser extends antlr.Parser {
}
public kU_CreateType(): KU_CreateTypeContext {
let localctx: KU_CreateTypeContext = new KU_CreateTypeContext(this._ctx, this.state);
- this.enterRule(localctx, 58, CypherParser.RULE_kU_CreateType);
+ this.enterRule(localctx, 56, CypherParser.RULE_kU_CreateType);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 913;
+ this.state = 922;
this.match(CypherParser.CREATE);
- this.state = 914;
+ this.state = 923;
this.match(CypherParser.SP);
- this.state = 915;
+ this.state = 924;
this.match(CypherParser.TYPE);
- this.state = 916;
+ this.state = 925;
this.match(CypherParser.SP);
- this.state = 917;
+ this.state = 926;
this.oC_SchemaName();
- this.state = 918;
+ this.state = 927;
this.match(CypherParser.SP);
- this.state = 919;
+ this.state = 928;
this.match(CypherParser.AS);
- this.state = 920;
+ this.state = 929;
this.match(CypherParser.SP);
- this.state = 921;
+ this.state = 930;
this.kU_DataType(0);
- this.state = 923;
+ this.state = 932;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 102, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 106, this._ctx) ) {
case 1:
{
- this.state = 922;
+ this.state = 931;
this.match(CypherParser.SP);
}
break;
@@ -2813,43 +2831,43 @@ export class CypherParser extends antlr.Parser {
}
public kU_SequenceOptions(): KU_SequenceOptionsContext {
let localctx: KU_SequenceOptionsContext = new KU_SequenceOptionsContext(this._ctx, this.state);
- this.enterRule(localctx, 60, CypherParser.RULE_kU_SequenceOptions);
+ this.enterRule(localctx, 58, CypherParser.RULE_kU_SequenceOptions);
try {
- this.state = 930;
+ this.state = 939;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 103, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 107, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 925;
+ this.state = 934;
this.kU_IncrementBy();
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 926;
+ this.state = 935;
this.kU_MinValue();
}
break;
case 3:
this.enterOuterAlt(localctx, 3);
{
- this.state = 927;
+ this.state = 936;
this.kU_MaxValue();
}
break;
case 4:
this.enterOuterAlt(localctx, 4);
{
- this.state = 928;
+ this.state = 937;
this.kU_StartWith();
}
break;
case 5:
this.enterOuterAlt(localctx, 5);
{
- this.state = 929;
+ this.state = 938;
this.kU_Cycle();
}
break;
@@ -2871,38 +2889,38 @@ export class CypherParser extends antlr.Parser {
}
public kU_IncrementBy(): KU_IncrementByContext {
let localctx: KU_IncrementByContext = new KU_IncrementByContext(this._ctx, this.state);
- this.enterRule(localctx, 62, CypherParser.RULE_kU_IncrementBy);
+ this.enterRule(localctx, 60, CypherParser.RULE_kU_IncrementBy);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 932;
+ this.state = 941;
this.match(CypherParser.INCREMENT);
- this.state = 933;
+ this.state = 942;
this.match(CypherParser.SP);
- this.state = 936;
+ this.state = 945;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===55) {
+ if (_la===57) {
{
- this.state = 934;
+ this.state = 943;
this.match(CypherParser.BY);
- this.state = 935;
+ this.state = 944;
this.match(CypherParser.SP);
}
}
- this.state = 939;
+ this.state = 948;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===150) {
+ if (_la===155) {
{
- this.state = 938;
+ this.state = 947;
this.match(CypherParser.MINUS);
}
}
- this.state = 941;
+ this.state = 950;
this.oC_IntegerLiteral();
}
}
@@ -2922,21 +2940,21 @@ export class CypherParser extends antlr.Parser {
}
public kU_MinValue(): KU_MinValueContext {
let localctx: KU_MinValueContext = new KU_MinValueContext(this._ctx, this.state);
- this.enterRule(localctx, 64, CypherParser.RULE_kU_MinValue);
+ this.enterRule(localctx, 62, CypherParser.RULE_kU_MinValue);
let _la: number;
try {
- this.state = 952;
+ this.state = 961;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.NO:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 943;
+ this.state = 952;
this.match(CypherParser.NO);
- this.state = 944;
+ this.state = 953;
this.match(CypherParser.SP);
- this.state = 945;
+ this.state = 954;
this.match(CypherParser.MINVALUE);
}
}
@@ -2945,21 +2963,21 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 946;
+ this.state = 955;
this.match(CypherParser.MINVALUE);
- this.state = 947;
+ this.state = 956;
this.match(CypherParser.SP);
- this.state = 949;
+ this.state = 958;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===150) {
+ if (_la===155) {
{
- this.state = 948;
+ this.state = 957;
this.match(CypherParser.MINUS);
}
}
- this.state = 951;
+ this.state = 960;
this.oC_IntegerLiteral();
}
}
@@ -2984,21 +3002,21 @@ export class CypherParser extends antlr.Parser {
}
public kU_MaxValue(): KU_MaxValueContext {
let localctx: KU_MaxValueContext = new KU_MaxValueContext(this._ctx, this.state);
- this.enterRule(localctx, 66, CypherParser.RULE_kU_MaxValue);
+ this.enterRule(localctx, 64, CypherParser.RULE_kU_MaxValue);
let _la: number;
try {
- this.state = 963;
+ this.state = 972;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.NO:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 954;
+ this.state = 963;
this.match(CypherParser.NO);
- this.state = 955;
+ this.state = 964;
this.match(CypherParser.SP);
- this.state = 956;
+ this.state = 965;
this.match(CypherParser.MAXVALUE);
}
}
@@ -3007,21 +3025,21 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 957;
+ this.state = 966;
this.match(CypherParser.MAXVALUE);
- this.state = 958;
+ this.state = 967;
this.match(CypherParser.SP);
- this.state = 960;
+ this.state = 969;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===150) {
+ if (_la===155) {
{
- this.state = 959;
+ this.state = 968;
this.match(CypherParser.MINUS);
}
}
- this.state = 962;
+ this.state = 971;
this.oC_IntegerLiteral();
}
}
@@ -3046,38 +3064,38 @@ export class CypherParser extends antlr.Parser {
}
public kU_StartWith(): KU_StartWithContext {
let localctx: KU_StartWithContext = new KU_StartWithContext(this._ctx, this.state);
- this.enterRule(localctx, 68, CypherParser.RULE_kU_StartWith);
+ this.enterRule(localctx, 66, CypherParser.RULE_kU_StartWith);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 965;
+ this.state = 974;
this.match(CypherParser.START);
- this.state = 966;
+ this.state = 975;
this.match(CypherParser.SP);
- this.state = 969;
+ this.state = 978;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===143) {
+ if (_la===147) {
{
- this.state = 967;
+ this.state = 976;
this.match(CypherParser.WITH);
- this.state = 968;
+ this.state = 977;
this.match(CypherParser.SP);
}
}
- this.state = 972;
+ this.state = 981;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===150) {
+ if (_la===155) {
{
- this.state = 971;
+ this.state = 980;
this.match(CypherParser.MINUS);
}
}
- this.state = 974;
+ this.state = 983;
this.oC_IntegerLiteral();
}
}
@@ -3097,24 +3115,24 @@ export class CypherParser extends antlr.Parser {
}
public kU_Cycle(): KU_CycleContext {
let localctx: KU_CycleContext = new KU_CycleContext(this._ctx, this.state);
- this.enterRule(localctx, 70, CypherParser.RULE_kU_Cycle);
+ this.enterRule(localctx, 68, CypherParser.RULE_kU_Cycle);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 978;
+ this.state = 987;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===108) {
+ if (_la===111) {
{
- this.state = 976;
+ this.state = 985;
this.match(CypherParser.NO);
- this.state = 977;
+ this.state = 986;
this.match(CypherParser.SP);
}
}
- this.state = 980;
+ this.state = 989;
this.match(CypherParser.CYCLE);
}
}
@@ -3134,15 +3152,15 @@ export class CypherParser extends antlr.Parser {
}
public kU_IfExists(): KU_IfExistsContext {
let localctx: KU_IfExistsContext = new KU_IfExistsContext(this._ctx, this.state);
- this.enterRule(localctx, 72, CypherParser.RULE_kU_IfExists);
+ this.enterRule(localctx, 70, CypherParser.RULE_kU_IfExists);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 982;
+ this.state = 991;
this.match(CypherParser.IF);
- this.state = 983;
+ this.state = 992;
this.match(CypherParser.SP);
- this.state = 984;
+ this.state = 993;
this.match(CypherParser.EXISTS);
}
}
@@ -3162,39 +3180,39 @@ export class CypherParser extends antlr.Parser {
}
public kU_Drop(): KU_DropContext {
let localctx: KU_DropContext = new KU_DropContext(this._ctx, this.state);
- this.enterRule(localctx, 74, CypherParser.RULE_kU_Drop);
+ this.enterRule(localctx, 72, CypherParser.RULE_kU_Drop);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 986;
+ this.state = 995;
this.match(CypherParser.DROP);
- this.state = 987;
+ this.state = 996;
this.match(CypherParser.SP);
- this.state = 988;
+ this.state = 997;
_la = this._input.LA(1);
- if(!(((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4225) !== 0))) {
+ if(!(_la===130 || _la===135)) {
this._errHandler.recoverInline(this);
}
else {
this._errHandler.reportMatch(this);
this.consume();
}
- this.state = 989;
+ this.state = 998;
this.match(CypherParser.SP);
- this.state = 993;
+ this.state = 1002;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 113, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 117, this._ctx) ) {
case 1:
{
- this.state = 990;
+ this.state = 999;
this.kU_IfExists();
- this.state = 991;
+ this.state = 1000;
this.match(CypherParser.SP);
}
break;
}
- this.state = 995;
+ this.state = 1004;
this.oC_SchemaName();
}
}
@@ -3214,23 +3232,23 @@ export class CypherParser extends antlr.Parser {
}
public kU_AlterTable(): KU_AlterTableContext {
let localctx: KU_AlterTableContext = new KU_AlterTableContext(this._ctx, this.state);
- this.enterRule(localctx, 76, CypherParser.RULE_kU_AlterTable);
+ this.enterRule(localctx, 74, CypherParser.RULE_kU_AlterTable);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 997;
+ this.state = 1006;
this.match(CypherParser.ALTER);
- this.state = 998;
+ this.state = 1007;
this.match(CypherParser.SP);
- this.state = 999;
+ this.state = 1008;
this.match(CypherParser.TABLE);
- this.state = 1000;
+ this.state = 1009;
this.match(CypherParser.SP);
- this.state = 1001;
+ this.state = 1010;
this.oC_SchemaName();
- this.state = 1002;
+ this.state = 1011;
this.match(CypherParser.SP);
- this.state = 1003;
+ this.state = 1012;
this.kU_AlterOptions();
}
}
@@ -3250,36 +3268,36 @@ export class CypherParser extends antlr.Parser {
}
public kU_AlterOptions(): KU_AlterOptionsContext {
let localctx: KU_AlterOptionsContext = new KU_AlterOptionsContext(this._ctx, this.state);
- this.enterRule(localctx, 78, CypherParser.RULE_kU_AlterOptions);
+ this.enterRule(localctx, 76, CypherParser.RULE_kU_AlterOptions);
try {
- this.state = 1009;
+ this.state = 1018;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 114, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 118, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1005;
+ this.state = 1014;
this.kU_AddProperty();
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1006;
+ this.state = 1015;
this.kU_DropProperty();
}
break;
case 3:
this.enterOuterAlt(localctx, 3);
{
- this.state = 1007;
+ this.state = 1016;
this.kU_RenameTable();
}
break;
case 4:
this.enterOuterAlt(localctx, 4);
{
- this.state = 1008;
+ this.state = 1017;
this.kU_RenameProperty();
}
break;
@@ -3301,28 +3319,28 @@ export class CypherParser extends antlr.Parser {
}
public kU_AddProperty(): KU_AddPropertyContext {
let localctx: KU_AddPropertyContext = new KU_AddPropertyContext(this._ctx, this.state);
- this.enterRule(localctx, 80, CypherParser.RULE_kU_AddProperty);
+ this.enterRule(localctx, 78, CypherParser.RULE_kU_AddProperty);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1011;
+ this.state = 1020;
this.match(CypherParser.ADD);
- this.state = 1012;
+ this.state = 1021;
this.match(CypherParser.SP);
- this.state = 1013;
+ this.state = 1022;
this.oC_PropertyKeyName();
- this.state = 1014;
+ this.state = 1023;
this.match(CypherParser.SP);
- this.state = 1015;
+ this.state = 1024;
this.kU_DataType(0);
- this.state = 1018;
+ this.state = 1027;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 115, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 119, this._ctx) ) {
case 1:
{
- this.state = 1016;
+ this.state = 1025;
this.match(CypherParser.SP);
- this.state = 1017;
+ this.state = 1026;
this.kU_Default();
}
break;
@@ -3345,15 +3363,15 @@ export class CypherParser extends antlr.Parser {
}
public kU_Default(): KU_DefaultContext {
let localctx: KU_DefaultContext = new KU_DefaultContext(this._ctx, this.state);
- this.enterRule(localctx, 82, CypherParser.RULE_kU_Default);
+ this.enterRule(localctx, 80, CypherParser.RULE_kU_Default);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1020;
+ this.state = 1029;
this.match(CypherParser.DEFAULT);
- this.state = 1021;
+ this.state = 1030;
this.match(CypherParser.SP);
- this.state = 1022;
+ this.state = 1031;
this.oC_Expression();
}
}
@@ -3373,15 +3391,15 @@ export class CypherParser extends antlr.Parser {
}
public kU_DropProperty(): KU_DropPropertyContext {
let localctx: KU_DropPropertyContext = new KU_DropPropertyContext(this._ctx, this.state);
- this.enterRule(localctx, 84, CypherParser.RULE_kU_DropProperty);
+ this.enterRule(localctx, 82, CypherParser.RULE_kU_DropProperty);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1024;
+ this.state = 1033;
this.match(CypherParser.DROP);
- this.state = 1025;
+ this.state = 1034;
this.match(CypherParser.SP);
- this.state = 1026;
+ this.state = 1035;
this.oC_PropertyKeyName();
}
}
@@ -3401,19 +3419,19 @@ export class CypherParser extends antlr.Parser {
}
public kU_RenameTable(): KU_RenameTableContext {
let localctx: KU_RenameTableContext = new KU_RenameTableContext(this._ctx, this.state);
- this.enterRule(localctx, 86, CypherParser.RULE_kU_RenameTable);
+ this.enterRule(localctx, 84, CypherParser.RULE_kU_RenameTable);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1028;
+ this.state = 1037;
this.match(CypherParser.RENAME);
- this.state = 1029;
+ this.state = 1038;
this.match(CypherParser.SP);
- this.state = 1030;
+ this.state = 1039;
this.match(CypherParser.TO);
- this.state = 1031;
+ this.state = 1040;
this.match(CypherParser.SP);
- this.state = 1032;
+ this.state = 1041;
this.oC_SchemaName();
}
}
@@ -3433,23 +3451,23 @@ export class CypherParser extends antlr.Parser {
}
public kU_RenameProperty(): KU_RenamePropertyContext {
let localctx: KU_RenamePropertyContext = new KU_RenamePropertyContext(this._ctx, this.state);
- this.enterRule(localctx, 88, CypherParser.RULE_kU_RenameProperty);
+ this.enterRule(localctx, 86, CypherParser.RULE_kU_RenameProperty);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1034;
+ this.state = 1043;
this.match(CypherParser.RENAME);
- this.state = 1035;
+ this.state = 1044;
this.match(CypherParser.SP);
- this.state = 1036;
+ this.state = 1045;
this.oC_PropertyKeyName();
- this.state = 1037;
+ this.state = 1046;
this.match(CypherParser.SP);
- this.state = 1038;
+ this.state = 1047;
this.match(CypherParser.TO);
- this.state = 1039;
+ this.state = 1048;
this.match(CypherParser.SP);
- this.state = 1040;
+ this.state = 1049;
this.oC_PropertyKeyName();
}
}
@@ -3467,53 +3485,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, 90, CypherParser.RULE_kU_PropertyDefinitions);
+ public kU_ColumnDefinitions(): KU_ColumnDefinitionsContext {
+ let localctx: KU_ColumnDefinitionsContext = new KU_ColumnDefinitionsContext(this._ctx, this.state);
+ this.enterRule(localctx, 88, CypherParser.RULE_kU_ColumnDefinitions);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1042;
- this.kU_PropertyDefinition();
- this.state = 1053;
+ this.state = 1051;
+ this.kU_ColumnDefinition();
+ this.state = 1062;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 118, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 122, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1044;
+ this.state = 1053;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1043;
+ this.state = 1052;
this.match(CypherParser.SP);
}
}
- this.state = 1046;
+ this.state = 1055;
this.match(CypherParser.T__2);
- this.state = 1048;
+ this.state = 1057;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1047;
+ this.state = 1056;
this.match(CypherParser.SP);
}
}
- this.state = 1050;
- this.kU_PropertyDefinition();
+ this.state = 1059;
+ this.kU_ColumnDefinition();
}
}
}
- this.state = 1055;
+ this.state = 1064;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 118, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 122, this._ctx);
}
}
}
@@ -3531,17 +3549,17 @@ 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, 92, CypherParser.RULE_kU_PropertyDefinition);
+ public kU_ColumnDefinition(): KU_ColumnDefinitionContext {
+ let localctx: KU_ColumnDefinitionContext = new KU_ColumnDefinitionContext(this._ctx, this.state);
+ this.enterRule(localctx, 90, CypherParser.RULE_kU_ColumnDefinition);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1056;
+ this.state = 1065;
this.oC_PropertyKeyName();
- this.state = 1057;
+ this.state = 1066;
this.match(CypherParser.SP);
- this.state = 1058;
+ this.state = 1067;
this.kU_DataType(0);
}
}
@@ -3559,53 +3577,53 @@ export class CypherParser extends antlr.Parser {
}
return localctx;
}
- public kU_PropertyDefinitionsDDL(): KU_PropertyDefinitionsDDLContext {
- let localctx: KU_PropertyDefinitionsDDLContext = new KU_PropertyDefinitionsDDLContext(this._ctx, this.state);
- this.enterRule(localctx, 94, CypherParser.RULE_kU_PropertyDefinitionsDDL);
+ public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext {
+ let localctx: KU_PropertyDefinitionsContext = new KU_PropertyDefinitionsContext(this._ctx, this.state);
+ this.enterRule(localctx, 92, CypherParser.RULE_kU_PropertyDefinitions);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1060;
- this.kU_PropertyDefinitionDDL();
- this.state = 1071;
+ this.state = 1069;
+ this.kU_PropertyDefinition();
+ this.state = 1080;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 121, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 125, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1062;
+ this.state = 1071;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1061;
+ this.state = 1070;
this.match(CypherParser.SP);
}
}
- this.state = 1064;
+ this.state = 1073;
this.match(CypherParser.T__2);
- this.state = 1066;
+ this.state = 1075;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1065;
+ this.state = 1074;
this.match(CypherParser.SP);
}
}
- this.state = 1068;
- this.kU_PropertyDefinitionDDL();
+ this.state = 1077;
+ this.kU_PropertyDefinition();
}
}
}
- this.state = 1073;
+ this.state = 1082;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 121, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 125, this._ctx);
}
}
}
@@ -3623,30 +3641,42 @@ export class CypherParser extends antlr.Parser {
}
return localctx;
}
- public kU_PropertyDefinitionDDL(): KU_PropertyDefinitionDDLContext {
- let localctx: KU_PropertyDefinitionDDLContext = new KU_PropertyDefinitionDDLContext(this._ctx, this.state);
- this.enterRule(localctx, 96, CypherParser.RULE_kU_PropertyDefinitionDDL);
+ public kU_PropertyDefinition(): KU_PropertyDefinitionContext {
+ let localctx: KU_PropertyDefinitionContext = new KU_PropertyDefinitionContext(this._ctx, this.state);
+ this.enterRule(localctx, 94, CypherParser.RULE_kU_PropertyDefinition);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1074;
- this.oC_PropertyKeyName();
- this.state = 1075;
- this.match(CypherParser.SP);
- this.state = 1076;
- this.kU_DataType(0);
- this.state = 1079;
+ this.state = 1083;
+ this.kU_ColumnDefinition();
+ this.state = 1086;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 122, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 126, this._ctx) ) {
case 1:
{
- this.state = 1077;
+ this.state = 1084;
this.match(CypherParser.SP);
- this.state = 1078;
+ this.state = 1085;
this.kU_Default();
}
break;
}
+ this.state = 1092;
+ this._errHandler.sync(this);
+ switch ( this._interp.adaptivePredict(this._input, 127, this._ctx) ) {
+ case 1:
+ {
+ this.state = 1088;
+ this.match(CypherParser.SP);
+ this.state = 1089;
+ this.match(CypherParser.PRIMARY);
+ this.state = 1090;
+ this.match(CypherParser.SP);
+ this.state = 1091;
+ this.match(CypherParser.KEY);
+ }
+ break;
+ }
}
}
catch (re) {
@@ -3665,52 +3695,52 @@ export class CypherParser extends antlr.Parser {
}
public kU_CreateNodeConstraint(): KU_CreateNodeConstraintContext {
let localctx: KU_CreateNodeConstraintContext = new KU_CreateNodeConstraintContext(this._ctx, this.state);
- this.enterRule(localctx, 98, CypherParser.RULE_kU_CreateNodeConstraint);
+ this.enterRule(localctx, 96, CypherParser.RULE_kU_CreateNodeConstraint);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1081;
+ this.state = 1094;
this.match(CypherParser.PRIMARY);
- this.state = 1082;
+ this.state = 1095;
this.match(CypherParser.SP);
- this.state = 1083;
+ this.state = 1096;
this.match(CypherParser.KEY);
- this.state = 1085;
+ this.state = 1098;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1084;
+ this.state = 1097;
this.match(CypherParser.SP);
}
}
- this.state = 1087;
+ this.state = 1100;
this.match(CypherParser.T__1);
- this.state = 1089;
+ this.state = 1102;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1088;
+ this.state = 1101;
this.match(CypherParser.SP);
}
}
- this.state = 1091;
+ this.state = 1104;
this.oC_PropertyKeyName();
- this.state = 1093;
+ this.state = 1106;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1092;
+ this.state = 1105;
this.match(CypherParser.SP);
}
}
- this.state = 1095;
+ this.state = 1108;
this.match(CypherParser.T__3);
}
}
@@ -3740,243 +3770,243 @@ export class CypherParser extends antlr.Parser {
let _parentState = this.state;
let localctx = new KU_DataTypeContext(this._ctx, _parentState);
let _prevctx = localctx;
- let _startState = 100;
- this.enterRecursionRule(localctx, 100, CypherParser.RULE_kU_DataType, _p);
+ let _startState = 98;
+ this.enterRecursionRule(localctx, 98, CypherParser.RULE_kU_DataType, _p);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1171;
+ this.state = 1184;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 142, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 147, this._ctx) ) {
case 1:
{
- this.state = 1098;
+ this.state = 1111;
this.oC_SymbolicName();
}
break;
case 2:
{
- this.state = 1099;
+ this.state = 1112;
this.match(CypherParser.UNION);
- this.state = 1101;
+ this.state = 1114;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1100;
+ this.state = 1113;
this.match(CypherParser.SP);
}
}
- this.state = 1103;
+ this.state = 1116;
this.match(CypherParser.T__1);
- this.state = 1105;
+ this.state = 1118;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1104;
+ this.state = 1117;
this.match(CypherParser.SP);
}
}
- this.state = 1107;
- this.kU_PropertyDefinitions();
- this.state = 1109;
+ this.state = 1120;
+ this.kU_ColumnDefinitions();
+ this.state = 1122;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1108;
+ this.state = 1121;
this.match(CypherParser.SP);
}
}
- this.state = 1111;
+ this.state = 1124;
this.match(CypherParser.T__3);
}
break;
case 3:
{
- this.state = 1113;
+ this.state = 1126;
this.oC_SymbolicName();
- this.state = 1115;
+ this.state = 1128;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1114;
+ this.state = 1127;
this.match(CypherParser.SP);
}
}
- this.state = 1117;
+ this.state = 1130;
this.match(CypherParser.T__1);
- this.state = 1119;
+ this.state = 1132;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1118;
+ this.state = 1131;
this.match(CypherParser.SP);
}
}
- this.state = 1121;
- this.kU_PropertyDefinitions();
- this.state = 1123;
+ this.state = 1134;
+ this.kU_ColumnDefinitions();
+ this.state = 1136;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1122;
+ this.state = 1135;
this.match(CypherParser.SP);
}
}
- this.state = 1125;
+ this.state = 1138;
this.match(CypherParser.T__3);
}
break;
case 4:
{
- this.state = 1127;
+ this.state = 1140;
this.oC_SymbolicName();
- this.state = 1129;
+ this.state = 1142;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1128;
+ this.state = 1141;
this.match(CypherParser.SP);
}
}
- this.state = 1131;
+ this.state = 1144;
this.match(CypherParser.T__1);
- this.state = 1133;
+ this.state = 1146;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1132;
+ this.state = 1145;
this.match(CypherParser.SP);
}
}
- this.state = 1135;
+ this.state = 1148;
this.kU_DataType(0);
- this.state = 1137;
+ this.state = 1150;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1136;
+ this.state = 1149;
this.match(CypherParser.SP);
}
}
- this.state = 1139;
+ this.state = 1152;
this.match(CypherParser.T__2);
- this.state = 1141;
+ this.state = 1154;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1140;
+ this.state = 1153;
this.match(CypherParser.SP);
}
}
- this.state = 1143;
+ this.state = 1156;
this.kU_DataType(0);
- this.state = 1145;
+ this.state = 1158;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1144;
+ this.state = 1157;
this.match(CypherParser.SP);
}
}
- this.state = 1147;
+ this.state = 1160;
this.match(CypherParser.T__3);
}
break;
case 5:
{
- this.state = 1149;
+ this.state = 1162;
this.match(CypherParser.DECIMAL);
- this.state = 1151;
+ this.state = 1164;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1150;
+ this.state = 1163;
this.match(CypherParser.SP);
}
}
- this.state = 1153;
+ this.state = 1166;
this.match(CypherParser.T__1);
- this.state = 1155;
+ this.state = 1168;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1154;
+ this.state = 1167;
this.match(CypherParser.SP);
}
}
- this.state = 1157;
+ this.state = 1170;
this.oC_IntegerLiteral();
- this.state = 1159;
+ this.state = 1172;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1158;
+ this.state = 1171;
this.match(CypherParser.SP);
}
}
- this.state = 1161;
+ this.state = 1174;
this.match(CypherParser.T__2);
- this.state = 1163;
+ this.state = 1176;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1162;
+ this.state = 1175;
this.match(CypherParser.SP);
}
}
- this.state = 1165;
+ this.state = 1178;
this.oC_IntegerLiteral();
- this.state = 1167;
+ this.state = 1180;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1166;
+ this.state = 1179;
this.match(CypherParser.SP);
}
}
- this.state = 1169;
+ this.state = 1182;
this.match(CypherParser.T__3);
}
break;
}
this._ctx.stop = this._input.LT(-1);
- this.state = 1177;
+ this.state = 1190;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 143, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 148, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
if (this._parseListeners != null) {
@@ -3987,18 +4017,18 @@ export class CypherParser extends antlr.Parser {
{
localctx = new KU_DataTypeContext(_parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_kU_DataType);
- this.state = 1173;
+ this.state = 1186;
if (!(this.precpred(this._ctx, 5))) {
throw this.createFailedPredicateException("this.precpred(this._ctx, 5)");
}
- this.state = 1174;
+ this.state = 1187;
this.kU_ListIdentifiers();
}
}
}
- this.state = 1179;
+ this.state = 1192;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 143, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 148, this._ctx);
}
}
}
@@ -4018,28 +4048,28 @@ export class CypherParser extends antlr.Parser {
}
public kU_ListIdentifiers(): KU_ListIdentifiersContext {
let localctx: KU_ListIdentifiersContext = new KU_ListIdentifiersContext(this._ctx, this.state);
- this.enterRule(localctx, 102, CypherParser.RULE_kU_ListIdentifiers);
+ this.enterRule(localctx, 100, CypherParser.RULE_kU_ListIdentifiers);
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1180;
+ this.state = 1193;
this.kU_ListIdentifier();
- this.state = 1184;
+ this.state = 1197;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 144, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 149, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1181;
+ this.state = 1194;
this.kU_ListIdentifier();
}
}
}
- this.state = 1186;
+ this.state = 1199;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 144, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 149, this._ctx);
}
}
}
@@ -4059,24 +4089,24 @@ export class CypherParser extends antlr.Parser {
}
public kU_ListIdentifier(): KU_ListIdentifierContext {
let localctx: KU_ListIdentifierContext = new KU_ListIdentifierContext(this._ctx, this.state);
- this.enterRule(localctx, 104, CypherParser.RULE_kU_ListIdentifier);
+ this.enterRule(localctx, 102, CypherParser.RULE_kU_ListIdentifier);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1187;
+ this.state = 1200;
this.match(CypherParser.T__6);
- this.state = 1189;
+ this.state = 1202;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===155) {
+ if (_la===160) {
{
- this.state = 1188;
+ this.state = 1201;
this.oC_IntegerLiteral();
}
}
- this.state = 1191;
+ this.state = 1204;
this.match(CypherParser.T__7);
}
}
@@ -4096,22 +4126,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, 106, CypherParser.RULE_oC_AnyCypherOption);
+ this.enterRule(localctx, 104, CypherParser.RULE_oC_AnyCypherOption);
try {
- this.state = 1195;
+ this.state = 1208;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.EXPLAIN:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1193;
+ this.state = 1206;
this.oC_Explain();
}
break;
case CypherParser.PROFILE:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1194;
+ this.state = 1207;
this.oC_Profile();
}
break;
@@ -4135,12 +4165,24 @@ 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, 108, CypherParser.RULE_oC_Explain);
+ this.enterRule(localctx, 106, CypherParser.RULE_oC_Explain);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1197;
+ this.state = 1210;
this.match(CypherParser.EXPLAIN);
+ this.state = 1213;
+ this._errHandler.sync(this);
+ switch ( this._interp.adaptivePredict(this._input, 152, this._ctx) ) {
+ case 1:
+ {
+ this.state = 1211;
+ this.match(CypherParser.SP);
+ this.state = 1212;
+ this.match(CypherParser.LOGICAL);
+ }
+ break;
+ }
}
}
catch (re) {
@@ -4159,11 +4201,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, 110, CypherParser.RULE_oC_Profile);
+ this.enterRule(localctx, 108, CypherParser.RULE_oC_Profile);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1199;
+ this.state = 1215;
this.match(CypherParser.PROFILE);
}
}
@@ -4183,59 +4225,59 @@ export class CypherParser extends antlr.Parser {
}
public kU_Transaction(): KU_TransactionContext {
let localctx: KU_TransactionContext = new KU_TransactionContext(this._ctx, this.state);
- this.enterRule(localctx, 112, CypherParser.RULE_kU_Transaction);
+ this.enterRule(localctx, 110, CypherParser.RULE_kU_Transaction);
try {
- this.state = 1214;
+ this.state = 1230;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 147, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 153, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1201;
+ this.state = 1217;
this.match(CypherParser.BEGIN);
- this.state = 1202;
+ this.state = 1218;
this.match(CypherParser.SP);
- this.state = 1203;
+ this.state = 1219;
this.match(CypherParser.TRANSACTION);
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1204;
+ this.state = 1220;
this.match(CypherParser.BEGIN);
- this.state = 1205;
+ this.state = 1221;
this.match(CypherParser.SP);
- this.state = 1206;
+ this.state = 1222;
this.match(CypherParser.TRANSACTION);
- this.state = 1207;
+ this.state = 1223;
this.match(CypherParser.SP);
- this.state = 1208;
+ this.state = 1224;
this.match(CypherParser.READ);
- this.state = 1209;
+ this.state = 1225;
this.match(CypherParser.SP);
- this.state = 1210;
+ this.state = 1226;
this.match(CypherParser.ONLY);
}
break;
case 3:
this.enterOuterAlt(localctx, 3);
{
- this.state = 1211;
+ this.state = 1227;
this.match(CypherParser.COMMIT);
}
break;
case 4:
this.enterOuterAlt(localctx, 4);
{
- this.state = 1212;
+ this.state = 1228;
this.match(CypherParser.ROLLBACK);
}
break;
case 5:
this.enterOuterAlt(localctx, 5);
{
- this.state = 1213;
+ this.state = 1229;
this.match(CypherParser.CHECKPOINT);
}
break;
@@ -4257,22 +4299,22 @@ export class CypherParser extends antlr.Parser {
}
public kU_Extension(): KU_ExtensionContext {
let localctx: KU_ExtensionContext = new KU_ExtensionContext(this._ctx, this.state);
- this.enterRule(localctx, 114, CypherParser.RULE_kU_Extension);
+ this.enterRule(localctx, 112, CypherParser.RULE_kU_Extension);
try {
- this.state = 1218;
+ this.state = 1234;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.LOAD:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1216;
+ this.state = 1232;
this.kU_LoadExtension();
}
break;
case CypherParser.INSTALL:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1217;
+ this.state = 1233;
this.kU_InstallExtension();
}
break;
@@ -4296,24 +4338,24 @@ export class CypherParser extends antlr.Parser {
}
public kU_LoadExtension(): KU_LoadExtensionContext {
let localctx: KU_LoadExtensionContext = new KU_LoadExtensionContext(this._ctx, this.state);
- this.enterRule(localctx, 116, CypherParser.RULE_kU_LoadExtension);
+ this.enterRule(localctx, 114, CypherParser.RULE_kU_LoadExtension);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1220;
+ this.state = 1236;
this.match(CypherParser.LOAD);
- this.state = 1221;
+ this.state = 1237;
this.match(CypherParser.SP);
- this.state = 1222;
+ this.state = 1238;
this.match(CypherParser.EXTENSION);
- this.state = 1223;
+ this.state = 1239;
this.match(CypherParser.SP);
- this.state = 1226;
+ this.state = 1242;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.StringLiteral:
{
- this.state = 1224;
+ this.state = 1240;
this.match(CypherParser.StringLiteral);
}
break;
@@ -4344,7 +4386,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -4370,7 +4414,7 @@ export class CypherParser extends antlr.Parser {
case CypherParser.UnescapedSymbolicName:
case CypherParser.EscapedSymbolicName:
{
- this.state = 1225;
+ this.state = 1241;
this.oC_Variable();
}
break;
@@ -4395,15 +4439,15 @@ export class CypherParser extends antlr.Parser {
}
public kU_InstallExtension(): KU_InstallExtensionContext {
let localctx: KU_InstallExtensionContext = new KU_InstallExtensionContext(this._ctx, this.state);
- this.enterRule(localctx, 118, CypherParser.RULE_kU_InstallExtension);
+ this.enterRule(localctx, 116, CypherParser.RULE_kU_InstallExtension);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1228;
+ this.state = 1244;
this.match(CypherParser.INSTALL);
- this.state = 1229;
+ this.state = 1245;
this.match(CypherParser.SP);
- this.state = 1230;
+ this.state = 1246;
this.oC_Variable();
}
}
@@ -4423,24 +4467,24 @@ 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, 120, CypherParser.RULE_oC_Query);
+ this.enterRule(localctx, 118, CypherParser.RULE_oC_Query);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1236;
+ this.state = 1252;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 151, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 157, this._ctx) ) {
case 1:
{
- this.state = 1232;
+ this.state = 1248;
this.kU_ProjectGraph();
- this.state = 1234;
+ this.state = 1250;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1233;
+ this.state = 1249;
this.match(CypherParser.SP);
}
}
@@ -4448,7 +4492,7 @@ export class CypherParser extends antlr.Parser {
}
break;
}
- this.state = 1238;
+ this.state = 1254;
this.oC_RegularQuery();
}
}
@@ -4468,56 +4512,56 @@ export class CypherParser extends antlr.Parser {
}
public kU_ProjectGraph(): KU_ProjectGraphContext {
let localctx: KU_ProjectGraphContext = new KU_ProjectGraphContext(this._ctx, this.state);
- this.enterRule(localctx, 122, CypherParser.RULE_kU_ProjectGraph);
+ this.enterRule(localctx, 120, CypherParser.RULE_kU_ProjectGraph);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1240;
+ this.state = 1256;
this.match(CypherParser.PROJECT);
- this.state = 1241;
+ this.state = 1257;
this.match(CypherParser.SP);
- this.state = 1242;
+ this.state = 1258;
this.match(CypherParser.GRAPH);
- this.state = 1243;
+ this.state = 1259;
this.match(CypherParser.SP);
- this.state = 1244;
+ this.state = 1260;
this.oC_SchemaName();
- this.state = 1246;
+ this.state = 1262;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1245;
+ this.state = 1261;
this.match(CypherParser.SP);
}
}
- this.state = 1248;
+ this.state = 1264;
this.match(CypherParser.T__1);
- this.state = 1250;
+ this.state = 1266;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1249;
+ this.state = 1265;
this.match(CypherParser.SP);
}
}
- this.state = 1252;
+ this.state = 1268;
this.kU_GraphProjectionTableItems();
- this.state = 1254;
+ this.state = 1270;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1253;
+ this.state = 1269;
this.match(CypherParser.SP);
}
}
- this.state = 1256;
+ this.state = 1272;
this.match(CypherParser.T__3);
}
}
@@ -4537,51 +4581,51 @@ export class CypherParser extends antlr.Parser {
}
public kU_GraphProjectionTableItems(): KU_GraphProjectionTableItemsContext {
let localctx: KU_GraphProjectionTableItemsContext = new KU_GraphProjectionTableItemsContext(this._ctx, this.state);
- this.enterRule(localctx, 124, CypherParser.RULE_kU_GraphProjectionTableItems);
+ this.enterRule(localctx, 122, CypherParser.RULE_kU_GraphProjectionTableItems);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1258;
+ this.state = 1274;
this.kU_GraphProjectionTableItem();
- this.state = 1269;
+ this.state = 1285;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 157, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 163, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1260;
+ this.state = 1276;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1259;
+ this.state = 1275;
this.match(CypherParser.SP);
}
}
- this.state = 1262;
+ this.state = 1278;
this.match(CypherParser.T__2);
- this.state = 1264;
+ this.state = 1280;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1263;
+ this.state = 1279;
this.match(CypherParser.SP);
}
}
- this.state = 1266;
+ this.state = 1282;
this.kU_GraphProjectionTableItem();
}
}
}
- this.state = 1271;
+ this.state = 1287;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 157, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 163, this._ctx);
}
}
}
@@ -4601,50 +4645,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, 126, CypherParser.RULE_oC_RegularQuery);
+ this.enterRule(localctx, 124, CypherParser.RULE_oC_RegularQuery);
let _la: number;
try {
let _alt: number;
- this.state = 1293;
+ this.state = 1309;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 162, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 168, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1272;
+ this.state = 1288;
this.oC_SingleQuery();
- this.state = 1279;
+ this.state = 1295;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 159, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 165, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1274;
+ this.state = 1290;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1273;
+ this.state = 1289;
this.match(CypherParser.SP);
}
}
- this.state = 1276;
+ this.state = 1292;
this.oC_Union();
}
}
}
- this.state = 1281;
+ this.state = 1297;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 159, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 165, this._ctx);
}
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1286;
+ this.state = 1302;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -4652,14 +4696,14 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 1282;
+ this.state = 1298;
this.oC_Return();
- this.state = 1284;
+ this.state = 1300;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1283;
+ this.state = 1299;
this.match(CypherParser.SP);
}
}
@@ -4670,11 +4714,11 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 1288;
+ this.state = 1304;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 161, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 167, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
- this.state = 1290;
+ this.state = 1306;
this.oC_SingleQuery();
}
break;
@@ -4696,33 +4740,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, 128, CypherParser.RULE_oC_Union);
+ this.enterRule(localctx, 126, CypherParser.RULE_oC_Union);
let _la: number;
try {
- this.state = 1307;
+ this.state = 1323;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 165, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 171, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 1295;
+ this.state = 1311;
this.match(CypherParser.UNION);
- this.state = 1296;
+ this.state = 1312;
this.match(CypherParser.SP);
- this.state = 1297;
+ this.state = 1313;
this.match(CypherParser.ALL);
- this.state = 1299;
+ this.state = 1315;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1298;
+ this.state = 1314;
this.match(CypherParser.SP);
}
}
- this.state = 1301;
+ this.state = 1317;
this.oC_SingleQuery();
}
}
@@ -4731,19 +4775,19 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 1302;
+ this.state = 1318;
this.match(CypherParser.UNION);
- this.state = 1304;
+ this.state = 1320;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1303;
+ this.state = 1319;
this.match(CypherParser.SP);
}
}
- this.state = 1306;
+ this.state = 1322;
this.oC_SingleQuery();
}
}
@@ -4766,22 +4810,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, 130, CypherParser.RULE_oC_SingleQuery);
+ this.enterRule(localctx, 128, CypherParser.RULE_oC_SingleQuery);
try {
- this.state = 1311;
+ this.state = 1327;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 166, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 172, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1309;
+ this.state = 1325;
this.oC_SinglePartQuery();
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1310;
+ this.state = 1326;
this.oC_MultiPartQuery();
}
break;
@@ -4803,41 +4847,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, 132, CypherParser.RULE_oC_SinglePartQuery);
+ this.enterRule(localctx, 130, CypherParser.RULE_oC_SinglePartQuery);
let _la: number;
try {
let _alt: number;
- this.state = 1358;
+ this.state = 1364;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 177, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 181, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1319;
+ this.state = 1335;
this._errHandler.sync(this);
_la = this._input.LA(1);
- while (_la===56 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 270341) !== 0) || _la===139) {
+ while (_la===58 || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 1081353) !== 0) || _la===143) {
{
{
- this.state = 1313;
+ this.state = 1329;
this.oC_ReadingClause();
- this.state = 1315;
+ this.state = 1331;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1314;
+ this.state = 1330;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 1321;
+ this.state = 1337;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 1322;
+ this.state = 1338;
this.oC_Return();
}
break;
@@ -4845,74 +4889,74 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 1329;
+ this.state = 1345;
this._errHandler.sync(this);
_la = this._input.LA(1);
- while (_la===56 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 270341) !== 0) || _la===139) {
+ while (_la===58 || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 1081353) !== 0) || _la===143) {
{
{
- this.state = 1323;
+ this.state = 1339;
this.oC_ReadingClause();
- this.state = 1325;
+ this.state = 1341;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1324;
+ this.state = 1340;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 1331;
+ this.state = 1347;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 1332;
+ this.state = 1348;
this.oC_UpdatingClause();
- this.state = 1339;
+ this.state = 1355;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 172, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 178, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1334;
+ this.state = 1350;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1333;
+ this.state = 1349;
this.match(CypherParser.SP);
}
}
- this.state = 1336;
+ this.state = 1352;
this.oC_UpdatingClause();
}
}
}
- this.state = 1341;
+ this.state = 1357;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 172, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 178, this._ctx);
}
- this.state = 1346;
+ this.state = 1362;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 174, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 180, this._ctx) ) {
case 1:
{
- this.state = 1343;
+ this.state = 1359;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1342;
+ this.state = 1358;
this.match(CypherParser.SP);
}
}
- this.state = 1345;
+ this.state = 1361;
this.oC_Return();
}
break;
@@ -4920,35 +4964,6 @@ export class CypherParser extends antlr.Parser {
}
}
break;
- case 3:
- this.enterOuterAlt(localctx, 3);
- {
- this.state = 1352;
- this._errHandler.sync(this);
- _la = this._input.LA(1);
- do {
- {
- {
- this.state = 1348;
- this.oC_ReadingClause();
- this.state = 1350;
- this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 175, this._ctx) ) {
- case 1:
- {
- this.state = 1349;
- this.match(CypherParser.SP);
- }
- break;
- }
- }
- }
- this.state = 1354;
- this._errHandler.sync(this);
- _la = this._input.LA(1);
- } while (_la===56 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 270341) !== 0) || _la===139);
- }
- break;
}
}
catch (re) {
@@ -4967,13 +4982,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, 134, CypherParser.RULE_oC_MultiPartQuery);
+ this.enterRule(localctx, 132, CypherParser.RULE_oC_MultiPartQuery);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1364;
+ this.state = 1370;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -4981,14 +4996,14 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 1360;
+ this.state = 1366;
this.kU_QueryPart();
- this.state = 1362;
+ this.state = 1368;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1361;
+ this.state = 1367;
this.match(CypherParser.SP);
}
}
@@ -4999,11 +5014,11 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 1366;
+ this.state = 1372;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 179, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 183, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
- this.state = 1368;
+ this.state = 1374;
this.oC_SinglePartQuery();
}
}
@@ -5023,60 +5038,60 @@ export class CypherParser extends antlr.Parser {
}
public kU_QueryPart(): KU_QueryPartContext {
let localctx: KU_QueryPartContext = new KU_QueryPartContext(this._ctx, this.state);
- this.enterRule(localctx, 136, CypherParser.RULE_kU_QueryPart);
+ this.enterRule(localctx, 134, CypherParser.RULE_kU_QueryPart);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1376;
+ this.state = 1382;
this._errHandler.sync(this);
_la = this._input.LA(1);
- while (_la===56 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 270341) !== 0) || _la===139) {
+ while (_la===58 || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 1081353) !== 0) || _la===143) {
{
{
- this.state = 1370;
+ this.state = 1376;
this.oC_ReadingClause();
- this.state = 1372;
+ this.state = 1378;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1371;
+ this.state = 1377;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 1378;
+ this.state = 1384;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 1385;
+ this.state = 1391;
this._errHandler.sync(this);
_la = this._input.LA(1);
- while (((((_la - 67)) & ~0x1F) === 0 && ((1 << (_la - 67)) & 289) !== 0) || _la===105 || _la===128) {
+ while (((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 289) !== 0) || _la===108 || _la===131) {
{
{
- this.state = 1379;
+ this.state = 1385;
this.oC_UpdatingClause();
- this.state = 1381;
+ this.state = 1387;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1380;
+ this.state = 1386;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 1387;
+ this.state = 1393;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 1388;
+ this.state = 1394;
this.oC_With();
}
}
@@ -5096,29 +5111,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, 138, CypherParser.RULE_oC_UpdatingClause);
+ this.enterRule(localctx, 136, CypherParser.RULE_oC_UpdatingClause);
try {
- this.state = 1394;
+ this.state = 1400;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.CREATE:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1390;
+ this.state = 1396;
this.oC_Create();
}
break;
case CypherParser.MERGE:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1391;
+ this.state = 1397;
this.oC_Merge();
}
break;
case CypherParser.SET:
this.enterOuterAlt(localctx, 3);
{
- this.state = 1392;
+ this.state = 1398;
this.oC_Set();
}
break;
@@ -5126,7 +5141,7 @@ export class CypherParser extends antlr.Parser {
case CypherParser.DETACH:
this.enterOuterAlt(localctx, 4);
{
- this.state = 1393;
+ this.state = 1399;
this.oC_Delete();
}
break;
@@ -5150,23 +5165,23 @@ 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, 140, CypherParser.RULE_oC_ReadingClause);
+ this.enterRule(localctx, 138, CypherParser.RULE_oC_ReadingClause);
try {
- this.state = 1400;
+ this.state = 1406;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.MATCH:
case CypherParser.OPTIONAL:
this.enterOuterAlt(localctx, 1);
{
- this.state = 1396;
+ this.state = 1402;
this.oC_Match();
}
break;
case CypherParser.UNWIND:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1397;
+ this.state = 1403;
this.oC_Unwind();
}
break;
@@ -5174,14 +5189,14 @@ export class CypherParser extends antlr.Parser {
case CypherParser.PROJECT:
this.enterOuterAlt(localctx, 3);
{
- this.state = 1398;
+ this.state = 1404;
this.kU_InQueryCall();
}
break;
case CypherParser.LOAD:
this.enterOuterAlt(localctx, 4);
{
- this.state = 1399;
+ this.state = 1405;
this.kU_LoadFrom();
}
break;
@@ -5205,109 +5220,109 @@ export class CypherParser extends antlr.Parser {
}
public kU_LoadFrom(): KU_LoadFromContext {
let localctx: KU_LoadFromContext = new KU_LoadFromContext(this._ctx, this.state);
- this.enterRule(localctx, 142, CypherParser.RULE_kU_LoadFrom);
+ this.enterRule(localctx, 140, CypherParser.RULE_kU_LoadFrom);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1402;
+ this.state = 1408;
this.match(CypherParser.LOAD);
- this.state = 1420;
+ this.state = 1426;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 189, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 193, this._ctx) ) {
case 1:
{
- this.state = 1403;
+ this.state = 1409;
this.match(CypherParser.SP);
- this.state = 1404;
+ this.state = 1410;
this.match(CypherParser.WITH);
- this.state = 1405;
+ this.state = 1411;
this.match(CypherParser.SP);
- this.state = 1406;
+ this.state = 1412;
this.match(CypherParser.HEADERS);
- this.state = 1408;
+ this.state = 1414;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1407;
+ this.state = 1413;
this.match(CypherParser.SP);
}
}
- this.state = 1410;
+ this.state = 1416;
this.match(CypherParser.T__1);
- this.state = 1412;
+ this.state = 1418;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1411;
+ this.state = 1417;
this.match(CypherParser.SP);
}
}
- this.state = 1414;
- this.kU_PropertyDefinitions();
- this.state = 1416;
+ this.state = 1420;
+ this.kU_ColumnDefinitions();
+ this.state = 1422;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1415;
+ this.state = 1421;
this.match(CypherParser.SP);
}
}
- this.state = 1418;
+ this.state = 1424;
this.match(CypherParser.T__3);
}
break;
}
- this.state = 1422;
+ this.state = 1428;
this.match(CypherParser.SP);
- this.state = 1423;
+ this.state = 1429;
this.match(CypherParser.FROM);
- this.state = 1424;
+ this.state = 1430;
this.match(CypherParser.SP);
- this.state = 1425;
+ this.state = 1431;
this.kU_ScanSource();
- this.state = 1430;
+ this.state = 1436;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 191, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 195, this._ctx) ) {
case 1:
{
- this.state = 1427;
+ this.state = 1433;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1426;
+ this.state = 1432;
this.match(CypherParser.SP);
}
}
- this.state = 1429;
+ this.state = 1435;
this.kU_ParsingOptions();
}
break;
}
- this.state = 1436;
+ this.state = 1442;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 193, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 197, this._ctx) ) {
case 1:
{
- this.state = 1433;
+ this.state = 1439;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1432;
+ this.state = 1438;
this.match(CypherParser.SP);
}
}
- this.state = 1435;
+ this.state = 1441;
this.oC_Where();
}
break;
@@ -5330,24 +5345,24 @@ export class CypherParser extends antlr.Parser {
}
public kU_InQueryCall(): KU_InQueryCallContext {
let localctx: KU_InQueryCallContext = new KU_InQueryCallContext(this._ctx, this.state);
- this.enterRule(localctx, 144, CypherParser.RULE_kU_InQueryCall);
+ this.enterRule(localctx, 142, CypherParser.RULE_kU_InQueryCall);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1442;
+ this.state = 1448;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===119) {
+ if (_la===123) {
{
- this.state = 1438;
+ this.state = 1444;
this.kU_ProjectGraph();
- this.state = 1440;
+ this.state = 1446;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1439;
+ this.state = 1445;
this.match(CypherParser.SP);
}
}
@@ -5355,28 +5370,28 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 1444;
+ this.state = 1450;
this.match(CypherParser.CALL);
- this.state = 1445;
+ this.state = 1451;
this.match(CypherParser.SP);
- this.state = 1446;
+ this.state = 1452;
this.oC_FunctionInvocation();
- this.state = 1451;
+ this.state = 1457;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 197, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 201, this._ctx) ) {
case 1:
{
- this.state = 1448;
+ this.state = 1454;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1447;
+ this.state = 1453;
this.match(CypherParser.SP);
}
}
- this.state = 1450;
+ this.state = 1456;
this.oC_Where();
}
break;
@@ -5399,53 +5414,53 @@ export class CypherParser extends antlr.Parser {
}
public kU_GraphProjectionTableItem(): KU_GraphProjectionTableItemContext {
let localctx: KU_GraphProjectionTableItemContext = new KU_GraphProjectionTableItemContext(this._ctx, this.state);
- this.enterRule(localctx, 146, CypherParser.RULE_kU_GraphProjectionTableItem);
+ this.enterRule(localctx, 144, CypherParser.RULE_kU_GraphProjectionTableItem);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1453;
+ this.state = 1459;
this.oC_SchemaName();
- this.state = 1467;
+ this.state = 1473;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 201, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 205, this._ctx) ) {
case 1:
{
- this.state = 1455;
+ this.state = 1461;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1454;
+ this.state = 1460;
this.match(CypherParser.SP);
}
}
- this.state = 1457;
+ this.state = 1463;
this.match(CypherParser.T__8);
- this.state = 1459;
+ this.state = 1465;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1458;
+ this.state = 1464;
this.match(CypherParser.SP);
}
}
- this.state = 1461;
+ this.state = 1467;
this.kU_GraphProjectionColumnItems();
- this.state = 1463;
+ this.state = 1469;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1462;
+ this.state = 1468;
this.match(CypherParser.SP);
}
}
- this.state = 1465;
+ this.state = 1471;
this.match(CypherParser.T__9);
}
break;
@@ -5468,51 +5483,51 @@ export class CypherParser extends antlr.Parser {
}
public kU_GraphProjectionColumnItems(): KU_GraphProjectionColumnItemsContext {
let localctx: KU_GraphProjectionColumnItemsContext = new KU_GraphProjectionColumnItemsContext(this._ctx, this.state);
- this.enterRule(localctx, 148, CypherParser.RULE_kU_GraphProjectionColumnItems);
+ this.enterRule(localctx, 146, CypherParser.RULE_kU_GraphProjectionColumnItems);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1469;
+ this.state = 1475;
this.kU_GraphProjectionColumnItem();
- this.state = 1480;
+ this.state = 1486;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 204, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 208, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1471;
+ this.state = 1477;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1470;
+ this.state = 1476;
this.match(CypherParser.SP);
}
}
- this.state = 1473;
+ this.state = 1479;
this.match(CypherParser.T__2);
- this.state = 1475;
+ this.state = 1481;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1474;
+ this.state = 1480;
this.match(CypherParser.SP);
}
}
- this.state = 1477;
+ this.state = 1483;
this.kU_GraphProjectionColumnItem();
}
}
}
- this.state = 1482;
+ this.state = 1488;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 204, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 208, this._ctx);
}
}
}
@@ -5532,32 +5547,32 @@ export class CypherParser extends antlr.Parser {
}
public kU_GraphProjectionColumnItem(): KU_GraphProjectionColumnItemContext {
let localctx: KU_GraphProjectionColumnItemContext = new KU_GraphProjectionColumnItemContext(this._ctx, this.state);
- this.enterRule(localctx, 150, CypherParser.RULE_kU_GraphProjectionColumnItem);
+ this.enterRule(localctx, 148, CypherParser.RULE_kU_GraphProjectionColumnItem);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1483;
+ this.state = 1489;
this.oC_PropertyKeyName();
- this.state = 1486;
+ this.state = 1492;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 205, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 209, this._ctx) ) {
case 1:
{
- this.state = 1484;
+ this.state = 1490;
this.match(CypherParser.SP);
- this.state = 1485;
+ this.state = 1491;
this.kU_Default();
}
break;
}
- this.state = 1490;
+ this.state = 1496;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 206, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 210, this._ctx) ) {
case 1:
{
- this.state = 1488;
+ this.state = 1494;
this.match(CypherParser.SP);
- this.state = 1489;
+ this.state = 1495;
this.oC_Where();
}
break;
@@ -5580,57 +5595,57 @@ 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, 152, CypherParser.RULE_oC_Match);
+ this.enterRule(localctx, 150, CypherParser.RULE_oC_Match);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1494;
+ this.state = 1500;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===114) {
+ if (_la===118) {
{
- this.state = 1492;
+ this.state = 1498;
this.match(CypherParser.OPTIONAL);
- this.state = 1493;
+ this.state = 1499;
this.match(CypherParser.SP);
}
}
- this.state = 1496;
+ this.state = 1502;
this.match(CypherParser.MATCH);
- this.state = 1498;
+ this.state = 1504;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1497;
+ this.state = 1503;
this.match(CypherParser.SP);
}
}
- this.state = 1500;
+ this.state = 1506;
this.oC_Pattern();
- this.state = 1503;
+ this.state = 1509;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 209, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 213, this._ctx) ) {
case 1:
{
- this.state = 1501;
+ this.state = 1507;
this.match(CypherParser.SP);
- this.state = 1502;
+ this.state = 1508;
this.oC_Where();
}
break;
}
- this.state = 1507;
+ this.state = 1513;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 210, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 214, this._ctx) ) {
case 1:
{
- this.state = 1505;
+ this.state = 1511;
this.match(CypherParser.SP);
- this.state = 1506;
+ this.state = 1512;
this.kU_Hint();
}
break;
@@ -5653,15 +5668,15 @@ export class CypherParser extends antlr.Parser {
}
public kU_Hint(): KU_HintContext {
let localctx: KU_HintContext = new KU_HintContext(this._ctx, this.state);
- this.enterRule(localctx, 154, CypherParser.RULE_kU_Hint);
+ this.enterRule(localctx, 152, CypherParser.RULE_kU_Hint);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1509;
+ this.state = 1515;
this.match(CypherParser.HINT);
- this.state = 1510;
+ this.state = 1516;
this.match(CypherParser.SP);
- this.state = 1511;
+ this.state = 1517;
this.kU_JoinNode(0);
}
}
@@ -5691,43 +5706,43 @@ export class CypherParser extends antlr.Parser {
let _parentState = this.state;
let localctx = new KU_JoinNodeContext(this._ctx, _parentState);
let _prevctx = localctx;
- let _startState = 156;
- this.enterRecursionRule(localctx, 156, CypherParser.RULE_kU_JoinNode, _p);
+ let _startState = 154;
+ this.enterRecursionRule(localctx, 154, CypherParser.RULE_kU_JoinNode, _p);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1525;
+ this.state = 1531;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.T__1:
{
- this.state = 1514;
+ this.state = 1520;
this.match(CypherParser.T__1);
- this.state = 1516;
+ this.state = 1522;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1515;
+ this.state = 1521;
this.match(CypherParser.SP);
}
}
- this.state = 1518;
+ this.state = 1524;
this.kU_JoinNode(0);
- this.state = 1520;
+ this.state = 1526;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1519;
+ this.state = 1525;
this.match(CypherParser.SP);
}
}
- this.state = 1522;
+ this.state = 1528;
this.match(CypherParser.T__3);
}
break;
@@ -5758,7 +5773,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -5784,7 +5801,7 @@ export class CypherParser extends antlr.Parser {
case CypherParser.UnescapedSymbolicName:
case CypherParser.EscapedSymbolicName:
{
- this.state = 1524;
+ this.state = 1530;
this.oC_SchemaName();
}
break;
@@ -5792,9 +5809,9 @@ export class CypherParser extends antlr.Parser {
throw new antlr.NoViableAltException(this);
}
this._ctx.stop = this._input.LT(-1);
- this.state = 1543;
+ this.state = 1549;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 216, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 220, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
if (this._parseListeners != null) {
@@ -5802,24 +5819,24 @@ export class CypherParser extends antlr.Parser {
}
_prevctx = localctx;
{
- this.state = 1541;
+ this.state = 1547;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 215, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 219, this._ctx) ) {
case 1:
{
localctx = new KU_JoinNodeContext(_parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_kU_JoinNode);
- this.state = 1527;
+ this.state = 1533;
if (!(this.precpred(this._ctx, 4))) {
throw this.createFailedPredicateException("this.precpred(this._ctx, 4)");
}
- this.state = 1528;
+ this.state = 1534;
this.match(CypherParser.SP);
- this.state = 1529;
+ this.state = 1535;
this.match(CypherParser.JOIN);
- this.state = 1530;
+ this.state = 1536;
this.match(CypherParser.SP);
- this.state = 1531;
+ this.state = 1537;
this.kU_JoinNode(5);
}
break;
@@ -5827,11 +5844,11 @@ export class CypherParser extends antlr.Parser {
{
localctx = new KU_JoinNodeContext(_parentctx, _parentState);
this.pushNewRecursionContext(localctx, _startState, CypherParser.RULE_kU_JoinNode);
- this.state = 1532;
+ this.state = 1538;
if (!(this.precpred(this._ctx, 3))) {
throw this.createFailedPredicateException("this.precpred(this._ctx, 3)");
}
- this.state = 1537;
+ this.state = 1543;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -5839,13 +5856,13 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 1533;
+ this.state = 1539;
this.match(CypherParser.SP);
- this.state = 1534;
+ this.state = 1540;
this.match(CypherParser.MULTI_JOIN);
- this.state = 1535;
+ this.state = 1541;
this.match(CypherParser.SP);
- this.state = 1536;
+ this.state = 1542;
this.oC_SchemaName();
}
}
@@ -5853,18 +5870,18 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 1539;
+ this.state = 1545;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 214, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 218, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
}
break;
}
}
}
- this.state = 1545;
+ this.state = 1551;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 216, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 220, this._ctx);
}
}
}
@@ -5884,32 +5901,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, 158, CypherParser.RULE_oC_Unwind);
+ this.enterRule(localctx, 156, CypherParser.RULE_oC_Unwind);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1546;
+ this.state = 1552;
this.match(CypherParser.UNWIND);
- this.state = 1548;
+ this.state = 1554;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1547;
+ this.state = 1553;
this.match(CypherParser.SP);
}
}
- this.state = 1550;
+ this.state = 1556;
this.oC_Expression();
- this.state = 1551;
+ this.state = 1557;
this.match(CypherParser.SP);
- this.state = 1552;
+ this.state = 1558;
this.match(CypherParser.AS);
- this.state = 1553;
+ this.state = 1559;
this.match(CypherParser.SP);
- this.state = 1554;
+ this.state = 1560;
this.oC_Variable();
}
}
@@ -5929,24 +5946,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, 160, CypherParser.RULE_oC_Create);
+ this.enterRule(localctx, 158, CypherParser.RULE_oC_Create);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1556;
+ this.state = 1562;
this.match(CypherParser.CREATE);
- this.state = 1558;
+ this.state = 1564;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1557;
+ this.state = 1563;
this.match(CypherParser.SP);
}
}
- this.state = 1560;
+ this.state = 1566;
this.oC_Pattern();
}
}
@@ -5966,43 +5983,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, 162, CypherParser.RULE_oC_Merge);
+ this.enterRule(localctx, 160, CypherParser.RULE_oC_Merge);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1562;
+ this.state = 1568;
this.match(CypherParser.MERGE);
- this.state = 1564;
+ this.state = 1570;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1563;
+ this.state = 1569;
this.match(CypherParser.SP);
}
}
- this.state = 1566;
+ this.state = 1572;
this.oC_Pattern();
- this.state = 1571;
+ this.state = 1577;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 220, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 224, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1567;
+ this.state = 1573;
this.match(CypherParser.SP);
- this.state = 1568;
+ this.state = 1574;
this.oC_MergeAction();
}
}
}
- this.state = 1573;
+ this.state = 1579;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 220, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 224, this._ctx);
}
}
}
@@ -6022,24 +6039,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, 164, CypherParser.RULE_oC_MergeAction);
+ this.enterRule(localctx, 162, CypherParser.RULE_oC_MergeAction);
try {
- this.state = 1584;
+ this.state = 1590;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 221, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 225, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 1574;
+ this.state = 1580;
this.match(CypherParser.ON);
- this.state = 1575;
+ this.state = 1581;
this.match(CypherParser.SP);
- this.state = 1576;
+ this.state = 1582;
this.match(CypherParser.MATCH);
- this.state = 1577;
+ this.state = 1583;
this.match(CypherParser.SP);
- this.state = 1578;
+ this.state = 1584;
this.oC_Set();
}
}
@@ -6048,15 +6065,15 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 1579;
+ this.state = 1585;
this.match(CypherParser.ON);
- this.state = 1580;
+ this.state = 1586;
this.match(CypherParser.SP);
- this.state = 1581;
+ this.state = 1587;
this.match(CypherParser.CREATE);
- this.state = 1582;
+ this.state = 1588;
this.match(CypherParser.SP);
- this.state = 1583;
+ this.state = 1589;
this.oC_Set();
}
}
@@ -6079,63 +6096,63 @@ 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, 166, CypherParser.RULE_oC_Set);
+ this.enterRule(localctx, 164, CypherParser.RULE_oC_Set);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1586;
+ this.state = 1592;
this.match(CypherParser.SET);
- this.state = 1588;
+ this.state = 1594;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1587;
+ this.state = 1593;
this.match(CypherParser.SP);
}
}
- this.state = 1590;
+ this.state = 1596;
this.oC_SetItem();
- this.state = 1601;
+ this.state = 1607;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 225, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 229, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1592;
+ this.state = 1598;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1591;
+ this.state = 1597;
this.match(CypherParser.SP);
}
}
- this.state = 1594;
+ this.state = 1600;
this.match(CypherParser.T__2);
- this.state = 1596;
+ this.state = 1602;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1595;
+ this.state = 1601;
this.match(CypherParser.SP);
}
}
- this.state = 1598;
+ this.state = 1604;
this.oC_SetItem();
}
}
}
- this.state = 1603;
+ this.state = 1609;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 225, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 229, this._ctx);
}
}
}
@@ -6155,37 +6172,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, 168, CypherParser.RULE_oC_SetItem);
+ this.enterRule(localctx, 166, CypherParser.RULE_oC_SetItem);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 1604;
+ this.state = 1610;
this.oC_PropertyExpression();
- this.state = 1606;
+ this.state = 1612;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1605;
+ this.state = 1611;
this.match(CypherParser.SP);
}
}
- this.state = 1608;
+ this.state = 1614;
this.match(CypherParser.T__5);
- this.state = 1610;
+ this.state = 1616;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1609;
+ this.state = 1615;
this.match(CypherParser.SP);
}
}
- this.state = 1612;
+ this.state = 1618;
this.oC_Expression();
}
}
@@ -6206,75 +6223,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, 170, CypherParser.RULE_oC_Delete);
+ this.enterRule(localctx, 168, CypherParser.RULE_oC_Delete);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1616;
+ this.state = 1622;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===75) {
+ if (_la===77) {
{
- this.state = 1614;
+ this.state = 1620;
this.match(CypherParser.DETACH);
- this.state = 1615;
+ this.state = 1621;
this.match(CypherParser.SP);
}
}
- this.state = 1618;
+ this.state = 1624;
this.match(CypherParser.DELETE);
- this.state = 1620;
+ this.state = 1626;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1619;
+ this.state = 1625;
this.match(CypherParser.SP);
}
}
- this.state = 1622;
+ this.state = 1628;
this.oC_Expression();
- this.state = 1633;
+ this.state = 1639;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 232, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 236, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1624;
+ this.state = 1630;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1623;
+ this.state = 1629;
this.match(CypherParser.SP);
}
}
- this.state = 1626;
+ this.state = 1632;
this.match(CypherParser.T__2);
- this.state = 1628;
+ this.state = 1634;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1627;
+ this.state = 1633;
this.match(CypherParser.SP);
}
}
- this.state = 1630;
+ this.state = 1636;
this.oC_Expression();
}
}
}
- this.state = 1635;
+ this.state = 1641;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 232, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 236, this._ctx);
}
}
}
@@ -6294,31 +6311,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, 172, CypherParser.RULE_oC_With);
+ this.enterRule(localctx, 170, CypherParser.RULE_oC_With);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1636;
+ this.state = 1642;
this.match(CypherParser.WITH);
- this.state = 1637;
+ this.state = 1643;
this.oC_ProjectionBody();
- this.state = 1642;
+ this.state = 1648;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 234, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 238, this._ctx) ) {
case 1:
{
- this.state = 1639;
+ this.state = 1645;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1638;
+ this.state = 1644;
this.match(CypherParser.SP);
}
}
- this.state = 1641;
+ this.state = 1647;
this.oC_Where();
}
break;
@@ -6341,13 +6358,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, 174, CypherParser.RULE_oC_Return);
+ this.enterRule(localctx, 172, CypherParser.RULE_oC_Return);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1644;
+ this.state = 1650;
this.match(CypherParser.RETURN);
- this.state = 1645;
+ this.state = 1651;
this.oC_ProjectionBody();
}
}
@@ -6367,67 +6384,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, 176, CypherParser.RULE_oC_ProjectionBody);
+ this.enterRule(localctx, 174, CypherParser.RULE_oC_ProjectionBody);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1651;
+ this.state = 1657;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 236, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 240, this._ctx) ) {
case 1:
{
- this.state = 1648;
+ this.state = 1654;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1647;
+ this.state = 1653;
this.match(CypherParser.SP);
}
}
- this.state = 1650;
+ this.state = 1656;
this.match(CypherParser.DISTINCT);
}
break;
}
- this.state = 1653;
+ this.state = 1659;
this.match(CypherParser.SP);
- this.state = 1654;
+ this.state = 1660;
this.oC_ProjectionItems();
- this.state = 1657;
+ this.state = 1663;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 237, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 241, this._ctx) ) {
case 1:
{
- this.state = 1655;
+ this.state = 1661;
this.match(CypherParser.SP);
- this.state = 1656;
+ this.state = 1662;
this.oC_Order();
}
break;
}
- this.state = 1661;
+ this.state = 1667;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 238, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 242, this._ctx) ) {
case 1:
{
- this.state = 1659;
+ this.state = 1665;
this.match(CypherParser.SP);
- this.state = 1660;
+ this.state = 1666;
this.oC_Skip();
}
break;
}
- this.state = 1665;
+ this.state = 1671;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 239, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 243, this._ctx) ) {
case 1:
{
- this.state = 1663;
+ this.state = 1669;
this.match(CypherParser.SP);
- this.state = 1664;
+ this.state = 1670;
this.oC_Limit();
}
break;
@@ -6450,56 +6467,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, 178, CypherParser.RULE_oC_ProjectionItems);
+ this.enterRule(localctx, 176, CypherParser.RULE_oC_ProjectionItems);
let _la: number;
try {
let _alt: number;
- this.state = 1695;
+ this.state = 1701;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.STAR:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 1667;
+ this.state = 1673;
this.match(CypherParser.STAR);
- this.state = 1678;
+ this.state = 1684;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 242, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 246, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1669;
+ this.state = 1675;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1668;
+ this.state = 1674;
this.match(CypherParser.SP);
}
}
- this.state = 1671;
+ this.state = 1677;
this.match(CypherParser.T__2);
- this.state = 1673;
+ this.state = 1679;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1672;
+ this.state = 1678;
this.match(CypherParser.SP);
}
}
- this.state = 1675;
+ this.state = 1681;
this.oC_ProjectionItem();
}
}
}
- this.state = 1680;
+ this.state = 1686;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 242, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 246, this._ctx);
}
}
}
@@ -6508,7 +6525,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.T__6:
case CypherParser.T__8:
case CypherParser.T__25:
+ case CypherParser.ANY:
case CypherParser.ADD:
+ case CypherParser.ALL:
case CypherParser.ALTER:
case CypherParser.AS:
case CypherParser.ATTACH:
@@ -6539,7 +6558,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -6547,6 +6568,7 @@ export class CypherParser extends antlr.Parser {
case CypherParser.NO:
case CypherParser.NODE:
case CypherParser.NOT:
+ case CypherParser.NONE:
case CypherParser.NULL:
case CypherParser.PROJECT:
case CypherParser.READ:
@@ -6562,6 +6584,7 @@ export class CypherParser extends antlr.Parser {
case CypherParser.TYPE:
case CypherParser.USE:
case CypherParser.WRITE:
+ case CypherParser.SINGLE:
case CypherParser.DECIMAL:
case CypherParser.L_SKIP:
case CypherParser.MINUS:
@@ -6574,45 +6597,45 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 1681;
+ this.state = 1687;
this.oC_ProjectionItem();
- this.state = 1692;
+ this.state = 1698;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 245, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 249, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1683;
+ this.state = 1689;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1682;
+ this.state = 1688;
this.match(CypherParser.SP);
}
}
- this.state = 1685;
+ this.state = 1691;
this.match(CypherParser.T__2);
- this.state = 1687;
+ this.state = 1693;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1686;
+ this.state = 1692;
this.match(CypherParser.SP);
}
}
- this.state = 1689;
+ this.state = 1695;
this.oC_ProjectionItem();
}
}
}
- this.state = 1694;
+ this.state = 1700;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 245, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 249, this._ctx);
}
}
}
@@ -6637,24 +6660,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, 180, CypherParser.RULE_oC_ProjectionItem);
+ this.enterRule(localctx, 178, CypherParser.RULE_oC_ProjectionItem);
try {
- this.state = 1704;
+ this.state = 1710;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 247, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 251, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 1697;
+ this.state = 1703;
this.oC_Expression();
- this.state = 1698;
+ this.state = 1704;
this.match(CypherParser.SP);
- this.state = 1699;
+ this.state = 1705;
this.match(CypherParser.AS);
- this.state = 1700;
+ this.state = 1706;
this.match(CypherParser.SP);
- this.state = 1701;
+ this.state = 1707;
this.oC_Variable();
}
}
@@ -6662,7 +6685,7 @@ export class CypherParser extends antlr.Parser {
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1703;
+ this.state = 1709;
this.oC_Expression();
}
break;
@@ -6684,44 +6707,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, 182, CypherParser.RULE_oC_Order);
+ this.enterRule(localctx, 180, CypherParser.RULE_oC_Order);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1706;
+ this.state = 1712;
this.match(CypherParser.ORDER);
- this.state = 1707;
+ this.state = 1713;
this.match(CypherParser.SP);
- this.state = 1708;
+ this.state = 1714;
this.match(CypherParser.BY);
- this.state = 1709;
+ this.state = 1715;
this.match(CypherParser.SP);
- this.state = 1710;
+ this.state = 1716;
this.oC_SortItem();
- this.state = 1718;
+ this.state = 1724;
this._errHandler.sync(this);
_la = this._input.LA(1);
while (_la===3) {
{
{
- this.state = 1711;
+ this.state = 1717;
this.match(CypherParser.T__2);
- this.state = 1713;
+ this.state = 1719;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1712;
+ this.state = 1718;
this.match(CypherParser.SP);
}
}
- this.state = 1715;
+ this.state = 1721;
this.oC_SortItem();
}
}
- this.state = 1720;
+ this.state = 1726;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
@@ -6743,15 +6766,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, 184, CypherParser.RULE_oC_Skip);
+ this.enterRule(localctx, 182, CypherParser.RULE_oC_Skip);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1721;
+ this.state = 1727;
this.match(CypherParser.L_SKIP);
- this.state = 1722;
+ this.state = 1728;
this.match(CypherParser.SP);
- this.state = 1723;
+ this.state = 1729;
this.oC_Expression();
}
}
@@ -6771,15 +6794,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, 186, CypherParser.RULE_oC_Limit);
+ this.enterRule(localctx, 184, CypherParser.RULE_oC_Limit);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1725;
+ this.state = 1731;
this.match(CypherParser.LIMIT);
- this.state = 1726;
+ this.state = 1732;
this.match(CypherParser.SP);
- this.state = 1727;
+ this.state = 1733;
this.oC_Expression();
}
}
@@ -6799,31 +6822,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, 188, CypherParser.RULE_oC_SortItem);
+ this.enterRule(localctx, 186, CypherParser.RULE_oC_SortItem);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1729;
+ this.state = 1735;
this.oC_Expression();
- this.state = 1734;
+ this.state = 1740;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 251, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 255, this._ctx) ) {
case 1:
{
- this.state = 1731;
+ this.state = 1737;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1730;
+ this.state = 1736;
this.match(CypherParser.SP);
}
}
- this.state = 1733;
+ this.state = 1739;
_la = this._input.LA(1);
- if(!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 12582915) !== 0))) {
+ if(!(((((_la - 53)) & ~0x1F) === 0 && ((1 << (_la - 53)) & 12582915) !== 0))) {
this._errHandler.recoverInline(this);
}
else {
@@ -6851,15 +6874,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, 190, CypherParser.RULE_oC_Where);
+ this.enterRule(localctx, 188, CypherParser.RULE_oC_Where);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1736;
+ this.state = 1742;
this.match(CypherParser.WHERE);
- this.state = 1737;
+ this.state = 1743;
this.match(CypherParser.SP);
- this.state = 1738;
+ this.state = 1744;
this.oC_Expression();
}
}
@@ -6879,51 +6902,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, 192, CypherParser.RULE_oC_Pattern);
+ this.enterRule(localctx, 190, CypherParser.RULE_oC_Pattern);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1740;
+ this.state = 1746;
this.oC_PatternPart();
- this.state = 1751;
+ this.state = 1757;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 254, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 258, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1742;
+ this.state = 1748;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1741;
+ this.state = 1747;
this.match(CypherParser.SP);
}
}
- this.state = 1744;
+ this.state = 1750;
this.match(CypherParser.T__2);
- this.state = 1746;
+ this.state = 1752;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1745;
+ this.state = 1751;
this.match(CypherParser.SP);
}
}
- this.state = 1748;
+ this.state = 1754;
this.oC_PatternPart();
}
}
}
- this.state = 1753;
+ this.state = 1759;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 254, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 258, this._ctx);
}
}
}
@@ -6943,10 +6966,10 @@ 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, 194, CypherParser.RULE_oC_PatternPart);
+ this.enterRule(localctx, 192, CypherParser.RULE_oC_PatternPart);
let _la: number;
try {
- this.state = 1765;
+ this.state = 1771;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.ADD:
@@ -6976,7 +6999,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -7004,31 +7029,31 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 1754;
+ this.state = 1760;
this.oC_Variable();
- this.state = 1756;
+ this.state = 1762;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1755;
+ this.state = 1761;
this.match(CypherParser.SP);
}
}
- this.state = 1758;
+ this.state = 1764;
this.match(CypherParser.T__5);
- this.state = 1760;
+ this.state = 1766;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1759;
+ this.state = 1765;
this.match(CypherParser.SP);
}
}
- this.state = 1762;
+ this.state = 1768;
this.oC_AnonymousPatternPart();
}
}
@@ -7036,7 +7061,7 @@ export class CypherParser extends antlr.Parser {
case CypherParser.T__1:
this.enterOuterAlt(localctx, 2);
{
- this.state = 1764;
+ this.state = 1770;
this.oC_AnonymousPatternPart();
}
break;
@@ -7060,11 +7085,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, 196, CypherParser.RULE_oC_AnonymousPatternPart);
+ this.enterRule(localctx, 194, CypherParser.RULE_oC_AnonymousPatternPart);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1767;
+ this.state = 1773;
this.oC_PatternElement();
}
}
@@ -7084,44 +7109,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, 198, CypherParser.RULE_oC_PatternElement);
+ this.enterRule(localctx, 196, CypherParser.RULE_oC_PatternElement);
let _la: number;
try {
let _alt: number;
- this.state = 1783;
+ this.state = 1789;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 260, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 264, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 1769;
+ this.state = 1775;
this.oC_NodePattern();
- this.state = 1776;
+ this.state = 1782;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 259, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 263, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1771;
+ this.state = 1777;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1770;
+ this.state = 1776;
this.match(CypherParser.SP);
}
}
- this.state = 1773;
+ this.state = 1779;
this.oC_PatternElementChain();
}
}
}
- this.state = 1778;
+ this.state = 1784;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 259, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 263, this._ctx);
}
}
}
@@ -7130,11 +7155,11 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 1779;
+ this.state = 1785;
this.match(CypherParser.T__1);
- this.state = 1780;
+ this.state = 1786;
this.oC_PatternElement();
- this.state = 1781;
+ this.state = 1787;
this.match(CypherParser.T__3);
}
}
@@ -7157,36 +7182,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, 200, CypherParser.RULE_oC_NodePattern);
+ this.enterRule(localctx, 198, CypherParser.RULE_oC_NodePattern);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1785;
+ this.state = 1791;
this.match(CypherParser.T__1);
- this.state = 1787;
+ this.state = 1793;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1786;
+ this.state = 1792;
this.match(CypherParser.SP);
}
}
- this.state = 1793;
+ this.state = 1799;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765989781) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 233483335) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 707070845) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & 1153) !== 0)) {
+ if (((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 2765989781) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 467577927) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1378158015) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 1153) !== 0)) {
{
- this.state = 1789;
+ this.state = 1795;
this.oC_Variable();
- this.state = 1791;
+ this.state = 1797;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1790;
+ this.state = 1796;
this.match(CypherParser.SP);
}
}
@@ -7194,19 +7219,19 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 1799;
+ this.state = 1805;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===152) {
+ if (_la===157) {
{
- this.state = 1795;
+ this.state = 1801;
this.oC_NodeLabels();
- this.state = 1797;
+ this.state = 1803;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1796;
+ this.state = 1802;
this.match(CypherParser.SP);
}
}
@@ -7214,19 +7239,19 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 1805;
+ this.state = 1811;
this._errHandler.sync(this);
_la = this._input.LA(1);
if (_la===9) {
{
- this.state = 1801;
+ this.state = 1807;
this.kU_Properties();
- this.state = 1803;
+ this.state = 1809;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1802;
+ this.state = 1808;
this.match(CypherParser.SP);
}
}
@@ -7234,7 +7259,7 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 1807;
+ this.state = 1813;
this.match(CypherParser.T__3);
}
}
@@ -7254,24 +7279,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, 202, CypherParser.RULE_oC_PatternElementChain);
+ this.enterRule(localctx, 200, CypherParser.RULE_oC_PatternElementChain);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1809;
+ this.state = 1815;
this.oC_RelationshipPattern();
- this.state = 1811;
+ this.state = 1817;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1810;
+ this.state = 1816;
this.match(CypherParser.SP);
}
}
- this.state = 1813;
+ this.state = 1819;
this.oC_NodePattern();
}
}
@@ -7291,61 +7316,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, 204, CypherParser.RULE_oC_RelationshipPattern);
+ this.enterRule(localctx, 202, CypherParser.RULE_oC_RelationshipPattern);
let _la: number;
try {
- this.state = 1859;
+ this.state = 1865;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 280, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 284, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 1815;
+ this.state = 1821;
this.oC_LeftArrowHead();
- this.state = 1817;
+ this.state = 1823;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1816;
+ this.state = 1822;
this.match(CypherParser.SP);
}
}
- this.state = 1819;
+ this.state = 1825;
this.oC_Dash();
- this.state = 1821;
+ this.state = 1827;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 270, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 274, this._ctx) ) {
case 1:
{
- this.state = 1820;
+ this.state = 1826;
this.match(CypherParser.SP);
}
break;
}
- this.state = 1824;
+ this.state = 1830;
this._errHandler.sync(this);
_la = this._input.LA(1);
if (_la===7) {
{
- this.state = 1823;
+ this.state = 1829;
this.oC_RelationshipDetail();
}
}
- this.state = 1827;
+ this.state = 1833;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1826;
+ this.state = 1832;
this.match(CypherParser.SP);
}
}
- this.state = 1829;
+ this.state = 1835;
this.oC_Dash();
}
}
@@ -7354,51 +7379,51 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 1831;
+ this.state = 1837;
this.oC_Dash();
- this.state = 1833;
+ this.state = 1839;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 273, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 277, this._ctx) ) {
case 1:
{
- this.state = 1832;
+ this.state = 1838;
this.match(CypherParser.SP);
}
break;
}
- this.state = 1836;
+ this.state = 1842;
this._errHandler.sync(this);
_la = this._input.LA(1);
if (_la===7) {
{
- this.state = 1835;
+ this.state = 1841;
this.oC_RelationshipDetail();
}
}
- this.state = 1839;
+ this.state = 1845;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1838;
+ this.state = 1844;
this.match(CypherParser.SP);
}
}
- this.state = 1841;
+ this.state = 1847;
this.oC_Dash();
- this.state = 1843;
+ this.state = 1849;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1842;
+ this.state = 1848;
this.match(CypherParser.SP);
}
}
- this.state = 1845;
+ this.state = 1851;
this.oC_RightArrowHead();
}
}
@@ -7407,39 +7432,39 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 3);
{
{
- this.state = 1847;
+ this.state = 1853;
this.oC_Dash();
- this.state = 1849;
+ this.state = 1855;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 277, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 281, this._ctx) ) {
case 1:
{
- this.state = 1848;
+ this.state = 1854;
this.match(CypherParser.SP);
}
break;
}
- this.state = 1852;
+ this.state = 1858;
this._errHandler.sync(this);
_la = this._input.LA(1);
if (_la===7) {
{
- this.state = 1851;
+ this.state = 1857;
this.oC_RelationshipDetail();
}
}
- this.state = 1855;
+ this.state = 1861;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1854;
+ this.state = 1860;
this.match(CypherParser.SP);
}
}
- this.state = 1857;
+ this.state = 1863;
this.oC_Dash();
}
}
@@ -7462,36 +7487,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, 206, CypherParser.RULE_oC_RelationshipDetail);
+ this.enterRule(localctx, 204, CypherParser.RULE_oC_RelationshipDetail);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1861;
+ this.state = 1867;
this.match(CypherParser.T__6);
- this.state = 1863;
+ this.state = 1869;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1862;
+ this.state = 1868;
this.match(CypherParser.SP);
}
}
- this.state = 1869;
+ this.state = 1875;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765989781) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 233483335) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 707070845) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & 1153) !== 0)) {
+ if (((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 2765989781) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 467577927) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1378158015) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 1153) !== 0)) {
{
- this.state = 1865;
+ this.state = 1871;
this.oC_Variable();
- this.state = 1867;
+ this.state = 1873;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1866;
+ this.state = 1872;
this.match(CypherParser.SP);
}
}
@@ -7499,19 +7524,19 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 1875;
+ this.state = 1881;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===152) {
+ if (_la===157) {
{
- this.state = 1871;
+ this.state = 1877;
this.oC_RelationshipTypes();
- this.state = 1873;
+ this.state = 1879;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1872;
+ this.state = 1878;
this.match(CypherParser.SP);
}
}
@@ -7519,19 +7544,19 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 1881;
+ this.state = 1887;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===147) {
+ if (_la===152) {
{
- this.state = 1877;
+ this.state = 1883;
this.oC_RangeLiteral();
- this.state = 1879;
+ this.state = 1885;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1878;
+ this.state = 1884;
this.match(CypherParser.SP);
}
}
@@ -7539,19 +7564,19 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 1887;
+ this.state = 1893;
this._errHandler.sync(this);
_la = this._input.LA(1);
if (_la===9) {
{
- this.state = 1883;
+ this.state = 1889;
this.kU_Properties();
- this.state = 1885;
+ this.state = 1891;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1884;
+ this.state = 1890;
this.match(CypherParser.SP);
}
}
@@ -7559,7 +7584,7 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 1889;
+ this.state = 1895;
this.match(CypherParser.T__7);
}
}
@@ -7579,128 +7604,128 @@ export class CypherParser extends antlr.Parser {
}
public kU_Properties(): KU_PropertiesContext {
let localctx: KU_PropertiesContext = new KU_PropertiesContext(this._ctx, this.state);
- this.enterRule(localctx, 208, CypherParser.RULE_kU_Properties);
+ this.enterRule(localctx, 206, CypherParser.RULE_kU_Properties);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1891;
+ this.state = 1897;
this.match(CypherParser.T__8);
- this.state = 1893;
+ this.state = 1899;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1892;
+ this.state = 1898;
this.match(CypherParser.SP);
}
}
- this.state = 1928;
+ this.state = 1934;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765989781) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 233483335) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 707070845) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & 1153) !== 0)) {
+ if (((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 2765989781) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 467577927) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1378158015) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 1153) !== 0)) {
{
- this.state = 1895;
+ this.state = 1901;
this.oC_PropertyKeyName();
- this.state = 1897;
+ this.state = 1903;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1896;
+ this.state = 1902;
this.match(CypherParser.SP);
}
}
- this.state = 1899;
+ this.state = 1905;
this.match(CypherParser.COLON);
- this.state = 1901;
+ this.state = 1907;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1900;
+ this.state = 1906;
this.match(CypherParser.SP);
}
}
- this.state = 1903;
+ this.state = 1909;
this.oC_Expression();
- this.state = 1905;
+ this.state = 1911;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1904;
+ this.state = 1910;
this.match(CypherParser.SP);
}
}
- this.state = 1925;
+ this.state = 1931;
this._errHandler.sync(this);
_la = this._input.LA(1);
while (_la===3) {
{
{
- this.state = 1907;
+ this.state = 1913;
this.match(CypherParser.T__2);
- this.state = 1909;
+ this.state = 1915;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1908;
+ this.state = 1914;
this.match(CypherParser.SP);
}
}
- this.state = 1911;
+ this.state = 1917;
this.oC_PropertyKeyName();
- this.state = 1913;
+ this.state = 1919;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1912;
+ this.state = 1918;
this.match(CypherParser.SP);
}
}
- this.state = 1915;
+ this.state = 1921;
this.match(CypherParser.COLON);
- this.state = 1917;
+ this.state = 1923;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1916;
+ this.state = 1922;
this.match(CypherParser.SP);
}
}
- this.state = 1919;
+ this.state = 1925;
this.oC_Expression();
- this.state = 1921;
+ this.state = 1927;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1920;
+ this.state = 1926;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 1927;
+ this.state = 1933;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
}
- this.state = 1930;
+ this.state = 1936;
this.match(CypherParser.T__9);
}
}
@@ -7720,73 +7745,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, 210, CypherParser.RULE_oC_RelationshipTypes);
+ this.enterRule(localctx, 208, CypherParser.RULE_oC_RelationshipTypes);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1932;
+ this.state = 1938;
this.match(CypherParser.COLON);
- this.state = 1934;
+ this.state = 1940;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1933;
+ this.state = 1939;
this.match(CypherParser.SP);
}
}
- this.state = 1936;
+ this.state = 1942;
this.oC_RelTypeName();
- this.state = 1950;
+ this.state = 1956;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 304, 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 = 1938;
+ this.state = 1944;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1937;
+ this.state = 1943;
this.match(CypherParser.SP);
}
}
- this.state = 1940;
+ this.state = 1946;
this.match(CypherParser.T__10);
- this.state = 1942;
+ this.state = 1948;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===152) {
+ if (_la===157) {
{
- this.state = 1941;
+ this.state = 1947;
this.match(CypherParser.COLON);
}
}
- this.state = 1945;
+ this.state = 1951;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1944;
+ this.state = 1950;
this.match(CypherParser.SP);
}
}
- this.state = 1947;
+ this.state = 1953;
this.oC_RelTypeName();
}
}
}
- this.state = 1952;
+ this.state = 1958;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 304, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 308, this._ctx);
}
}
}
@@ -7806,39 +7831,39 @@ 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, 212, CypherParser.RULE_oC_NodeLabels);
+ this.enterRule(localctx, 210, CypherParser.RULE_oC_NodeLabels);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 1953;
+ this.state = 1959;
this.oC_NodeLabel();
- this.state = 1960;
+ this.state = 1966;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 306, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 310, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 1955;
+ this.state = 1961;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1954;
+ this.state = 1960;
this.match(CypherParser.SP);
}
}
- this.state = 1957;
+ this.state = 1963;
this.oC_NodeLabel();
}
}
}
- this.state = 1962;
+ this.state = 1968;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 306, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 310, this._ctx);
}
}
}
@@ -7858,24 +7883,24 @@ export class CypherParser extends antlr.Parser {
}
public oC_NodeLabel(): OC_NodeLabelContext {
let localctx: OC_NodeLabelContext = new OC_NodeLabelContext(this._ctx, this.state);
- this.enterRule(localctx, 214, CypherParser.RULE_oC_NodeLabel);
+ this.enterRule(localctx, 212, CypherParser.RULE_oC_NodeLabel);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1963;
+ this.state = 1969;
this.match(CypherParser.COLON);
- this.state = 1965;
+ this.state = 1971;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1964;
+ this.state = 1970;
this.match(CypherParser.SP);
}
}
- this.state = 1967;
+ this.state = 1973;
this.oC_LabelName();
}
}
@@ -7895,42 +7920,54 @@ 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, 216, CypherParser.RULE_oC_RangeLiteral);
+ this.enterRule(localctx, 214, CypherParser.RULE_oC_RangeLiteral);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 1969;
+ this.state = 1975;
this.match(CypherParser.STAR);
- this.state = 1971;
+ this.state = 1977;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 308, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 312, this._ctx) ) {
case 1:
{
- this.state = 1970;
+ this.state = 1976;
this.match(CypherParser.SP);
}
break;
}
- this.state = 1977;
+ this.state = 1985;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.SHORTEST:
{
- this.state = 1973;
+ this.state = 1979;
this.match(CypherParser.SHORTEST);
}
break;
case CypherParser.ALL:
{
- this.state = 1974;
+ this.state = 1980;
this.match(CypherParser.ALL);
- this.state = 1975;
+ this.state = 1981;
this.match(CypherParser.SP);
- this.state = 1976;
+ this.state = 1982;
this.match(CypherParser.SHORTEST);
}
break;
+ case CypherParser.TRAIL:
+ {
+ this.state = 1983;
+ this.match(CypherParser.TRAIL);
+ }
+ break;
+ case CypherParser.ACYCLIC:
+ {
+ this.state = 1984;
+ this.match(CypherParser.ACYCLIC);
+ }
+ break;
case CypherParser.T__1:
case CypherParser.T__7:
case CypherParser.T__8:
@@ -7941,59 +7978,59 @@ export class CypherParser extends antlr.Parser {
default:
break;
}
- this.state = 1980;
+ this.state = 1988;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 310, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 314, this._ctx) ) {
case 1:
{
- this.state = 1979;
+ this.state = 1987;
this.match(CypherParser.SP);
}
break;
}
- this.state = 1996;
+ this.state = 2004;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 315, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 319, this._ctx) ) {
case 1:
{
- this.state = 1983;
+ this.state = 1991;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===155) {
+ if (_la===160) {
{
- this.state = 1982;
+ this.state = 1990;
this.oC_LowerBound();
}
}
- this.state = 1986;
+ this.state = 1994;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1985;
+ this.state = 1993;
this.match(CypherParser.SP);
}
}
- this.state = 1988;
+ this.state = 1996;
this.match(CypherParser.T__11);
- this.state = 1990;
+ this.state = 1998;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 313, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 317, this._ctx) ) {
case 1:
{
- this.state = 1989;
+ this.state = 1997;
this.match(CypherParser.SP);
}
break;
}
- this.state = 1993;
+ this.state = 2001;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===155) {
+ if (_la===160) {
{
- this.state = 1992;
+ this.state = 2000;
this.oC_UpperBound();
}
}
@@ -8002,27 +8039,27 @@ export class CypherParser extends antlr.Parser {
break;
case 2:
{
- this.state = 1995;
+ this.state = 2003;
this.oC_IntegerLiteral();
}
break;
}
- this.state = 2002;
+ this.state = 2010;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 317, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 321, this._ctx) ) {
case 1:
{
- this.state = 1999;
+ this.state = 2007;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 1998;
+ this.state = 2006;
this.match(CypherParser.SP);
}
}
- this.state = 2001;
+ this.state = 2009;
this.kU_RecursiveRelationshipComprehension();
}
break;
@@ -8045,84 +8082,84 @@ export class CypherParser extends antlr.Parser {
}
public kU_RecursiveRelationshipComprehension(): KU_RecursiveRelationshipComprehensionContext {
let localctx: KU_RecursiveRelationshipComprehensionContext = new KU_RecursiveRelationshipComprehensionContext(this._ctx, this.state);
- this.enterRule(localctx, 218, CypherParser.RULE_kU_RecursiveRelationshipComprehension);
+ this.enterRule(localctx, 216, CypherParser.RULE_kU_RecursiveRelationshipComprehension);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2004;
+ this.state = 2012;
this.match(CypherParser.T__1);
- this.state = 2006;
+ this.state = 2014;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2005;
+ this.state = 2013;
this.match(CypherParser.SP);
}
}
- this.state = 2008;
+ this.state = 2016;
this.oC_Variable();
- this.state = 2010;
+ this.state = 2018;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2009;
+ this.state = 2017;
this.match(CypherParser.SP);
}
}
- this.state = 2012;
+ this.state = 2020;
this.match(CypherParser.T__2);
- this.state = 2014;
+ this.state = 2022;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2013;
+ this.state = 2021;
this.match(CypherParser.SP);
}
}
- this.state = 2016;
+ this.state = 2024;
this.oC_Variable();
- this.state = 2028;
+ this.state = 2036;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 324, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 328, this._ctx) ) {
case 1:
{
- this.state = 2018;
+ this.state = 2026;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2017;
+ this.state = 2025;
this.match(CypherParser.SP);
}
}
- this.state = 2020;
+ this.state = 2028;
this.match(CypherParser.T__10);
- this.state = 2022;
+ this.state = 2030;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2021;
+ this.state = 2029;
this.match(CypherParser.SP);
}
}
- this.state = 2024;
+ this.state = 2032;
this.oC_Where();
- this.state = 2026;
+ this.state = 2034;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 323, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 327, this._ctx) ) {
case 1:
{
- this.state = 2025;
+ this.state = 2033;
this.match(CypherParser.SP);
}
break;
@@ -8130,65 +8167,65 @@ export class CypherParser extends antlr.Parser {
}
break;
}
- this.state = 2049;
+ this.state = 2057;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===11 || _la===167) {
+ if (_la===11 || _la===172) {
{
- this.state = 2031;
+ this.state = 2039;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2030;
+ this.state = 2038;
this.match(CypherParser.SP);
}
}
- this.state = 2033;
+ this.state = 2041;
this.match(CypherParser.T__10);
- this.state = 2035;
+ this.state = 2043;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2034;
+ this.state = 2042;
this.match(CypherParser.SP);
}
}
- this.state = 2037;
+ this.state = 2045;
this.kU_IntermediateRelProjectionItems();
- this.state = 2039;
+ this.state = 2047;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2038;
+ this.state = 2046;
this.match(CypherParser.SP);
}
}
- this.state = 2041;
+ this.state = 2049;
this.match(CypherParser.T__2);
- this.state = 2043;
+ this.state = 2051;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2042;
+ this.state = 2050;
this.match(CypherParser.SP);
}
}
- this.state = 2045;
+ this.state = 2053;
this.kU_IntermediateNodeProjectionItems();
- this.state = 2047;
+ this.state = 2055;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2046;
+ this.state = 2054;
this.match(CypherParser.SP);
}
}
@@ -8196,7 +8233,7 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 2051;
+ this.state = 2059;
this.match(CypherParser.T__3);
}
}
@@ -8216,44 +8253,44 @@ export class CypherParser extends antlr.Parser {
}
public kU_IntermediateNodeProjectionItems(): KU_IntermediateNodeProjectionItemsContext {
let localctx: KU_IntermediateNodeProjectionItemsContext = new KU_IntermediateNodeProjectionItemsContext(this._ctx, this.state);
- this.enterRule(localctx, 220, CypherParser.RULE_kU_IntermediateNodeProjectionItems);
+ this.enterRule(localctx, 218, CypherParser.RULE_kU_IntermediateNodeProjectionItems);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2053;
+ this.state = 2061;
this.match(CypherParser.T__8);
- this.state = 2055;
+ this.state = 2063;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 331, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 335, this._ctx) ) {
case 1:
{
- this.state = 2054;
+ this.state = 2062;
this.match(CypherParser.SP);
}
break;
}
- this.state = 2058;
+ this.state = 2066;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765995925) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & 2077579423) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 3123121021) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 9741) !== 0)) {
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237024559) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 2077592049) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 1885073439) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 159599569) !== 0)) {
{
- this.state = 2057;
+ this.state = 2065;
this.oC_ProjectionItems();
}
}
- this.state = 2061;
+ this.state = 2069;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2060;
+ this.state = 2068;
this.match(CypherParser.SP);
}
}
- this.state = 2063;
+ this.state = 2071;
this.match(CypherParser.T__9);
}
}
@@ -8273,44 +8310,44 @@ export class CypherParser extends antlr.Parser {
}
public kU_IntermediateRelProjectionItems(): KU_IntermediateRelProjectionItemsContext {
let localctx: KU_IntermediateRelProjectionItemsContext = new KU_IntermediateRelProjectionItemsContext(this._ctx, this.state);
- this.enterRule(localctx, 222, CypherParser.RULE_kU_IntermediateRelProjectionItems);
+ this.enterRule(localctx, 220, CypherParser.RULE_kU_IntermediateRelProjectionItems);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2065;
+ this.state = 2073;
this.match(CypherParser.T__8);
- this.state = 2067;
+ this.state = 2075;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 334, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 338, this._ctx) ) {
case 1:
{
- this.state = 2066;
+ this.state = 2074;
this.match(CypherParser.SP);
}
break;
}
- this.state = 2070;
+ this.state = 2078;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765995925) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & 2077579423) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 3123121021) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 9741) !== 0)) {
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237024559) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 2077592049) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 1885073439) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 159599569) !== 0)) {
{
- this.state = 2069;
+ this.state = 2077;
this.oC_ProjectionItems();
}
}
- this.state = 2073;
+ this.state = 2081;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2072;
+ this.state = 2080;
this.match(CypherParser.SP);
}
}
- this.state = 2075;
+ this.state = 2083;
this.match(CypherParser.T__9);
}
}
@@ -8330,11 +8367,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, 224, CypherParser.RULE_oC_LowerBound);
+ this.enterRule(localctx, 222, CypherParser.RULE_oC_LowerBound);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2077;
+ this.state = 2085;
this.match(CypherParser.DecimalInteger);
}
}
@@ -8354,11 +8391,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, 226, CypherParser.RULE_oC_UpperBound);
+ this.enterRule(localctx, 224, CypherParser.RULE_oC_UpperBound);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2079;
+ this.state = 2087;
this.match(CypherParser.DecimalInteger);
}
}
@@ -8378,11 +8415,11 @@ 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, 228, CypherParser.RULE_oC_LabelName);
+ this.enterRule(localctx, 226, CypherParser.RULE_oC_LabelName);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2081;
+ this.state = 2089;
this.oC_SchemaName();
}
}
@@ -8402,11 +8439,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, 230, CypherParser.RULE_oC_RelTypeName);
+ this.enterRule(localctx, 228, CypherParser.RULE_oC_RelTypeName);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2083;
+ this.state = 2091;
this.oC_SchemaName();
}
}
@@ -8426,11 +8463,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, 232, CypherParser.RULE_oC_Expression);
+ this.enterRule(localctx, 230, CypherParser.RULE_oC_Expression);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2085;
+ this.state = 2093;
this.oC_OrExpression();
}
}
@@ -8450,34 +8487,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, 234, CypherParser.RULE_oC_OrExpression);
+ this.enterRule(localctx, 232, CypherParser.RULE_oC_OrExpression);
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2087;
+ this.state = 2095;
this.oC_XorExpression();
- this.state = 2094;
+ this.state = 2102;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 337, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 341, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2088;
+ this.state = 2096;
this.match(CypherParser.SP);
- this.state = 2089;
+ this.state = 2097;
this.match(CypherParser.OR);
- this.state = 2090;
+ this.state = 2098;
this.match(CypherParser.SP);
- this.state = 2091;
+ this.state = 2099;
this.oC_XorExpression();
}
}
}
- this.state = 2096;
+ this.state = 2104;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 337, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 341, this._ctx);
}
}
}
@@ -8497,34 +8534,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, 236, CypherParser.RULE_oC_XorExpression);
+ this.enterRule(localctx, 234, CypherParser.RULE_oC_XorExpression);
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2097;
+ this.state = 2105;
this.oC_AndExpression();
- this.state = 2104;
+ this.state = 2112;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 338, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 342, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2098;
+ this.state = 2106;
this.match(CypherParser.SP);
- this.state = 2099;
+ this.state = 2107;
this.match(CypherParser.XOR);
- this.state = 2100;
+ this.state = 2108;
this.match(CypherParser.SP);
- this.state = 2101;
+ this.state = 2109;
this.oC_AndExpression();
}
}
}
- this.state = 2106;
+ this.state = 2114;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 338, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 342, this._ctx);
}
}
}
@@ -8544,34 +8581,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, 238, CypherParser.RULE_oC_AndExpression);
+ this.enterRule(localctx, 236, CypherParser.RULE_oC_AndExpression);
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2107;
+ this.state = 2115;
this.oC_NotExpression();
- this.state = 2114;
+ this.state = 2122;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 339, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 343, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2108;
+ this.state = 2116;
this.match(CypherParser.SP);
- this.state = 2109;
+ this.state = 2117;
this.match(CypherParser.AND);
- this.state = 2110;
+ this.state = 2118;
this.match(CypherParser.SP);
- this.state = 2111;
+ this.state = 2119;
this.oC_NotExpression();
}
}
}
- this.state = 2116;
+ this.state = 2124;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 339, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 343, this._ctx);
}
}
}
@@ -8591,36 +8628,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, 240, CypherParser.RULE_oC_NotExpression);
+ this.enterRule(localctx, 238, CypherParser.RULE_oC_NotExpression);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2123;
+ this.state = 2131;
this._errHandler.sync(this);
_la = this._input.LA(1);
- while (_la===110) {
+ while (_la===113) {
{
{
- this.state = 2117;
+ this.state = 2125;
this.match(CypherParser.NOT);
- this.state = 2119;
+ this.state = 2127;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2118;
+ this.state = 2126;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 2125;
+ this.state = 2133;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 2126;
+ this.state = 2134;
this.oC_ComparisonExpression();
}
}
@@ -8640,46 +8677,46 @@ 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, 242, CypherParser.RULE_oC_ComparisonExpression);
+ this.enterRule(localctx, 240, CypherParser.RULE_oC_ComparisonExpression);
let _la: number;
try {
let _alt: number;
- this.state = 2176;
+ this.state = 2184;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 352, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 356, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 2128;
+ this.state = 2136;
this.kU_BitwiseOrOperatorExpression();
- this.state = 2138;
+ this.state = 2146;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 344, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 348, this._ctx) ) {
case 1:
{
- this.state = 2130;
+ this.state = 2138;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2129;
+ this.state = 2137;
this.match(CypherParser.SP);
}
}
- this.state = 2132;
+ this.state = 2140;
this.kU_ComparisonOperator();
- this.state = 2134;
+ this.state = 2142;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2133;
+ this.state = 2141;
this.match(CypherParser.SP);
}
}
- this.state = 2136;
+ this.state = 2144;
this.kU_BitwiseOrOperatorExpression();
}
break;
@@ -8689,32 +8726,32 @@ export class CypherParser extends antlr.Parser {
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 2140;
+ this.state = 2148;
this.kU_BitwiseOrOperatorExpression();
{
- this.state = 2142;
+ this.state = 2150;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2141;
+ this.state = 2149;
this.match(CypherParser.SP);
}
}
- this.state = 2144;
+ this.state = 2152;
localctx._INVALID_NOT_EQUAL = this.match(CypherParser.INVALID_NOT_EQUAL);
- this.state = 2146;
+ this.state = 2154;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2145;
+ this.state = 2153;
this.match(CypherParser.SP);
}
}
- this.state = 2148;
+ this.state = 2156;
this.kU_BitwiseOrOperatorExpression();
}
}
@@ -8722,33 +8759,33 @@ export class CypherParser extends antlr.Parser {
case 3:
this.enterOuterAlt(localctx, 3);
{
- this.state = 2152;
+ this.state = 2160;
this.kU_BitwiseOrOperatorExpression();
- this.state = 2154;
+ this.state = 2162;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2153;
+ this.state = 2161;
this.match(CypherParser.SP);
}
}
- this.state = 2156;
+ this.state = 2164;
this.kU_ComparisonOperator();
- this.state = 2158;
+ this.state = 2166;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2157;
+ this.state = 2165;
this.match(CypherParser.SP);
}
}
- this.state = 2160;
+ this.state = 2168;
this.kU_BitwiseOrOperatorExpression();
- this.state = 2170;
+ this.state = 2178;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -8756,29 +8793,29 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 2162;
+ this.state = 2170;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2161;
+ this.state = 2169;
this.match(CypherParser.SP);
}
}
- this.state = 2164;
+ this.state = 2172;
this.kU_ComparisonOperator();
- this.state = 2166;
+ this.state = 2174;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2165;
+ this.state = 2173;
this.match(CypherParser.SP);
}
}
- this.state = 2168;
+ this.state = 2176;
this.kU_BitwiseOrOperatorExpression();
}
}
@@ -8786,9 +8823,9 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 2172;
+ this.state = 2180;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 351, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 355, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
}
break;
@@ -8810,12 +8847,12 @@ export class CypherParser extends antlr.Parser {
}
public kU_ComparisonOperator(): KU_ComparisonOperatorContext {
let localctx: KU_ComparisonOperatorContext = new KU_ComparisonOperatorContext(this._ctx, this.state);
- this.enterRule(localctx, 244, CypherParser.RULE_kU_ComparisonOperator);
+ this.enterRule(localctx, 242, CypherParser.RULE_kU_ComparisonOperator);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2178;
+ this.state = 2186;
_la = this._input.LA(1);
if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 254016) !== 0))) {
this._errHandler.recoverInline(this);
@@ -8842,51 +8879,51 @@ export class CypherParser extends antlr.Parser {
}
public kU_BitwiseOrOperatorExpression(): KU_BitwiseOrOperatorExpressionContext {
let localctx: KU_BitwiseOrOperatorExpressionContext = new KU_BitwiseOrOperatorExpressionContext(this._ctx, this.state);
- this.enterRule(localctx, 246, CypherParser.RULE_kU_BitwiseOrOperatorExpression);
+ this.enterRule(localctx, 244, CypherParser.RULE_kU_BitwiseOrOperatorExpression);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2180;
+ this.state = 2188;
this.kU_BitwiseAndOperatorExpression();
- this.state = 2191;
+ this.state = 2199;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 355, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 359, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2182;
+ this.state = 2190;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2181;
+ this.state = 2189;
this.match(CypherParser.SP);
}
}
- this.state = 2184;
+ this.state = 2192;
this.match(CypherParser.T__10);
- this.state = 2186;
+ this.state = 2194;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2185;
+ this.state = 2193;
this.match(CypherParser.SP);
}
}
- this.state = 2188;
+ this.state = 2196;
this.kU_BitwiseAndOperatorExpression();
}
}
}
- this.state = 2193;
+ this.state = 2201;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 355, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 359, this._ctx);
}
}
}
@@ -8906,51 +8943,51 @@ export class CypherParser extends antlr.Parser {
}
public kU_BitwiseAndOperatorExpression(): KU_BitwiseAndOperatorExpressionContext {
let localctx: KU_BitwiseAndOperatorExpressionContext = new KU_BitwiseAndOperatorExpressionContext(this._ctx, this.state);
- this.enterRule(localctx, 248, CypherParser.RULE_kU_BitwiseAndOperatorExpression);
+ this.enterRule(localctx, 246, CypherParser.RULE_kU_BitwiseAndOperatorExpression);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2194;
+ this.state = 2202;
this.kU_BitShiftOperatorExpression();
- this.state = 2205;
+ this.state = 2213;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 358, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 362, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2196;
+ this.state = 2204;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2195;
+ this.state = 2203;
this.match(CypherParser.SP);
}
}
- this.state = 2198;
+ this.state = 2206;
this.match(CypherParser.T__17);
- this.state = 2200;
+ this.state = 2208;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2199;
+ this.state = 2207;
this.match(CypherParser.SP);
}
}
- this.state = 2202;
+ this.state = 2210;
this.kU_BitShiftOperatorExpression();
}
}
}
- this.state = 2207;
+ this.state = 2215;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 358, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 362, this._ctx);
}
}
}
@@ -8970,51 +9007,51 @@ export class CypherParser extends antlr.Parser {
}
public kU_BitShiftOperatorExpression(): KU_BitShiftOperatorExpressionContext {
let localctx: KU_BitShiftOperatorExpressionContext = new KU_BitShiftOperatorExpressionContext(this._ctx, this.state);
- this.enterRule(localctx, 250, CypherParser.RULE_kU_BitShiftOperatorExpression);
+ this.enterRule(localctx, 248, CypherParser.RULE_kU_BitShiftOperatorExpression);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2208;
+ this.state = 2216;
this.oC_AddOrSubtractExpression();
- this.state = 2220;
+ this.state = 2228;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 361, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 365, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2210;
+ this.state = 2218;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2209;
+ this.state = 2217;
this.match(CypherParser.SP);
}
}
- this.state = 2212;
+ this.state = 2220;
this.kU_BitShiftOperator();
- this.state = 2214;
+ this.state = 2222;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2213;
+ this.state = 2221;
this.match(CypherParser.SP);
}
}
- this.state = 2216;
+ this.state = 2224;
this.oC_AddOrSubtractExpression();
}
}
}
- this.state = 2222;
+ this.state = 2230;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 361, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 365, this._ctx);
}
}
}
@@ -9034,12 +9071,12 @@ export class CypherParser extends antlr.Parser {
}
public kU_BitShiftOperator(): KU_BitShiftOperatorContext {
let localctx: KU_BitShiftOperatorContext = new KU_BitShiftOperatorContext(this._ctx, this.state);
- this.enterRule(localctx, 252, CypherParser.RULE_kU_BitShiftOperator);
+ this.enterRule(localctx, 250, CypherParser.RULE_kU_BitShiftOperator);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2223;
+ this.state = 2231;
_la = this._input.LA(1);
if(!(_la===19 || _la===20)) {
this._errHandler.recoverInline(this);
@@ -9066,51 +9103,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, 254, CypherParser.RULE_oC_AddOrSubtractExpression);
+ this.enterRule(localctx, 252, CypherParser.RULE_oC_AddOrSubtractExpression);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2225;
+ this.state = 2233;
this.oC_MultiplyDivideModuloExpression();
- this.state = 2237;
+ this.state = 2245;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 364, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 368, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2227;
+ this.state = 2235;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2226;
+ this.state = 2234;
this.match(CypherParser.SP);
}
}
- this.state = 2229;
+ this.state = 2237;
this.kU_AddOrSubtractOperator();
- this.state = 2231;
+ this.state = 2239;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2230;
+ this.state = 2238;
this.match(CypherParser.SP);
}
}
- this.state = 2233;
+ this.state = 2241;
this.oC_MultiplyDivideModuloExpression();
}
}
}
- this.state = 2239;
+ this.state = 2247;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 364, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 368, this._ctx);
}
}
}
@@ -9130,14 +9167,14 @@ export class CypherParser extends antlr.Parser {
}
public kU_AddOrSubtractOperator(): KU_AddOrSubtractOperatorContext {
let localctx: KU_AddOrSubtractOperatorContext = new KU_AddOrSubtractOperatorContext(this._ctx, this.state);
- this.enterRule(localctx, 256, CypherParser.RULE_kU_AddOrSubtractOperator);
+ this.enterRule(localctx, 254, CypherParser.RULE_kU_AddOrSubtractOperator);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2240;
+ this.state = 2248;
_la = this._input.LA(1);
- if(!(_la===21 || _la===150)) {
+ if(!(_la===21 || _la===155)) {
this._errHandler.recoverInline(this);
}
else {
@@ -9162,51 +9199,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, 258, CypherParser.RULE_oC_MultiplyDivideModuloExpression);
+ this.enterRule(localctx, 256, CypherParser.RULE_oC_MultiplyDivideModuloExpression);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2242;
+ this.state = 2250;
this.oC_PowerOfExpression();
- this.state = 2254;
+ this.state = 2262;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 367, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 371, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2244;
+ this.state = 2252;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2243;
+ this.state = 2251;
this.match(CypherParser.SP);
}
}
- this.state = 2246;
+ this.state = 2254;
this.kU_MultiplyDivideModuloOperator();
- this.state = 2248;
+ this.state = 2256;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2247;
+ this.state = 2255;
this.match(CypherParser.SP);
}
}
- this.state = 2250;
+ this.state = 2258;
this.oC_PowerOfExpression();
}
}
}
- this.state = 2256;
+ this.state = 2264;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 367, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 371, this._ctx);
}
}
}
@@ -9226,14 +9263,14 @@ export class CypherParser extends antlr.Parser {
}
public kU_MultiplyDivideModuloOperator(): KU_MultiplyDivideModuloOperatorContext {
let localctx: KU_MultiplyDivideModuloOperatorContext = new KU_MultiplyDivideModuloOperatorContext(this._ctx, this.state);
- this.enterRule(localctx, 260, CypherParser.RULE_kU_MultiplyDivideModuloOperator);
+ this.enterRule(localctx, 258, CypherParser.RULE_kU_MultiplyDivideModuloOperator);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2257;
+ this.state = 2265;
_la = this._input.LA(1);
- if(!(_la===22 || _la===23 || _la===147)) {
+ if(!(_la===22 || _la===23 || _la===152)) {
this._errHandler.recoverInline(this);
}
else {
@@ -9258,51 +9295,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, 262, CypherParser.RULE_oC_PowerOfExpression);
+ this.enterRule(localctx, 260, CypherParser.RULE_oC_PowerOfExpression);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2259;
+ this.state = 2267;
this.oC_UnaryAddSubtractOrFactorialExpression();
- this.state = 2270;
+ this.state = 2278;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 370, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 374, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2261;
+ this.state = 2269;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2260;
+ this.state = 2268;
this.match(CypherParser.SP);
}
}
- this.state = 2263;
+ this.state = 2271;
this.match(CypherParser.T__23);
- this.state = 2265;
+ this.state = 2273;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2264;
+ this.state = 2272;
this.match(CypherParser.SP);
}
}
- this.state = 2267;
+ this.state = 2275;
this.oC_UnaryAddSubtractOrFactorialExpression();
}
}
}
- this.state = 2272;
+ this.state = 2280;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 370, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 374, this._ctx);
}
}
}
@@ -9322,53 +9359,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, 264, CypherParser.RULE_oC_UnaryAddSubtractOrFactorialExpression);
+ this.enterRule(localctx, 262, CypherParser.RULE_oC_UnaryAddSubtractOrFactorialExpression);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2279;
+ this.state = 2287;
this._errHandler.sync(this);
_la = this._input.LA(1);
- while (_la===150) {
+ while (_la===155) {
{
{
- this.state = 2273;
+ this.state = 2281;
this.match(CypherParser.MINUS);
- this.state = 2275;
+ this.state = 2283;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2274;
+ this.state = 2282;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 2281;
+ this.state = 2289;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 2282;
+ this.state = 2290;
this.oC_StringListNullOperatorExpression();
- this.state = 2287;
+ this.state = 2295;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 374, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 378, this._ctx) ) {
case 1:
{
- this.state = 2284;
+ this.state = 2292;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2283;
+ this.state = 2291;
this.match(CypherParser.SP);
}
}
- this.state = 2286;
+ this.state = 2294;
this.match(CypherParser.FACTORIAL);
}
break;
@@ -9391,25 +9428,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, 266, CypherParser.RULE_oC_StringListNullOperatorExpression);
+ this.enterRule(localctx, 264, CypherParser.RULE_oC_StringListNullOperatorExpression);
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2289;
- this.oC_PropertyOrLabelsExpression();
this.state = 2297;
+ this.oC_PropertyOrLabelsExpression();
+ this.state = 2305;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 376, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 380, this._ctx) ) {
case 1:
{
- this.state = 2290;
+ this.state = 2298;
this.oC_StringOperatorExpression();
}
break;
case 2:
{
- this.state = 2292;
+ this.state = 2300;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -9417,7 +9454,7 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 2291;
+ this.state = 2299;
this.oC_ListOperatorExpression();
}
}
@@ -9425,15 +9462,15 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 2294;
+ this.state = 2302;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 375, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 379, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
}
break;
case 3:
{
- this.state = 2296;
+ this.state = 2304;
this.oC_NullOperatorExpression();
}
break;
@@ -9456,31 +9493,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, 268, CypherParser.RULE_oC_ListOperatorExpression);
+ this.enterRule(localctx, 266, CypherParser.RULE_oC_ListOperatorExpression);
let _la: number;
try {
- this.state = 2318;
+ this.state = 2326;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 380, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 384, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 2299;
+ this.state = 2307;
this.match(CypherParser.SP);
- this.state = 2300;
+ this.state = 2308;
this.match(CypherParser.IN);
- this.state = 2302;
+ this.state = 2310;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2301;
+ this.state = 2309;
this.match(CypherParser.SP);
}
}
- this.state = 2304;
+ this.state = 2312;
this.oC_PropertyOrLabelsExpression();
}
}
@@ -9489,11 +9526,11 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 2305;
+ this.state = 2313;
this.match(CypherParser.T__6);
- this.state = 2306;
+ this.state = 2314;
this.oC_Expression();
- this.state = 2307;
+ this.state = 2315;
this.match(CypherParser.T__7);
}
}
@@ -9502,31 +9539,31 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 3);
{
{
- this.state = 2309;
+ this.state = 2317;
this.match(CypherParser.T__6);
- this.state = 2311;
+ this.state = 2319;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765995925) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & 2077579423) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 2854685565) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 9741) !== 0)) {
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237024559) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 2077592049) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 1885073439) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 159599313) !== 0)) {
{
- this.state = 2310;
+ this.state = 2318;
this.oC_Expression();
}
}
- this.state = 2313;
+ this.state = 2321;
this.match(CypherParser.COLON);
- this.state = 2315;
+ this.state = 2323;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765995925) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & 2077579423) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 2854685565) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 9741) !== 0)) {
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237024559) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 2077592049) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 1885073439) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 159599313) !== 0)) {
{
- this.state = 2314;
+ this.state = 2322;
this.oC_Expression();
}
}
- this.state = 2317;
+ this.state = 2325;
this.match(CypherParser.T__7);
}
}
@@ -9549,30 +9586,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, 270, CypherParser.RULE_oC_StringOperatorExpression);
+ this.enterRule(localctx, 268, CypherParser.RULE_oC_StringOperatorExpression);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2331;
+ this.state = 2339;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 381, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 385, this._ctx) ) {
case 1:
{
- this.state = 2320;
+ this.state = 2328;
this.oC_RegularExpression();
}
break;
case 2:
{
{
- this.state = 2321;
+ this.state = 2329;
this.match(CypherParser.SP);
- this.state = 2322;
+ this.state = 2330;
this.match(CypherParser.STARTS);
- this.state = 2323;
+ this.state = 2331;
this.match(CypherParser.SP);
- this.state = 2324;
+ this.state = 2332;
this.match(CypherParser.WITH);
}
}
@@ -9580,13 +9617,13 @@ export class CypherParser extends antlr.Parser {
case 3:
{
{
- this.state = 2325;
+ this.state = 2333;
this.match(CypherParser.SP);
- this.state = 2326;
+ this.state = 2334;
this.match(CypherParser.ENDS);
- this.state = 2327;
+ this.state = 2335;
this.match(CypherParser.SP);
- this.state = 2328;
+ this.state = 2336;
this.match(CypherParser.WITH);
}
}
@@ -9594,25 +9631,25 @@ export class CypherParser extends antlr.Parser {
case 4:
{
{
- this.state = 2329;
+ this.state = 2337;
this.match(CypherParser.SP);
- this.state = 2330;
+ this.state = 2338;
this.match(CypherParser.CONTAINS);
}
}
break;
}
- this.state = 2334;
+ this.state = 2342;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2333;
+ this.state = 2341;
this.match(CypherParser.SP);
}
}
- this.state = 2336;
+ this.state = 2344;
this.oC_PropertyOrLabelsExpression();
}
}
@@ -9632,22 +9669,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, 272, CypherParser.RULE_oC_RegularExpression);
+ this.enterRule(localctx, 270, CypherParser.RULE_oC_RegularExpression);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2339;
+ this.state = 2347;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2338;
+ this.state = 2346;
this.match(CypherParser.SP);
}
}
- this.state = 2341;
+ this.state = 2349;
this.match(CypherParser.T__24);
}
}
@@ -9667,22 +9704,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, 274, CypherParser.RULE_oC_NullOperatorExpression);
+ this.enterRule(localctx, 272, CypherParser.RULE_oC_NullOperatorExpression);
try {
- this.state = 2353;
+ this.state = 2361;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 384, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 388, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
{
- this.state = 2343;
+ this.state = 2351;
this.match(CypherParser.SP);
- this.state = 2344;
+ this.state = 2352;
this.match(CypherParser.IS);
- this.state = 2345;
+ this.state = 2353;
this.match(CypherParser.SP);
- this.state = 2346;
+ this.state = 2354;
this.match(CypherParser.NULL);
}
}
@@ -9691,17 +9728,17 @@ export class CypherParser extends antlr.Parser {
this.enterOuterAlt(localctx, 2);
{
{
- this.state = 2347;
+ this.state = 2355;
this.match(CypherParser.SP);
- this.state = 2348;
+ this.state = 2356;
this.match(CypherParser.IS);
- this.state = 2349;
+ this.state = 2357;
this.match(CypherParser.SP);
- this.state = 2350;
+ this.state = 2358;
this.match(CypherParser.NOT);
- this.state = 2351;
+ this.state = 2359;
this.match(CypherParser.SP);
- this.state = 2352;
+ this.state = 2360;
this.match(CypherParser.NULL);
}
}
@@ -9724,39 +9761,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, 276, CypherParser.RULE_oC_PropertyOrLabelsExpression);
+ this.enterRule(localctx, 274, CypherParser.RULE_oC_PropertyOrLabelsExpression);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2355;
+ this.state = 2363;
this.oC_Atom();
- this.state = 2362;
+ this.state = 2370;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 386, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 390, this._ctx);
while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER) {
if (_alt === 1) {
{
{
- this.state = 2357;
+ this.state = 2365;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2356;
+ this.state = 2364;
this.match(CypherParser.SP);
}
}
- this.state = 2359;
+ this.state = 2367;
this.oC_PropertyLookup();
}
}
}
- this.state = 2364;
+ this.state = 2372;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 386, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 390, this._ctx);
}
}
}
@@ -9776,74 +9813,364 @@ 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, 278, CypherParser.RULE_oC_Atom);
+ this.enterRule(localctx, 276, CypherParser.RULE_oC_Atom);
try {
- this.state = 2374;
+ this.state = 2383;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 387, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 391, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 2365;
+ this.state = 2373;
this.oC_Literal();
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 2366;
+ this.state = 2374;
this.oC_Parameter();
}
break;
case 3:
this.enterOuterAlt(localctx, 3);
{
- this.state = 2367;
+ this.state = 2375;
this.oC_CaseExpression();
}
break;
case 4:
this.enterOuterAlt(localctx, 4);
{
- this.state = 2368;
+ this.state = 2376;
this.oC_ParenthesizedExpression();
}
break;
case 5:
this.enterOuterAlt(localctx, 5);
{
- this.state = 2369;
+ this.state = 2377;
this.oC_FunctionInvocation();
}
break;
case 6:
this.enterOuterAlt(localctx, 6);
{
- this.state = 2370;
+ this.state = 2378;
this.oC_PathPatterns();
}
break;
case 7:
this.enterOuterAlt(localctx, 7);
{
- this.state = 2371;
+ this.state = 2379;
this.oC_ExistSubquery();
}
break;
case 8:
this.enterOuterAlt(localctx, 8);
{
- this.state = 2372;
+ this.state = 2380;
this.kU_CountSubquery();
}
break;
case 9:
this.enterOuterAlt(localctx, 9);
{
- this.state = 2373;
+ this.state = 2381;
this.oC_Variable();
}
break;
+ case 10:
+ this.enterOuterAlt(localctx, 10);
+ {
+ this.state = 2382;
+ this.oC_Quantifier();
+ }
+ 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 oC_Quantifier(): OC_QuantifierContext {
+ let localctx: OC_QuantifierContext = new OC_QuantifierContext(this._ctx, this.state);
+ this.enterRule(localctx, 278, CypherParser.RULE_oC_Quantifier);
+ let _la: number;
+ try {
+ this.state = 2441;
+ this._errHandler.sync(this);
+ switch (this._input.LA(1)) {
+ case CypherParser.ALL:
+ this.enterOuterAlt(localctx, 1);
+ {
+ {
+ this.state = 2385;
+ this.match(CypherParser.ALL);
+ this.state = 2387;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2386;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2389;
+ this.match(CypherParser.T__1);
+ this.state = 2391;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2390;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2393;
+ this.oC_FilterExpression();
+ this.state = 2395;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2394;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2397;
+ this.match(CypherParser.T__3);
+ }
+ }
+ break;
+ case CypherParser.ANY:
+ this.enterOuterAlt(localctx, 2);
+ {
+ {
+ this.state = 2399;
+ this.match(CypherParser.ANY);
+ this.state = 2401;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2400;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2403;
+ this.match(CypherParser.T__1);
+ this.state = 2405;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2404;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2407;
+ this.oC_FilterExpression();
+ this.state = 2409;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2408;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2411;
+ this.match(CypherParser.T__3);
+ }
+ }
+ break;
+ case CypherParser.NONE:
+ this.enterOuterAlt(localctx, 3);
+ {
+ {
+ this.state = 2413;
+ this.match(CypherParser.NONE);
+ this.state = 2415;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2414;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2417;
+ this.match(CypherParser.T__1);
+ this.state = 2419;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2418;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2421;
+ this.oC_FilterExpression();
+ this.state = 2423;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2422;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2425;
+ this.match(CypherParser.T__3);
+ }
+ }
+ break;
+ case CypherParser.SINGLE:
+ this.enterOuterAlt(localctx, 4);
+ {
+ {
+ this.state = 2427;
+ this.match(CypherParser.SINGLE);
+ this.state = 2429;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2428;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2431;
+ this.match(CypherParser.T__1);
+ this.state = 2433;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2432;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2435;
+ this.oC_FilterExpression();
+ this.state = 2437;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2436;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2439;
+ this.match(CypherParser.T__3);
+ }
+ }
+ break;
+ default:
+ throw new antlr.NoViableAltException(this);
+ }
+ }
+ 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 oC_FilterExpression(): OC_FilterExpressionContext {
+ let localctx: OC_FilterExpressionContext = new OC_FilterExpressionContext(this._ctx, this.state);
+ this.enterRule(localctx, 280, CypherParser.RULE_oC_FilterExpression);
+ let _la: number;
+ try {
+ this.enterOuterAlt(localctx, 1);
+ {
+ this.state = 2443;
+ this.oC_IdInColl();
+ this.state = 2448;
+ this._errHandler.sync(this);
+ switch ( this._interp.adaptivePredict(this._input, 406, this._ctx) ) {
+ case 1:
+ {
+ this.state = 2445;
+ this._errHandler.sync(this);
+ _la = this._input.LA(1);
+ if (_la===172) {
+ {
+ this.state = 2444;
+ this.match(CypherParser.SP);
+ }
+ }
+
+ this.state = 2447;
+ this.oC_Where();
+ }
+ 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 oC_IdInColl(): OC_IdInCollContext {
+ let localctx: OC_IdInCollContext = new OC_IdInCollContext(this._ctx, this.state);
+ this.enterRule(localctx, 282, CypherParser.RULE_oC_IdInColl);
+ try {
+ this.enterOuterAlt(localctx, 1);
+ {
+ this.state = 2450;
+ this.oC_Variable();
+ this.state = 2451;
+ this.match(CypherParser.SP);
+ this.state = 2452;
+ this.match(CypherParser.IN);
+ this.state = 2453;
+ this.match(CypherParser.SP);
+ this.state = 2454;
+ this.oC_Expression();
}
}
catch (re) {
@@ -9862,23 +10189,23 @@ 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, 280, CypherParser.RULE_oC_Literal);
+ this.enterRule(localctx, 284, CypherParser.RULE_oC_Literal);
try {
- this.state = 2382;
+ this.state = 2462;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.DecimalInteger:
case CypherParser.RegularDecimalReal:
this.enterOuterAlt(localctx, 1);
{
- this.state = 2376;
+ this.state = 2456;
this.oC_NumberLiteral();
}
break;
case CypherParser.StringLiteral:
this.enterOuterAlt(localctx, 2);
{
- this.state = 2377;
+ this.state = 2457;
this.match(CypherParser.StringLiteral);
}
break;
@@ -9886,28 +10213,28 @@ export class CypherParser extends antlr.Parser {
case CypherParser.TRUE:
this.enterOuterAlt(localctx, 3);
{
- this.state = 2378;
+ this.state = 2458;
this.oC_BooleanLiteral();
}
break;
case CypherParser.NULL:
this.enterOuterAlt(localctx, 4);
{
- this.state = 2379;
+ this.state = 2459;
this.match(CypherParser.NULL);
}
break;
case CypherParser.T__6:
this.enterOuterAlt(localctx, 5);
{
- this.state = 2380;
+ this.state = 2460;
this.oC_ListLiteral();
}
break;
case CypherParser.T__8:
this.enterOuterAlt(localctx, 6);
{
- this.state = 2381;
+ this.state = 2461;
this.kU_StructLiteral();
}
break;
@@ -9931,14 +10258,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, 282, CypherParser.RULE_oC_BooleanLiteral);
+ this.enterRule(localctx, 286, CypherParser.RULE_oC_BooleanLiteral);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2384;
+ this.state = 2464;
_la = this._input.LA(1);
- if(!(_la===85 || _la===136)) {
+ if(!(_la===87 || _la===140)) {
this._errHandler.recoverInline(this);
}
else {
@@ -9963,68 +10290,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, 284, CypherParser.RULE_oC_ListLiteral);
+ this.enterRule(localctx, 288, CypherParser.RULE_oC_ListLiteral);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2386;
+ this.state = 2466;
this.match(CypherParser.T__6);
- this.state = 2388;
+ this.state = 2468;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2387;
+ this.state = 2467;
this.match(CypherParser.SP);
}
}
- this.state = 2403;
+ this.state = 2483;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765995925) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & 2077579423) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 2854685565) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 9741) !== 0)) {
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237024559) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 2077592049) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 1885073439) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 159599313) !== 0)) {
{
- this.state = 2390;
+ this.state = 2470;
this.oC_Expression();
- this.state = 2392;
+ this.state = 2472;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2391;
+ this.state = 2471;
this.match(CypherParser.SP);
}
}
- this.state = 2400;
+ this.state = 2480;
this._errHandler.sync(this);
_la = this._input.LA(1);
while (_la===3) {
{
{
- this.state = 2394;
+ this.state = 2474;
this.kU_ListEntry();
- this.state = 2396;
+ this.state = 2476;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2395;
+ this.state = 2475;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 2402;
+ this.state = 2482;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
}
- this.state = 2405;
+ this.state = 2485;
this.match(CypherParser.T__7);
}
}
@@ -10044,29 +10371,29 @@ export class CypherParser extends antlr.Parser {
}
public kU_ListEntry(): KU_ListEntryContext {
let localctx: KU_ListEntryContext = new KU_ListEntryContext(this._ctx, this.state);
- this.enterRule(localctx, 286, CypherParser.RULE_kU_ListEntry);
+ this.enterRule(localctx, 290, CypherParser.RULE_kU_ListEntry);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2407;
+ this.state = 2487;
this.match(CypherParser.T__2);
- this.state = 2409;
+ this.state = 2489;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 394, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 413, this._ctx) ) {
case 1:
{
- this.state = 2408;
+ this.state = 2488;
this.match(CypherParser.SP);
}
break;
}
- this.state = 2412;
+ this.state = 2492;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765995925) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & 2077579423) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 2854685565) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 9741) !== 0)) {
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237024559) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 2077592049) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 1885073439) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 159599313) !== 0)) {
{
- this.state = 2411;
+ this.state = 2491;
this.oC_Expression();
}
}
@@ -10089,72 +10416,72 @@ export class CypherParser extends antlr.Parser {
}
public kU_StructLiteral(): KU_StructLiteralContext {
let localctx: KU_StructLiteralContext = new KU_StructLiteralContext(this._ctx, this.state);
- this.enterRule(localctx, 288, CypherParser.RULE_kU_StructLiteral);
+ this.enterRule(localctx, 292, CypherParser.RULE_kU_StructLiteral);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2414;
+ this.state = 2494;
this.match(CypherParser.T__8);
- this.state = 2416;
+ this.state = 2496;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2415;
+ this.state = 2495;
this.match(CypherParser.SP);
}
}
- this.state = 2418;
+ this.state = 2498;
this.kU_StructField();
- this.state = 2420;
+ this.state = 2500;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2419;
+ this.state = 2499;
this.match(CypherParser.SP);
}
}
- this.state = 2432;
+ this.state = 2512;
this._errHandler.sync(this);
_la = this._input.LA(1);
while (_la===3) {
{
{
- this.state = 2422;
+ this.state = 2502;
this.match(CypherParser.T__2);
- this.state = 2424;
+ this.state = 2504;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2423;
+ this.state = 2503;
this.match(CypherParser.SP);
}
}
- this.state = 2426;
+ this.state = 2506;
this.kU_StructField();
- this.state = 2428;
+ this.state = 2508;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2427;
+ this.state = 2507;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 2434;
+ this.state = 2514;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 2435;
+ this.state = 2515;
this.match(CypherParser.T__9);
}
}
@@ -10174,12 +10501,12 @@ export class CypherParser extends antlr.Parser {
}
public kU_StructField(): KU_StructFieldContext {
let localctx: KU_StructFieldContext = new KU_StructFieldContext(this._ctx, this.state);
- this.enterRule(localctx, 290, CypherParser.RULE_kU_StructField);
+ this.enterRule(localctx, 294, CypherParser.RULE_kU_StructField);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2439;
+ this.state = 2519;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.ADD:
@@ -10209,7 +10536,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -10235,42 +10564,42 @@ export class CypherParser extends antlr.Parser {
case CypherParser.UnescapedSymbolicName:
case CypherParser.EscapedSymbolicName:
{
- this.state = 2437;
+ this.state = 2517;
this.oC_SymbolicName();
}
break;
case CypherParser.StringLiteral:
{
- this.state = 2438;
+ this.state = 2518;
this.match(CypherParser.StringLiteral);
}
break;
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 2442;
+ this.state = 2522;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2441;
+ this.state = 2521;
this.match(CypherParser.SP);
}
}
- this.state = 2444;
+ this.state = 2524;
this.match(CypherParser.COLON);
- this.state = 2446;
+ this.state = 2526;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2445;
+ this.state = 2525;
this.match(CypherParser.SP);
}
}
- this.state = 2448;
+ this.state = 2528;
this.oC_Expression();
}
}
@@ -10290,36 +10619,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, 292, CypherParser.RULE_oC_ParenthesizedExpression);
+ this.enterRule(localctx, 296, CypherParser.RULE_oC_ParenthesizedExpression);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2450;
+ this.state = 2530;
this.match(CypherParser.T__1);
- this.state = 2452;
+ this.state = 2532;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2451;
+ this.state = 2531;
this.match(CypherParser.SP);
}
}
- this.state = 2454;
+ this.state = 2534;
this.oC_Expression();
- this.state = 2456;
+ this.state = 2536;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2455;
+ this.state = 2535;
this.match(CypherParser.SP);
}
}
- this.state = 2458;
+ this.state = 2538;
this.match(CypherParser.T__3);
}
}
@@ -10339,113 +10668,113 @@ 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, 294, CypherParser.RULE_oC_FunctionInvocation);
+ this.enterRule(localctx, 298, CypherParser.RULE_oC_FunctionInvocation);
let _la: number;
try {
- this.state = 2537;
+ this.state = 2617;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 425, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 444, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 2460;
+ this.state = 2540;
this.match(CypherParser.COUNT);
- this.state = 2462;
+ this.state = 2542;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2461;
+ this.state = 2541;
this.match(CypherParser.SP);
}
}
- this.state = 2464;
+ this.state = 2544;
this.match(CypherParser.T__1);
- this.state = 2466;
+ this.state = 2546;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2465;
+ this.state = 2545;
this.match(CypherParser.SP);
}
}
- this.state = 2468;
+ this.state = 2548;
this.match(CypherParser.STAR);
- this.state = 2470;
+ this.state = 2550;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2469;
+ this.state = 2549;
this.match(CypherParser.SP);
}
}
- this.state = 2472;
+ this.state = 2552;
this.match(CypherParser.T__3);
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 2473;
+ this.state = 2553;
this.match(CypherParser.CAST);
- this.state = 2475;
+ this.state = 2555;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2474;
+ this.state = 2554;
this.match(CypherParser.SP);
}
}
- this.state = 2477;
+ this.state = 2557;
this.match(CypherParser.T__1);
- this.state = 2479;
+ this.state = 2559;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2478;
+ this.state = 2558;
this.match(CypherParser.SP);
}
}
- this.state = 2481;
+ this.state = 2561;
this.kU_FunctionParameter();
- this.state = 2483;
+ this.state = 2563;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2482;
+ this.state = 2562;
this.match(CypherParser.SP);
}
}
- this.state = 2495;
+ this.state = 2575;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.AS:
{
{
- this.state = 2485;
+ this.state = 2565;
this.match(CypherParser.AS);
- this.state = 2487;
+ this.state = 2567;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2486;
+ this.state = 2566;
this.match(CypherParser.SP);
}
}
- this.state = 2489;
+ this.state = 2569;
this.kU_DataType(0);
}
}
@@ -10453,19 +10782,19 @@ export class CypherParser extends antlr.Parser {
case CypherParser.T__2:
{
{
- this.state = 2490;
+ this.state = 2570;
this.match(CypherParser.T__2);
- this.state = 2492;
+ this.state = 2572;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2491;
+ this.state = 2571;
this.match(CypherParser.SP);
}
}
- this.state = 2494;
+ this.state = 2574;
this.kU_FunctionParameter();
}
}
@@ -10473,60 +10802,60 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 2498;
+ this.state = 2578;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2497;
+ this.state = 2577;
this.match(CypherParser.SP);
}
}
- this.state = 2500;
+ this.state = 2580;
this.match(CypherParser.T__3);
}
break;
case 3:
this.enterOuterAlt(localctx, 3);
{
- this.state = 2502;
+ this.state = 2582;
this.oC_FunctionName();
- this.state = 2504;
+ this.state = 2584;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2503;
+ this.state = 2583;
this.match(CypherParser.SP);
}
}
- this.state = 2506;
+ this.state = 2586;
this.match(CypherParser.T__1);
- this.state = 2508;
+ this.state = 2588;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2507;
+ this.state = 2587;
this.match(CypherParser.SP);
}
}
- this.state = 2514;
+ this.state = 2594;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===76) {
+ if (_la===78) {
{
- this.state = 2510;
+ this.state = 2590;
this.match(CypherParser.DISTINCT);
- this.state = 2512;
+ this.state = 2592;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2511;
+ this.state = 2591;
this.match(CypherParser.SP);
}
}
@@ -10534,63 +10863,63 @@ export class CypherParser extends antlr.Parser {
}
}
- this.state = 2533;
+ this.state = 2613;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765995925) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & 2077579423) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 2854685565) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 9741) !== 0)) {
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109508) !== 0) || ((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 1237024559) !== 0) || ((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 2077592049) !== 0) || ((((_la - 111)) & ~0x1F) === 0 && ((1 << (_la - 111)) & 1885073439) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 159599313) !== 0)) {
{
- this.state = 2516;
+ this.state = 2596;
this.kU_FunctionParameter();
- this.state = 2518;
+ this.state = 2598;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2517;
+ this.state = 2597;
this.match(CypherParser.SP);
}
}
- this.state = 2530;
+ this.state = 2610;
this._errHandler.sync(this);
_la = this._input.LA(1);
while (_la===3) {
{
{
- this.state = 2520;
+ this.state = 2600;
this.match(CypherParser.T__2);
- this.state = 2522;
+ this.state = 2602;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2521;
+ this.state = 2601;
this.match(CypherParser.SP);
}
}
- this.state = 2524;
+ this.state = 2604;
this.kU_FunctionParameter();
- this.state = 2526;
+ this.state = 2606;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2525;
+ this.state = 2605;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 2532;
+ this.state = 2612;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
}
}
- this.state = 2535;
+ this.state = 2615;
this.match(CypherParser.T__3);
}
break;
@@ -10612,11 +10941,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, 296, CypherParser.RULE_oC_FunctionName);
+ this.enterRule(localctx, 300, CypherParser.RULE_oC_FunctionName);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2539;
+ this.state = 2619;
this.oC_SymbolicName();
}
}
@@ -10636,42 +10965,42 @@ export class CypherParser extends antlr.Parser {
}
public kU_FunctionParameter(): KU_FunctionParameterContext {
let localctx: KU_FunctionParameterContext = new KU_FunctionParameterContext(this._ctx, this.state);
- this.enterRule(localctx, 298, CypherParser.RULE_kU_FunctionParameter);
+ this.enterRule(localctx, 302, CypherParser.RULE_kU_FunctionParameter);
let _la: number;
try {
- this.state = 2554;
+ this.state = 2634;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 429, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 448, this._ctx) ) {
case 1:
this.enterOuterAlt(localctx, 1);
{
- this.state = 2550;
+ this.state = 2630;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 428, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 447, this._ctx) ) {
case 1:
{
- this.state = 2541;
+ this.state = 2621;
this.oC_SymbolicName();
- this.state = 2543;
+ this.state = 2623;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2542;
+ this.state = 2622;
this.match(CypherParser.SP);
}
}
- this.state = 2545;
+ this.state = 2625;
this.match(CypherParser.COLON);
- this.state = 2546;
+ this.state = 2626;
this.match(CypherParser.T__5);
- this.state = 2548;
+ this.state = 2628;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2547;
+ this.state = 2627;
this.match(CypherParser.SP);
}
}
@@ -10679,14 +11008,14 @@ export class CypherParser extends antlr.Parser {
}
break;
}
- this.state = 2552;
+ this.state = 2632;
this.oC_Expression();
}
break;
case 2:
this.enterOuterAlt(localctx, 2);
{
- this.state = 2553;
+ this.state = 2633;
this.kU_LambdaParameter();
}
break;
@@ -10708,45 +11037,45 @@ export class CypherParser extends antlr.Parser {
}
public kU_LambdaParameter(): KU_LambdaParameterContext {
let localctx: KU_LambdaParameterContext = new KU_LambdaParameterContext(this._ctx, this.state);
- this.enterRule(localctx, 300, CypherParser.RULE_kU_LambdaParameter);
+ this.enterRule(localctx, 304, CypherParser.RULE_kU_LambdaParameter);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2556;
+ this.state = 2636;
this.kU_LambdaVars();
- this.state = 2558;
+ this.state = 2638;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2557;
+ this.state = 2637;
this.match(CypherParser.SP);
}
}
- this.state = 2560;
+ this.state = 2640;
this.match(CypherParser.MINUS);
- this.state = 2561;
+ this.state = 2641;
this.match(CypherParser.T__15);
- this.state = 2563;
+ this.state = 2643;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2562;
+ this.state = 2642;
this.match(CypherParser.SP);
}
}
- this.state = 2565;
+ this.state = 2645;
this.oC_Expression();
- this.state = 2567;
+ this.state = 2647;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 432, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 451, this._ctx) ) {
case 1:
{
- this.state = 2566;
+ this.state = 2646;
this.match(CypherParser.SP);
}
break;
@@ -10769,10 +11098,10 @@ export class CypherParser extends antlr.Parser {
}
public kU_LambdaVars(): KU_LambdaVarsContext {
let localctx: KU_LambdaVarsContext = new KU_LambdaVarsContext(this._ctx, this.state);
- this.enterRule(localctx, 302, CypherParser.RULE_kU_LambdaVars);
+ this.enterRule(localctx, 306, CypherParser.RULE_kU_LambdaVars);
let _la: number;
try {
- this.state = 2593;
+ this.state = 2673;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.ADD:
@@ -10802,7 +11131,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -10829,74 +11160,74 @@ export class CypherParser extends antlr.Parser {
case CypherParser.EscapedSymbolicName:
this.enterOuterAlt(localctx, 1);
{
- this.state = 2569;
+ this.state = 2649;
this.oC_SymbolicName();
}
break;
case CypherParser.T__1:
this.enterOuterAlt(localctx, 2);
{
- this.state = 2570;
+ this.state = 2650;
this.match(CypherParser.T__1);
- this.state = 2572;
+ this.state = 2652;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2571;
+ this.state = 2651;
this.match(CypherParser.SP);
}
}
- this.state = 2574;
+ this.state = 2654;
this.oC_SymbolicName();
- this.state = 2576;
+ this.state = 2656;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2575;
+ this.state = 2655;
this.match(CypherParser.SP);
}
}
- this.state = 2588;
+ this.state = 2668;
this._errHandler.sync(this);
_la = this._input.LA(1);
while (_la===3) {
{
{
- this.state = 2578;
+ this.state = 2658;
this.match(CypherParser.T__2);
- this.state = 2580;
+ this.state = 2660;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2579;
+ this.state = 2659;
this.match(CypherParser.SP);
}
}
- this.state = 2582;
+ this.state = 2662;
this.oC_SymbolicName();
- this.state = 2584;
+ this.state = 2664;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2583;
+ this.state = 2663;
this.match(CypherParser.SP);
}
}
}
}
- this.state = 2590;
+ this.state = 2670;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
- this.state = 2591;
+ this.state = 2671;
this.match(CypherParser.T__3);
}
break;
@@ -10920,15 +11251,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, 304, CypherParser.RULE_oC_PathPatterns);
+ this.enterRule(localctx, 308, CypherParser.RULE_oC_PathPatterns);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2595;
+ this.state = 2675;
this.oC_NodePattern();
- this.state = 2600;
+ this.state = 2680;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -10936,17 +11267,17 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 2597;
+ this.state = 2677;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2596;
+ this.state = 2676;
this.match(CypherParser.SP);
}
}
- this.state = 2599;
+ this.state = 2679;
this.oC_PatternElementChain();
}
}
@@ -10954,9 +11285,9 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 2602;
+ this.state = 2682;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 440, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 459, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
}
}
@@ -10976,80 +11307,80 @@ export class CypherParser extends antlr.Parser {
}
public oC_ExistSubquery(): OC_ExistSubqueryContext {
let localctx: OC_ExistSubqueryContext = new OC_ExistSubqueryContext(this._ctx, this.state);
- this.enterRule(localctx, 306, CypherParser.RULE_oC_ExistSubquery);
+ this.enterRule(localctx, 310, CypherParser.RULE_oC_ExistSubquery);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2604;
+ this.state = 2684;
this.match(CypherParser.EXISTS);
- this.state = 2606;
+ this.state = 2686;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2605;
+ this.state = 2685;
this.match(CypherParser.SP);
}
}
- this.state = 2608;
+ this.state = 2688;
this.match(CypherParser.T__8);
- this.state = 2610;
+ this.state = 2690;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2609;
+ this.state = 2689;
this.match(CypherParser.SP);
}
}
- this.state = 2612;
+ this.state = 2692;
this.match(CypherParser.MATCH);
- this.state = 2614;
+ this.state = 2694;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2613;
+ this.state = 2693;
this.match(CypherParser.SP);
}
}
- this.state = 2616;
+ this.state = 2696;
this.oC_Pattern();
- this.state = 2621;
+ this.state = 2701;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 445, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 464, this._ctx) ) {
case 1:
{
- this.state = 2618;
+ this.state = 2698;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2617;
+ this.state = 2697;
this.match(CypherParser.SP);
}
}
- this.state = 2620;
+ this.state = 2700;
this.oC_Where();
}
break;
}
- this.state = 2624;
+ this.state = 2704;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2623;
+ this.state = 2703;
this.match(CypherParser.SP);
}
}
- this.state = 2626;
+ this.state = 2706;
this.match(CypherParser.T__9);
}
}
@@ -11069,80 +11400,80 @@ export class CypherParser extends antlr.Parser {
}
public kU_CountSubquery(): KU_CountSubqueryContext {
let localctx: KU_CountSubqueryContext = new KU_CountSubqueryContext(this._ctx, this.state);
- this.enterRule(localctx, 308, CypherParser.RULE_kU_CountSubquery);
+ this.enterRule(localctx, 312, CypherParser.RULE_kU_CountSubquery);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2628;
+ this.state = 2708;
this.match(CypherParser.COUNT);
- this.state = 2630;
+ this.state = 2710;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2629;
+ this.state = 2709;
this.match(CypherParser.SP);
}
}
- this.state = 2632;
+ this.state = 2712;
this.match(CypherParser.T__8);
- this.state = 2634;
+ this.state = 2714;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2633;
+ this.state = 2713;
this.match(CypherParser.SP);
}
}
- this.state = 2636;
+ this.state = 2716;
this.match(CypherParser.MATCH);
- this.state = 2638;
+ this.state = 2718;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2637;
+ this.state = 2717;
this.match(CypherParser.SP);
}
}
- this.state = 2640;
+ this.state = 2720;
this.oC_Pattern();
- this.state = 2645;
+ this.state = 2725;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 451, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 470, this._ctx) ) {
case 1:
{
- this.state = 2642;
+ this.state = 2722;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2641;
+ this.state = 2721;
this.match(CypherParser.SP);
}
}
- this.state = 2644;
+ this.state = 2724;
this.oC_Where();
}
break;
}
- this.state = 2648;
+ this.state = 2728;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2647;
+ this.state = 2727;
this.match(CypherParser.SP);
}
}
- this.state = 2650;
+ this.state = 2730;
this.match(CypherParser.T__9);
}
}
@@ -11162,24 +11493,24 @@ 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, 310, CypherParser.RULE_oC_PropertyLookup);
+ this.enterRule(localctx, 314, CypherParser.RULE_oC_PropertyLookup);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2652;
+ this.state = 2732;
this.match(CypherParser.T__4);
- this.state = 2654;
+ this.state = 2734;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2653;
+ this.state = 2733;
this.match(CypherParser.SP);
}
}
- this.state = 2658;
+ this.state = 2738;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.ADD:
@@ -11209,7 +11540,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -11235,13 +11568,13 @@ export class CypherParser extends antlr.Parser {
case CypherParser.UnescapedSymbolicName:
case CypherParser.EscapedSymbolicName:
{
- this.state = 2656;
+ this.state = 2736;
this.oC_PropertyKeyName();
}
break;
case CypherParser.STAR:
{
- this.state = 2657;
+ this.state = 2737;
this.match(CypherParser.STAR);
}
break;
@@ -11266,21 +11599,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, 312, CypherParser.RULE_oC_CaseExpression);
+ this.enterRule(localctx, 316, CypherParser.RULE_oC_CaseExpression);
let _la: number;
try {
let _alt: number;
this.enterOuterAlt(localctx, 1);
{
- this.state = 2682;
+ this.state = 2762;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 460, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 479, this._ctx) ) {
case 1:
{
{
- this.state = 2660;
+ this.state = 2740;
this.match(CypherParser.CASE);
- this.state = 2665;
+ this.state = 2745;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -11288,17 +11621,17 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 2662;
+ this.state = 2742;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2661;
+ this.state = 2741;
this.match(CypherParser.SP);
}
}
- this.state = 2664;
+ this.state = 2744;
this.oC_CaseAlternative();
}
}
@@ -11306,9 +11639,9 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 2667;
+ this.state = 2747;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 456, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 475, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
}
}
@@ -11316,21 +11649,21 @@ export class CypherParser extends antlr.Parser {
case 2:
{
{
- this.state = 2669;
+ this.state = 2749;
this.match(CypherParser.CASE);
- this.state = 2671;
+ this.state = 2751;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2670;
+ this.state = 2750;
this.match(CypherParser.SP);
}
}
- this.state = 2673;
+ this.state = 2753;
this.oC_Expression();
- this.state = 2678;
+ this.state = 2758;
this._errHandler.sync(this);
_alt = 1;
do {
@@ -11338,17 +11671,17 @@ export class CypherParser extends antlr.Parser {
case 1:
{
{
- this.state = 2675;
+ this.state = 2755;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2674;
+ this.state = 2754;
this.match(CypherParser.SP);
}
}
- this.state = 2677;
+ this.state = 2757;
this.oC_CaseAlternative();
}
}
@@ -11356,57 +11689,57 @@ export class CypherParser extends antlr.Parser {
default:
throw new antlr.NoViableAltException(this);
}
- this.state = 2680;
+ this.state = 2760;
this._errHandler.sync(this);
- _alt = this._interp.adaptivePredict(this._input, 459, this._ctx);
+ _alt = this._interp.adaptivePredict(this._input, 478, this._ctx);
} while (_alt !== 2 && _alt !== antlr.ATN.INVALID_ALT_NUMBER);
}
}
break;
}
- this.state = 2692;
+ this.state = 2772;
this._errHandler.sync(this);
- switch ( this._interp.adaptivePredict(this._input, 463, this._ctx) ) {
+ switch ( this._interp.adaptivePredict(this._input, 482, this._ctx) ) {
case 1:
{
- this.state = 2685;
+ this.state = 2765;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2684;
+ this.state = 2764;
this.match(CypherParser.SP);
}
}
- this.state = 2687;
+ this.state = 2767;
this.match(CypherParser.ELSE);
- this.state = 2689;
+ this.state = 2769;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2688;
+ this.state = 2768;
this.match(CypherParser.SP);
}
}
- this.state = 2691;
+ this.state = 2771;
this.oC_Expression();
}
break;
}
- this.state = 2695;
+ this.state = 2775;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2694;
+ this.state = 2774;
this.match(CypherParser.SP);
}
}
- this.state = 2697;
+ this.state = 2777;
this.match(CypherParser.END);
}
}
@@ -11426,48 +11759,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, 314, CypherParser.RULE_oC_CaseAlternative);
+ this.enterRule(localctx, 318, CypherParser.RULE_oC_CaseAlternative);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2699;
+ this.state = 2779;
this.match(CypherParser.WHEN);
- this.state = 2701;
+ this.state = 2781;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2700;
+ this.state = 2780;
this.match(CypherParser.SP);
}
}
- this.state = 2703;
+ this.state = 2783;
this.oC_Expression();
- this.state = 2705;
+ this.state = 2785;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2704;
+ this.state = 2784;
this.match(CypherParser.SP);
}
}
- this.state = 2707;
+ this.state = 2787;
this.match(CypherParser.THEN);
- this.state = 2709;
+ this.state = 2789;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2708;
+ this.state = 2788;
this.match(CypherParser.SP);
}
}
- this.state = 2711;
+ this.state = 2791;
this.oC_Expression();
}
}
@@ -11487,11 +11820,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, 316, CypherParser.RULE_oC_Variable);
+ this.enterRule(localctx, 320, CypherParser.RULE_oC_Variable);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2713;
+ this.state = 2793;
this.oC_SymbolicName();
}
}
@@ -11511,22 +11844,22 @@ 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, 318, CypherParser.RULE_oC_NumberLiteral);
+ this.enterRule(localctx, 322, CypherParser.RULE_oC_NumberLiteral);
try {
- this.state = 2717;
+ this.state = 2797;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.RegularDecimalReal:
this.enterOuterAlt(localctx, 1);
{
- this.state = 2715;
+ this.state = 2795;
this.oC_DoubleLiteral();
}
break;
case CypherParser.DecimalInteger:
this.enterOuterAlt(localctx, 2);
{
- this.state = 2716;
+ this.state = 2796;
this.oC_IntegerLiteral();
}
break;
@@ -11550,13 +11883,13 @@ 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, 320, CypherParser.RULE_oC_Parameter);
+ this.enterRule(localctx, 324, CypherParser.RULE_oC_Parameter);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2719;
+ this.state = 2799;
this.match(CypherParser.T__25);
- this.state = 2722;
+ this.state = 2802;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.ADD:
@@ -11586,7 +11919,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -11612,13 +11947,13 @@ export class CypherParser extends antlr.Parser {
case CypherParser.UnescapedSymbolicName:
case CypherParser.EscapedSymbolicName:
{
- this.state = 2720;
+ this.state = 2800;
this.oC_SymbolicName();
}
break;
case CypherParser.DecimalInteger:
{
- this.state = 2721;
+ this.state = 2801;
this.match(CypherParser.DecimalInteger);
}
break;
@@ -11643,24 +11978,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, 322, CypherParser.RULE_oC_PropertyExpression);
+ this.enterRule(localctx, 326, CypherParser.RULE_oC_PropertyExpression);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2724;
+ this.state = 2804;
this.oC_Atom();
- this.state = 2726;
+ this.state = 2806;
this._errHandler.sync(this);
_la = this._input.LA(1);
- if (_la===167) {
+ if (_la===172) {
{
- this.state = 2725;
+ this.state = 2805;
this.match(CypherParser.SP);
}
}
- this.state = 2728;
+ this.state = 2808;
this.oC_PropertyLookup();
}
}
@@ -11680,11 +12015,11 @@ 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, 324, CypherParser.RULE_oC_PropertyKeyName);
+ this.enterRule(localctx, 328, CypherParser.RULE_oC_PropertyKeyName);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2730;
+ this.state = 2810;
this.oC_SchemaName();
}
}
@@ -11704,11 +12039,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, 326, CypherParser.RULE_oC_IntegerLiteral);
+ this.enterRule(localctx, 330, CypherParser.RULE_oC_IntegerLiteral);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2732;
+ this.state = 2812;
this.match(CypherParser.DecimalInteger);
}
}
@@ -11728,11 +12063,11 @@ 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, 328, CypherParser.RULE_oC_DoubleLiteral);
+ this.enterRule(localctx, 332, CypherParser.RULE_oC_DoubleLiteral);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2734;
+ this.state = 2814;
this.match(CypherParser.RegularDecimalReal);
}
}
@@ -11752,11 +12087,11 @@ 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, 330, CypherParser.RULE_oC_SchemaName);
+ this.enterRule(localctx, 334, CypherParser.RULE_oC_SchemaName);
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2736;
+ this.state = 2816;
this.oC_SymbolicName();
}
}
@@ -11776,29 +12111,29 @@ 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, 332, CypherParser.RULE_oC_SymbolicName);
+ this.enterRule(localctx, 336, CypherParser.RULE_oC_SymbolicName);
try {
- this.state = 2743;
+ this.state = 2823;
this._errHandler.sync(this);
switch (this._input.LA(1)) {
case CypherParser.UnescapedSymbolicName:
this.enterOuterAlt(localctx, 1);
{
- this.state = 2738;
+ this.state = 2818;
this.match(CypherParser.UnescapedSymbolicName);
}
break;
case CypherParser.EscapedSymbolicName:
this.enterOuterAlt(localctx, 2);
{
- this.state = 2739;
+ this.state = 2819;
localctx._EscapedSymbolicName = this.match(CypherParser.EscapedSymbolicName);
}
break;
case CypherParser.HexLetter:
this.enterOuterAlt(localctx, 3);
{
- this.state = 2741;
+ this.state = 2821;
this.match(CypherParser.HexLetter);
}
break;
@@ -11829,7 +12164,9 @@ export class CypherParser extends antlr.Parser {
case CypherParser.INCREMENT:
case CypherParser.IS:
case CypherParser.KEY:
+ case CypherParser.LIMIT:
case CypherParser.LOAD:
+ case CypherParser.LOGICAL:
case CypherParser.MATCH:
case CypherParser.MAXVALUE:
case CypherParser.MERGE:
@@ -11853,7 +12190,7 @@ export class CypherParser extends antlr.Parser {
case CypherParser.L_SKIP:
this.enterOuterAlt(localctx, 4);
{
- this.state = 2742;
+ this.state = 2822;
this.kU_NonReservedKeywords();
}
break;
@@ -11877,14 +12214,14 @@ export class CypherParser extends antlr.Parser {
}
public kU_NonReservedKeywords(): KU_NonReservedKeywordsContext {
let localctx: KU_NonReservedKeywordsContext = new KU_NonReservedKeywordsContext(this._ctx, this.state);
- this.enterRule(localctx, 334, CypherParser.RULE_kU_NonReservedKeywords);
+ this.enterRule(localctx, 338, CypherParser.RULE_kU_NonReservedKeywords);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2745;
+ this.state = 2825;
_la = this._input.LA(1);
- if(!(((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 2765989781) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 233483335) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 707070845) !== 0))) {
+ if(!(((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 2765989781) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 467577927) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1378158015) !== 0))) {
this._errHandler.recoverInline(this);
}
else {
@@ -11909,12 +12246,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, 336, CypherParser.RULE_oC_LeftArrowHead);
+ this.enterRule(localctx, 340, CypherParser.RULE_oC_LeftArrowHead);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2747;
+ this.state = 2827;
_la = this._input.LA(1);
if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 2013282304) !== 0))) {
this._errHandler.recoverInline(this);
@@ -11941,12 +12278,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, 338, CypherParser.RULE_oC_RightArrowHead);
+ this.enterRule(localctx, 342, CypherParser.RULE_oC_RightArrowHead);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2749;
+ this.state = 2829;
_la = this._input.LA(1);
if(!(((((_la - 16)) & ~0x1F) === 0 && ((1 << (_la - 16)) & 491521) !== 0))) {
this._errHandler.recoverInline(this);
@@ -11973,14 +12310,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, 340, CypherParser.RULE_oC_Dash);
+ this.enterRule(localctx, 344, CypherParser.RULE_oC_Dash);
let _la: number;
try {
this.enterOuterAlt(localctx, 1);
{
- this.state = 2751;
+ this.state = 2831;
_la = this._input.LA(1);
- if(!(((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 2047) !== 0) || _la===150)) {
+ if(!(((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 2047) !== 0) || _la===155)) {
this._errHandler.recoverInline(this);
}
else {
@@ -12006,9 +12343,9 @@ export class CypherParser extends antlr.Parser {
public override sempred(localctx: antlr.RuleContext, ruleIndex: number, predIndex: number): boolean {
switch (ruleIndex) {
- case 50:
+ case 49:
return this.kU_DataType_sempred(localctx as KU_DataTypeContext, predIndex);
- case 78:
+ case 77:
return this.kU_JoinNode_sempred(localctx as KU_JoinNodeContext, predIndex);
}
return true;
@@ -12031,7 +12368,7 @@ export class CypherParser extends antlr.Parser {
}
public static readonly _serializedATN: number[] = [
- 4,1,170,2754,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,175,2834,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,
@@ -12059,1160 +12396,1198 @@ export class CypherParser extends antlr.Parser {
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,1,0,1,0,3,0,345,8,0,1,0,1,0,3,0,349,8,0,1,0,5,0,352,
- 8,0,10,0,12,0,355,9,0,1,0,3,0,358,8,0,1,0,1,0,1,1,3,1,363,8,1,1,
- 1,3,1,366,8,1,1,1,1,1,3,1,370,8,1,1,1,3,1,373,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,397,8,2,1,3,1,3,1,3,1,3,3,3,403,8,3,1,3,1,3,3,3,407,
- 8,3,1,3,3,3,410,8,3,1,3,1,3,1,3,1,3,3,3,416,8,3,1,3,3,3,419,8,3,
- 1,4,1,4,3,4,423,8,4,1,4,1,4,3,4,427,8,4,1,4,1,4,3,4,431,8,4,1,4,
- 5,4,434,8,4,10,4,12,4,437,9,4,1,4,3,4,440,8,4,1,4,1,4,1,5,1,5,1,
- 5,3,5,447,8,5,1,5,1,5,3,5,451,8,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,459,
- 8,5,1,5,1,5,3,5,463,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,473,
- 8,6,1,6,1,6,3,6,477,8,6,1,6,1,6,3,6,481,8,6,1,6,5,6,484,8,6,10,6,
- 12,6,487,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,499,8,7,
- 1,7,1,7,3,7,503,8,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,511,8,7,1,7,3,7,
- 514,8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,522,8,8,1,8,3,8,525,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,540,
- 8,10,1,10,1,10,1,10,3,10,545,8,10,1,10,1,10,1,10,1,10,3,10,551,8,
- 10,1,10,1,10,3,10,555,8,10,1,10,3,10,558,8,10,1,10,3,10,561,8,10,
- 1,10,1,10,1,11,1,11,3,11,567,8,11,1,11,1,11,3,11,571,8,11,1,11,1,
- 11,1,12,1,12,3,12,577,8,12,1,12,1,12,3,12,581,8,12,1,12,5,12,584,
- 8,12,10,12,12,12,587,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,601,8,15,1,15,1,15,3,15,605,8,15,1,15,1,
- 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,627,8,17,1,17,1,17,3,17,631,8,17,
- 1,17,3,17,634,8,17,1,17,3,17,637,8,17,1,17,3,17,640,8,17,1,17,3,
- 17,643,8,17,1,17,1,17,3,17,647,8,17,1,17,5,17,650,8,17,10,17,12,
- 17,653,9,17,1,17,3,17,656,8,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,
- 1,18,3,18,666,8,18,1,18,1,18,3,18,670,8,18,1,18,5,18,673,8,18,10,
- 18,12,18,676,9,18,1,19,1,19,3,19,680,8,19,1,19,1,19,1,19,3,19,685,
- 8,19,1,19,1,19,1,20,1,20,3,20,691,8,20,1,20,1,20,3,20,695,8,20,1,
- 20,1,20,3,20,699,8,20,1,20,5,20,702,8,20,10,20,12,20,705,9,20,1,
- 20,1,20,1,20,1,20,3,20,711,8,20,1,20,1,20,3,20,715,8,20,1,20,1,20,
- 3,20,719,8,20,1,20,3,20,722,8,20,1,21,1,21,3,21,726,8,21,1,21,1,
- 21,3,21,730,8,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,
- 23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,749,8,23,1,23,1,23,3,
- 23,753,8,23,1,23,1,23,3,23,757,8,23,1,23,1,23,3,23,761,8,23,1,23,
- 1,23,3,23,765,8,23,1,23,1,23,1,23,3,23,770,8,23,1,23,1,23,1,24,1,
- 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,783,8,24,1,24,1,24,3,
- 24,787,8,24,1,24,1,24,3,24,791,8,24,1,24,1,24,3,24,795,8,24,1,24,
- 1,24,3,24,799,8,24,1,24,1,24,3,24,803,8,24,3,24,805,8,24,1,24,1,
- 24,3,24,809,8,24,1,24,1,24,3,24,813,8,24,3,24,815,8,24,1,24,1,24,
- 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,830,
- 8,25,1,25,1,25,3,25,834,8,25,1,25,1,25,3,25,838,8,25,1,25,1,25,3,
- 25,842,8,25,1,25,1,25,3,25,846,8,25,1,25,4,25,849,8,25,11,25,12,
- 25,850,1,25,3,25,854,8,25,1,25,1,25,3,25,858,8,25,1,25,1,25,3,25,
- 862,8,25,3,25,864,8,25,1,25,1,25,3,25,868,8,25,1,25,1,25,3,25,872,
- 8,25,3,25,874,8,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,
- 1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,893,8,27,1,27,1,27,
- 1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,904,8,28,1,28,1,28,1,28,
- 5,28,909,8,28,10,28,12,28,912,9,28,1,29,1,29,1,29,1,29,1,29,1,29,
- 1,29,1,29,1,29,1,29,3,29,924,8,29,1,30,1,30,1,30,1,30,1,30,3,30,
- 931,8,30,1,31,1,31,1,31,1,31,3,31,937,8,31,1,31,3,31,940,8,31,1,
- 31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,3,32,950,8,32,1,32,3,32,953,
- 8,32,1,33,1,33,1,33,1,33,1,33,1,33,3,33,961,8,33,1,33,3,33,964,8,
- 33,1,34,1,34,1,34,1,34,3,34,970,8,34,1,34,3,34,973,8,34,1,34,1,34,
- 1,35,1,35,3,35,979,8,35,1,35,1,35,1,36,1,36,1,36,1,36,1,37,1,37,
- 1,37,1,37,1,37,1,37,1,37,3,37,994,8,37,1,37,1,37,1,38,1,38,1,38,
- 1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,3,39,1010,8,39,1,40,
- 1,40,1,40,1,40,1,40,1,40,1,40,3,40,1019,8,40,1,41,1,41,1,41,1,41,
- 1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,
- 1,44,1,44,1,44,1,44,1,44,1,45,1,45,3,45,1045,8,45,1,45,1,45,3,45,
- 1049,8,45,1,45,5,45,1052,8,45,10,45,12,45,1055,9,45,1,46,1,46,1,
- 46,1,46,1,47,1,47,3,47,1063,8,47,1,47,1,47,3,47,1067,8,47,1,47,5,
- 47,1070,8,47,10,47,12,47,1073,9,47,1,48,1,48,1,48,1,48,1,48,3,48,
- 1080,8,48,1,49,1,49,1,49,1,49,3,49,1086,8,49,1,49,1,49,3,49,1090,
- 8,49,1,49,1,49,3,49,1094,8,49,1,49,1,49,1,50,1,50,1,50,1,50,3,50,
- 1102,8,50,1,50,1,50,3,50,1106,8,50,1,50,1,50,3,50,1110,8,50,1,50,
- 1,50,1,50,1,50,3,50,1116,8,50,1,50,1,50,3,50,1120,8,50,1,50,1,50,
- 3,50,1124,8,50,1,50,1,50,1,50,1,50,3,50,1130,8,50,1,50,1,50,3,50,
- 1134,8,50,1,50,1,50,3,50,1138,8,50,1,50,1,50,3,50,1142,8,50,1,50,
- 1,50,3,50,1146,8,50,1,50,1,50,1,50,1,50,3,50,1152,8,50,1,50,1,50,
- 3,50,1156,8,50,1,50,1,50,3,50,1160,8,50,1,50,1,50,3,50,1164,8,50,
- 1,50,1,50,3,50,1168,8,50,1,50,1,50,3,50,1172,8,50,1,50,1,50,5,50,
- 1176,8,50,10,50,12,50,1179,9,50,1,51,1,51,5,51,1183,8,51,10,51,12,
- 51,1186,9,51,1,52,1,52,3,52,1190,8,52,1,52,1,52,1,53,1,53,3,53,1196,
- 8,53,1,54,1,54,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,
- 1,56,1,56,1,56,1,56,1,56,3,56,1215,8,56,1,57,1,57,3,57,1219,8,57,
- 1,58,1,58,1,58,1,58,1,58,1,58,3,58,1227,8,58,1,59,1,59,1,59,1,59,
- 1,60,1,60,3,60,1235,8,60,3,60,1237,8,60,1,60,1,60,1,61,1,61,1,61,
- 1,61,1,61,1,61,3,61,1247,8,61,1,61,1,61,3,61,1251,8,61,1,61,1,61,
- 3,61,1255,8,61,1,61,1,61,1,62,1,62,3,62,1261,8,62,1,62,1,62,3,62,
- 1265,8,62,1,62,5,62,1268,8,62,10,62,12,62,1271,9,62,1,63,1,63,3,
- 63,1275,8,63,1,63,5,63,1278,8,63,10,63,12,63,1281,9,63,1,63,1,63,
- 3,63,1285,8,63,4,63,1287,8,63,11,63,12,63,1288,1,63,1,63,1,63,3,
- 63,1294,8,63,1,64,1,64,1,64,1,64,3,64,1300,8,64,1,64,1,64,1,64,3,
- 64,1305,8,64,1,64,3,64,1308,8,64,1,65,1,65,3,65,1312,8,65,1,66,1,
- 66,3,66,1316,8,66,5,66,1318,8,66,10,66,12,66,1321,9,66,1,66,1,66,
- 1,66,3,66,1326,8,66,5,66,1328,8,66,10,66,12,66,1331,9,66,1,66,1,
- 66,3,66,1335,8,66,1,66,5,66,1338,8,66,10,66,12,66,1341,9,66,1,66,
- 3,66,1344,8,66,1,66,3,66,1347,8,66,1,66,1,66,3,66,1351,8,66,4,66,
- 1353,8,66,11,66,12,66,1354,1,66,1,66,3,66,1359,8,66,1,67,1,67,3,
- 67,1363,8,67,4,67,1365,8,67,11,67,12,67,1366,1,67,1,67,1,68,1,68,
- 3,68,1373,8,68,5,68,1375,8,68,10,68,12,68,1378,9,68,1,68,1,68,3,
- 68,1382,8,68,5,68,1384,8,68,10,68,12,68,1387,9,68,1,68,1,68,1,69,
- 1,69,1,69,1,69,3,69,1395,8,69,1,70,1,70,1,70,1,70,3,70,1401,8,70,
- 1,71,1,71,1,71,1,71,1,71,1,71,3,71,1409,8,71,1,71,1,71,3,71,1413,
- 8,71,1,71,1,71,3,71,1417,8,71,1,71,1,71,3,71,1421,8,71,1,71,1,71,
- 1,71,1,71,1,71,3,71,1428,8,71,1,71,3,71,1431,8,71,1,71,3,71,1434,
- 8,71,1,71,3,71,1437,8,71,1,72,1,72,3,72,1441,8,72,3,72,1443,8,72,
- 1,72,1,72,1,72,1,72,3,72,1449,8,72,1,72,3,72,1452,8,72,1,73,1,73,
- 3,73,1456,8,73,1,73,1,73,3,73,1460,8,73,1,73,1,73,3,73,1464,8,73,
- 1,73,1,73,3,73,1468,8,73,1,74,1,74,3,74,1472,8,74,1,74,1,74,3,74,
- 1476,8,74,1,74,5,74,1479,8,74,10,74,12,74,1482,9,74,1,75,1,75,1,
- 75,3,75,1487,8,75,1,75,1,75,3,75,1491,8,75,1,76,1,76,3,76,1495,8,
- 76,1,76,1,76,3,76,1499,8,76,1,76,1,76,1,76,3,76,1504,8,76,1,76,1,
- 76,3,76,1508,8,76,1,77,1,77,1,77,1,77,1,78,1,78,1,78,3,78,1517,8,
- 78,1,78,1,78,3,78,1521,8,78,1,78,1,78,1,78,3,78,1526,8,78,1,78,1,
- 78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,4,78,1538,8,78,11,78,
- 12,78,1539,5,78,1542,8,78,10,78,12,78,1545,9,78,1,79,1,79,3,79,1549,
- 8,79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,3,80,1559,8,80,1,80,
- 1,80,1,81,1,81,3,81,1565,8,81,1,81,1,81,1,81,5,81,1570,8,81,10,81,
- 12,81,1573,9,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,
- 3,82,1585,8,82,1,83,1,83,3,83,1589,8,83,1,83,1,83,3,83,1593,8,83,
- 1,83,1,83,3,83,1597,8,83,1,83,5,83,1600,8,83,10,83,12,83,1603,9,
- 83,1,84,1,84,3,84,1607,8,84,1,84,1,84,3,84,1611,8,84,1,84,1,84,1,
- 85,1,85,3,85,1617,8,85,1,85,1,85,3,85,1621,8,85,1,85,1,85,3,85,1625,
- 8,85,1,85,1,85,3,85,1629,8,85,1,85,5,85,1632,8,85,10,85,12,85,1635,
- 9,85,1,86,1,86,1,86,3,86,1640,8,86,1,86,3,86,1643,8,86,1,87,1,87,
- 1,87,1,88,3,88,1649,8,88,1,88,3,88,1652,8,88,1,88,1,88,1,88,1,88,
- 3,88,1658,8,88,1,88,1,88,3,88,1662,8,88,1,88,1,88,3,88,1666,8,88,
- 1,89,1,89,3,89,1670,8,89,1,89,1,89,3,89,1674,8,89,1,89,5,89,1677,
- 8,89,10,89,12,89,1680,9,89,1,89,1,89,3,89,1684,8,89,1,89,1,89,3,
- 89,1688,8,89,1,89,5,89,1691,8,89,10,89,12,89,1694,9,89,3,89,1696,
- 8,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,3,90,1705,8,90,1,91,1,91,
- 1,91,1,91,1,91,1,91,1,91,3,91,1714,8,91,1,91,5,91,1717,8,91,10,91,
- 12,91,1720,9,91,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,94,1,94,
- 3,94,1732,8,94,1,94,3,94,1735,8,94,1,95,1,95,1,95,1,95,1,96,1,96,
- 3,96,1743,8,96,1,96,1,96,3,96,1747,8,96,1,96,5,96,1750,8,96,10,96,
- 12,96,1753,9,96,1,97,1,97,3,97,1757,8,97,1,97,1,97,3,97,1761,8,97,
- 1,97,1,97,1,97,3,97,1766,8,97,1,98,1,98,1,99,1,99,3,99,1772,8,99,
- 1,99,5,99,1775,8,99,10,99,12,99,1778,9,99,1,99,1,99,1,99,1,99,3,
- 99,1784,8,99,1,100,1,100,3,100,1788,8,100,1,100,1,100,3,100,1792,
- 8,100,3,100,1794,8,100,1,100,1,100,3,100,1798,8,100,3,100,1800,8,
- 100,1,100,1,100,3,100,1804,8,100,3,100,1806,8,100,1,100,1,100,1,
- 101,1,101,3,101,1812,8,101,1,101,1,101,1,102,1,102,3,102,1818,8,
- 102,1,102,1,102,3,102,1822,8,102,1,102,3,102,1825,8,102,1,102,3,
- 102,1828,8,102,1,102,1,102,1,102,1,102,3,102,1834,8,102,1,102,3,
- 102,1837,8,102,1,102,3,102,1840,8,102,1,102,1,102,3,102,1844,8,102,
- 1,102,1,102,1,102,1,102,3,102,1850,8,102,1,102,3,102,1853,8,102,
- 1,102,3,102,1856,8,102,1,102,1,102,3,102,1860,8,102,1,103,1,103,
- 3,103,1864,8,103,1,103,1,103,3,103,1868,8,103,3,103,1870,8,103,1,
- 103,1,103,3,103,1874,8,103,3,103,1876,8,103,1,103,1,103,3,103,1880,
- 8,103,3,103,1882,8,103,1,103,1,103,3,103,1886,8,103,3,103,1888,8,
- 103,1,103,1,103,1,104,1,104,3,104,1894,8,104,1,104,1,104,3,104,1898,
- 8,104,1,104,1,104,3,104,1902,8,104,1,104,1,104,3,104,1906,8,104,
- 1,104,1,104,3,104,1910,8,104,1,104,1,104,3,104,1914,8,104,1,104,
- 1,104,3,104,1918,8,104,1,104,1,104,3,104,1922,8,104,5,104,1924,8,
- 104,10,104,12,104,1927,9,104,3,104,1929,8,104,1,104,1,104,1,105,
- 1,105,3,105,1935,8,105,1,105,1,105,3,105,1939,8,105,1,105,1,105,
- 3,105,1943,8,105,1,105,3,105,1946,8,105,1,105,5,105,1949,8,105,10,
- 105,12,105,1952,9,105,1,106,1,106,3,106,1956,8,106,1,106,5,106,1959,
- 8,106,10,106,12,106,1962,9,106,1,107,1,107,3,107,1966,8,107,1,107,
- 1,107,1,108,1,108,3,108,1972,8,108,1,108,1,108,1,108,1,108,3,108,
- 1978,8,108,1,108,3,108,1981,8,108,1,108,3,108,1984,8,108,1,108,3,
- 108,1987,8,108,1,108,1,108,3,108,1991,8,108,1,108,3,108,1994,8,108,
- 1,108,3,108,1997,8,108,1,108,3,108,2000,8,108,1,108,3,108,2003,8,
- 108,1,109,1,109,3,109,2007,8,109,1,109,1,109,3,109,2011,8,109,1,
- 109,1,109,3,109,2015,8,109,1,109,1,109,3,109,2019,8,109,1,109,1,
- 109,3,109,2023,8,109,1,109,1,109,3,109,2027,8,109,3,109,2029,8,109,
- 1,109,3,109,2032,8,109,1,109,1,109,3,109,2036,8,109,1,109,1,109,
- 3,109,2040,8,109,1,109,1,109,3,109,2044,8,109,1,109,1,109,3,109,
- 2048,8,109,3,109,2050,8,109,1,109,1,109,1,110,1,110,3,110,2056,8,
- 110,1,110,3,110,2059,8,110,1,110,3,110,2062,8,110,1,110,1,110,1,
- 111,1,111,3,111,2068,8,111,1,111,3,111,2071,8,111,1,111,3,111,2074,
- 8,111,1,111,1,111,1,112,1,112,1,113,1,113,1,114,1,114,1,115,1,115,
- 1,116,1,116,1,117,1,117,1,117,1,117,1,117,5,117,2093,8,117,10,117,
- 12,117,2096,9,117,1,118,1,118,1,118,1,118,1,118,5,118,2103,8,118,
- 10,118,12,118,2106,9,118,1,119,1,119,1,119,1,119,1,119,5,119,2113,
- 8,119,10,119,12,119,2116,9,119,1,120,1,120,3,120,2120,8,120,5,120,
- 2122,8,120,10,120,12,120,2125,9,120,1,120,1,120,1,121,1,121,3,121,
- 2131,8,121,1,121,1,121,3,121,2135,8,121,1,121,1,121,3,121,2139,8,
- 121,1,121,1,121,3,121,2143,8,121,1,121,1,121,3,121,2147,8,121,1,
- 121,1,121,1,121,1,121,1,121,1,121,3,121,2155,8,121,1,121,1,121,3,
- 121,2159,8,121,1,121,1,121,3,121,2163,8,121,1,121,1,121,3,121,2167,
- 8,121,1,121,1,121,4,121,2171,8,121,11,121,12,121,2172,1,121,1,121,
- 3,121,2177,8,121,1,122,1,122,1,123,1,123,3,123,2183,8,123,1,123,
- 1,123,3,123,2187,8,123,1,123,5,123,2190,8,123,10,123,12,123,2193,
- 9,123,1,124,1,124,3,124,2197,8,124,1,124,1,124,3,124,2201,8,124,
- 1,124,5,124,2204,8,124,10,124,12,124,2207,9,124,1,125,1,125,3,125,
- 2211,8,125,1,125,1,125,3,125,2215,8,125,1,125,1,125,5,125,2219,8,
- 125,10,125,12,125,2222,9,125,1,126,1,126,1,127,1,127,3,127,2228,
- 8,127,1,127,1,127,3,127,2232,8,127,1,127,1,127,5,127,2236,8,127,
- 10,127,12,127,2239,9,127,1,128,1,128,1,129,1,129,3,129,2245,8,129,
- 1,129,1,129,3,129,2249,8,129,1,129,1,129,5,129,2253,8,129,10,129,
- 12,129,2256,9,129,1,130,1,130,1,131,1,131,3,131,2262,8,131,1,131,
- 1,131,3,131,2266,8,131,1,131,5,131,2269,8,131,10,131,12,131,2272,
- 9,131,1,132,1,132,3,132,2276,8,132,5,132,2278,8,132,10,132,12,132,
- 2281,9,132,1,132,1,132,3,132,2285,8,132,1,132,3,132,2288,8,132,1,
- 133,1,133,1,133,4,133,2293,8,133,11,133,12,133,2294,1,133,3,133,
- 2298,8,133,1,134,1,134,1,134,3,134,2303,8,134,1,134,1,134,1,134,
- 1,134,1,134,1,134,1,134,3,134,2312,8,134,1,134,1,134,3,134,2316,
- 8,134,1,134,3,134,2319,8,134,1,135,1,135,1,135,1,135,1,135,1,135,
- 1,135,1,135,1,135,1,135,1,135,3,135,2332,8,135,1,135,3,135,2335,
- 8,135,1,135,1,135,1,136,3,136,2340,8,136,1,136,1,136,1,137,1,137,
- 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,3,137,2354,8,137,
- 1,138,1,138,3,138,2358,8,138,1,138,5,138,2361,8,138,10,138,12,138,
- 2364,9,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,
- 3,139,2375,8,139,1,140,1,140,1,140,1,140,1,140,1,140,3,140,2383,
- 8,140,1,141,1,141,1,142,1,142,3,142,2389,8,142,1,142,1,142,3,142,
- 2393,8,142,1,142,1,142,3,142,2397,8,142,5,142,2399,8,142,10,142,
- 12,142,2402,9,142,3,142,2404,8,142,1,142,1,142,1,143,1,143,3,143,
- 2410,8,143,1,143,3,143,2413,8,143,1,144,1,144,3,144,2417,8,144,1,
- 144,1,144,3,144,2421,8,144,1,144,1,144,3,144,2425,8,144,1,144,1,
- 144,3,144,2429,8,144,5,144,2431,8,144,10,144,12,144,2434,9,144,1,
- 144,1,144,1,145,1,145,3,145,2440,8,145,1,145,3,145,2443,8,145,1,
- 145,1,145,3,145,2447,8,145,1,145,1,145,1,146,1,146,3,146,2453,8,
- 146,1,146,1,146,3,146,2457,8,146,1,146,1,146,1,147,1,147,3,147,2463,
- 8,147,1,147,1,147,3,147,2467,8,147,1,147,1,147,3,147,2471,8,147,
- 1,147,1,147,1,147,3,147,2476,8,147,1,147,1,147,3,147,2480,8,147,
- 1,147,1,147,3,147,2484,8,147,1,147,1,147,3,147,2488,8,147,1,147,
- 1,147,1,147,3,147,2493,8,147,1,147,3,147,2496,8,147,1,147,3,147,
- 2499,8,147,1,147,1,147,1,147,1,147,3,147,2505,8,147,1,147,1,147,
- 3,147,2509,8,147,1,147,1,147,3,147,2513,8,147,3,147,2515,8,147,1,
- 147,1,147,3,147,2519,8,147,1,147,1,147,3,147,2523,8,147,1,147,1,
- 147,3,147,2527,8,147,5,147,2529,8,147,10,147,12,147,2532,9,147,3,
- 147,2534,8,147,1,147,1,147,3,147,2538,8,147,1,148,1,148,1,149,1,
- 149,3,149,2544,8,149,1,149,1,149,1,149,3,149,2549,8,149,3,149,2551,
- 8,149,1,149,1,149,3,149,2555,8,149,1,150,1,150,3,150,2559,8,150,
- 1,150,1,150,1,150,3,150,2564,8,150,1,150,1,150,3,150,2568,8,150,
- 1,151,1,151,1,151,3,151,2573,8,151,1,151,1,151,3,151,2577,8,151,
- 1,151,1,151,3,151,2581,8,151,1,151,1,151,3,151,2585,8,151,5,151,
- 2587,8,151,10,151,12,151,2590,9,151,1,151,1,151,3,151,2594,8,151,
- 1,152,1,152,3,152,2598,8,152,1,152,4,152,2601,8,152,11,152,12,152,
- 2602,1,153,1,153,3,153,2607,8,153,1,153,1,153,3,153,2611,8,153,1,
- 153,1,153,3,153,2615,8,153,1,153,1,153,3,153,2619,8,153,1,153,3,
- 153,2622,8,153,1,153,3,153,2625,8,153,1,153,1,153,1,154,1,154,3,
- 154,2631,8,154,1,154,1,154,3,154,2635,8,154,1,154,1,154,3,154,2639,
- 8,154,1,154,1,154,3,154,2643,8,154,1,154,3,154,2646,8,154,1,154,
- 3,154,2649,8,154,1,154,1,154,1,155,1,155,3,155,2655,8,155,1,155,
- 1,155,3,155,2659,8,155,1,156,1,156,3,156,2663,8,156,1,156,4,156,
- 2666,8,156,11,156,12,156,2667,1,156,1,156,3,156,2672,8,156,1,156,
- 1,156,3,156,2676,8,156,1,156,4,156,2679,8,156,11,156,12,156,2680,
- 3,156,2683,8,156,1,156,3,156,2686,8,156,1,156,1,156,3,156,2690,8,
- 156,1,156,3,156,2693,8,156,1,156,3,156,2696,8,156,1,156,1,156,1,
- 157,1,157,3,157,2702,8,157,1,157,1,157,3,157,2706,8,157,1,157,1,
- 157,3,157,2710,8,157,1,157,1,157,1,158,1,158,1,159,1,159,3,159,2718,
- 8,159,1,160,1,160,1,160,3,160,2723,8,160,1,161,1,161,3,161,2727,
- 8,161,1,161,1,161,1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165,
- 1,166,1,166,1,166,1,166,1,166,3,166,2744,8,166,1,167,1,167,1,168,
- 1,168,1,169,1,169,1,170,1,170,1,170,0,2,100,156,171,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,0,11,3,0,120,120,127,127,132,
- 132,2,0,51,52,73,74,2,0,6,6,13,17,1,0,19,20,2,0,21,21,150,150,2,
- 0,22,23,147,147,2,0,85,85,136,136,30,0,46,46,48,48,50,50,53,56,59,
- 59,61,62,64,66,68,69,72,72,75,75,77,77,82,84,88,88,92,93,95,95,97,
- 97,99,99,101,101,103,106,108,109,119,119,121,125,127,128,130,130,
- 135,135,137,137,140,140,144,144,146,146,148,148,2,0,14,14,27,30,
- 2,0,16,16,31,34,2,0,35,45,150,150,3116,0,342,1,0,0,0,2,362,1,0,0,
- 0,4,396,1,0,0,0,6,398,1,0,0,0,8,420,1,0,0,0,10,462,1,0,0,0,12,464,
- 1,0,0,0,14,494,1,0,0,0,16,515,1,0,0,0,18,526,1,0,0,0,20,532,1,0,
- 0,0,22,564,1,0,0,0,24,574,1,0,0,0,26,588,1,0,0,0,28,592,1,0,0,0,
- 30,596,1,0,0,0,32,608,1,0,0,0,34,620,1,0,0,0,36,663,1,0,0,0,38,677,
- 1,0,0,0,40,721,1,0,0,0,42,723,1,0,0,0,44,733,1,0,0,0,46,739,1,0,
- 0,0,48,773,1,0,0,0,50,818,1,0,0,0,52,877,1,0,0,0,54,885,1,0,0,0,
- 56,896,1,0,0,0,58,913,1,0,0,0,60,930,1,0,0,0,62,932,1,0,0,0,64,952,
- 1,0,0,0,66,963,1,0,0,0,68,965,1,0,0,0,70,978,1,0,0,0,72,982,1,0,
- 0,0,74,986,1,0,0,0,76,997,1,0,0,0,78,1009,1,0,0,0,80,1011,1,0,0,
- 0,82,1020,1,0,0,0,84,1024,1,0,0,0,86,1028,1,0,0,0,88,1034,1,0,0,
- 0,90,1042,1,0,0,0,92,1056,1,0,0,0,94,1060,1,0,0,0,96,1074,1,0,0,
- 0,98,1081,1,0,0,0,100,1171,1,0,0,0,102,1180,1,0,0,0,104,1187,1,0,
- 0,0,106,1195,1,0,0,0,108,1197,1,0,0,0,110,1199,1,0,0,0,112,1214,
- 1,0,0,0,114,1218,1,0,0,0,116,1220,1,0,0,0,118,1228,1,0,0,0,120,1236,
- 1,0,0,0,122,1240,1,0,0,0,124,1258,1,0,0,0,126,1293,1,0,0,0,128,1307,
- 1,0,0,0,130,1311,1,0,0,0,132,1358,1,0,0,0,134,1364,1,0,0,0,136,1376,
- 1,0,0,0,138,1394,1,0,0,0,140,1400,1,0,0,0,142,1402,1,0,0,0,144,1442,
- 1,0,0,0,146,1453,1,0,0,0,148,1469,1,0,0,0,150,1483,1,0,0,0,152,1494,
- 1,0,0,0,154,1509,1,0,0,0,156,1525,1,0,0,0,158,1546,1,0,0,0,160,1556,
- 1,0,0,0,162,1562,1,0,0,0,164,1584,1,0,0,0,166,1586,1,0,0,0,168,1604,
- 1,0,0,0,170,1616,1,0,0,0,172,1636,1,0,0,0,174,1644,1,0,0,0,176,1651,
- 1,0,0,0,178,1695,1,0,0,0,180,1704,1,0,0,0,182,1706,1,0,0,0,184,1721,
- 1,0,0,0,186,1725,1,0,0,0,188,1729,1,0,0,0,190,1736,1,0,0,0,192,1740,
- 1,0,0,0,194,1765,1,0,0,0,196,1767,1,0,0,0,198,1783,1,0,0,0,200,1785,
- 1,0,0,0,202,1809,1,0,0,0,204,1859,1,0,0,0,206,1861,1,0,0,0,208,1891,
- 1,0,0,0,210,1932,1,0,0,0,212,1953,1,0,0,0,214,1963,1,0,0,0,216,1969,
- 1,0,0,0,218,2004,1,0,0,0,220,2053,1,0,0,0,222,2065,1,0,0,0,224,2077,
- 1,0,0,0,226,2079,1,0,0,0,228,2081,1,0,0,0,230,2083,1,0,0,0,232,2085,
- 1,0,0,0,234,2087,1,0,0,0,236,2097,1,0,0,0,238,2107,1,0,0,0,240,2123,
- 1,0,0,0,242,2176,1,0,0,0,244,2178,1,0,0,0,246,2180,1,0,0,0,248,2194,
- 1,0,0,0,250,2208,1,0,0,0,252,2223,1,0,0,0,254,2225,1,0,0,0,256,2240,
- 1,0,0,0,258,2242,1,0,0,0,260,2257,1,0,0,0,262,2259,1,0,0,0,264,2279,
- 1,0,0,0,266,2289,1,0,0,0,268,2318,1,0,0,0,270,2331,1,0,0,0,272,2339,
- 1,0,0,0,274,2353,1,0,0,0,276,2355,1,0,0,0,278,2374,1,0,0,0,280,2382,
- 1,0,0,0,282,2384,1,0,0,0,284,2386,1,0,0,0,286,2407,1,0,0,0,288,2414,
- 1,0,0,0,290,2439,1,0,0,0,292,2450,1,0,0,0,294,2537,1,0,0,0,296,2539,
- 1,0,0,0,298,2554,1,0,0,0,300,2556,1,0,0,0,302,2593,1,0,0,0,304,2595,
- 1,0,0,0,306,2604,1,0,0,0,308,2628,1,0,0,0,310,2652,1,0,0,0,312,2682,
- 1,0,0,0,314,2699,1,0,0,0,316,2713,1,0,0,0,318,2717,1,0,0,0,320,2719,
- 1,0,0,0,322,2724,1,0,0,0,324,2730,1,0,0,0,326,2732,1,0,0,0,328,2734,
- 1,0,0,0,330,2736,1,0,0,0,332,2743,1,0,0,0,334,2745,1,0,0,0,336,2747,
- 1,0,0,0,338,2749,1,0,0,0,340,2751,1,0,0,0,342,353,3,2,1,0,343,345,
- 5,167,0,0,344,343,1,0,0,0,344,345,1,0,0,0,345,346,1,0,0,0,346,348,
- 5,1,0,0,347,349,5,167,0,0,348,347,1,0,0,0,348,349,1,0,0,0,349,350,
- 1,0,0,0,350,352,3,2,1,0,351,344,1,0,0,0,352,355,1,0,0,0,353,351,
- 1,0,0,0,353,354,1,0,0,0,354,357,1,0,0,0,355,353,1,0,0,0,356,358,
- 5,167,0,0,357,356,1,0,0,0,357,358,1,0,0,0,358,359,1,0,0,0,359,360,
- 5,0,0,1,360,1,1,0,0,0,361,363,3,106,53,0,362,361,1,0,0,0,362,363,
- 1,0,0,0,363,365,1,0,0,0,364,366,5,167,0,0,365,364,1,0,0,0,365,366,
- 1,0,0,0,366,367,1,0,0,0,367,372,3,4,2,0,368,370,5,167,0,0,369,368,
- 1,0,0,0,369,370,1,0,0,0,370,371,1,0,0,0,371,373,5,1,0,0,372,369,
- 1,0,0,0,372,373,1,0,0,0,373,3,1,0,0,0,374,397,3,120,60,0,375,397,
- 3,46,23,0,376,397,3,48,24,0,377,397,3,50,25,0,378,397,3,54,27,0,
- 379,397,3,56,28,0,380,397,3,58,29,0,381,397,3,74,37,0,382,397,3,
- 76,38,0,383,397,3,6,3,0,384,397,3,12,6,0,385,397,3,14,7,0,386,397,
- 3,30,15,0,387,397,3,34,17,0,388,397,3,32,16,0,389,397,3,112,56,0,
- 390,397,3,114,57,0,391,397,3,16,8,0,392,397,3,18,9,0,393,397,3,20,
- 10,0,394,397,3,26,13,0,395,397,3,28,14,0,396,374,1,0,0,0,396,375,
- 1,0,0,0,396,376,1,0,0,0,396,377,1,0,0,0,396,378,1,0,0,0,396,379,
- 1,0,0,0,396,380,1,0,0,0,396,381,1,0,0,0,396,382,1,0,0,0,396,383,
- 1,0,0,0,396,384,1,0,0,0,396,385,1,0,0,0,396,386,1,0,0,0,396,387,
- 1,0,0,0,396,388,1,0,0,0,396,389,1,0,0,0,396,390,1,0,0,0,396,391,
- 1,0,0,0,396,392,1,0,0,0,396,393,1,0,0,0,396,394,1,0,0,0,396,395,
- 1,0,0,0,397,5,1,0,0,0,398,399,5,65,0,0,399,400,5,167,0,0,400,409,
- 3,330,165,0,401,403,5,167,0,0,402,401,1,0,0,0,402,403,1,0,0,0,403,
- 404,1,0,0,0,404,406,3,8,4,0,405,407,5,167,0,0,406,405,1,0,0,0,406,
- 407,1,0,0,0,407,410,1,0,0,0,408,410,5,167,0,0,409,402,1,0,0,0,409,
- 408,1,0,0,0,410,411,1,0,0,0,411,412,5,86,0,0,412,413,5,167,0,0,413,
- 418,3,10,5,0,414,416,5,167,0,0,415,414,1,0,0,0,415,416,1,0,0,0,416,
- 417,1,0,0,0,417,419,3,42,21,0,418,415,1,0,0,0,418,419,1,0,0,0,419,
- 7,1,0,0,0,420,422,5,2,0,0,421,423,5,167,0,0,422,421,1,0,0,0,422,
- 423,1,0,0,0,423,424,1,0,0,0,424,435,3,330,165,0,425,427,5,167,0,
- 0,426,425,1,0,0,0,426,427,1,0,0,0,427,428,1,0,0,0,428,430,5,3,0,
- 0,429,431,5,167,0,0,430,429,1,0,0,0,430,431,1,0,0,0,431,432,1,0,
- 0,0,432,434,3,330,165,0,433,426,1,0,0,0,434,437,1,0,0,0,435,433,
- 1,0,0,0,435,436,1,0,0,0,436,439,1,0,0,0,437,435,1,0,0,0,438,440,
- 5,167,0,0,439,438,1,0,0,0,439,440,1,0,0,0,440,441,1,0,0,0,441,442,
- 5,4,0,0,442,9,1,0,0,0,443,463,3,40,20,0,444,446,5,2,0,0,445,447,
- 5,167,0,0,446,445,1,0,0,0,446,447,1,0,0,0,447,448,1,0,0,0,448,450,
- 3,120,60,0,449,451,5,167,0,0,450,449,1,0,0,0,450,451,1,0,0,0,451,
- 452,1,0,0,0,452,453,5,4,0,0,453,463,1,0,0,0,454,463,3,316,158,0,
- 455,456,3,316,158,0,456,458,5,5,0,0,457,459,5,167,0,0,458,457,1,
- 0,0,0,458,459,1,0,0,0,459,460,1,0,0,0,460,461,3,330,165,0,461,463,
- 1,0,0,0,462,443,1,0,0,0,462,444,1,0,0,0,462,454,1,0,0,0,462,455,
- 1,0,0,0,463,11,1,0,0,0,464,465,5,65,0,0,465,466,5,167,0,0,466,467,
- 3,330,165,0,467,468,5,167,0,0,468,469,5,86,0,0,469,470,5,167,0,0,
- 470,472,5,2,0,0,471,473,5,167,0,0,472,471,1,0,0,0,472,473,1,0,0,
- 0,473,474,1,0,0,0,474,485,5,153,0,0,475,477,5,167,0,0,476,475,1,
- 0,0,0,476,477,1,0,0,0,477,478,1,0,0,0,478,480,5,3,0,0,479,481,5,
- 167,0,0,480,479,1,0,0,0,480,481,1,0,0,0,481,482,1,0,0,0,482,484,
- 5,153,0,0,483,476,1,0,0,0,484,487,1,0,0,0,485,483,1,0,0,0,485,486,
- 1,0,0,0,486,488,1,0,0,0,487,485,1,0,0,0,488,489,5,4,0,0,489,490,
- 5,167,0,0,490,491,5,55,0,0,491,492,5,167,0,0,492,493,5,60,0,0,493,
- 13,1,0,0,0,494,495,5,65,0,0,495,496,5,167,0,0,496,498,5,2,0,0,497,
- 499,5,167,0,0,498,497,1,0,0,0,498,499,1,0,0,0,499,500,1,0,0,0,500,
- 502,3,120,60,0,501,503,5,167,0,0,502,501,1,0,0,0,502,503,1,0,0,0,
- 503,504,1,0,0,0,504,505,5,4,0,0,505,506,5,167,0,0,506,507,5,134,
- 0,0,507,508,5,167,0,0,508,513,5,153,0,0,509,511,5,167,0,0,510,509,
- 1,0,0,0,510,511,1,0,0,0,511,512,1,0,0,0,512,514,3,42,21,0,513,510,
- 1,0,0,0,513,514,1,0,0,0,514,15,1,0,0,0,515,516,5,83,0,0,516,517,
- 5,167,0,0,517,518,5,69,0,0,518,519,5,167,0,0,519,524,5,153,0,0,520,
- 522,5,167,0,0,521,520,1,0,0,0,521,522,1,0,0,0,522,523,1,0,0,0,523,
- 525,3,42,21,0,524,521,1,0,0,0,524,525,1,0,0,0,525,17,1,0,0,0,526,
- 527,5,92,0,0,527,528,5,167,0,0,528,529,5,69,0,0,529,530,5,167,0,
- 0,530,531,5,153,0,0,531,19,1,0,0,0,532,533,5,53,0,0,533,534,5,167,
- 0,0,534,539,5,153,0,0,535,536,5,167,0,0,536,537,5,50,0,0,537,538,
- 5,167,0,0,538,540,3,330,165,0,539,535,1,0,0,0,539,540,1,0,0,0,540,
- 541,1,0,0,0,541,542,5,167,0,0,542,544,5,2,0,0,543,545,5,167,0,0,
- 544,543,1,0,0,0,544,545,1,0,0,0,545,546,1,0,0,0,546,547,5,70,0,0,
- 547,548,5,167,0,0,548,557,3,332,166,0,549,551,5,167,0,0,550,549,
- 1,0,0,0,550,551,1,0,0,0,551,552,1,0,0,0,552,554,5,3,0,0,553,555,
- 5,167,0,0,554,553,1,0,0,0,554,555,1,0,0,0,555,556,1,0,0,0,556,558,
- 3,24,12,0,557,550,1,0,0,0,557,558,1,0,0,0,558,560,1,0,0,0,559,561,
- 5,167,0,0,560,559,1,0,0,0,560,561,1,0,0,0,561,562,1,0,0,0,562,563,
- 5,4,0,0,563,21,1,0,0,0,564,566,3,332,166,0,565,567,5,167,0,0,566,
- 565,1,0,0,0,566,567,1,0,0,0,567,568,1,0,0,0,568,570,5,6,0,0,569,
- 571,5,167,0,0,570,569,1,0,0,0,570,571,1,0,0,0,571,572,1,0,0,0,572,
- 573,3,280,140,0,573,23,1,0,0,0,574,585,3,22,11,0,575,577,5,167,0,
- 0,576,575,1,0,0,0,576,577,1,0,0,0,577,578,1,0,0,0,578,580,5,3,0,
- 0,579,581,5,167,0,0,580,579,1,0,0,0,580,581,1,0,0,0,581,582,1,0,
- 0,0,582,584,3,22,11,0,583,576,1,0,0,0,584,587,1,0,0,0,585,583,1,
- 0,0,0,585,586,1,0,0,0,586,25,1,0,0,0,587,585,1,0,0,0,588,589,5,75,
- 0,0,589,590,5,167,0,0,590,591,3,330,165,0,591,27,1,0,0,0,592,593,
- 5,140,0,0,593,594,5,167,0,0,594,595,3,330,165,0,595,29,1,0,0,0,596,
- 597,5,56,0,0,597,598,5,167,0,0,598,600,3,332,166,0,599,601,5,167,
- 0,0,600,599,1,0,0,0,600,601,1,0,0,0,601,602,1,0,0,0,602,604,5,6,
- 0,0,603,605,5,167,0,0,604,603,1,0,0,0,604,605,1,0,0,0,605,606,1,
- 0,0,0,606,607,3,232,116,0,607,31,1,0,0,0,608,609,5,61,0,0,609,610,
- 5,167,0,0,610,611,5,112,0,0,611,612,5,167,0,0,612,613,5,132,0,0,
- 613,614,5,167,0,0,614,615,3,330,165,0,615,616,5,167,0,0,616,617,
- 5,97,0,0,617,618,5,167,0,0,618,619,5,153,0,0,619,33,1,0,0,0,620,
- 621,5,67,0,0,621,622,5,167,0,0,622,623,5,102,0,0,623,624,5,167,0,
- 0,624,626,3,296,148,0,625,627,5,167,0,0,626,625,1,0,0,0,626,627,
- 1,0,0,0,627,628,1,0,0,0,628,630,5,2,0,0,629,631,5,167,0,0,630,629,
- 1,0,0,0,630,631,1,0,0,0,631,633,1,0,0,0,632,634,3,36,18,0,633,632,
- 1,0,0,0,633,634,1,0,0,0,634,636,1,0,0,0,635,637,5,167,0,0,636,635,
- 1,0,0,0,636,637,1,0,0,0,637,639,1,0,0,0,638,640,3,38,19,0,639,638,
- 1,0,0,0,639,640,1,0,0,0,640,651,1,0,0,0,641,643,5,167,0,0,642,641,
- 1,0,0,0,642,643,1,0,0,0,643,644,1,0,0,0,644,646,5,3,0,0,645,647,
- 5,167,0,0,646,645,1,0,0,0,646,647,1,0,0,0,647,648,1,0,0,0,648,650,
- 3,38,19,0,649,642,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,656,5,167,0,0,655,654,
- 1,0,0,0,655,656,1,0,0,0,656,657,1,0,0,0,657,658,5,4,0,0,658,659,
- 5,167,0,0,659,660,5,50,0,0,660,661,5,167,0,0,661,662,3,232,116,0,
- 662,35,1,0,0,0,663,674,3,332,166,0,664,666,5,167,0,0,665,664,1,0,
- 0,0,665,666,1,0,0,0,666,667,1,0,0,0,667,669,5,3,0,0,668,670,5,167,
- 0,0,669,668,1,0,0,0,669,670,1,0,0,0,670,671,1,0,0,0,671,673,3,332,
- 166,0,672,665,1,0,0,0,673,676,1,0,0,0,674,672,1,0,0,0,674,675,1,
- 0,0,0,675,37,1,0,0,0,676,674,1,0,0,0,677,679,3,332,166,0,678,680,
- 5,167,0,0,679,678,1,0,0,0,679,680,1,0,0,0,680,681,1,0,0,0,681,682,
- 5,152,0,0,682,684,5,6,0,0,683,685,5,167,0,0,684,683,1,0,0,0,684,
- 685,1,0,0,0,685,686,1,0,0,0,686,687,3,280,140,0,687,39,1,0,0,0,688,
- 690,5,7,0,0,689,691,5,167,0,0,690,689,1,0,0,0,690,691,1,0,0,0,691,
- 692,1,0,0,0,692,703,5,153,0,0,693,695,5,167,0,0,694,693,1,0,0,0,
- 694,695,1,0,0,0,695,696,1,0,0,0,696,698,5,3,0,0,697,699,5,167,0,
- 0,698,697,1,0,0,0,698,699,1,0,0,0,699,700,1,0,0,0,700,702,5,153,
- 0,0,701,694,1,0,0,0,702,705,1,0,0,0,703,701,1,0,0,0,703,704,1,0,
- 0,0,704,706,1,0,0,0,705,703,1,0,0,0,706,722,5,8,0,0,707,722,5,153,
- 0,0,708,710,5,87,0,0,709,711,5,167,0,0,710,709,1,0,0,0,710,711,1,
- 0,0,0,711,712,1,0,0,0,712,714,5,2,0,0,713,715,5,167,0,0,714,713,
- 1,0,0,0,714,715,1,0,0,0,715,716,1,0,0,0,716,718,5,153,0,0,717,719,
- 5,167,0,0,718,717,1,0,0,0,718,719,1,0,0,0,719,720,1,0,0,0,720,722,
- 5,4,0,0,721,688,1,0,0,0,721,707,1,0,0,0,721,708,1,0,0,0,722,41,1,
- 0,0,0,723,725,5,2,0,0,724,726,5,167,0,0,725,724,1,0,0,0,725,726,
- 1,0,0,0,726,727,1,0,0,0,727,729,3,24,12,0,728,730,5,167,0,0,729,
- 728,1,0,0,0,729,730,1,0,0,0,730,731,1,0,0,0,731,732,5,4,0,0,732,
- 43,1,0,0,0,733,734,5,93,0,0,734,735,5,167,0,0,735,736,5,110,0,0,
- 736,737,5,167,0,0,737,738,5,81,0,0,738,45,1,0,0,0,739,740,5,67,0,
- 0,740,741,5,167,0,0,741,742,5,109,0,0,742,743,5,167,0,0,743,744,
- 5,132,0,0,744,748,5,167,0,0,745,746,3,44,22,0,746,747,5,167,0,0,
- 747,749,1,0,0,0,748,745,1,0,0,0,748,749,1,0,0,0,749,750,1,0,0,0,
- 750,752,3,330,165,0,751,753,5,167,0,0,752,751,1,0,0,0,752,753,1,
- 0,0,0,753,754,1,0,0,0,754,756,5,2,0,0,755,757,5,167,0,0,756,755,
- 1,0,0,0,756,757,1,0,0,0,757,758,1,0,0,0,758,760,3,94,47,0,759,761,
- 5,167,0,0,760,759,1,0,0,0,760,761,1,0,0,0,761,762,1,0,0,0,762,764,
- 5,3,0,0,763,765,5,167,0,0,764,763,1,0,0,0,764,765,1,0,0,0,765,766,
- 1,0,0,0,766,767,3,98,49,0,767,769,1,0,0,0,768,770,5,167,0,0,769,
- 768,1,0,0,0,769,770,1,0,0,0,770,771,1,0,0,0,771,772,5,4,0,0,772,
- 47,1,0,0,0,773,774,5,67,0,0,774,775,5,167,0,0,775,776,5,122,0,0,
- 776,777,5,167,0,0,777,778,5,132,0,0,778,782,5,167,0,0,779,780,3,
- 44,22,0,780,781,5,167,0,0,781,783,1,0,0,0,782,779,1,0,0,0,782,783,
- 1,0,0,0,783,784,1,0,0,0,784,786,3,330,165,0,785,787,5,167,0,0,786,
- 785,1,0,0,0,786,787,1,0,0,0,787,788,1,0,0,0,788,790,5,2,0,0,789,
- 791,5,167,0,0,790,789,1,0,0,0,790,791,1,0,0,0,791,792,1,0,0,0,792,
- 794,3,52,26,0,793,795,5,167,0,0,794,793,1,0,0,0,794,795,1,0,0,0,
- 795,804,1,0,0,0,796,798,5,3,0,0,797,799,5,167,0,0,798,797,1,0,0,
- 0,798,799,1,0,0,0,799,800,1,0,0,0,800,802,3,94,47,0,801,803,5,167,
- 0,0,802,801,1,0,0,0,802,803,1,0,0,0,803,805,1,0,0,0,804,796,1,0,
- 0,0,804,805,1,0,0,0,805,814,1,0,0,0,806,808,5,3,0,0,807,809,5,167,
- 0,0,808,807,1,0,0,0,808,809,1,0,0,0,809,810,1,0,0,0,810,812,3,332,
- 166,0,811,813,5,167,0,0,812,811,1,0,0,0,812,813,1,0,0,0,813,815,
- 1,0,0,0,814,806,1,0,0,0,814,815,1,0,0,0,815,816,1,0,0,0,816,817,
- 5,4,0,0,817,49,1,0,0,0,818,819,5,67,0,0,819,820,5,167,0,0,820,821,
- 5,122,0,0,821,822,5,167,0,0,822,823,5,132,0,0,823,824,5,167,0,0,
- 824,825,5,89,0,0,825,829,5,167,0,0,826,827,3,44,22,0,827,828,5,167,
- 0,0,828,830,1,0,0,0,829,826,1,0,0,0,829,830,1,0,0,0,830,831,1,0,
- 0,0,831,833,3,330,165,0,832,834,5,167,0,0,833,832,1,0,0,0,833,834,
- 1,0,0,0,834,835,1,0,0,0,835,837,5,2,0,0,836,838,5,167,0,0,837,836,
- 1,0,0,0,837,838,1,0,0,0,838,839,1,0,0,0,839,848,3,52,26,0,840,842,
- 5,167,0,0,841,840,1,0,0,0,841,842,1,0,0,0,842,843,1,0,0,0,843,845,
- 5,3,0,0,844,846,5,167,0,0,845,844,1,0,0,0,845,846,1,0,0,0,846,847,
- 1,0,0,0,847,849,3,52,26,0,848,841,1,0,0,0,849,850,1,0,0,0,850,848,
- 1,0,0,0,850,851,1,0,0,0,851,853,1,0,0,0,852,854,5,167,0,0,853,852,
- 1,0,0,0,853,854,1,0,0,0,854,863,1,0,0,0,855,857,5,3,0,0,856,858,
- 5,167,0,0,857,856,1,0,0,0,857,858,1,0,0,0,858,859,1,0,0,0,859,861,
- 3,94,47,0,860,862,5,167,0,0,861,860,1,0,0,0,861,862,1,0,0,0,862,
- 864,1,0,0,0,863,855,1,0,0,0,863,864,1,0,0,0,864,873,1,0,0,0,865,
- 867,5,3,0,0,866,868,5,167,0,0,867,866,1,0,0,0,867,868,1,0,0,0,868,
- 869,1,0,0,0,869,871,3,332,166,0,870,872,5,167,0,0,871,870,1,0,0,
- 0,871,872,1,0,0,0,872,874,1,0,0,0,873,865,1,0,0,0,873,874,1,0,0,
- 0,874,875,1,0,0,0,875,876,5,4,0,0,876,51,1,0,0,0,877,878,5,86,0,
- 0,878,879,5,167,0,0,879,880,3,330,165,0,880,881,5,167,0,0,881,882,
- 5,134,0,0,882,883,5,167,0,0,883,884,3,330,165,0,884,53,1,0,0,0,885,
- 886,5,67,0,0,886,887,5,167,0,0,887,888,5,120,0,0,888,892,5,167,0,
- 0,889,890,3,44,22,0,890,891,5,167,0,0,891,893,1,0,0,0,892,889,1,
- 0,0,0,892,893,1,0,0,0,893,894,1,0,0,0,894,895,3,330,165,0,895,55,
- 1,0,0,0,896,897,5,67,0,0,897,898,5,167,0,0,898,899,5,127,0,0,899,
- 903,5,167,0,0,900,901,3,44,22,0,901,902,5,167,0,0,902,904,1,0,0,
- 0,903,900,1,0,0,0,903,904,1,0,0,0,904,905,1,0,0,0,905,910,3,330,
- 165,0,906,907,5,167,0,0,907,909,3,60,30,0,908,906,1,0,0,0,909,912,
- 1,0,0,0,910,908,1,0,0,0,910,911,1,0,0,0,911,57,1,0,0,0,912,910,1,
- 0,0,0,913,914,5,67,0,0,914,915,5,167,0,0,915,916,5,137,0,0,916,917,
- 5,167,0,0,917,918,3,330,165,0,918,919,5,167,0,0,919,920,5,50,0,0,
- 920,921,5,167,0,0,921,923,3,100,50,0,922,924,5,167,0,0,923,922,1,
- 0,0,0,923,924,1,0,0,0,924,59,1,0,0,0,925,931,3,62,31,0,926,931,3,
- 64,32,0,927,931,3,66,33,0,928,931,3,68,34,0,929,931,3,70,35,0,930,
- 925,1,0,0,0,930,926,1,0,0,0,930,927,1,0,0,0,930,928,1,0,0,0,930,
- 929,1,0,0,0,931,61,1,0,0,0,932,933,5,95,0,0,933,936,5,167,0,0,934,
- 935,5,55,0,0,935,937,5,167,0,0,936,934,1,0,0,0,936,937,1,0,0,0,937,
- 939,1,0,0,0,938,940,5,150,0,0,939,938,1,0,0,0,939,940,1,0,0,0,940,
- 941,1,0,0,0,941,942,3,326,163,0,942,63,1,0,0,0,943,944,5,108,0,0,
- 944,945,5,167,0,0,945,953,5,106,0,0,946,947,5,106,0,0,947,949,5,
- 167,0,0,948,950,5,150,0,0,949,948,1,0,0,0,949,950,1,0,0,0,950,951,
- 1,0,0,0,951,953,3,326,163,0,952,943,1,0,0,0,952,946,1,0,0,0,953,
- 65,1,0,0,0,954,955,5,108,0,0,955,956,5,167,0,0,956,964,5,104,0,0,
- 957,958,5,104,0,0,958,960,5,167,0,0,959,961,5,150,0,0,960,959,1,
- 0,0,0,960,961,1,0,0,0,961,962,1,0,0,0,962,964,3,326,163,0,963,954,
- 1,0,0,0,963,957,1,0,0,0,964,67,1,0,0,0,965,966,5,130,0,0,966,969,
- 5,167,0,0,967,968,5,143,0,0,968,970,5,167,0,0,969,967,1,0,0,0,969,
- 970,1,0,0,0,970,972,1,0,0,0,971,973,5,150,0,0,972,971,1,0,0,0,972,
- 973,1,0,0,0,973,974,1,0,0,0,974,975,3,326,163,0,975,69,1,0,0,0,976,
- 977,5,108,0,0,977,979,5,167,0,0,978,976,1,0,0,0,978,979,1,0,0,0,
- 979,980,1,0,0,0,980,981,5,68,0,0,981,71,1,0,0,0,982,983,5,93,0,0,
- 983,984,5,167,0,0,984,985,5,81,0,0,985,73,1,0,0,0,986,987,5,77,0,
- 0,987,988,5,167,0,0,988,989,7,0,0,0,989,993,5,167,0,0,990,991,3,
- 72,36,0,991,992,5,167,0,0,992,994,1,0,0,0,993,990,1,0,0,0,993,994,
- 1,0,0,0,994,995,1,0,0,0,995,996,3,330,165,0,996,75,1,0,0,0,997,998,
- 5,48,0,0,998,999,5,167,0,0,999,1000,5,132,0,0,1000,1001,5,167,0,
- 0,1001,1002,3,330,165,0,1002,1003,5,167,0,0,1003,1004,3,78,39,0,
- 1004,77,1,0,0,0,1005,1010,3,80,40,0,1006,1010,3,84,42,0,1007,1010,
- 3,86,43,0,1008,1010,3,88,44,0,1009,1005,1,0,0,0,1009,1006,1,0,0,
- 0,1009,1007,1,0,0,0,1009,1008,1,0,0,0,1010,79,1,0,0,0,1011,1012,
- 5,46,0,0,1012,1013,5,167,0,0,1013,1014,3,324,162,0,1014,1015,5,167,
- 0,0,1015,1018,3,100,50,0,1016,1017,5,167,0,0,1017,1019,3,82,41,0,
- 1018,1016,1,0,0,0,1018,1019,1,0,0,0,1019,81,1,0,0,0,1020,1021,5,
- 71,0,0,1021,1022,5,167,0,0,1022,1023,3,232,116,0,1023,83,1,0,0,0,
- 1024,1025,5,77,0,0,1025,1026,5,167,0,0,1026,1027,3,324,162,0,1027,
- 85,1,0,0,0,1028,1029,5,123,0,0,1029,1030,5,167,0,0,1030,1031,5,134,
- 0,0,1031,1032,5,167,0,0,1032,1033,3,330,165,0,1033,87,1,0,0,0,1034,
- 1035,5,123,0,0,1035,1036,5,167,0,0,1036,1037,3,324,162,0,1037,1038,
- 5,167,0,0,1038,1039,5,134,0,0,1039,1040,5,167,0,0,1040,1041,3,324,
- 162,0,1041,89,1,0,0,0,1042,1053,3,92,46,0,1043,1045,5,167,0,0,1044,
- 1043,1,0,0,0,1044,1045,1,0,0,0,1045,1046,1,0,0,0,1046,1048,5,3,0,
- 0,1047,1049,5,167,0,0,1048,1047,1,0,0,0,1048,1049,1,0,0,0,1049,1050,
- 1,0,0,0,1050,1052,3,92,46,0,1051,1044,1,0,0,0,1052,1055,1,0,0,0,
- 1053,1051,1,0,0,0,1053,1054,1,0,0,0,1054,91,1,0,0,0,1055,1053,1,
- 0,0,0,1056,1057,3,324,162,0,1057,1058,5,167,0,0,1058,1059,3,100,
- 50,0,1059,93,1,0,0,0,1060,1071,3,96,48,0,1061,1063,5,167,0,0,1062,
- 1061,1,0,0,0,1062,1063,1,0,0,0,1063,1064,1,0,0,0,1064,1066,5,3,0,
- 0,1065,1067,5,167,0,0,1066,1065,1,0,0,0,1066,1067,1,0,0,0,1067,1068,
- 1,0,0,0,1068,1070,3,96,48,0,1069,1062,1,0,0,0,1070,1073,1,0,0,0,
- 1071,1069,1,0,0,0,1071,1072,1,0,0,0,1072,95,1,0,0,0,1073,1071,1,
- 0,0,0,1074,1075,3,324,162,0,1075,1076,5,167,0,0,1076,1079,3,100,
- 50,0,1077,1078,5,167,0,0,1078,1080,3,82,41,0,1079,1077,1,0,0,0,1079,
- 1080,1,0,0,0,1080,97,1,0,0,0,1081,1082,5,117,0,0,1082,1083,5,167,
- 0,0,1083,1085,5,99,0,0,1084,1086,5,167,0,0,1085,1084,1,0,0,0,1085,
- 1086,1,0,0,0,1086,1087,1,0,0,0,1087,1089,5,2,0,0,1088,1090,5,167,
- 0,0,1089,1088,1,0,0,0,1089,1090,1,0,0,0,1090,1091,1,0,0,0,1091,1093,
- 3,324,162,0,1092,1094,5,167,0,0,1093,1092,1,0,0,0,1093,1094,1,0,
- 0,0,1094,1095,1,0,0,0,1095,1096,5,4,0,0,1096,99,1,0,0,0,1097,1098,
- 6,50,-1,0,1098,1172,3,332,166,0,1099,1101,5,138,0,0,1100,1102,5,
- 167,0,0,1101,1100,1,0,0,0,1101,1102,1,0,0,0,1102,1103,1,0,0,0,1103,
- 1105,5,2,0,0,1104,1106,5,167,0,0,1105,1104,1,0,0,0,1105,1106,1,0,
- 0,0,1106,1107,1,0,0,0,1107,1109,3,90,45,0,1108,1110,5,167,0,0,1109,
- 1108,1,0,0,0,1109,1110,1,0,0,0,1110,1111,1,0,0,0,1111,1112,5,4,0,
- 0,1112,1172,1,0,0,0,1113,1115,3,332,166,0,1114,1116,5,167,0,0,1115,
- 1114,1,0,0,0,1115,1116,1,0,0,0,1116,1117,1,0,0,0,1117,1119,5,2,0,
- 0,1118,1120,5,167,0,0,1119,1118,1,0,0,0,1119,1120,1,0,0,0,1120,1121,
- 1,0,0,0,1121,1123,3,90,45,0,1122,1124,5,167,0,0,1123,1122,1,0,0,
- 0,1123,1124,1,0,0,0,1124,1125,1,0,0,0,1125,1126,5,4,0,0,1126,1172,
- 1,0,0,0,1127,1129,3,332,166,0,1128,1130,5,167,0,0,1129,1128,1,0,
- 0,0,1129,1130,1,0,0,0,1130,1131,1,0,0,0,1131,1133,5,2,0,0,1132,1134,
- 5,167,0,0,1133,1132,1,0,0,0,1133,1134,1,0,0,0,1134,1135,1,0,0,0,
- 1135,1137,3,100,50,0,1136,1138,5,167,0,0,1137,1136,1,0,0,0,1137,
- 1138,1,0,0,0,1138,1139,1,0,0,0,1139,1141,5,3,0,0,1140,1142,5,167,
- 0,0,1141,1140,1,0,0,0,1141,1142,1,0,0,0,1142,1143,1,0,0,0,1143,1145,
- 3,100,50,0,1144,1146,5,167,0,0,1145,1144,1,0,0,0,1145,1146,1,0,0,
- 0,1146,1147,1,0,0,0,1147,1148,5,4,0,0,1148,1172,1,0,0,0,1149,1151,
- 5,146,0,0,1150,1152,5,167,0,0,1151,1150,1,0,0,0,1151,1152,1,0,0,
- 0,1152,1153,1,0,0,0,1153,1155,5,2,0,0,1154,1156,5,167,0,0,1155,1154,
- 1,0,0,0,1155,1156,1,0,0,0,1156,1157,1,0,0,0,1157,1159,3,326,163,
- 0,1158,1160,5,167,0,0,1159,1158,1,0,0,0,1159,1160,1,0,0,0,1160,1161,
- 1,0,0,0,1161,1163,5,3,0,0,1162,1164,5,167,0,0,1163,1162,1,0,0,0,
- 1163,1164,1,0,0,0,1164,1165,1,0,0,0,1165,1167,3,326,163,0,1166,1168,
- 5,167,0,0,1167,1166,1,0,0,0,1167,1168,1,0,0,0,1168,1169,1,0,0,0,
- 1169,1170,5,4,0,0,1170,1172,1,0,0,0,1171,1097,1,0,0,0,1171,1099,
- 1,0,0,0,1171,1113,1,0,0,0,1171,1127,1,0,0,0,1171,1149,1,0,0,0,1172,
- 1177,1,0,0,0,1173,1174,10,5,0,0,1174,1176,3,102,51,0,1175,1173,1,
- 0,0,0,1176,1179,1,0,0,0,1177,1175,1,0,0,0,1177,1178,1,0,0,0,1178,
- 101,1,0,0,0,1179,1177,1,0,0,0,1180,1184,3,104,52,0,1181,1183,3,104,
- 52,0,1182,1181,1,0,0,0,1183,1186,1,0,0,0,1184,1182,1,0,0,0,1184,
- 1185,1,0,0,0,1185,103,1,0,0,0,1186,1184,1,0,0,0,1187,1189,5,7,0,
- 0,1188,1190,3,326,163,0,1189,1188,1,0,0,0,1189,1190,1,0,0,0,1190,
- 1191,1,0,0,0,1191,1192,5,8,0,0,1192,105,1,0,0,0,1193,1196,3,108,
- 54,0,1194,1196,3,110,55,0,1195,1193,1,0,0,0,1195,1194,1,0,0,0,1196,
- 107,1,0,0,0,1197,1198,5,82,0,0,1198,109,1,0,0,0,1199,1200,5,118,
- 0,0,1200,111,1,0,0,0,1201,1202,5,54,0,0,1202,1203,5,167,0,0,1203,
- 1215,5,135,0,0,1204,1205,5,54,0,0,1205,1206,5,167,0,0,1206,1207,
- 5,135,0,0,1207,1208,5,167,0,0,1208,1209,5,121,0,0,1209,1210,5,167,
- 0,0,1210,1215,5,113,0,0,1211,1215,5,62,0,0,1212,1215,5,125,0,0,1213,
- 1215,5,59,0,0,1214,1201,1,0,0,0,1214,1204,1,0,0,0,1214,1211,1,0,
- 0,0,1214,1212,1,0,0,0,1214,1213,1,0,0,0,1215,113,1,0,0,0,1216,1219,
- 3,116,58,0,1217,1219,3,118,59,0,1218,1216,1,0,0,0,1218,1217,1,0,
- 0,0,1219,115,1,0,0,0,1220,1221,5,101,0,0,1221,1222,5,167,0,0,1222,
- 1223,5,84,0,0,1223,1226,5,167,0,0,1224,1227,5,153,0,0,1225,1227,
- 3,316,158,0,1226,1224,1,0,0,0,1226,1225,1,0,0,0,1227,117,1,0,0,0,
- 1228,1229,5,96,0,0,1229,1230,5,167,0,0,1230,1231,3,316,158,0,1231,
- 119,1,0,0,0,1232,1234,3,122,61,0,1233,1235,5,167,0,0,1234,1233,1,
- 0,0,0,1234,1235,1,0,0,0,1235,1237,1,0,0,0,1236,1232,1,0,0,0,1236,
- 1237,1,0,0,0,1237,1238,1,0,0,0,1238,1239,3,126,63,0,1239,121,1,0,
- 0,0,1240,1241,5,119,0,0,1241,1242,5,167,0,0,1242,1243,5,88,0,0,1243,
- 1244,5,167,0,0,1244,1246,3,330,165,0,1245,1247,5,167,0,0,1246,1245,
- 1,0,0,0,1246,1247,1,0,0,0,1247,1248,1,0,0,0,1248,1250,5,2,0,0,1249,
- 1251,5,167,0,0,1250,1249,1,0,0,0,1250,1251,1,0,0,0,1251,1252,1,0,
- 0,0,1252,1254,3,124,62,0,1253,1255,5,167,0,0,1254,1253,1,0,0,0,1254,
- 1255,1,0,0,0,1255,1256,1,0,0,0,1256,1257,5,4,0,0,1257,123,1,0,0,
- 0,1258,1269,3,146,73,0,1259,1261,5,167,0,0,1260,1259,1,0,0,0,1260,
- 1261,1,0,0,0,1261,1262,1,0,0,0,1262,1264,5,3,0,0,1263,1265,5,167,
- 0,0,1264,1263,1,0,0,0,1264,1265,1,0,0,0,1265,1266,1,0,0,0,1266,1268,
- 3,146,73,0,1267,1260,1,0,0,0,1268,1271,1,0,0,0,1269,1267,1,0,0,0,
- 1269,1270,1,0,0,0,1270,125,1,0,0,0,1271,1269,1,0,0,0,1272,1279,3,
- 130,65,0,1273,1275,5,167,0,0,1274,1273,1,0,0,0,1274,1275,1,0,0,0,
- 1275,1276,1,0,0,0,1276,1278,3,128,64,0,1277,1274,1,0,0,0,1278,1281,
- 1,0,0,0,1279,1277,1,0,0,0,1279,1280,1,0,0,0,1280,1294,1,0,0,0,1281,
- 1279,1,0,0,0,1282,1284,3,174,87,0,1283,1285,5,167,0,0,1284,1283,
- 1,0,0,0,1284,1285,1,0,0,0,1285,1287,1,0,0,0,1286,1282,1,0,0,0,1287,
- 1288,1,0,0,0,1288,1286,1,0,0,0,1288,1289,1,0,0,0,1289,1290,1,0,0,
- 0,1290,1291,3,130,65,0,1291,1292,6,63,-1,0,1292,1294,1,0,0,0,1293,
- 1272,1,0,0,0,1293,1286,1,0,0,0,1294,127,1,0,0,0,1295,1296,5,138,
- 0,0,1296,1297,5,167,0,0,1297,1299,5,47,0,0,1298,1300,5,167,0,0,1299,
- 1298,1,0,0,0,1299,1300,1,0,0,0,1300,1301,1,0,0,0,1301,1308,3,130,
- 65,0,1302,1304,5,138,0,0,1303,1305,5,167,0,0,1304,1303,1,0,0,0,1304,
- 1305,1,0,0,0,1305,1306,1,0,0,0,1306,1308,3,130,65,0,1307,1295,1,
- 0,0,0,1307,1302,1,0,0,0,1308,129,1,0,0,0,1309,1312,3,132,66,0,1310,
- 1312,3,134,67,0,1311,1309,1,0,0,0,1311,1310,1,0,0,0,1312,131,1,0,
- 0,0,1313,1315,3,140,70,0,1314,1316,5,167,0,0,1315,1314,1,0,0,0,1315,
- 1316,1,0,0,0,1316,1318,1,0,0,0,1317,1313,1,0,0,0,1318,1321,1,0,0,
- 0,1319,1317,1,0,0,0,1319,1320,1,0,0,0,1320,1322,1,0,0,0,1321,1319,
- 1,0,0,0,1322,1359,3,174,87,0,1323,1325,3,140,70,0,1324,1326,5,167,
- 0,0,1325,1324,1,0,0,0,1325,1326,1,0,0,0,1326,1328,1,0,0,0,1327,1323,
- 1,0,0,0,1328,1331,1,0,0,0,1329,1327,1,0,0,0,1329,1330,1,0,0,0,1330,
- 1332,1,0,0,0,1331,1329,1,0,0,0,1332,1339,3,138,69,0,1333,1335,5,
- 167,0,0,1334,1333,1,0,0,0,1334,1335,1,0,0,0,1335,1336,1,0,0,0,1336,
- 1338,3,138,69,0,1337,1334,1,0,0,0,1338,1341,1,0,0,0,1339,1337,1,
- 0,0,0,1339,1340,1,0,0,0,1340,1346,1,0,0,0,1341,1339,1,0,0,0,1342,
- 1344,5,167,0,0,1343,1342,1,0,0,0,1343,1344,1,0,0,0,1344,1345,1,0,
- 0,0,1345,1347,3,174,87,0,1346,1343,1,0,0,0,1346,1347,1,0,0,0,1347,
- 1359,1,0,0,0,1348,1350,3,140,70,0,1349,1351,5,167,0,0,1350,1349,
- 1,0,0,0,1350,1351,1,0,0,0,1351,1353,1,0,0,0,1352,1348,1,0,0,0,1353,
- 1354,1,0,0,0,1354,1352,1,0,0,0,1354,1355,1,0,0,0,1355,1356,1,0,0,
- 0,1356,1357,6,66,-1,0,1357,1359,1,0,0,0,1358,1319,1,0,0,0,1358,1329,
- 1,0,0,0,1358,1352,1,0,0,0,1359,133,1,0,0,0,1360,1362,3,136,68,0,
- 1361,1363,5,167,0,0,1362,1361,1,0,0,0,1362,1363,1,0,0,0,1363,1365,
- 1,0,0,0,1364,1360,1,0,0,0,1365,1366,1,0,0,0,1366,1364,1,0,0,0,1366,
- 1367,1,0,0,0,1367,1368,1,0,0,0,1368,1369,3,132,66,0,1369,135,1,0,
- 0,0,1370,1372,3,140,70,0,1371,1373,5,167,0,0,1372,1371,1,0,0,0,1372,
- 1373,1,0,0,0,1373,1375,1,0,0,0,1374,1370,1,0,0,0,1375,1378,1,0,0,
- 0,1376,1374,1,0,0,0,1376,1377,1,0,0,0,1377,1385,1,0,0,0,1378,1376,
- 1,0,0,0,1379,1381,3,138,69,0,1380,1382,5,167,0,0,1381,1380,1,0,0,
- 0,1381,1382,1,0,0,0,1382,1384,1,0,0,0,1383,1379,1,0,0,0,1384,1387,
- 1,0,0,0,1385,1383,1,0,0,0,1385,1386,1,0,0,0,1386,1388,1,0,0,0,1387,
- 1385,1,0,0,0,1388,1389,3,172,86,0,1389,137,1,0,0,0,1390,1395,3,160,
- 80,0,1391,1395,3,162,81,0,1392,1395,3,166,83,0,1393,1395,3,170,85,
- 0,1394,1390,1,0,0,0,1394,1391,1,0,0,0,1394,1392,1,0,0,0,1394,1393,
- 1,0,0,0,1395,139,1,0,0,0,1396,1401,3,152,76,0,1397,1401,3,158,79,
- 0,1398,1401,3,144,72,0,1399,1401,3,142,71,0,1400,1396,1,0,0,0,1400,
- 1397,1,0,0,0,1400,1398,1,0,0,0,1400,1399,1,0,0,0,1401,141,1,0,0,
- 0,1402,1420,5,101,0,0,1403,1404,5,167,0,0,1404,1405,5,143,0,0,1405,
- 1406,5,167,0,0,1406,1408,5,90,0,0,1407,1409,5,167,0,0,1408,1407,
- 1,0,0,0,1408,1409,1,0,0,0,1409,1410,1,0,0,0,1410,1412,5,2,0,0,1411,
- 1413,5,167,0,0,1412,1411,1,0,0,0,1412,1413,1,0,0,0,1413,1414,1,0,
- 0,0,1414,1416,3,90,45,0,1415,1417,5,167,0,0,1416,1415,1,0,0,0,1416,
- 1417,1,0,0,0,1417,1418,1,0,0,0,1418,1419,5,4,0,0,1419,1421,1,0,0,
- 0,1420,1403,1,0,0,0,1420,1421,1,0,0,0,1421,1422,1,0,0,0,1422,1423,
- 5,167,0,0,1423,1424,5,86,0,0,1424,1425,5,167,0,0,1425,1430,3,10,
- 5,0,1426,1428,5,167,0,0,1427,1426,1,0,0,0,1427,1428,1,0,0,0,1428,
- 1429,1,0,0,0,1429,1431,3,42,21,0,1430,1427,1,0,0,0,1430,1431,1,0,
- 0,0,1431,1436,1,0,0,0,1432,1434,5,167,0,0,1433,1432,1,0,0,0,1433,
- 1434,1,0,0,0,1434,1435,1,0,0,0,1435,1437,3,190,95,0,1436,1433,1,
- 0,0,0,1436,1437,1,0,0,0,1437,143,1,0,0,0,1438,1440,3,122,61,0,1439,
- 1441,5,167,0,0,1440,1439,1,0,0,0,1440,1441,1,0,0,0,1441,1443,1,0,
- 0,0,1442,1438,1,0,0,0,1442,1443,1,0,0,0,1443,1444,1,0,0,0,1444,1445,
- 5,56,0,0,1445,1446,5,167,0,0,1446,1451,3,294,147,0,1447,1449,5,167,
- 0,0,1448,1447,1,0,0,0,1448,1449,1,0,0,0,1449,1450,1,0,0,0,1450,1452,
- 3,190,95,0,1451,1448,1,0,0,0,1451,1452,1,0,0,0,1452,145,1,0,0,0,
- 1453,1467,3,330,165,0,1454,1456,5,167,0,0,1455,1454,1,0,0,0,1455,
- 1456,1,0,0,0,1456,1457,1,0,0,0,1457,1459,5,9,0,0,1458,1460,5,167,
- 0,0,1459,1458,1,0,0,0,1459,1460,1,0,0,0,1460,1461,1,0,0,0,1461,1463,
- 3,148,74,0,1462,1464,5,167,0,0,1463,1462,1,0,0,0,1463,1464,1,0,0,
- 0,1464,1465,1,0,0,0,1465,1466,5,10,0,0,1466,1468,1,0,0,0,1467,1455,
- 1,0,0,0,1467,1468,1,0,0,0,1468,147,1,0,0,0,1469,1480,3,150,75,0,
- 1470,1472,5,167,0,0,1471,1470,1,0,0,0,1471,1472,1,0,0,0,1472,1473,
- 1,0,0,0,1473,1475,5,3,0,0,1474,1476,5,167,0,0,1475,1474,1,0,0,0,
- 1475,1476,1,0,0,0,1476,1477,1,0,0,0,1477,1479,3,150,75,0,1478,1471,
- 1,0,0,0,1479,1482,1,0,0,0,1480,1478,1,0,0,0,1480,1481,1,0,0,0,1481,
- 149,1,0,0,0,1482,1480,1,0,0,0,1483,1486,3,324,162,0,1484,1485,5,
- 167,0,0,1485,1487,3,82,41,0,1486,1484,1,0,0,0,1486,1487,1,0,0,0,
- 1487,1490,1,0,0,0,1488,1489,5,167,0,0,1489,1491,3,190,95,0,1490,
- 1488,1,0,0,0,1490,1491,1,0,0,0,1491,151,1,0,0,0,1492,1493,5,114,
- 0,0,1493,1495,5,167,0,0,1494,1492,1,0,0,0,1494,1495,1,0,0,0,1495,
- 1496,1,0,0,0,1496,1498,5,103,0,0,1497,1499,5,167,0,0,1498,1497,1,
- 0,0,0,1498,1499,1,0,0,0,1499,1500,1,0,0,0,1500,1503,3,192,96,0,1501,
- 1502,5,167,0,0,1502,1504,3,190,95,0,1503,1501,1,0,0,0,1503,1504,
- 1,0,0,0,1504,1507,1,0,0,0,1505,1506,5,167,0,0,1506,1508,3,154,77,
- 0,1507,1505,1,0,0,0,1507,1508,1,0,0,0,1508,153,1,0,0,0,1509,1510,
- 5,91,0,0,1510,1511,5,167,0,0,1511,1512,3,156,78,0,1512,155,1,0,0,
- 0,1513,1514,6,78,-1,0,1514,1516,5,2,0,0,1515,1517,5,167,0,0,1516,
- 1515,1,0,0,0,1516,1517,1,0,0,0,1517,1518,1,0,0,0,1518,1520,3,156,
- 78,0,1519,1521,5,167,0,0,1520,1519,1,0,0,0,1520,1521,1,0,0,0,1521,
- 1522,1,0,0,0,1522,1523,5,4,0,0,1523,1526,1,0,0,0,1524,1526,3,330,
- 165,0,1525,1513,1,0,0,0,1525,1524,1,0,0,0,1526,1543,1,0,0,0,1527,
- 1528,10,4,0,0,1528,1529,5,167,0,0,1529,1530,5,98,0,0,1530,1531,5,
- 167,0,0,1531,1542,3,156,78,5,1532,1537,10,3,0,0,1533,1534,5,167,
- 0,0,1534,1535,5,107,0,0,1535,1536,5,167,0,0,1536,1538,3,330,165,
- 0,1537,1533,1,0,0,0,1538,1539,1,0,0,0,1539,1537,1,0,0,0,1539,1540,
- 1,0,0,0,1540,1542,1,0,0,0,1541,1527,1,0,0,0,1541,1532,1,0,0,0,1542,
- 1545,1,0,0,0,1543,1541,1,0,0,0,1543,1544,1,0,0,0,1544,157,1,0,0,
- 0,1545,1543,1,0,0,0,1546,1548,5,139,0,0,1547,1549,5,167,0,0,1548,
- 1547,1,0,0,0,1548,1549,1,0,0,0,1549,1550,1,0,0,0,1550,1551,3,232,
- 116,0,1551,1552,5,167,0,0,1552,1553,5,50,0,0,1553,1554,5,167,0,0,
- 1554,1555,3,316,158,0,1555,159,1,0,0,0,1556,1558,5,67,0,0,1557,1559,
- 5,167,0,0,1558,1557,1,0,0,0,1558,1559,1,0,0,0,1559,1560,1,0,0,0,
- 1560,1561,3,192,96,0,1561,161,1,0,0,0,1562,1564,5,105,0,0,1563,1565,
- 5,167,0,0,1564,1563,1,0,0,0,1564,1565,1,0,0,0,1565,1566,1,0,0,0,
- 1566,1571,3,192,96,0,1567,1568,5,167,0,0,1568,1570,3,164,82,0,1569,
- 1567,1,0,0,0,1570,1573,1,0,0,0,1571,1569,1,0,0,0,1571,1572,1,0,0,
- 0,1572,163,1,0,0,0,1573,1571,1,0,0,0,1574,1575,5,112,0,0,1575,1576,
- 5,167,0,0,1576,1577,5,103,0,0,1577,1578,5,167,0,0,1578,1585,3,166,
- 83,0,1579,1580,5,112,0,0,1580,1581,5,167,0,0,1581,1582,5,67,0,0,
- 1582,1583,5,167,0,0,1583,1585,3,166,83,0,1584,1574,1,0,0,0,1584,
- 1579,1,0,0,0,1585,165,1,0,0,0,1586,1588,5,128,0,0,1587,1589,5,167,
- 0,0,1588,1587,1,0,0,0,1588,1589,1,0,0,0,1589,1590,1,0,0,0,1590,1601,
- 3,168,84,0,1591,1593,5,167,0,0,1592,1591,1,0,0,0,1592,1593,1,0,0,
- 0,1593,1594,1,0,0,0,1594,1596,5,3,0,0,1595,1597,5,167,0,0,1596,1595,
- 1,0,0,0,1596,1597,1,0,0,0,1597,1598,1,0,0,0,1598,1600,3,168,84,0,
- 1599,1592,1,0,0,0,1600,1603,1,0,0,0,1601,1599,1,0,0,0,1601,1602,
- 1,0,0,0,1602,167,1,0,0,0,1603,1601,1,0,0,0,1604,1606,3,322,161,0,
- 1605,1607,5,167,0,0,1606,1605,1,0,0,0,1606,1607,1,0,0,0,1607,1608,
- 1,0,0,0,1608,1610,5,6,0,0,1609,1611,5,167,0,0,1610,1609,1,0,0,0,
- 1610,1611,1,0,0,0,1611,1612,1,0,0,0,1612,1613,3,232,116,0,1613,169,
- 1,0,0,0,1614,1615,5,75,0,0,1615,1617,5,167,0,0,1616,1614,1,0,0,0,
- 1616,1617,1,0,0,0,1617,1618,1,0,0,0,1618,1620,5,72,0,0,1619,1621,
- 5,167,0,0,1620,1619,1,0,0,0,1620,1621,1,0,0,0,1621,1622,1,0,0,0,
- 1622,1633,3,232,116,0,1623,1625,5,167,0,0,1624,1623,1,0,0,0,1624,
- 1625,1,0,0,0,1625,1626,1,0,0,0,1626,1628,5,3,0,0,1627,1629,5,167,
- 0,0,1628,1627,1,0,0,0,1628,1629,1,0,0,0,1629,1630,1,0,0,0,1630,1632,
- 3,232,116,0,1631,1624,1,0,0,0,1632,1635,1,0,0,0,1633,1631,1,0,0,
- 0,1633,1634,1,0,0,0,1634,171,1,0,0,0,1635,1633,1,0,0,0,1636,1637,
- 5,143,0,0,1637,1642,3,176,88,0,1638,1640,5,167,0,0,1639,1638,1,0,
- 0,0,1639,1640,1,0,0,0,1640,1641,1,0,0,0,1641,1643,3,190,95,0,1642,
- 1639,1,0,0,0,1642,1643,1,0,0,0,1643,173,1,0,0,0,1644,1645,5,124,
- 0,0,1645,1646,3,176,88,0,1646,175,1,0,0,0,1647,1649,5,167,0,0,1648,
- 1647,1,0,0,0,1648,1649,1,0,0,0,1649,1650,1,0,0,0,1650,1652,5,76,
- 0,0,1651,1648,1,0,0,0,1651,1652,1,0,0,0,1652,1653,1,0,0,0,1653,1654,
- 5,167,0,0,1654,1657,3,178,89,0,1655,1656,5,167,0,0,1656,1658,3,182,
- 91,0,1657,1655,1,0,0,0,1657,1658,1,0,0,0,1658,1661,1,0,0,0,1659,
- 1660,5,167,0,0,1660,1662,3,184,92,0,1661,1659,1,0,0,0,1661,1662,
- 1,0,0,0,1662,1665,1,0,0,0,1663,1664,5,167,0,0,1664,1666,3,186,93,
- 0,1665,1663,1,0,0,0,1665,1666,1,0,0,0,1666,177,1,0,0,0,1667,1678,
- 5,147,0,0,1668,1670,5,167,0,0,1669,1668,1,0,0,0,1669,1670,1,0,0,
- 0,1670,1671,1,0,0,0,1671,1673,5,3,0,0,1672,1674,5,167,0,0,1673,1672,
- 1,0,0,0,1673,1674,1,0,0,0,1674,1675,1,0,0,0,1675,1677,3,180,90,0,
- 1676,1669,1,0,0,0,1677,1680,1,0,0,0,1678,1676,1,0,0,0,1678,1679,
- 1,0,0,0,1679,1696,1,0,0,0,1680,1678,1,0,0,0,1681,1692,3,180,90,0,
- 1682,1684,5,167,0,0,1683,1682,1,0,0,0,1683,1684,1,0,0,0,1684,1685,
- 1,0,0,0,1685,1687,5,3,0,0,1686,1688,5,167,0,0,1687,1686,1,0,0,0,
- 1687,1688,1,0,0,0,1688,1689,1,0,0,0,1689,1691,3,180,90,0,1690,1683,
- 1,0,0,0,1691,1694,1,0,0,0,1692,1690,1,0,0,0,1692,1693,1,0,0,0,1693,
- 1696,1,0,0,0,1694,1692,1,0,0,0,1695,1667,1,0,0,0,1695,1681,1,0,0,
- 0,1696,179,1,0,0,0,1697,1698,3,232,116,0,1698,1699,5,167,0,0,1699,
- 1700,5,50,0,0,1700,1701,5,167,0,0,1701,1702,3,316,158,0,1702,1705,
- 1,0,0,0,1703,1705,3,232,116,0,1704,1697,1,0,0,0,1704,1703,1,0,0,
- 0,1705,181,1,0,0,0,1706,1707,5,116,0,0,1707,1708,5,167,0,0,1708,
- 1709,5,55,0,0,1709,1710,5,167,0,0,1710,1718,3,188,94,0,1711,1713,
- 5,3,0,0,1712,1714,5,167,0,0,1713,1712,1,0,0,0,1713,1714,1,0,0,0,
- 1714,1715,1,0,0,0,1715,1717,3,188,94,0,1716,1711,1,0,0,0,1717,1720,
- 1,0,0,0,1718,1716,1,0,0,0,1718,1719,1,0,0,0,1719,183,1,0,0,0,1720,
- 1718,1,0,0,0,1721,1722,5,148,0,0,1722,1723,5,167,0,0,1723,1724,3,
- 232,116,0,1724,185,1,0,0,0,1725,1726,5,100,0,0,1726,1727,5,167,0,
- 0,1727,1728,3,232,116,0,1728,187,1,0,0,0,1729,1734,3,232,116,0,1730,
- 1732,5,167,0,0,1731,1730,1,0,0,0,1731,1732,1,0,0,0,1732,1733,1,0,
- 0,0,1733,1735,7,1,0,0,1734,1731,1,0,0,0,1734,1735,1,0,0,0,1735,189,
- 1,0,0,0,1736,1737,5,142,0,0,1737,1738,5,167,0,0,1738,1739,3,232,
- 116,0,1739,191,1,0,0,0,1740,1751,3,194,97,0,1741,1743,5,167,0,0,
- 1742,1741,1,0,0,0,1742,1743,1,0,0,0,1743,1744,1,0,0,0,1744,1746,
- 5,3,0,0,1745,1747,5,167,0,0,1746,1745,1,0,0,0,1746,1747,1,0,0,0,
- 1747,1748,1,0,0,0,1748,1750,3,194,97,0,1749,1742,1,0,0,0,1750,1753,
- 1,0,0,0,1751,1749,1,0,0,0,1751,1752,1,0,0,0,1752,193,1,0,0,0,1753,
- 1751,1,0,0,0,1754,1756,3,316,158,0,1755,1757,5,167,0,0,1756,1755,
- 1,0,0,0,1756,1757,1,0,0,0,1757,1758,1,0,0,0,1758,1760,5,6,0,0,1759,
- 1761,5,167,0,0,1760,1759,1,0,0,0,1760,1761,1,0,0,0,1761,1762,1,0,
- 0,0,1762,1763,3,196,98,0,1763,1766,1,0,0,0,1764,1766,3,196,98,0,
- 1765,1754,1,0,0,0,1765,1764,1,0,0,0,1766,195,1,0,0,0,1767,1768,3,
- 198,99,0,1768,197,1,0,0,0,1769,1776,3,200,100,0,1770,1772,5,167,
- 0,0,1771,1770,1,0,0,0,1771,1772,1,0,0,0,1772,1773,1,0,0,0,1773,1775,
- 3,202,101,0,1774,1771,1,0,0,0,1775,1778,1,0,0,0,1776,1774,1,0,0,
- 0,1776,1777,1,0,0,0,1777,1784,1,0,0,0,1778,1776,1,0,0,0,1779,1780,
- 5,2,0,0,1780,1781,3,198,99,0,1781,1782,5,4,0,0,1782,1784,1,0,0,0,
- 1783,1769,1,0,0,0,1783,1779,1,0,0,0,1784,199,1,0,0,0,1785,1787,5,
- 2,0,0,1786,1788,5,167,0,0,1787,1786,1,0,0,0,1787,1788,1,0,0,0,1788,
- 1793,1,0,0,0,1789,1791,3,316,158,0,1790,1792,5,167,0,0,1791,1790,
- 1,0,0,0,1791,1792,1,0,0,0,1792,1794,1,0,0,0,1793,1789,1,0,0,0,1793,
- 1794,1,0,0,0,1794,1799,1,0,0,0,1795,1797,3,212,106,0,1796,1798,5,
- 167,0,0,1797,1796,1,0,0,0,1797,1798,1,0,0,0,1798,1800,1,0,0,0,1799,
- 1795,1,0,0,0,1799,1800,1,0,0,0,1800,1805,1,0,0,0,1801,1803,3,208,
- 104,0,1802,1804,5,167,0,0,1803,1802,1,0,0,0,1803,1804,1,0,0,0,1804,
- 1806,1,0,0,0,1805,1801,1,0,0,0,1805,1806,1,0,0,0,1806,1807,1,0,0,
- 0,1807,1808,5,4,0,0,1808,201,1,0,0,0,1809,1811,3,204,102,0,1810,
- 1812,5,167,0,0,1811,1810,1,0,0,0,1811,1812,1,0,0,0,1812,1813,1,0,
- 0,0,1813,1814,3,200,100,0,1814,203,1,0,0,0,1815,1817,3,336,168,0,
- 1816,1818,5,167,0,0,1817,1816,1,0,0,0,1817,1818,1,0,0,0,1818,1819,
- 1,0,0,0,1819,1821,3,340,170,0,1820,1822,5,167,0,0,1821,1820,1,0,
- 0,0,1821,1822,1,0,0,0,1822,1824,1,0,0,0,1823,1825,3,206,103,0,1824,
- 1823,1,0,0,0,1824,1825,1,0,0,0,1825,1827,1,0,0,0,1826,1828,5,167,
- 0,0,1827,1826,1,0,0,0,1827,1828,1,0,0,0,1828,1829,1,0,0,0,1829,1830,
- 3,340,170,0,1830,1860,1,0,0,0,1831,1833,3,340,170,0,1832,1834,5,
- 167,0,0,1833,1832,1,0,0,0,1833,1834,1,0,0,0,1834,1836,1,0,0,0,1835,
- 1837,3,206,103,0,1836,1835,1,0,0,0,1836,1837,1,0,0,0,1837,1839,1,
- 0,0,0,1838,1840,5,167,0,0,1839,1838,1,0,0,0,1839,1840,1,0,0,0,1840,
- 1841,1,0,0,0,1841,1843,3,340,170,0,1842,1844,5,167,0,0,1843,1842,
- 1,0,0,0,1843,1844,1,0,0,0,1844,1845,1,0,0,0,1845,1846,3,338,169,
- 0,1846,1860,1,0,0,0,1847,1849,3,340,170,0,1848,1850,5,167,0,0,1849,
- 1848,1,0,0,0,1849,1850,1,0,0,0,1850,1852,1,0,0,0,1851,1853,3,206,
- 103,0,1852,1851,1,0,0,0,1852,1853,1,0,0,0,1853,1855,1,0,0,0,1854,
- 1856,5,167,0,0,1855,1854,1,0,0,0,1855,1856,1,0,0,0,1856,1857,1,0,
- 0,0,1857,1858,3,340,170,0,1858,1860,1,0,0,0,1859,1815,1,0,0,0,1859,
- 1831,1,0,0,0,1859,1847,1,0,0,0,1860,205,1,0,0,0,1861,1863,5,7,0,
- 0,1862,1864,5,167,0,0,1863,1862,1,0,0,0,1863,1864,1,0,0,0,1864,1869,
- 1,0,0,0,1865,1867,3,316,158,0,1866,1868,5,167,0,0,1867,1866,1,0,
- 0,0,1867,1868,1,0,0,0,1868,1870,1,0,0,0,1869,1865,1,0,0,0,1869,1870,
- 1,0,0,0,1870,1875,1,0,0,0,1871,1873,3,210,105,0,1872,1874,5,167,
- 0,0,1873,1872,1,0,0,0,1873,1874,1,0,0,0,1874,1876,1,0,0,0,1875,1871,
- 1,0,0,0,1875,1876,1,0,0,0,1876,1881,1,0,0,0,1877,1879,3,216,108,
- 0,1878,1880,5,167,0,0,1879,1878,1,0,0,0,1879,1880,1,0,0,0,1880,1882,
- 1,0,0,0,1881,1877,1,0,0,0,1881,1882,1,0,0,0,1882,1887,1,0,0,0,1883,
- 1885,3,208,104,0,1884,1886,5,167,0,0,1885,1884,1,0,0,0,1885,1886,
- 1,0,0,0,1886,1888,1,0,0,0,1887,1883,1,0,0,0,1887,1888,1,0,0,0,1888,
- 1889,1,0,0,0,1889,1890,5,8,0,0,1890,207,1,0,0,0,1891,1893,5,9,0,
- 0,1892,1894,5,167,0,0,1893,1892,1,0,0,0,1893,1894,1,0,0,0,1894,1928,
- 1,0,0,0,1895,1897,3,324,162,0,1896,1898,5,167,0,0,1897,1896,1,0,
- 0,0,1897,1898,1,0,0,0,1898,1899,1,0,0,0,1899,1901,5,152,0,0,1900,
- 1902,5,167,0,0,1901,1900,1,0,0,0,1901,1902,1,0,0,0,1902,1903,1,0,
- 0,0,1903,1905,3,232,116,0,1904,1906,5,167,0,0,1905,1904,1,0,0,0,
- 1905,1906,1,0,0,0,1906,1925,1,0,0,0,1907,1909,5,3,0,0,1908,1910,
- 5,167,0,0,1909,1908,1,0,0,0,1909,1910,1,0,0,0,1910,1911,1,0,0,0,
- 1911,1913,3,324,162,0,1912,1914,5,167,0,0,1913,1912,1,0,0,0,1913,
- 1914,1,0,0,0,1914,1915,1,0,0,0,1915,1917,5,152,0,0,1916,1918,5,167,
- 0,0,1917,1916,1,0,0,0,1917,1918,1,0,0,0,1918,1919,1,0,0,0,1919,1921,
- 3,232,116,0,1920,1922,5,167,0,0,1921,1920,1,0,0,0,1921,1922,1,0,
- 0,0,1922,1924,1,0,0,0,1923,1907,1,0,0,0,1924,1927,1,0,0,0,1925,1923,
- 1,0,0,0,1925,1926,1,0,0,0,1926,1929,1,0,0,0,1927,1925,1,0,0,0,1928,
- 1895,1,0,0,0,1928,1929,1,0,0,0,1929,1930,1,0,0,0,1930,1931,5,10,
- 0,0,1931,209,1,0,0,0,1932,1934,5,152,0,0,1933,1935,5,167,0,0,1934,
- 1933,1,0,0,0,1934,1935,1,0,0,0,1935,1936,1,0,0,0,1936,1950,3,230,
- 115,0,1937,1939,5,167,0,0,1938,1937,1,0,0,0,1938,1939,1,0,0,0,1939,
- 1940,1,0,0,0,1940,1942,5,11,0,0,1941,1943,5,152,0,0,1942,1941,1,
- 0,0,0,1942,1943,1,0,0,0,1943,1945,1,0,0,0,1944,1946,5,167,0,0,1945,
- 1944,1,0,0,0,1945,1946,1,0,0,0,1946,1947,1,0,0,0,1947,1949,3,230,
- 115,0,1948,1938,1,0,0,0,1949,1952,1,0,0,0,1950,1948,1,0,0,0,1950,
- 1951,1,0,0,0,1951,211,1,0,0,0,1952,1950,1,0,0,0,1953,1960,3,214,
- 107,0,1954,1956,5,167,0,0,1955,1954,1,0,0,0,1955,1956,1,0,0,0,1956,
- 1957,1,0,0,0,1957,1959,3,214,107,0,1958,1955,1,0,0,0,1959,1962,1,
- 0,0,0,1960,1958,1,0,0,0,1960,1961,1,0,0,0,1961,213,1,0,0,0,1962,
- 1960,1,0,0,0,1963,1965,5,152,0,0,1964,1966,5,167,0,0,1965,1964,1,
- 0,0,0,1965,1966,1,0,0,0,1966,1967,1,0,0,0,1967,1968,3,228,114,0,
- 1968,215,1,0,0,0,1969,1971,5,147,0,0,1970,1972,5,167,0,0,1971,1970,
- 1,0,0,0,1971,1972,1,0,0,0,1972,1977,1,0,0,0,1973,1978,5,129,0,0,
- 1974,1975,5,47,0,0,1975,1976,5,167,0,0,1976,1978,5,129,0,0,1977,
- 1973,1,0,0,0,1977,1974,1,0,0,0,1977,1978,1,0,0,0,1978,1980,1,0,0,
- 0,1979,1981,5,167,0,0,1980,1979,1,0,0,0,1980,1981,1,0,0,0,1981,1996,
- 1,0,0,0,1982,1984,3,224,112,0,1983,1982,1,0,0,0,1983,1984,1,0,0,
- 0,1984,1986,1,0,0,0,1985,1987,5,167,0,0,1986,1985,1,0,0,0,1986,1987,
- 1,0,0,0,1987,1988,1,0,0,0,1988,1990,5,12,0,0,1989,1991,5,167,0,0,
- 1990,1989,1,0,0,0,1990,1991,1,0,0,0,1991,1993,1,0,0,0,1992,1994,
- 3,226,113,0,1993,1992,1,0,0,0,1993,1994,1,0,0,0,1994,1997,1,0,0,
- 0,1995,1997,3,326,163,0,1996,1983,1,0,0,0,1996,1995,1,0,0,0,1996,
- 1997,1,0,0,0,1997,2002,1,0,0,0,1998,2000,5,167,0,0,1999,1998,1,0,
- 0,0,1999,2000,1,0,0,0,2000,2001,1,0,0,0,2001,2003,3,218,109,0,2002,
- 1999,1,0,0,0,2002,2003,1,0,0,0,2003,217,1,0,0,0,2004,2006,5,2,0,
- 0,2005,2007,5,167,0,0,2006,2005,1,0,0,0,2006,2007,1,0,0,0,2007,2008,
- 1,0,0,0,2008,2010,3,316,158,0,2009,2011,5,167,0,0,2010,2009,1,0,
- 0,0,2010,2011,1,0,0,0,2011,2012,1,0,0,0,2012,2014,5,3,0,0,2013,2015,
- 5,167,0,0,2014,2013,1,0,0,0,2014,2015,1,0,0,0,2015,2016,1,0,0,0,
- 2016,2028,3,316,158,0,2017,2019,5,167,0,0,2018,2017,1,0,0,0,2018,
- 2019,1,0,0,0,2019,2020,1,0,0,0,2020,2022,5,11,0,0,2021,2023,5,167,
- 0,0,2022,2021,1,0,0,0,2022,2023,1,0,0,0,2023,2024,1,0,0,0,2024,2026,
- 3,190,95,0,2025,2027,5,167,0,0,2026,2025,1,0,0,0,2026,2027,1,0,0,
- 0,2027,2029,1,0,0,0,2028,2018,1,0,0,0,2028,2029,1,0,0,0,2029,2049,
- 1,0,0,0,2030,2032,5,167,0,0,2031,2030,1,0,0,0,2031,2032,1,0,0,0,
- 2032,2033,1,0,0,0,2033,2035,5,11,0,0,2034,2036,5,167,0,0,2035,2034,
- 1,0,0,0,2035,2036,1,0,0,0,2036,2037,1,0,0,0,2037,2039,3,222,111,
- 0,2038,2040,5,167,0,0,2039,2038,1,0,0,0,2039,2040,1,0,0,0,2040,2041,
- 1,0,0,0,2041,2043,5,3,0,0,2042,2044,5,167,0,0,2043,2042,1,0,0,0,
- 2043,2044,1,0,0,0,2044,2045,1,0,0,0,2045,2047,3,220,110,0,2046,2048,
- 5,167,0,0,2047,2046,1,0,0,0,2047,2048,1,0,0,0,2048,2050,1,0,0,0,
- 2049,2031,1,0,0,0,2049,2050,1,0,0,0,2050,2051,1,0,0,0,2051,2052,
- 5,4,0,0,2052,219,1,0,0,0,2053,2055,5,9,0,0,2054,2056,5,167,0,0,2055,
- 2054,1,0,0,0,2055,2056,1,0,0,0,2056,2058,1,0,0,0,2057,2059,3,178,
- 89,0,2058,2057,1,0,0,0,2058,2059,1,0,0,0,2059,2061,1,0,0,0,2060,
- 2062,5,167,0,0,2061,2060,1,0,0,0,2061,2062,1,0,0,0,2062,2063,1,0,
- 0,0,2063,2064,5,10,0,0,2064,221,1,0,0,0,2065,2067,5,9,0,0,2066,2068,
- 5,167,0,0,2067,2066,1,0,0,0,2067,2068,1,0,0,0,2068,2070,1,0,0,0,
- 2069,2071,3,178,89,0,2070,2069,1,0,0,0,2070,2071,1,0,0,0,2071,2073,
- 1,0,0,0,2072,2074,5,167,0,0,2073,2072,1,0,0,0,2073,2074,1,0,0,0,
- 2074,2075,1,0,0,0,2075,2076,5,10,0,0,2076,223,1,0,0,0,2077,2078,
- 5,155,0,0,2078,225,1,0,0,0,2079,2080,5,155,0,0,2080,227,1,0,0,0,
- 2081,2082,3,330,165,0,2082,229,1,0,0,0,2083,2084,3,330,165,0,2084,
- 231,1,0,0,0,2085,2086,3,234,117,0,2086,233,1,0,0,0,2087,2094,3,236,
- 118,0,2088,2089,5,167,0,0,2089,2090,5,115,0,0,2090,2091,5,167,0,
- 0,2091,2093,3,236,118,0,2092,2088,1,0,0,0,2093,2096,1,0,0,0,2094,
- 2092,1,0,0,0,2094,2095,1,0,0,0,2095,235,1,0,0,0,2096,2094,1,0,0,
- 0,2097,2104,3,238,119,0,2098,2099,5,167,0,0,2099,2100,5,145,0,0,
- 2100,2101,5,167,0,0,2101,2103,3,238,119,0,2102,2098,1,0,0,0,2103,
- 2106,1,0,0,0,2104,2102,1,0,0,0,2104,2105,1,0,0,0,2105,237,1,0,0,
- 0,2106,2104,1,0,0,0,2107,2114,3,240,120,0,2108,2109,5,167,0,0,2109,
- 2110,5,49,0,0,2110,2111,5,167,0,0,2111,2113,3,240,120,0,2112,2108,
- 1,0,0,0,2113,2116,1,0,0,0,2114,2112,1,0,0,0,2114,2115,1,0,0,0,2115,
- 239,1,0,0,0,2116,2114,1,0,0,0,2117,2119,5,110,0,0,2118,2120,5,167,
- 0,0,2119,2118,1,0,0,0,2119,2120,1,0,0,0,2120,2122,1,0,0,0,2121,2117,
- 1,0,0,0,2122,2125,1,0,0,0,2123,2121,1,0,0,0,2123,2124,1,0,0,0,2124,
- 2126,1,0,0,0,2125,2123,1,0,0,0,2126,2127,3,242,121,0,2127,241,1,
- 0,0,0,2128,2138,3,246,123,0,2129,2131,5,167,0,0,2130,2129,1,0,0,
- 0,2130,2131,1,0,0,0,2131,2132,1,0,0,0,2132,2134,3,244,122,0,2133,
- 2135,5,167,0,0,2134,2133,1,0,0,0,2134,2135,1,0,0,0,2135,2136,1,0,
- 0,0,2136,2137,3,246,123,0,2137,2139,1,0,0,0,2138,2130,1,0,0,0,2138,
- 2139,1,0,0,0,2139,2177,1,0,0,0,2140,2142,3,246,123,0,2141,2143,5,
- 167,0,0,2142,2141,1,0,0,0,2142,2143,1,0,0,0,2143,2144,1,0,0,0,2144,
- 2146,5,149,0,0,2145,2147,5,167,0,0,2146,2145,1,0,0,0,2146,2147,1,
- 0,0,0,2147,2148,1,0,0,0,2148,2149,3,246,123,0,2149,2150,1,0,0,0,
- 2150,2151,6,121,-1,0,2151,2177,1,0,0,0,2152,2154,3,246,123,0,2153,
- 2155,5,167,0,0,2154,2153,1,0,0,0,2154,2155,1,0,0,0,2155,2156,1,0,
- 0,0,2156,2158,3,244,122,0,2157,2159,5,167,0,0,2158,2157,1,0,0,0,
- 2158,2159,1,0,0,0,2159,2160,1,0,0,0,2160,2170,3,246,123,0,2161,2163,
- 5,167,0,0,2162,2161,1,0,0,0,2162,2163,1,0,0,0,2163,2164,1,0,0,0,
- 2164,2166,3,244,122,0,2165,2167,5,167,0,0,2166,2165,1,0,0,0,2166,
- 2167,1,0,0,0,2167,2168,1,0,0,0,2168,2169,3,246,123,0,2169,2171,1,
- 0,0,0,2170,2162,1,0,0,0,2171,2172,1,0,0,0,2172,2170,1,0,0,0,2172,
- 2173,1,0,0,0,2173,2174,1,0,0,0,2174,2175,6,121,-1,0,2175,2177,1,
- 0,0,0,2176,2128,1,0,0,0,2176,2140,1,0,0,0,2176,2152,1,0,0,0,2177,
- 243,1,0,0,0,2178,2179,7,2,0,0,2179,245,1,0,0,0,2180,2191,3,248,124,
- 0,2181,2183,5,167,0,0,2182,2181,1,0,0,0,2182,2183,1,0,0,0,2183,2184,
- 1,0,0,0,2184,2186,5,11,0,0,2185,2187,5,167,0,0,2186,2185,1,0,0,0,
- 2186,2187,1,0,0,0,2187,2188,1,0,0,0,2188,2190,3,248,124,0,2189,2182,
- 1,0,0,0,2190,2193,1,0,0,0,2191,2189,1,0,0,0,2191,2192,1,0,0,0,2192,
- 247,1,0,0,0,2193,2191,1,0,0,0,2194,2205,3,250,125,0,2195,2197,5,
- 167,0,0,2196,2195,1,0,0,0,2196,2197,1,0,0,0,2197,2198,1,0,0,0,2198,
- 2200,5,18,0,0,2199,2201,5,167,0,0,2200,2199,1,0,0,0,2200,2201,1,
- 0,0,0,2201,2202,1,0,0,0,2202,2204,3,250,125,0,2203,2196,1,0,0,0,
- 2204,2207,1,0,0,0,2205,2203,1,0,0,0,2205,2206,1,0,0,0,2206,249,1,
- 0,0,0,2207,2205,1,0,0,0,2208,2220,3,254,127,0,2209,2211,5,167,0,
- 0,2210,2209,1,0,0,0,2210,2211,1,0,0,0,2211,2212,1,0,0,0,2212,2214,
- 3,252,126,0,2213,2215,5,167,0,0,2214,2213,1,0,0,0,2214,2215,1,0,
- 0,0,2215,2216,1,0,0,0,2216,2217,3,254,127,0,2217,2219,1,0,0,0,2218,
- 2210,1,0,0,0,2219,2222,1,0,0,0,2220,2218,1,0,0,0,2220,2221,1,0,0,
- 0,2221,251,1,0,0,0,2222,2220,1,0,0,0,2223,2224,7,3,0,0,2224,253,
- 1,0,0,0,2225,2237,3,258,129,0,2226,2228,5,167,0,0,2227,2226,1,0,
- 0,0,2227,2228,1,0,0,0,2228,2229,1,0,0,0,2229,2231,3,256,128,0,2230,
- 2232,5,167,0,0,2231,2230,1,0,0,0,2231,2232,1,0,0,0,2232,2233,1,0,
- 0,0,2233,2234,3,258,129,0,2234,2236,1,0,0,0,2235,2227,1,0,0,0,2236,
- 2239,1,0,0,0,2237,2235,1,0,0,0,2237,2238,1,0,0,0,2238,255,1,0,0,
- 0,2239,2237,1,0,0,0,2240,2241,7,4,0,0,2241,257,1,0,0,0,2242,2254,
- 3,262,131,0,2243,2245,5,167,0,0,2244,2243,1,0,0,0,2244,2245,1,0,
- 0,0,2245,2246,1,0,0,0,2246,2248,3,260,130,0,2247,2249,5,167,0,0,
- 2248,2247,1,0,0,0,2248,2249,1,0,0,0,2249,2250,1,0,0,0,2250,2251,
- 3,262,131,0,2251,2253,1,0,0,0,2252,2244,1,0,0,0,2253,2256,1,0,0,
- 0,2254,2252,1,0,0,0,2254,2255,1,0,0,0,2255,259,1,0,0,0,2256,2254,
- 1,0,0,0,2257,2258,7,5,0,0,2258,261,1,0,0,0,2259,2270,3,264,132,0,
- 2260,2262,5,167,0,0,2261,2260,1,0,0,0,2261,2262,1,0,0,0,2262,2263,
- 1,0,0,0,2263,2265,5,24,0,0,2264,2266,5,167,0,0,2265,2264,1,0,0,0,
- 2265,2266,1,0,0,0,2266,2267,1,0,0,0,2267,2269,3,264,132,0,2268,2261,
- 1,0,0,0,2269,2272,1,0,0,0,2270,2268,1,0,0,0,2270,2271,1,0,0,0,2271,
- 263,1,0,0,0,2272,2270,1,0,0,0,2273,2275,5,150,0,0,2274,2276,5,167,
- 0,0,2275,2274,1,0,0,0,2275,2276,1,0,0,0,2276,2278,1,0,0,0,2277,2273,
- 1,0,0,0,2278,2281,1,0,0,0,2279,2277,1,0,0,0,2279,2280,1,0,0,0,2280,
- 2282,1,0,0,0,2281,2279,1,0,0,0,2282,2287,3,266,133,0,2283,2285,5,
- 167,0,0,2284,2283,1,0,0,0,2284,2285,1,0,0,0,2285,2286,1,0,0,0,2286,
- 2288,5,151,0,0,2287,2284,1,0,0,0,2287,2288,1,0,0,0,2288,265,1,0,
- 0,0,2289,2297,3,276,138,0,2290,2298,3,270,135,0,2291,2293,3,268,
- 134,0,2292,2291,1,0,0,0,2293,2294,1,0,0,0,2294,2292,1,0,0,0,2294,
- 2295,1,0,0,0,2295,2298,1,0,0,0,2296,2298,3,274,137,0,2297,2290,1,
- 0,0,0,2297,2292,1,0,0,0,2297,2296,1,0,0,0,2297,2298,1,0,0,0,2298,
- 267,1,0,0,0,2299,2300,5,167,0,0,2300,2302,5,94,0,0,2301,2303,5,167,
- 0,0,2302,2301,1,0,0,0,2302,2303,1,0,0,0,2303,2304,1,0,0,0,2304,2319,
- 3,276,138,0,2305,2306,5,7,0,0,2306,2307,3,232,116,0,2307,2308,5,
- 8,0,0,2308,2319,1,0,0,0,2309,2311,5,7,0,0,2310,2312,3,232,116,0,
- 2311,2310,1,0,0,0,2311,2312,1,0,0,0,2312,2313,1,0,0,0,2313,2315,
- 5,152,0,0,2314,2316,3,232,116,0,2315,2314,1,0,0,0,2315,2316,1,0,
- 0,0,2316,2317,1,0,0,0,2317,2319,5,8,0,0,2318,2299,1,0,0,0,2318,2305,
- 1,0,0,0,2318,2309,1,0,0,0,2319,269,1,0,0,0,2320,2332,3,272,136,0,
- 2321,2322,5,167,0,0,2322,2323,5,131,0,0,2323,2324,5,167,0,0,2324,
- 2332,5,143,0,0,2325,2326,5,167,0,0,2326,2327,5,80,0,0,2327,2328,
- 5,167,0,0,2328,2332,5,143,0,0,2329,2330,5,167,0,0,2330,2332,5,64,
- 0,0,2331,2320,1,0,0,0,2331,2321,1,0,0,0,2331,2325,1,0,0,0,2331,2329,
- 1,0,0,0,2332,2334,1,0,0,0,2333,2335,5,167,0,0,2334,2333,1,0,0,0,
- 2334,2335,1,0,0,0,2335,2336,1,0,0,0,2336,2337,3,276,138,0,2337,271,
- 1,0,0,0,2338,2340,5,167,0,0,2339,2338,1,0,0,0,2339,2340,1,0,0,0,
- 2340,2341,1,0,0,0,2341,2342,5,25,0,0,2342,273,1,0,0,0,2343,2344,
- 5,167,0,0,2344,2345,5,97,0,0,2345,2346,5,167,0,0,2346,2354,5,111,
- 0,0,2347,2348,5,167,0,0,2348,2349,5,97,0,0,2349,2350,5,167,0,0,2350,
- 2351,5,110,0,0,2351,2352,5,167,0,0,2352,2354,5,111,0,0,2353,2343,
- 1,0,0,0,2353,2347,1,0,0,0,2354,275,1,0,0,0,2355,2362,3,278,139,0,
- 2356,2358,5,167,0,0,2357,2356,1,0,0,0,2357,2358,1,0,0,0,2358,2359,
- 1,0,0,0,2359,2361,3,310,155,0,2360,2357,1,0,0,0,2361,2364,1,0,0,
- 0,2362,2360,1,0,0,0,2362,2363,1,0,0,0,2363,277,1,0,0,0,2364,2362,
- 1,0,0,0,2365,2375,3,280,140,0,2366,2375,3,320,160,0,2367,2375,3,
- 312,156,0,2368,2375,3,292,146,0,2369,2375,3,294,147,0,2370,2375,
- 3,304,152,0,2371,2375,3,306,153,0,2372,2375,3,308,154,0,2373,2375,
- 3,316,158,0,2374,2365,1,0,0,0,2374,2366,1,0,0,0,2374,2367,1,0,0,
- 0,2374,2368,1,0,0,0,2374,2369,1,0,0,0,2374,2370,1,0,0,0,2374,2371,
- 1,0,0,0,2374,2372,1,0,0,0,2374,2373,1,0,0,0,2375,279,1,0,0,0,2376,
- 2383,3,318,159,0,2377,2383,5,153,0,0,2378,2383,3,282,141,0,2379,
- 2383,5,111,0,0,2380,2383,3,284,142,0,2381,2383,3,288,144,0,2382,
- 2376,1,0,0,0,2382,2377,1,0,0,0,2382,2378,1,0,0,0,2382,2379,1,0,0,
- 0,2382,2380,1,0,0,0,2382,2381,1,0,0,0,2383,281,1,0,0,0,2384,2385,
- 7,6,0,0,2385,283,1,0,0,0,2386,2388,5,7,0,0,2387,2389,5,167,0,0,2388,
- 2387,1,0,0,0,2388,2389,1,0,0,0,2389,2403,1,0,0,0,2390,2392,3,232,
- 116,0,2391,2393,5,167,0,0,2392,2391,1,0,0,0,2392,2393,1,0,0,0,2393,
- 2400,1,0,0,0,2394,2396,3,286,143,0,2395,2397,5,167,0,0,2396,2395,
- 1,0,0,0,2396,2397,1,0,0,0,2397,2399,1,0,0,0,2398,2394,1,0,0,0,2399,
- 2402,1,0,0,0,2400,2398,1,0,0,0,2400,2401,1,0,0,0,2401,2404,1,0,0,
- 0,2402,2400,1,0,0,0,2403,2390,1,0,0,0,2403,2404,1,0,0,0,2404,2405,
- 1,0,0,0,2405,2406,5,8,0,0,2406,285,1,0,0,0,2407,2409,5,3,0,0,2408,
- 2410,5,167,0,0,2409,2408,1,0,0,0,2409,2410,1,0,0,0,2410,2412,1,0,
- 0,0,2411,2413,3,232,116,0,2412,2411,1,0,0,0,2412,2413,1,0,0,0,2413,
- 287,1,0,0,0,2414,2416,5,9,0,0,2415,2417,5,167,0,0,2416,2415,1,0,
- 0,0,2416,2417,1,0,0,0,2417,2418,1,0,0,0,2418,2420,3,290,145,0,2419,
- 2421,5,167,0,0,2420,2419,1,0,0,0,2420,2421,1,0,0,0,2421,2432,1,0,
- 0,0,2422,2424,5,3,0,0,2423,2425,5,167,0,0,2424,2423,1,0,0,0,2424,
- 2425,1,0,0,0,2425,2426,1,0,0,0,2426,2428,3,290,145,0,2427,2429,5,
- 167,0,0,2428,2427,1,0,0,0,2428,2429,1,0,0,0,2429,2431,1,0,0,0,2430,
- 2422,1,0,0,0,2431,2434,1,0,0,0,2432,2430,1,0,0,0,2432,2433,1,0,0,
- 0,2433,2435,1,0,0,0,2434,2432,1,0,0,0,2435,2436,5,10,0,0,2436,289,
- 1,0,0,0,2437,2440,3,332,166,0,2438,2440,5,153,0,0,2439,2437,1,0,
- 0,0,2439,2438,1,0,0,0,2440,2442,1,0,0,0,2441,2443,5,167,0,0,2442,
- 2441,1,0,0,0,2442,2443,1,0,0,0,2443,2444,1,0,0,0,2444,2446,5,152,
- 0,0,2445,2447,5,167,0,0,2446,2445,1,0,0,0,2446,2447,1,0,0,0,2447,
- 2448,1,0,0,0,2448,2449,3,232,116,0,2449,291,1,0,0,0,2450,2452,5,
- 2,0,0,2451,2453,5,167,0,0,2452,2451,1,0,0,0,2452,2453,1,0,0,0,2453,
- 2454,1,0,0,0,2454,2456,3,232,116,0,2455,2457,5,167,0,0,2456,2455,
- 1,0,0,0,2456,2457,1,0,0,0,2457,2458,1,0,0,0,2458,2459,5,4,0,0,2459,
- 293,1,0,0,0,2460,2462,5,66,0,0,2461,2463,5,167,0,0,2462,2461,1,0,
- 0,0,2462,2463,1,0,0,0,2463,2464,1,0,0,0,2464,2466,5,2,0,0,2465,2467,
- 5,167,0,0,2466,2465,1,0,0,0,2466,2467,1,0,0,0,2467,2468,1,0,0,0,
- 2468,2470,5,147,0,0,2469,2471,5,167,0,0,2470,2469,1,0,0,0,2470,2471,
- 1,0,0,0,2471,2472,1,0,0,0,2472,2538,5,4,0,0,2473,2475,5,58,0,0,2474,
- 2476,5,167,0,0,2475,2474,1,0,0,0,2475,2476,1,0,0,0,2476,2477,1,0,
- 0,0,2477,2479,5,2,0,0,2478,2480,5,167,0,0,2479,2478,1,0,0,0,2479,
- 2480,1,0,0,0,2480,2481,1,0,0,0,2481,2483,3,298,149,0,2482,2484,5,
- 167,0,0,2483,2482,1,0,0,0,2483,2484,1,0,0,0,2484,2495,1,0,0,0,2485,
- 2487,5,50,0,0,2486,2488,5,167,0,0,2487,2486,1,0,0,0,2487,2488,1,
- 0,0,0,2488,2489,1,0,0,0,2489,2496,3,100,50,0,2490,2492,5,3,0,0,2491,
- 2493,5,167,0,0,2492,2491,1,0,0,0,2492,2493,1,0,0,0,2493,2494,1,0,
- 0,0,2494,2496,3,298,149,0,2495,2485,1,0,0,0,2495,2490,1,0,0,0,2496,
- 2498,1,0,0,0,2497,2499,5,167,0,0,2498,2497,1,0,0,0,2498,2499,1,0,
- 0,0,2499,2500,1,0,0,0,2500,2501,5,4,0,0,2501,2538,1,0,0,0,2502,2504,
- 3,296,148,0,2503,2505,5,167,0,0,2504,2503,1,0,0,0,2504,2505,1,0,
- 0,0,2505,2506,1,0,0,0,2506,2508,5,2,0,0,2507,2509,5,167,0,0,2508,
- 2507,1,0,0,0,2508,2509,1,0,0,0,2509,2514,1,0,0,0,2510,2512,5,76,
- 0,0,2511,2513,5,167,0,0,2512,2511,1,0,0,0,2512,2513,1,0,0,0,2513,
- 2515,1,0,0,0,2514,2510,1,0,0,0,2514,2515,1,0,0,0,2515,2533,1,0,0,
- 0,2516,2518,3,298,149,0,2517,2519,5,167,0,0,2518,2517,1,0,0,0,2518,
- 2519,1,0,0,0,2519,2530,1,0,0,0,2520,2522,5,3,0,0,2521,2523,5,167,
- 0,0,2522,2521,1,0,0,0,2522,2523,1,0,0,0,2523,2524,1,0,0,0,2524,2526,
- 3,298,149,0,2525,2527,5,167,0,0,2526,2525,1,0,0,0,2526,2527,1,0,
- 0,0,2527,2529,1,0,0,0,2528,2520,1,0,0,0,2529,2532,1,0,0,0,2530,2528,
- 1,0,0,0,2530,2531,1,0,0,0,2531,2534,1,0,0,0,2532,2530,1,0,0,0,2533,
- 2516,1,0,0,0,2533,2534,1,0,0,0,2534,2535,1,0,0,0,2535,2536,5,4,0,
- 0,2536,2538,1,0,0,0,2537,2460,1,0,0,0,2537,2473,1,0,0,0,2537,2502,
- 1,0,0,0,2538,295,1,0,0,0,2539,2540,3,332,166,0,2540,297,1,0,0,0,
- 2541,2543,3,332,166,0,2542,2544,5,167,0,0,2543,2542,1,0,0,0,2543,
- 2544,1,0,0,0,2544,2545,1,0,0,0,2545,2546,5,152,0,0,2546,2548,5,6,
- 0,0,2547,2549,5,167,0,0,2548,2547,1,0,0,0,2548,2549,1,0,0,0,2549,
- 2551,1,0,0,0,2550,2541,1,0,0,0,2550,2551,1,0,0,0,2551,2552,1,0,0,
- 0,2552,2555,3,232,116,0,2553,2555,3,300,150,0,2554,2550,1,0,0,0,
- 2554,2553,1,0,0,0,2555,299,1,0,0,0,2556,2558,3,302,151,0,2557,2559,
- 5,167,0,0,2558,2557,1,0,0,0,2558,2559,1,0,0,0,2559,2560,1,0,0,0,
- 2560,2561,5,150,0,0,2561,2563,5,16,0,0,2562,2564,5,167,0,0,2563,
- 2562,1,0,0,0,2563,2564,1,0,0,0,2564,2565,1,0,0,0,2565,2567,3,232,
- 116,0,2566,2568,5,167,0,0,2567,2566,1,0,0,0,2567,2568,1,0,0,0,2568,
- 301,1,0,0,0,2569,2594,3,332,166,0,2570,2572,5,2,0,0,2571,2573,5,
- 167,0,0,2572,2571,1,0,0,0,2572,2573,1,0,0,0,2573,2574,1,0,0,0,2574,
- 2576,3,332,166,0,2575,2577,5,167,0,0,2576,2575,1,0,0,0,2576,2577,
- 1,0,0,0,2577,2588,1,0,0,0,2578,2580,5,3,0,0,2579,2581,5,167,0,0,
- 2580,2579,1,0,0,0,2580,2581,1,0,0,0,2581,2582,1,0,0,0,2582,2584,
- 3,332,166,0,2583,2585,5,167,0,0,2584,2583,1,0,0,0,2584,2585,1,0,
- 0,0,2585,2587,1,0,0,0,2586,2578,1,0,0,0,2587,2590,1,0,0,0,2588,2586,
- 1,0,0,0,2588,2589,1,0,0,0,2589,2591,1,0,0,0,2590,2588,1,0,0,0,2591,
- 2592,5,4,0,0,2592,2594,1,0,0,0,2593,2569,1,0,0,0,2593,2570,1,0,0,
- 0,2594,303,1,0,0,0,2595,2600,3,200,100,0,2596,2598,5,167,0,0,2597,
- 2596,1,0,0,0,2597,2598,1,0,0,0,2598,2599,1,0,0,0,2599,2601,3,202,
- 101,0,2600,2597,1,0,0,0,2601,2602,1,0,0,0,2602,2600,1,0,0,0,2602,
- 2603,1,0,0,0,2603,305,1,0,0,0,2604,2606,5,81,0,0,2605,2607,5,167,
- 0,0,2606,2605,1,0,0,0,2606,2607,1,0,0,0,2607,2608,1,0,0,0,2608,2610,
- 5,9,0,0,2609,2611,5,167,0,0,2610,2609,1,0,0,0,2610,2611,1,0,0,0,
- 2611,2612,1,0,0,0,2612,2614,5,103,0,0,2613,2615,5,167,0,0,2614,2613,
- 1,0,0,0,2614,2615,1,0,0,0,2615,2616,1,0,0,0,2616,2621,3,192,96,0,
- 2617,2619,5,167,0,0,2618,2617,1,0,0,0,2618,2619,1,0,0,0,2619,2620,
- 1,0,0,0,2620,2622,3,190,95,0,2621,2618,1,0,0,0,2621,2622,1,0,0,0,
- 2622,2624,1,0,0,0,2623,2625,5,167,0,0,2624,2623,1,0,0,0,2624,2625,
- 1,0,0,0,2625,2626,1,0,0,0,2626,2627,5,10,0,0,2627,307,1,0,0,0,2628,
- 2630,5,66,0,0,2629,2631,5,167,0,0,2630,2629,1,0,0,0,2630,2631,1,
- 0,0,0,2631,2632,1,0,0,0,2632,2634,5,9,0,0,2633,2635,5,167,0,0,2634,
- 2633,1,0,0,0,2634,2635,1,0,0,0,2635,2636,1,0,0,0,2636,2638,5,103,
- 0,0,2637,2639,5,167,0,0,2638,2637,1,0,0,0,2638,2639,1,0,0,0,2639,
- 2640,1,0,0,0,2640,2645,3,192,96,0,2641,2643,5,167,0,0,2642,2641,
- 1,0,0,0,2642,2643,1,0,0,0,2643,2644,1,0,0,0,2644,2646,3,190,95,0,
- 2645,2642,1,0,0,0,2645,2646,1,0,0,0,2646,2648,1,0,0,0,2647,2649,
- 5,167,0,0,2648,2647,1,0,0,0,2648,2649,1,0,0,0,2649,2650,1,0,0,0,
- 2650,2651,5,10,0,0,2651,309,1,0,0,0,2652,2654,5,5,0,0,2653,2655,
- 5,167,0,0,2654,2653,1,0,0,0,2654,2655,1,0,0,0,2655,2658,1,0,0,0,
- 2656,2659,3,324,162,0,2657,2659,5,147,0,0,2658,2656,1,0,0,0,2658,
- 2657,1,0,0,0,2659,311,1,0,0,0,2660,2665,5,57,0,0,2661,2663,5,167,
- 0,0,2662,2661,1,0,0,0,2662,2663,1,0,0,0,2663,2664,1,0,0,0,2664,2666,
- 3,314,157,0,2665,2662,1,0,0,0,2666,2667,1,0,0,0,2667,2665,1,0,0,
- 0,2667,2668,1,0,0,0,2668,2683,1,0,0,0,2669,2671,5,57,0,0,2670,2672,
- 5,167,0,0,2671,2670,1,0,0,0,2671,2672,1,0,0,0,2672,2673,1,0,0,0,
- 2673,2678,3,232,116,0,2674,2676,5,167,0,0,2675,2674,1,0,0,0,2675,
- 2676,1,0,0,0,2676,2677,1,0,0,0,2677,2679,3,314,157,0,2678,2675,1,
- 0,0,0,2679,2680,1,0,0,0,2680,2678,1,0,0,0,2680,2681,1,0,0,0,2681,
- 2683,1,0,0,0,2682,2660,1,0,0,0,2682,2669,1,0,0,0,2683,2692,1,0,0,
- 0,2684,2686,5,167,0,0,2685,2684,1,0,0,0,2685,2686,1,0,0,0,2686,2687,
- 1,0,0,0,2687,2689,5,78,0,0,2688,2690,5,167,0,0,2689,2688,1,0,0,0,
- 2689,2690,1,0,0,0,2690,2691,1,0,0,0,2691,2693,3,232,116,0,2692,2685,
- 1,0,0,0,2692,2693,1,0,0,0,2693,2695,1,0,0,0,2694,2696,5,167,0,0,
- 2695,2694,1,0,0,0,2695,2696,1,0,0,0,2696,2697,1,0,0,0,2697,2698,
- 5,79,0,0,2698,313,1,0,0,0,2699,2701,5,141,0,0,2700,2702,5,167,0,
- 0,2701,2700,1,0,0,0,2701,2702,1,0,0,0,2702,2703,1,0,0,0,2703,2705,
- 3,232,116,0,2704,2706,5,167,0,0,2705,2704,1,0,0,0,2705,2706,1,0,
- 0,0,2706,2707,1,0,0,0,2707,2709,5,133,0,0,2708,2710,5,167,0,0,2709,
- 2708,1,0,0,0,2709,2710,1,0,0,0,2710,2711,1,0,0,0,2711,2712,3,232,
- 116,0,2712,315,1,0,0,0,2713,2714,3,332,166,0,2714,317,1,0,0,0,2715,
- 2718,3,328,164,0,2716,2718,3,326,163,0,2717,2715,1,0,0,0,2717,2716,
- 1,0,0,0,2718,319,1,0,0,0,2719,2722,5,26,0,0,2720,2723,3,332,166,
- 0,2721,2723,5,155,0,0,2722,2720,1,0,0,0,2722,2721,1,0,0,0,2723,321,
- 1,0,0,0,2724,2726,3,278,139,0,2725,2727,5,167,0,0,2726,2725,1,0,
- 0,0,2726,2727,1,0,0,0,2727,2728,1,0,0,0,2728,2729,3,310,155,0,2729,
- 323,1,0,0,0,2730,2731,3,330,165,0,2731,325,1,0,0,0,2732,2733,5,155,
- 0,0,2733,327,1,0,0,0,2734,2735,5,162,0,0,2735,329,1,0,0,0,2736,2737,
- 3,332,166,0,2737,331,1,0,0,0,2738,2744,5,163,0,0,2739,2740,5,166,
- 0,0,2740,2744,6,166,-1,0,2741,2744,5,156,0,0,2742,2744,3,334,167,
- 0,2743,2738,1,0,0,0,2743,2739,1,0,0,0,2743,2741,1,0,0,0,2743,2742,
- 1,0,0,0,2744,333,1,0,0,0,2745,2746,7,7,0,0,2746,335,1,0,0,0,2747,
- 2748,7,8,0,0,2748,337,1,0,0,0,2749,2750,7,9,0,0,2750,339,1,0,0,0,
- 2751,2752,7,10,0,0,2752,341,1,0,0,0,472,344,348,353,357,362,365,
- 369,372,396,402,406,409,415,418,422,426,430,435,439,446,450,458,
- 462,472,476,480,485,498,502,510,513,521,524,539,544,550,554,557,
- 560,566,570,576,580,585,600,604,626,630,633,636,639,642,646,651,
- 655,665,669,674,679,684,690,694,698,703,710,714,718,721,725,729,
- 748,752,756,760,764,769,782,786,790,794,798,802,804,808,812,814,
- 829,833,837,841,845,850,853,857,861,863,867,871,873,892,903,910,
- 923,930,936,939,949,952,960,963,969,972,978,993,1009,1018,1044,1048,
- 1053,1062,1066,1071,1079,1085,1089,1093,1101,1105,1109,1115,1119,
- 1123,1129,1133,1137,1141,1145,1151,1155,1159,1163,1167,1171,1177,
- 1184,1189,1195,1214,1218,1226,1234,1236,1246,1250,1254,1260,1264,
- 1269,1274,1279,1284,1288,1293,1299,1304,1307,1311,1315,1319,1325,
- 1329,1334,1339,1343,1346,1350,1354,1358,1362,1366,1372,1376,1381,
- 1385,1394,1400,1408,1412,1416,1420,1427,1430,1433,1436,1440,1442,
- 1448,1451,1455,1459,1463,1467,1471,1475,1480,1486,1490,1494,1498,
- 1503,1507,1516,1520,1525,1539,1541,1543,1548,1558,1564,1571,1584,
- 1588,1592,1596,1601,1606,1610,1616,1620,1624,1628,1633,1639,1642,
- 1648,1651,1657,1661,1665,1669,1673,1678,1683,1687,1692,1695,1704,
- 1713,1718,1731,1734,1742,1746,1751,1756,1760,1765,1771,1776,1783,
- 1787,1791,1793,1797,1799,1803,1805,1811,1817,1821,1824,1827,1833,
- 1836,1839,1843,1849,1852,1855,1859,1863,1867,1869,1873,1875,1879,
- 1881,1885,1887,1893,1897,1901,1905,1909,1913,1917,1921,1925,1928,
- 1934,1938,1942,1945,1950,1955,1960,1965,1971,1977,1980,1983,1986,
- 1990,1993,1996,1999,2002,2006,2010,2014,2018,2022,2026,2028,2031,
- 2035,2039,2043,2047,2049,2055,2058,2061,2067,2070,2073,2094,2104,
- 2114,2119,2123,2130,2134,2138,2142,2146,2154,2158,2162,2166,2172,
- 2176,2182,2186,2191,2196,2200,2205,2210,2214,2220,2227,2231,2237,
- 2244,2248,2254,2261,2265,2270,2275,2279,2284,2287,2294,2297,2302,
- 2311,2315,2318,2331,2334,2339,2353,2357,2362,2374,2382,2388,2392,
- 2396,2400,2403,2409,2412,2416,2420,2424,2428,2432,2439,2442,2446,
- 2452,2456,2462,2466,2470,2475,2479,2483,2487,2492,2495,2498,2504,
- 2508,2512,2514,2518,2522,2526,2530,2533,2537,2543,2548,2550,2554,
- 2558,2563,2567,2572,2576,2580,2584,2588,2593,2597,2602,2606,2610,
- 2614,2618,2621,2624,2630,2634,2638,2642,2645,2648,2654,2658,2662,
- 2667,2671,2675,2680,2682,2685,2689,2692,2695,2701,2705,2709,2717,
- 2722,2726,2743
+ 2,170,7,170,2,171,7,171,2,172,7,172,1,0,1,0,3,0,349,8,0,1,0,1,0,
+ 3,0,353,8,0,1,0,5,0,356,8,0,10,0,12,0,359,9,0,1,0,3,0,362,8,0,1,
+ 0,1,0,1,1,3,1,367,8,1,1,1,3,1,370,8,1,1,1,1,1,3,1,374,8,1,1,1,3,
+ 1,377,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+ 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,400,8,2,1,3,1,3,1,3,1,3,3,3,406,
+ 8,3,1,3,1,3,3,3,410,8,3,1,3,3,3,413,8,3,1,3,1,3,1,3,1,3,3,3,419,
+ 8,3,1,3,3,3,422,8,3,1,4,1,4,3,4,426,8,4,1,4,1,4,3,4,430,8,4,1,4,
+ 1,4,3,4,434,8,4,1,4,5,4,437,8,4,10,4,12,4,440,9,4,1,4,3,4,443,8,
+ 4,1,4,1,4,1,5,1,5,1,5,3,5,450,8,5,1,5,1,5,3,5,454,8,5,1,5,1,5,1,
+ 5,1,5,1,5,1,5,3,5,462,8,5,1,5,1,5,3,5,466,8,5,1,6,1,6,1,6,1,6,1,
+ 6,1,6,1,6,1,6,3,6,476,8,6,1,6,1,6,3,6,480,8,6,1,6,1,6,3,6,484,8,
+ 6,1,6,5,6,487,8,6,10,6,12,6,490,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,
+ 1,7,1,7,1,7,3,7,502,8,7,1,7,1,7,3,7,506,8,7,1,7,1,7,1,7,1,7,1,7,
+ 1,7,3,7,514,8,7,1,7,3,7,517,8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,525,
+ 8,8,1,8,3,8,528,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,543,8,10,1,10,1,10,1,10,3,10,548,8,10,1,10,1,
+ 10,1,10,1,10,3,10,554,8,10,1,10,1,10,3,10,558,8,10,1,10,3,10,561,
+ 8,10,1,10,3,10,564,8,10,1,10,1,10,1,11,1,11,3,11,570,8,11,1,11,1,
+ 11,3,11,574,8,11,1,11,5,11,577,8,11,10,11,12,11,580,9,11,3,11,582,
+ 8,11,1,11,1,11,1,11,3,11,587,8,11,1,12,1,12,3,12,591,8,12,1,12,1,
+ 12,3,12,595,8,12,1,12,5,12,598,8,12,10,12,12,12,601,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,615,8,
+ 15,1,15,1,15,3,15,619,8,15,1,15,1,15,1,15,1,15,1,15,3,15,626,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,646,8,17,1,17,1,17,3,17,650,8,17,1,
+ 17,3,17,653,8,17,1,17,3,17,656,8,17,1,17,3,17,659,8,17,1,17,3,17,
+ 662,8,17,1,17,1,17,3,17,666,8,17,1,17,5,17,669,8,17,10,17,12,17,
+ 672,9,17,1,17,3,17,675,8,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,
+ 18,3,18,685,8,18,1,18,1,18,3,18,689,8,18,1,18,5,18,692,8,18,10,18,
+ 12,18,695,9,18,1,19,1,19,3,19,699,8,19,1,19,1,19,1,19,3,19,704,8,
+ 19,1,19,1,19,1,20,1,20,3,20,710,8,20,1,20,1,20,3,20,714,8,20,1,20,
+ 1,20,3,20,718,8,20,1,20,5,20,721,8,20,10,20,12,20,724,9,20,1,20,
+ 1,20,1,20,1,20,3,20,730,8,20,1,20,1,20,3,20,734,8,20,1,20,1,20,3,
+ 20,738,8,20,1,20,3,20,741,8,20,1,21,1,21,3,21,745,8,21,1,21,1,21,
+ 3,21,749,8,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,
+ 1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,768,8,23,1,23,1,23,3,23,
+ 772,8,23,1,23,1,23,3,23,776,8,23,1,23,1,23,3,23,780,8,23,1,23,1,
+ 23,3,23,784,8,23,1,23,3,23,787,8,23,1,23,3,23,790,8,23,1,23,1,23,
+ 1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,803,8,24,1,24,
+ 1,24,3,24,807,8,24,1,24,1,24,3,24,811,8,24,1,24,1,24,3,24,815,8,
+ 24,1,24,1,24,3,24,819,8,24,1,24,1,24,3,24,823,8,24,3,24,825,8,24,
+ 1,24,1,24,3,24,829,8,24,1,24,1,24,3,24,833,8,24,3,24,835,8,24,1,
+ 24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,
+ 25,850,8,25,1,25,1,25,3,25,854,8,25,1,25,1,25,3,25,858,8,25,1,25,
+ 1,25,3,25,862,8,25,1,25,1,25,3,25,866,8,25,1,25,4,25,869,8,25,11,
+ 25,12,25,870,1,25,3,25,874,8,25,1,25,1,25,3,25,878,8,25,1,25,1,25,
+ 3,25,882,8,25,3,25,884,8,25,1,25,1,25,3,25,888,8,25,1,25,1,25,3,
+ 25,892,8,25,3,25,894,8,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,
+ 1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,913,8,27,1,27,
+ 1,27,1,27,5,27,918,8,27,10,27,12,27,921,9,27,1,28,1,28,1,28,1,28,
+ 1,28,1,28,1,28,1,28,1,28,1,28,3,28,933,8,28,1,29,1,29,1,29,1,29,
+ 1,29,3,29,940,8,29,1,30,1,30,1,30,1,30,3,30,946,8,30,1,30,3,30,949,
+ 8,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,3,31,959,8,31,1,31,
+ 3,31,962,8,31,1,32,1,32,1,32,1,32,1,32,1,32,3,32,970,8,32,1,32,3,
+ 32,973,8,32,1,33,1,33,1,33,1,33,3,33,979,8,33,1,33,3,33,982,8,33,
+ 1,33,1,33,1,34,1,34,3,34,988,8,34,1,34,1,34,1,35,1,35,1,35,1,35,
+ 1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1003,8,36,1,36,1,36,1,37,
+ 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,3,38,1019,
+ 8,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39,1028,8,39,1,40,1,40,
+ 1,40,1,40,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,43,
+ 1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,3,44,1054,8,44,1,44,
+ 1,44,3,44,1058,8,44,1,44,5,44,1061,8,44,10,44,12,44,1064,9,44,1,
+ 45,1,45,1,45,1,45,1,46,1,46,3,46,1072,8,46,1,46,1,46,3,46,1076,8,
+ 46,1,46,5,46,1079,8,46,10,46,12,46,1082,9,46,1,47,1,47,1,47,3,47,
+ 1087,8,47,1,47,1,47,1,47,1,47,3,47,1093,8,47,1,48,1,48,1,48,1,48,
+ 3,48,1099,8,48,1,48,1,48,3,48,1103,8,48,1,48,1,48,3,48,1107,8,48,
+ 1,48,1,48,1,49,1,49,1,49,1,49,3,49,1115,8,49,1,49,1,49,3,49,1119,
+ 8,49,1,49,1,49,3,49,1123,8,49,1,49,1,49,1,49,1,49,3,49,1129,8,49,
+ 1,49,1,49,3,49,1133,8,49,1,49,1,49,3,49,1137,8,49,1,49,1,49,1,49,
+ 1,49,3,49,1143,8,49,1,49,1,49,3,49,1147,8,49,1,49,1,49,3,49,1151,
+ 8,49,1,49,1,49,3,49,1155,8,49,1,49,1,49,3,49,1159,8,49,1,49,1,49,
+ 1,49,1,49,3,49,1165,8,49,1,49,1,49,3,49,1169,8,49,1,49,1,49,3,49,
+ 1173,8,49,1,49,1,49,3,49,1177,8,49,1,49,1,49,3,49,1181,8,49,1,49,
+ 1,49,3,49,1185,8,49,1,49,1,49,5,49,1189,8,49,10,49,12,49,1192,9,
+ 49,1,50,1,50,5,50,1196,8,50,10,50,12,50,1199,9,50,1,51,1,51,3,51,
+ 1203,8,51,1,51,1,51,1,52,1,52,3,52,1209,8,52,1,53,1,53,1,53,3,53,
+ 1214,8,53,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,
+ 1,55,1,55,1,55,1,55,3,55,1231,8,55,1,56,1,56,3,56,1235,8,56,1,57,
+ 1,57,1,57,1,57,1,57,1,57,3,57,1243,8,57,1,58,1,58,1,58,1,58,1,59,
+ 1,59,3,59,1251,8,59,3,59,1253,8,59,1,59,1,59,1,60,1,60,1,60,1,60,
+ 1,60,1,60,3,60,1263,8,60,1,60,1,60,3,60,1267,8,60,1,60,1,60,3,60,
+ 1271,8,60,1,60,1,60,1,61,1,61,3,61,1277,8,61,1,61,1,61,3,61,1281,
+ 8,61,1,61,5,61,1284,8,61,10,61,12,61,1287,9,61,1,62,1,62,3,62,1291,
+ 8,62,1,62,5,62,1294,8,62,10,62,12,62,1297,9,62,1,62,1,62,3,62,1301,
+ 8,62,4,62,1303,8,62,11,62,12,62,1304,1,62,1,62,1,62,3,62,1310,8,
+ 62,1,63,1,63,1,63,1,63,3,63,1316,8,63,1,63,1,63,1,63,3,63,1321,8,
+ 63,1,63,3,63,1324,8,63,1,64,1,64,3,64,1328,8,64,1,65,1,65,3,65,1332,
+ 8,65,5,65,1334,8,65,10,65,12,65,1337,9,65,1,65,1,65,1,65,3,65,1342,
+ 8,65,5,65,1344,8,65,10,65,12,65,1347,9,65,1,65,1,65,3,65,1351,8,
+ 65,1,65,5,65,1354,8,65,10,65,12,65,1357,9,65,1,65,3,65,1360,8,65,
+ 1,65,3,65,1363,8,65,3,65,1365,8,65,1,66,1,66,3,66,1369,8,66,4,66,
+ 1371,8,66,11,66,12,66,1372,1,66,1,66,1,67,1,67,3,67,1379,8,67,5,
+ 67,1381,8,67,10,67,12,67,1384,9,67,1,67,1,67,3,67,1388,8,67,5,67,
+ 1390,8,67,10,67,12,67,1393,9,67,1,67,1,67,1,68,1,68,1,68,1,68,3,
+ 68,1401,8,68,1,69,1,69,1,69,1,69,3,69,1407,8,69,1,70,1,70,1,70,1,
+ 70,1,70,1,70,3,70,1415,8,70,1,70,1,70,3,70,1419,8,70,1,70,1,70,3,
+ 70,1423,8,70,1,70,1,70,3,70,1427,8,70,1,70,1,70,1,70,1,70,1,70,3,
+ 70,1434,8,70,1,70,3,70,1437,8,70,1,70,3,70,1440,8,70,1,70,3,70,1443,
+ 8,70,1,71,1,71,3,71,1447,8,71,3,71,1449,8,71,1,71,1,71,1,71,1,71,
+ 3,71,1455,8,71,1,71,3,71,1458,8,71,1,72,1,72,3,72,1462,8,72,1,72,
+ 1,72,3,72,1466,8,72,1,72,1,72,3,72,1470,8,72,1,72,1,72,3,72,1474,
+ 8,72,1,73,1,73,3,73,1478,8,73,1,73,1,73,3,73,1482,8,73,1,73,5,73,
+ 1485,8,73,10,73,12,73,1488,9,73,1,74,1,74,1,74,3,74,1493,8,74,1,
+ 74,1,74,3,74,1497,8,74,1,75,1,75,3,75,1501,8,75,1,75,1,75,3,75,1505,
+ 8,75,1,75,1,75,1,75,3,75,1510,8,75,1,75,1,75,3,75,1514,8,75,1,76,
+ 1,76,1,76,1,76,1,77,1,77,1,77,3,77,1523,8,77,1,77,1,77,3,77,1527,
+ 8,77,1,77,1,77,1,77,3,77,1532,8,77,1,77,1,77,1,77,1,77,1,77,1,77,
+ 1,77,1,77,1,77,1,77,4,77,1544,8,77,11,77,12,77,1545,5,77,1548,8,
+ 77,10,77,12,77,1551,9,77,1,78,1,78,3,78,1555,8,78,1,78,1,78,1,78,
+ 1,78,1,78,1,78,1,79,1,79,3,79,1565,8,79,1,79,1,79,1,80,1,80,3,80,
+ 1571,8,80,1,80,1,80,1,80,5,80,1576,8,80,10,80,12,80,1579,9,80,1,
+ 81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,3,81,1591,8,81,1,
+ 82,1,82,3,82,1595,8,82,1,82,1,82,3,82,1599,8,82,1,82,1,82,3,82,1603,
+ 8,82,1,82,5,82,1606,8,82,10,82,12,82,1609,9,82,1,83,1,83,3,83,1613,
+ 8,83,1,83,1,83,3,83,1617,8,83,1,83,1,83,1,84,1,84,3,84,1623,8,84,
+ 1,84,1,84,3,84,1627,8,84,1,84,1,84,3,84,1631,8,84,1,84,1,84,3,84,
+ 1635,8,84,1,84,5,84,1638,8,84,10,84,12,84,1641,9,84,1,85,1,85,1,
+ 85,3,85,1646,8,85,1,85,3,85,1649,8,85,1,86,1,86,1,86,1,87,3,87,1655,
+ 8,87,1,87,3,87,1658,8,87,1,87,1,87,1,87,1,87,3,87,1664,8,87,1,87,
+ 1,87,3,87,1668,8,87,1,87,1,87,3,87,1672,8,87,1,88,1,88,3,88,1676,
+ 8,88,1,88,1,88,3,88,1680,8,88,1,88,5,88,1683,8,88,10,88,12,88,1686,
+ 9,88,1,88,1,88,3,88,1690,8,88,1,88,1,88,3,88,1694,8,88,1,88,5,88,
+ 1697,8,88,10,88,12,88,1700,9,88,3,88,1702,8,88,1,89,1,89,1,89,1,
+ 89,1,89,1,89,1,89,3,89,1711,8,89,1,90,1,90,1,90,1,90,1,90,1,90,1,
+ 90,3,90,1720,8,90,1,90,5,90,1723,8,90,10,90,12,90,1726,9,90,1,91,
+ 1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,93,1,93,3,93,1738,8,93,1,93,
+ 3,93,1741,8,93,1,94,1,94,1,94,1,94,1,95,1,95,3,95,1749,8,95,1,95,
+ 1,95,3,95,1753,8,95,1,95,5,95,1756,8,95,10,95,12,95,1759,9,95,1,
+ 96,1,96,3,96,1763,8,96,1,96,1,96,3,96,1767,8,96,1,96,1,96,1,96,3,
+ 96,1772,8,96,1,97,1,97,1,98,1,98,3,98,1778,8,98,1,98,5,98,1781,8,
+ 98,10,98,12,98,1784,9,98,1,98,1,98,1,98,1,98,3,98,1790,8,98,1,99,
+ 1,99,3,99,1794,8,99,1,99,1,99,3,99,1798,8,99,3,99,1800,8,99,1,99,
+ 1,99,3,99,1804,8,99,3,99,1806,8,99,1,99,1,99,3,99,1810,8,99,3,99,
+ 1812,8,99,1,99,1,99,1,100,1,100,3,100,1818,8,100,1,100,1,100,1,101,
+ 1,101,3,101,1824,8,101,1,101,1,101,3,101,1828,8,101,1,101,3,101,
+ 1831,8,101,1,101,3,101,1834,8,101,1,101,1,101,1,101,1,101,3,101,
+ 1840,8,101,1,101,3,101,1843,8,101,1,101,3,101,1846,8,101,1,101,1,
+ 101,3,101,1850,8,101,1,101,1,101,1,101,1,101,3,101,1856,8,101,1,
+ 101,3,101,1859,8,101,1,101,3,101,1862,8,101,1,101,1,101,3,101,1866,
+ 8,101,1,102,1,102,3,102,1870,8,102,1,102,1,102,3,102,1874,8,102,
+ 3,102,1876,8,102,1,102,1,102,3,102,1880,8,102,3,102,1882,8,102,1,
+ 102,1,102,3,102,1886,8,102,3,102,1888,8,102,1,102,1,102,3,102,1892,
+ 8,102,3,102,1894,8,102,1,102,1,102,1,103,1,103,3,103,1900,8,103,
+ 1,103,1,103,3,103,1904,8,103,1,103,1,103,3,103,1908,8,103,1,103,
+ 1,103,3,103,1912,8,103,1,103,1,103,3,103,1916,8,103,1,103,1,103,
+ 3,103,1920,8,103,1,103,1,103,3,103,1924,8,103,1,103,1,103,3,103,
+ 1928,8,103,5,103,1930,8,103,10,103,12,103,1933,9,103,3,103,1935,
+ 8,103,1,103,1,103,1,104,1,104,3,104,1941,8,104,1,104,1,104,3,104,
+ 1945,8,104,1,104,1,104,3,104,1949,8,104,1,104,3,104,1952,8,104,1,
+ 104,5,104,1955,8,104,10,104,12,104,1958,9,104,1,105,1,105,3,105,
+ 1962,8,105,1,105,5,105,1965,8,105,10,105,12,105,1968,9,105,1,106,
+ 1,106,3,106,1972,8,106,1,106,1,106,1,107,1,107,3,107,1978,8,107,
+ 1,107,1,107,1,107,1,107,1,107,1,107,3,107,1986,8,107,1,107,3,107,
+ 1989,8,107,1,107,3,107,1992,8,107,1,107,3,107,1995,8,107,1,107,1,
+ 107,3,107,1999,8,107,1,107,3,107,2002,8,107,1,107,3,107,2005,8,107,
+ 1,107,3,107,2008,8,107,1,107,3,107,2011,8,107,1,108,1,108,3,108,
+ 2015,8,108,1,108,1,108,3,108,2019,8,108,1,108,1,108,3,108,2023,8,
+ 108,1,108,1,108,3,108,2027,8,108,1,108,1,108,3,108,2031,8,108,1,
+ 108,1,108,3,108,2035,8,108,3,108,2037,8,108,1,108,3,108,2040,8,108,
+ 1,108,1,108,3,108,2044,8,108,1,108,1,108,3,108,2048,8,108,1,108,
+ 1,108,3,108,2052,8,108,1,108,1,108,3,108,2056,8,108,3,108,2058,8,
+ 108,1,108,1,108,1,109,1,109,3,109,2064,8,109,1,109,3,109,2067,8,
+ 109,1,109,3,109,2070,8,109,1,109,1,109,1,110,1,110,3,110,2076,8,
+ 110,1,110,3,110,2079,8,110,1,110,3,110,2082,8,110,1,110,1,110,1,
+ 111,1,111,1,112,1,112,1,113,1,113,1,114,1,114,1,115,1,115,1,116,
+ 1,116,1,116,1,116,1,116,5,116,2101,8,116,10,116,12,116,2104,9,116,
+ 1,117,1,117,1,117,1,117,1,117,5,117,2111,8,117,10,117,12,117,2114,
+ 9,117,1,118,1,118,1,118,1,118,1,118,5,118,2121,8,118,10,118,12,118,
+ 2124,9,118,1,119,1,119,3,119,2128,8,119,5,119,2130,8,119,10,119,
+ 12,119,2133,9,119,1,119,1,119,1,120,1,120,3,120,2139,8,120,1,120,
+ 1,120,3,120,2143,8,120,1,120,1,120,3,120,2147,8,120,1,120,1,120,
+ 3,120,2151,8,120,1,120,1,120,3,120,2155,8,120,1,120,1,120,1,120,
+ 1,120,1,120,1,120,3,120,2163,8,120,1,120,1,120,3,120,2167,8,120,
+ 1,120,1,120,3,120,2171,8,120,1,120,1,120,3,120,2175,8,120,1,120,
+ 1,120,4,120,2179,8,120,11,120,12,120,2180,1,120,1,120,3,120,2185,
+ 8,120,1,121,1,121,1,122,1,122,3,122,2191,8,122,1,122,1,122,3,122,
+ 2195,8,122,1,122,5,122,2198,8,122,10,122,12,122,2201,9,122,1,123,
+ 1,123,3,123,2205,8,123,1,123,1,123,3,123,2209,8,123,1,123,5,123,
+ 2212,8,123,10,123,12,123,2215,9,123,1,124,1,124,3,124,2219,8,124,
+ 1,124,1,124,3,124,2223,8,124,1,124,1,124,5,124,2227,8,124,10,124,
+ 12,124,2230,9,124,1,125,1,125,1,126,1,126,3,126,2236,8,126,1,126,
+ 1,126,3,126,2240,8,126,1,126,1,126,5,126,2244,8,126,10,126,12,126,
+ 2247,9,126,1,127,1,127,1,128,1,128,3,128,2253,8,128,1,128,1,128,
+ 3,128,2257,8,128,1,128,1,128,5,128,2261,8,128,10,128,12,128,2264,
+ 9,128,1,129,1,129,1,130,1,130,3,130,2270,8,130,1,130,1,130,3,130,
+ 2274,8,130,1,130,5,130,2277,8,130,10,130,12,130,2280,9,130,1,131,
+ 1,131,3,131,2284,8,131,5,131,2286,8,131,10,131,12,131,2289,9,131,
+ 1,131,1,131,3,131,2293,8,131,1,131,3,131,2296,8,131,1,132,1,132,
+ 1,132,4,132,2301,8,132,11,132,12,132,2302,1,132,3,132,2306,8,132,
+ 1,133,1,133,1,133,3,133,2311,8,133,1,133,1,133,1,133,1,133,1,133,
+ 1,133,1,133,3,133,2320,8,133,1,133,1,133,3,133,2324,8,133,1,133,
+ 3,133,2327,8,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,
+ 1,134,1,134,1,134,3,134,2340,8,134,1,134,3,134,2343,8,134,1,134,
+ 1,134,1,135,3,135,2348,8,135,1,135,1,135,1,136,1,136,1,136,1,136,
+ 1,136,1,136,1,136,1,136,1,136,1,136,3,136,2362,8,136,1,137,1,137,
+ 3,137,2366,8,137,1,137,5,137,2369,8,137,10,137,12,137,2372,9,137,
+ 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,3,138,
+ 2384,8,138,1,139,1,139,3,139,2388,8,139,1,139,1,139,3,139,2392,8,
+ 139,1,139,1,139,3,139,2396,8,139,1,139,1,139,1,139,1,139,3,139,2402,
+ 8,139,1,139,1,139,3,139,2406,8,139,1,139,1,139,3,139,2410,8,139,
+ 1,139,1,139,1,139,1,139,3,139,2416,8,139,1,139,1,139,3,139,2420,
+ 8,139,1,139,1,139,3,139,2424,8,139,1,139,1,139,1,139,1,139,3,139,
+ 2430,8,139,1,139,1,139,3,139,2434,8,139,1,139,1,139,3,139,2438,8,
+ 139,1,139,1,139,3,139,2442,8,139,1,140,1,140,3,140,2446,8,140,1,
+ 140,3,140,2449,8,140,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,
+ 142,1,142,1,142,1,142,1,142,3,142,2463,8,142,1,143,1,143,1,144,1,
+ 144,3,144,2469,8,144,1,144,1,144,3,144,2473,8,144,1,144,1,144,3,
+ 144,2477,8,144,5,144,2479,8,144,10,144,12,144,2482,9,144,3,144,2484,
+ 8,144,1,144,1,144,1,145,1,145,3,145,2490,8,145,1,145,3,145,2493,
+ 8,145,1,146,1,146,3,146,2497,8,146,1,146,1,146,3,146,2501,8,146,
+ 1,146,1,146,3,146,2505,8,146,1,146,1,146,3,146,2509,8,146,5,146,
+ 2511,8,146,10,146,12,146,2514,9,146,1,146,1,146,1,147,1,147,3,147,
+ 2520,8,147,1,147,3,147,2523,8,147,1,147,1,147,3,147,2527,8,147,1,
+ 147,1,147,1,148,1,148,3,148,2533,8,148,1,148,1,148,3,148,2537,8,
+ 148,1,148,1,148,1,149,1,149,3,149,2543,8,149,1,149,1,149,3,149,2547,
+ 8,149,1,149,1,149,3,149,2551,8,149,1,149,1,149,1,149,3,149,2556,
+ 8,149,1,149,1,149,3,149,2560,8,149,1,149,1,149,3,149,2564,8,149,
+ 1,149,1,149,3,149,2568,8,149,1,149,1,149,1,149,3,149,2573,8,149,
+ 1,149,3,149,2576,8,149,1,149,3,149,2579,8,149,1,149,1,149,1,149,
+ 1,149,3,149,2585,8,149,1,149,1,149,3,149,2589,8,149,1,149,1,149,
+ 3,149,2593,8,149,3,149,2595,8,149,1,149,1,149,3,149,2599,8,149,1,
+ 149,1,149,3,149,2603,8,149,1,149,1,149,3,149,2607,8,149,5,149,2609,
+ 8,149,10,149,12,149,2612,9,149,3,149,2614,8,149,1,149,1,149,3,149,
+ 2618,8,149,1,150,1,150,1,151,1,151,3,151,2624,8,151,1,151,1,151,
+ 1,151,3,151,2629,8,151,3,151,2631,8,151,1,151,1,151,3,151,2635,8,
+ 151,1,152,1,152,3,152,2639,8,152,1,152,1,152,1,152,3,152,2644,8,
+ 152,1,152,1,152,3,152,2648,8,152,1,153,1,153,1,153,3,153,2653,8,
+ 153,1,153,1,153,3,153,2657,8,153,1,153,1,153,3,153,2661,8,153,1,
+ 153,1,153,3,153,2665,8,153,5,153,2667,8,153,10,153,12,153,2670,9,
+ 153,1,153,1,153,3,153,2674,8,153,1,154,1,154,3,154,2678,8,154,1,
+ 154,4,154,2681,8,154,11,154,12,154,2682,1,155,1,155,3,155,2687,8,
+ 155,1,155,1,155,3,155,2691,8,155,1,155,1,155,3,155,2695,8,155,1,
+ 155,1,155,3,155,2699,8,155,1,155,3,155,2702,8,155,1,155,3,155,2705,
+ 8,155,1,155,1,155,1,156,1,156,3,156,2711,8,156,1,156,1,156,3,156,
+ 2715,8,156,1,156,1,156,3,156,2719,8,156,1,156,1,156,3,156,2723,8,
+ 156,1,156,3,156,2726,8,156,1,156,3,156,2729,8,156,1,156,1,156,1,
+ 157,1,157,3,157,2735,8,157,1,157,1,157,3,157,2739,8,157,1,158,1,
+ 158,3,158,2743,8,158,1,158,4,158,2746,8,158,11,158,12,158,2747,1,
+ 158,1,158,3,158,2752,8,158,1,158,1,158,3,158,2756,8,158,1,158,4,
+ 158,2759,8,158,11,158,12,158,2760,3,158,2763,8,158,1,158,3,158,2766,
+ 8,158,1,158,1,158,3,158,2770,8,158,1,158,3,158,2773,8,158,1,158,
+ 3,158,2776,8,158,1,158,1,158,1,159,1,159,3,159,2782,8,159,1,159,
+ 1,159,3,159,2786,8,159,1,159,1,159,3,159,2790,8,159,1,159,1,159,
+ 1,160,1,160,1,161,1,161,3,161,2798,8,161,1,162,1,162,1,162,3,162,
+ 2803,8,162,1,163,1,163,3,163,2807,8,163,1,163,1,163,1,164,1,164,
+ 1,165,1,165,1,166,1,166,1,167,1,167,1,168,1,168,1,168,1,168,1,168,
+ 3,168,2824,8,168,1,169,1,169,1,170,1,170,1,171,1,171,1,172,1,172,
+ 1,172,0,2,98,154,173,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,0,11,2,0,130,130,135,135,2,0,53,54,75,76,2,0,6,6,
+ 13,17,1,0,19,20,2,0,21,21,155,155,2,0,22,23,152,152,2,0,87,87,140,
+ 140,28,0,48,48,50,50,52,52,55,58,61,61,63,64,66,68,70,71,74,74,77,
+ 77,79,79,84,86,90,90,94,95,97,97,99,99,101,104,106,109,111,112,123,
+ 128,130,131,133,133,139,139,141,141,144,144,148,148,151,151,153,
+ 153,2,0,14,14,27,30,2,0,16,16,31,34,2,0,35,45,155,155,3216,0,346,
+ 1,0,0,0,2,366,1,0,0,0,4,399,1,0,0,0,6,401,1,0,0,0,8,423,1,0,0,0,
+ 10,465,1,0,0,0,12,467,1,0,0,0,14,497,1,0,0,0,16,518,1,0,0,0,18,529,
+ 1,0,0,0,20,535,1,0,0,0,22,586,1,0,0,0,24,588,1,0,0,0,26,602,1,0,
+ 0,0,28,606,1,0,0,0,30,625,1,0,0,0,32,627,1,0,0,0,34,639,1,0,0,0,
+ 36,682,1,0,0,0,38,696,1,0,0,0,40,740,1,0,0,0,42,742,1,0,0,0,44,752,
+ 1,0,0,0,46,758,1,0,0,0,48,793,1,0,0,0,50,838,1,0,0,0,52,897,1,0,
+ 0,0,54,905,1,0,0,0,56,922,1,0,0,0,58,939,1,0,0,0,60,941,1,0,0,0,
+ 62,961,1,0,0,0,64,972,1,0,0,0,66,974,1,0,0,0,68,987,1,0,0,0,70,991,
+ 1,0,0,0,72,995,1,0,0,0,74,1006,1,0,0,0,76,1018,1,0,0,0,78,1020,1,
+ 0,0,0,80,1029,1,0,0,0,82,1033,1,0,0,0,84,1037,1,0,0,0,86,1043,1,
+ 0,0,0,88,1051,1,0,0,0,90,1065,1,0,0,0,92,1069,1,0,0,0,94,1083,1,
+ 0,0,0,96,1094,1,0,0,0,98,1184,1,0,0,0,100,1193,1,0,0,0,102,1200,
+ 1,0,0,0,104,1208,1,0,0,0,106,1210,1,0,0,0,108,1215,1,0,0,0,110,1230,
+ 1,0,0,0,112,1234,1,0,0,0,114,1236,1,0,0,0,116,1244,1,0,0,0,118,1252,
+ 1,0,0,0,120,1256,1,0,0,0,122,1274,1,0,0,0,124,1309,1,0,0,0,126,1323,
+ 1,0,0,0,128,1327,1,0,0,0,130,1364,1,0,0,0,132,1370,1,0,0,0,134,1382,
+ 1,0,0,0,136,1400,1,0,0,0,138,1406,1,0,0,0,140,1408,1,0,0,0,142,1448,
+ 1,0,0,0,144,1459,1,0,0,0,146,1475,1,0,0,0,148,1489,1,0,0,0,150,1500,
+ 1,0,0,0,152,1515,1,0,0,0,154,1531,1,0,0,0,156,1552,1,0,0,0,158,1562,
+ 1,0,0,0,160,1568,1,0,0,0,162,1590,1,0,0,0,164,1592,1,0,0,0,166,1610,
+ 1,0,0,0,168,1622,1,0,0,0,170,1642,1,0,0,0,172,1650,1,0,0,0,174,1657,
+ 1,0,0,0,176,1701,1,0,0,0,178,1710,1,0,0,0,180,1712,1,0,0,0,182,1727,
+ 1,0,0,0,184,1731,1,0,0,0,186,1735,1,0,0,0,188,1742,1,0,0,0,190,1746,
+ 1,0,0,0,192,1771,1,0,0,0,194,1773,1,0,0,0,196,1789,1,0,0,0,198,1791,
+ 1,0,0,0,200,1815,1,0,0,0,202,1865,1,0,0,0,204,1867,1,0,0,0,206,1897,
+ 1,0,0,0,208,1938,1,0,0,0,210,1959,1,0,0,0,212,1969,1,0,0,0,214,1975,
+ 1,0,0,0,216,2012,1,0,0,0,218,2061,1,0,0,0,220,2073,1,0,0,0,222,2085,
+ 1,0,0,0,224,2087,1,0,0,0,226,2089,1,0,0,0,228,2091,1,0,0,0,230,2093,
+ 1,0,0,0,232,2095,1,0,0,0,234,2105,1,0,0,0,236,2115,1,0,0,0,238,2131,
+ 1,0,0,0,240,2184,1,0,0,0,242,2186,1,0,0,0,244,2188,1,0,0,0,246,2202,
+ 1,0,0,0,248,2216,1,0,0,0,250,2231,1,0,0,0,252,2233,1,0,0,0,254,2248,
+ 1,0,0,0,256,2250,1,0,0,0,258,2265,1,0,0,0,260,2267,1,0,0,0,262,2287,
+ 1,0,0,0,264,2297,1,0,0,0,266,2326,1,0,0,0,268,2339,1,0,0,0,270,2347,
+ 1,0,0,0,272,2361,1,0,0,0,274,2363,1,0,0,0,276,2383,1,0,0,0,278,2441,
+ 1,0,0,0,280,2443,1,0,0,0,282,2450,1,0,0,0,284,2462,1,0,0,0,286,2464,
+ 1,0,0,0,288,2466,1,0,0,0,290,2487,1,0,0,0,292,2494,1,0,0,0,294,2519,
+ 1,0,0,0,296,2530,1,0,0,0,298,2617,1,0,0,0,300,2619,1,0,0,0,302,2634,
+ 1,0,0,0,304,2636,1,0,0,0,306,2673,1,0,0,0,308,2675,1,0,0,0,310,2684,
+ 1,0,0,0,312,2708,1,0,0,0,314,2732,1,0,0,0,316,2762,1,0,0,0,318,2779,
+ 1,0,0,0,320,2793,1,0,0,0,322,2797,1,0,0,0,324,2799,1,0,0,0,326,2804,
+ 1,0,0,0,328,2810,1,0,0,0,330,2812,1,0,0,0,332,2814,1,0,0,0,334,2816,
+ 1,0,0,0,336,2823,1,0,0,0,338,2825,1,0,0,0,340,2827,1,0,0,0,342,2829,
+ 1,0,0,0,344,2831,1,0,0,0,346,357,3,2,1,0,347,349,5,172,0,0,348,347,
+ 1,0,0,0,348,349,1,0,0,0,349,350,1,0,0,0,350,352,5,1,0,0,351,353,
+ 5,172,0,0,352,351,1,0,0,0,352,353,1,0,0,0,353,354,1,0,0,0,354,356,
+ 3,2,1,0,355,348,1,0,0,0,356,359,1,0,0,0,357,355,1,0,0,0,357,358,
+ 1,0,0,0,358,361,1,0,0,0,359,357,1,0,0,0,360,362,5,172,0,0,361,360,
+ 1,0,0,0,361,362,1,0,0,0,362,363,1,0,0,0,363,364,5,0,0,1,364,1,1,
+ 0,0,0,365,367,3,104,52,0,366,365,1,0,0,0,366,367,1,0,0,0,367,369,
+ 1,0,0,0,368,370,5,172,0,0,369,368,1,0,0,0,369,370,1,0,0,0,370,371,
+ 1,0,0,0,371,376,3,4,2,0,372,374,5,172,0,0,373,372,1,0,0,0,373,374,
+ 1,0,0,0,374,375,1,0,0,0,375,377,5,1,0,0,376,373,1,0,0,0,376,377,
+ 1,0,0,0,377,3,1,0,0,0,378,400,3,118,59,0,379,400,3,46,23,0,380,400,
+ 3,48,24,0,381,400,3,50,25,0,382,400,3,54,27,0,383,400,3,56,28,0,
+ 384,400,3,72,36,0,385,400,3,74,37,0,386,400,3,6,3,0,387,400,3,12,
+ 6,0,388,400,3,14,7,0,389,400,3,30,15,0,390,400,3,34,17,0,391,400,
+ 3,32,16,0,392,400,3,110,55,0,393,400,3,112,56,0,394,400,3,16,8,0,
+ 395,400,3,18,9,0,396,400,3,20,10,0,397,400,3,26,13,0,398,400,3,28,
+ 14,0,399,378,1,0,0,0,399,379,1,0,0,0,399,380,1,0,0,0,399,381,1,0,
+ 0,0,399,382,1,0,0,0,399,383,1,0,0,0,399,384,1,0,0,0,399,385,1,0,
+ 0,0,399,386,1,0,0,0,399,387,1,0,0,0,399,388,1,0,0,0,399,389,1,0,
+ 0,0,399,390,1,0,0,0,399,391,1,0,0,0,399,392,1,0,0,0,399,393,1,0,
+ 0,0,399,394,1,0,0,0,399,395,1,0,0,0,399,396,1,0,0,0,399,397,1,0,
+ 0,0,399,398,1,0,0,0,400,5,1,0,0,0,401,402,5,67,0,0,402,403,5,172,
+ 0,0,403,412,3,334,167,0,404,406,5,172,0,0,405,404,1,0,0,0,405,406,
+ 1,0,0,0,406,407,1,0,0,0,407,409,3,8,4,0,408,410,5,172,0,0,409,408,
+ 1,0,0,0,409,410,1,0,0,0,410,413,1,0,0,0,411,413,5,172,0,0,412,405,
+ 1,0,0,0,412,411,1,0,0,0,413,414,1,0,0,0,414,415,5,88,0,0,415,416,
+ 5,172,0,0,416,421,3,10,5,0,417,419,5,172,0,0,418,417,1,0,0,0,418,
+ 419,1,0,0,0,419,420,1,0,0,0,420,422,3,42,21,0,421,418,1,0,0,0,421,
+ 422,1,0,0,0,422,7,1,0,0,0,423,425,5,2,0,0,424,426,5,172,0,0,425,
+ 424,1,0,0,0,425,426,1,0,0,0,426,427,1,0,0,0,427,438,3,334,167,0,
+ 428,430,5,172,0,0,429,428,1,0,0,0,429,430,1,0,0,0,430,431,1,0,0,
+ 0,431,433,5,3,0,0,432,434,5,172,0,0,433,432,1,0,0,0,433,434,1,0,
+ 0,0,434,435,1,0,0,0,435,437,3,334,167,0,436,429,1,0,0,0,437,440,
+ 1,0,0,0,438,436,1,0,0,0,438,439,1,0,0,0,439,442,1,0,0,0,440,438,
+ 1,0,0,0,441,443,5,172,0,0,442,441,1,0,0,0,442,443,1,0,0,0,443,444,
+ 1,0,0,0,444,445,5,4,0,0,445,9,1,0,0,0,446,466,3,40,20,0,447,449,
+ 5,2,0,0,448,450,5,172,0,0,449,448,1,0,0,0,449,450,1,0,0,0,450,451,
+ 1,0,0,0,451,453,3,118,59,0,452,454,5,172,0,0,453,452,1,0,0,0,453,
+ 454,1,0,0,0,454,455,1,0,0,0,455,456,5,4,0,0,456,466,1,0,0,0,457,
+ 466,3,320,160,0,458,459,3,320,160,0,459,461,5,5,0,0,460,462,5,172,
+ 0,0,461,460,1,0,0,0,461,462,1,0,0,0,462,463,1,0,0,0,463,464,3,334,
+ 167,0,464,466,1,0,0,0,465,446,1,0,0,0,465,447,1,0,0,0,465,457,1,
+ 0,0,0,465,458,1,0,0,0,466,11,1,0,0,0,467,468,5,67,0,0,468,469,5,
+ 172,0,0,469,470,3,334,167,0,470,471,5,172,0,0,471,472,5,88,0,0,472,
+ 473,5,172,0,0,473,475,5,2,0,0,474,476,5,172,0,0,475,474,1,0,0,0,
+ 475,476,1,0,0,0,476,477,1,0,0,0,477,488,5,158,0,0,478,480,5,172,
+ 0,0,479,478,1,0,0,0,479,480,1,0,0,0,480,481,1,0,0,0,481,483,5,3,
+ 0,0,482,484,5,172,0,0,483,482,1,0,0,0,483,484,1,0,0,0,484,485,1,
+ 0,0,0,485,487,5,158,0,0,486,479,1,0,0,0,487,490,1,0,0,0,488,486,
+ 1,0,0,0,488,489,1,0,0,0,489,491,1,0,0,0,490,488,1,0,0,0,491,492,
+ 5,4,0,0,492,493,5,172,0,0,493,494,5,57,0,0,494,495,5,172,0,0,495,
+ 496,5,62,0,0,496,13,1,0,0,0,497,498,5,67,0,0,498,499,5,172,0,0,499,
+ 501,5,2,0,0,500,502,5,172,0,0,501,500,1,0,0,0,501,502,1,0,0,0,502,
+ 503,1,0,0,0,503,505,3,118,59,0,504,506,5,172,0,0,505,504,1,0,0,0,
+ 505,506,1,0,0,0,506,507,1,0,0,0,507,508,5,4,0,0,508,509,5,172,0,
+ 0,509,510,5,137,0,0,510,511,5,172,0,0,511,516,5,158,0,0,512,514,
+ 5,172,0,0,513,512,1,0,0,0,513,514,1,0,0,0,514,515,1,0,0,0,515,517,
+ 3,42,21,0,516,513,1,0,0,0,516,517,1,0,0,0,517,15,1,0,0,0,518,519,
+ 5,85,0,0,519,520,5,172,0,0,520,521,5,71,0,0,521,522,5,172,0,0,522,
+ 527,5,158,0,0,523,525,5,172,0,0,524,523,1,0,0,0,524,525,1,0,0,0,
+ 525,526,1,0,0,0,526,528,3,42,21,0,527,524,1,0,0,0,527,528,1,0,0,
+ 0,528,17,1,0,0,0,529,530,5,94,0,0,530,531,5,172,0,0,531,532,5,71,
+ 0,0,532,533,5,172,0,0,533,534,5,158,0,0,534,19,1,0,0,0,535,536,5,
+ 55,0,0,536,537,5,172,0,0,537,542,5,158,0,0,538,539,5,172,0,0,539,
+ 540,5,52,0,0,540,541,5,172,0,0,541,543,3,334,167,0,542,538,1,0,0,
+ 0,542,543,1,0,0,0,543,544,1,0,0,0,544,545,5,172,0,0,545,547,5,2,
+ 0,0,546,548,5,172,0,0,547,546,1,0,0,0,547,548,1,0,0,0,548,549,1,
+ 0,0,0,549,550,5,72,0,0,550,551,5,172,0,0,551,560,3,336,168,0,552,
+ 554,5,172,0,0,553,552,1,0,0,0,553,554,1,0,0,0,554,555,1,0,0,0,555,
+ 557,5,3,0,0,556,558,5,172,0,0,557,556,1,0,0,0,557,558,1,0,0,0,558,
+ 559,1,0,0,0,559,561,3,24,12,0,560,553,1,0,0,0,560,561,1,0,0,0,561,
+ 563,1,0,0,0,562,564,5,172,0,0,563,562,1,0,0,0,563,564,1,0,0,0,564,
+ 565,1,0,0,0,565,566,5,4,0,0,566,21,1,0,0,0,567,581,3,336,168,0,568,
+ 570,5,172,0,0,569,568,1,0,0,0,569,570,1,0,0,0,570,571,1,0,0,0,571,
+ 573,5,6,0,0,572,574,5,172,0,0,573,572,1,0,0,0,573,574,1,0,0,0,574,
+ 582,1,0,0,0,575,577,5,172,0,0,576,575,1,0,0,0,577,580,1,0,0,0,578,
+ 576,1,0,0,0,578,579,1,0,0,0,579,582,1,0,0,0,580,578,1,0,0,0,581,
+ 569,1,0,0,0,581,578,1,0,0,0,582,583,1,0,0,0,583,584,3,284,142,0,
+ 584,587,1,0,0,0,585,587,3,336,168,0,586,567,1,0,0,0,586,585,1,0,
+ 0,0,587,23,1,0,0,0,588,599,3,22,11,0,589,591,5,172,0,0,590,589,1,
+ 0,0,0,590,591,1,0,0,0,591,592,1,0,0,0,592,594,5,3,0,0,593,595,5,
+ 172,0,0,594,593,1,0,0,0,594,595,1,0,0,0,595,596,1,0,0,0,596,598,
+ 3,22,11,0,597,590,1,0,0,0,598,601,1,0,0,0,599,597,1,0,0,0,599,600,
+ 1,0,0,0,600,25,1,0,0,0,601,599,1,0,0,0,602,603,5,77,0,0,603,604,
+ 5,172,0,0,604,605,3,334,167,0,605,27,1,0,0,0,606,607,5,144,0,0,607,
+ 608,5,172,0,0,608,609,3,334,167,0,609,29,1,0,0,0,610,611,5,58,0,
+ 0,611,612,5,172,0,0,612,614,3,336,168,0,613,615,5,172,0,0,614,613,
+ 1,0,0,0,614,615,1,0,0,0,615,616,1,0,0,0,616,618,5,6,0,0,617,619,
+ 5,172,0,0,618,617,1,0,0,0,618,619,1,0,0,0,619,620,1,0,0,0,620,621,
+ 3,230,115,0,621,626,1,0,0,0,622,623,5,58,0,0,623,624,5,172,0,0,624,
+ 626,3,298,149,0,625,610,1,0,0,0,625,622,1,0,0,0,626,31,1,0,0,0,627,
+ 628,5,63,0,0,628,629,5,172,0,0,629,630,5,116,0,0,630,631,5,172,0,
+ 0,631,632,5,135,0,0,632,633,5,172,0,0,633,634,3,334,167,0,634,635,
+ 5,172,0,0,635,636,5,99,0,0,636,637,5,172,0,0,637,638,5,158,0,0,638,
+ 33,1,0,0,0,639,640,5,69,0,0,640,641,5,172,0,0,641,642,5,105,0,0,
+ 642,643,5,172,0,0,643,645,3,300,150,0,644,646,5,172,0,0,645,644,
+ 1,0,0,0,645,646,1,0,0,0,646,647,1,0,0,0,647,649,5,2,0,0,648,650,
+ 5,172,0,0,649,648,1,0,0,0,649,650,1,0,0,0,650,652,1,0,0,0,651,653,
+ 3,36,18,0,652,651,1,0,0,0,652,653,1,0,0,0,653,655,1,0,0,0,654,656,
+ 5,172,0,0,655,654,1,0,0,0,655,656,1,0,0,0,656,658,1,0,0,0,657,659,
+ 3,38,19,0,658,657,1,0,0,0,658,659,1,0,0,0,659,670,1,0,0,0,660,662,
+ 5,172,0,0,661,660,1,0,0,0,661,662,1,0,0,0,662,663,1,0,0,0,663,665,
+ 5,3,0,0,664,666,5,172,0,0,665,664,1,0,0,0,665,666,1,0,0,0,666,667,
+ 1,0,0,0,667,669,3,38,19,0,668,661,1,0,0,0,669,672,1,0,0,0,670,668,
+ 1,0,0,0,670,671,1,0,0,0,671,674,1,0,0,0,672,670,1,0,0,0,673,675,
+ 5,172,0,0,674,673,1,0,0,0,674,675,1,0,0,0,675,676,1,0,0,0,676,677,
+ 5,4,0,0,677,678,5,172,0,0,678,679,5,52,0,0,679,680,5,172,0,0,680,
+ 681,3,230,115,0,681,35,1,0,0,0,682,693,3,336,168,0,683,685,5,172,
+ 0,0,684,683,1,0,0,0,684,685,1,0,0,0,685,686,1,0,0,0,686,688,5,3,
+ 0,0,687,689,5,172,0,0,688,687,1,0,0,0,688,689,1,0,0,0,689,690,1,
+ 0,0,0,690,692,3,336,168,0,691,684,1,0,0,0,692,695,1,0,0,0,693,691,
+ 1,0,0,0,693,694,1,0,0,0,694,37,1,0,0,0,695,693,1,0,0,0,696,698,3,
+ 336,168,0,697,699,5,172,0,0,698,697,1,0,0,0,698,699,1,0,0,0,699,
+ 700,1,0,0,0,700,701,5,157,0,0,701,703,5,6,0,0,702,704,5,172,0,0,
+ 703,702,1,0,0,0,703,704,1,0,0,0,704,705,1,0,0,0,705,706,3,284,142,
+ 0,706,39,1,0,0,0,707,709,5,7,0,0,708,710,5,172,0,0,709,708,1,0,0,
+ 0,709,710,1,0,0,0,710,711,1,0,0,0,711,722,5,158,0,0,712,714,5,172,
+ 0,0,713,712,1,0,0,0,713,714,1,0,0,0,714,715,1,0,0,0,715,717,5,3,
+ 0,0,716,718,5,172,0,0,717,716,1,0,0,0,717,718,1,0,0,0,718,719,1,
+ 0,0,0,719,721,5,158,0,0,720,713,1,0,0,0,721,724,1,0,0,0,722,720,
+ 1,0,0,0,722,723,1,0,0,0,723,725,1,0,0,0,724,722,1,0,0,0,725,741,
+ 5,8,0,0,726,741,5,158,0,0,727,729,5,89,0,0,728,730,5,172,0,0,729,
+ 728,1,0,0,0,729,730,1,0,0,0,730,731,1,0,0,0,731,733,5,2,0,0,732,
+ 734,5,172,0,0,733,732,1,0,0,0,733,734,1,0,0,0,734,735,1,0,0,0,735,
+ 737,5,158,0,0,736,738,5,172,0,0,737,736,1,0,0,0,737,738,1,0,0,0,
+ 738,739,1,0,0,0,739,741,5,4,0,0,740,707,1,0,0,0,740,726,1,0,0,0,
+ 740,727,1,0,0,0,741,41,1,0,0,0,742,744,5,2,0,0,743,745,5,172,0,0,
+ 744,743,1,0,0,0,744,745,1,0,0,0,745,746,1,0,0,0,746,748,3,24,12,
+ 0,747,749,5,172,0,0,748,747,1,0,0,0,748,749,1,0,0,0,749,750,1,0,
+ 0,0,750,751,5,4,0,0,751,43,1,0,0,0,752,753,5,95,0,0,753,754,5,172,
+ 0,0,754,755,5,113,0,0,755,756,5,172,0,0,756,757,5,83,0,0,757,45,
+ 1,0,0,0,758,759,5,69,0,0,759,760,5,172,0,0,760,761,5,112,0,0,761,
+ 762,5,172,0,0,762,763,5,135,0,0,763,767,5,172,0,0,764,765,3,44,22,
+ 0,765,766,5,172,0,0,766,768,1,0,0,0,767,764,1,0,0,0,767,768,1,0,
+ 0,0,768,769,1,0,0,0,769,771,3,334,167,0,770,772,5,172,0,0,771,770,
+ 1,0,0,0,771,772,1,0,0,0,772,773,1,0,0,0,773,775,5,2,0,0,774,776,
+ 5,172,0,0,775,774,1,0,0,0,775,776,1,0,0,0,776,777,1,0,0,0,777,779,
+ 3,92,46,0,778,780,5,172,0,0,779,778,1,0,0,0,779,780,1,0,0,0,780,
+ 786,1,0,0,0,781,783,5,3,0,0,782,784,5,172,0,0,783,782,1,0,0,0,783,
+ 784,1,0,0,0,784,785,1,0,0,0,785,787,3,96,48,0,786,781,1,0,0,0,786,
+ 787,1,0,0,0,787,789,1,0,0,0,788,790,5,172,0,0,789,788,1,0,0,0,789,
+ 790,1,0,0,0,790,791,1,0,0,0,791,792,5,4,0,0,792,47,1,0,0,0,793,794,
+ 5,69,0,0,794,795,5,172,0,0,795,796,5,125,0,0,796,797,5,172,0,0,797,
+ 798,5,135,0,0,798,802,5,172,0,0,799,800,3,44,22,0,800,801,5,172,
+ 0,0,801,803,1,0,0,0,802,799,1,0,0,0,802,803,1,0,0,0,803,804,1,0,
+ 0,0,804,806,3,334,167,0,805,807,5,172,0,0,806,805,1,0,0,0,806,807,
+ 1,0,0,0,807,808,1,0,0,0,808,810,5,2,0,0,809,811,5,172,0,0,810,809,
+ 1,0,0,0,810,811,1,0,0,0,811,812,1,0,0,0,812,814,3,52,26,0,813,815,
+ 5,172,0,0,814,813,1,0,0,0,814,815,1,0,0,0,815,824,1,0,0,0,816,818,
+ 5,3,0,0,817,819,5,172,0,0,818,817,1,0,0,0,818,819,1,0,0,0,819,820,
+ 1,0,0,0,820,822,3,92,46,0,821,823,5,172,0,0,822,821,1,0,0,0,822,
+ 823,1,0,0,0,823,825,1,0,0,0,824,816,1,0,0,0,824,825,1,0,0,0,825,
+ 834,1,0,0,0,826,828,5,3,0,0,827,829,5,172,0,0,828,827,1,0,0,0,828,
+ 829,1,0,0,0,829,830,1,0,0,0,830,832,3,336,168,0,831,833,5,172,0,
+ 0,832,831,1,0,0,0,832,833,1,0,0,0,833,835,1,0,0,0,834,826,1,0,0,
+ 0,834,835,1,0,0,0,835,836,1,0,0,0,836,837,5,4,0,0,837,49,1,0,0,0,
+ 838,839,5,69,0,0,839,840,5,172,0,0,840,841,5,125,0,0,841,842,5,172,
+ 0,0,842,843,5,135,0,0,843,844,5,172,0,0,844,845,5,91,0,0,845,849,
+ 5,172,0,0,846,847,3,44,22,0,847,848,5,172,0,0,848,850,1,0,0,0,849,
+ 846,1,0,0,0,849,850,1,0,0,0,850,851,1,0,0,0,851,853,3,334,167,0,
+ 852,854,5,172,0,0,853,852,1,0,0,0,853,854,1,0,0,0,854,855,1,0,0,
+ 0,855,857,5,2,0,0,856,858,5,172,0,0,857,856,1,0,0,0,857,858,1,0,
+ 0,0,858,859,1,0,0,0,859,868,3,52,26,0,860,862,5,172,0,0,861,860,
+ 1,0,0,0,861,862,1,0,0,0,862,863,1,0,0,0,863,865,5,3,0,0,864,866,
+ 5,172,0,0,865,864,1,0,0,0,865,866,1,0,0,0,866,867,1,0,0,0,867,869,
+ 3,52,26,0,868,861,1,0,0,0,869,870,1,0,0,0,870,868,1,0,0,0,870,871,
+ 1,0,0,0,871,873,1,0,0,0,872,874,5,172,0,0,873,872,1,0,0,0,873,874,
+ 1,0,0,0,874,883,1,0,0,0,875,877,5,3,0,0,876,878,5,172,0,0,877,876,
+ 1,0,0,0,877,878,1,0,0,0,878,879,1,0,0,0,879,881,3,92,46,0,880,882,
+ 5,172,0,0,881,880,1,0,0,0,881,882,1,0,0,0,882,884,1,0,0,0,883,875,
+ 1,0,0,0,883,884,1,0,0,0,884,893,1,0,0,0,885,887,5,3,0,0,886,888,
+ 5,172,0,0,887,886,1,0,0,0,887,888,1,0,0,0,888,889,1,0,0,0,889,891,
+ 3,336,168,0,890,892,5,172,0,0,891,890,1,0,0,0,891,892,1,0,0,0,892,
+ 894,1,0,0,0,893,885,1,0,0,0,893,894,1,0,0,0,894,895,1,0,0,0,895,
+ 896,5,4,0,0,896,51,1,0,0,0,897,898,5,88,0,0,898,899,5,172,0,0,899,
+ 900,3,334,167,0,900,901,5,172,0,0,901,902,5,137,0,0,902,903,5,172,
+ 0,0,903,904,3,334,167,0,904,53,1,0,0,0,905,906,5,69,0,0,906,907,
+ 5,172,0,0,907,908,5,130,0,0,908,912,5,172,0,0,909,910,3,44,22,0,
+ 910,911,5,172,0,0,911,913,1,0,0,0,912,909,1,0,0,0,912,913,1,0,0,
+ 0,913,914,1,0,0,0,914,919,3,334,167,0,915,916,5,172,0,0,916,918,
+ 3,58,29,0,917,915,1,0,0,0,918,921,1,0,0,0,919,917,1,0,0,0,919,920,
+ 1,0,0,0,920,55,1,0,0,0,921,919,1,0,0,0,922,923,5,69,0,0,923,924,
+ 5,172,0,0,924,925,5,141,0,0,925,926,5,172,0,0,926,927,3,334,167,
+ 0,927,928,5,172,0,0,928,929,5,52,0,0,929,930,5,172,0,0,930,932,3,
+ 98,49,0,931,933,5,172,0,0,932,931,1,0,0,0,932,933,1,0,0,0,933,57,
+ 1,0,0,0,934,940,3,60,30,0,935,940,3,62,31,0,936,940,3,64,32,0,937,
+ 940,3,66,33,0,938,940,3,68,34,0,939,934,1,0,0,0,939,935,1,0,0,0,
+ 939,936,1,0,0,0,939,937,1,0,0,0,939,938,1,0,0,0,940,59,1,0,0,0,941,
+ 942,5,97,0,0,942,945,5,172,0,0,943,944,5,57,0,0,944,946,5,172,0,
+ 0,945,943,1,0,0,0,945,946,1,0,0,0,946,948,1,0,0,0,947,949,5,155,
+ 0,0,948,947,1,0,0,0,948,949,1,0,0,0,949,950,1,0,0,0,950,951,3,330,
+ 165,0,951,61,1,0,0,0,952,953,5,111,0,0,953,954,5,172,0,0,954,962,
+ 5,109,0,0,955,956,5,109,0,0,956,958,5,172,0,0,957,959,5,155,0,0,
+ 958,957,1,0,0,0,958,959,1,0,0,0,959,960,1,0,0,0,960,962,3,330,165,
+ 0,961,952,1,0,0,0,961,955,1,0,0,0,962,63,1,0,0,0,963,964,5,111,0,
+ 0,964,965,5,172,0,0,965,973,5,107,0,0,966,967,5,107,0,0,967,969,
+ 5,172,0,0,968,970,5,155,0,0,969,968,1,0,0,0,969,970,1,0,0,0,970,
+ 971,1,0,0,0,971,973,3,330,165,0,972,963,1,0,0,0,972,966,1,0,0,0,
+ 973,65,1,0,0,0,974,975,5,133,0,0,975,978,5,172,0,0,976,977,5,147,
+ 0,0,977,979,5,172,0,0,978,976,1,0,0,0,978,979,1,0,0,0,979,981,1,
+ 0,0,0,980,982,5,155,0,0,981,980,1,0,0,0,981,982,1,0,0,0,982,983,
+ 1,0,0,0,983,984,3,330,165,0,984,67,1,0,0,0,985,986,5,111,0,0,986,
+ 988,5,172,0,0,987,985,1,0,0,0,987,988,1,0,0,0,988,989,1,0,0,0,989,
+ 990,5,70,0,0,990,69,1,0,0,0,991,992,5,95,0,0,992,993,5,172,0,0,993,
+ 994,5,83,0,0,994,71,1,0,0,0,995,996,5,79,0,0,996,997,5,172,0,0,997,
+ 998,7,0,0,0,998,1002,5,172,0,0,999,1000,3,70,35,0,1000,1001,5,172,
+ 0,0,1001,1003,1,0,0,0,1002,999,1,0,0,0,1002,1003,1,0,0,0,1003,1004,
+ 1,0,0,0,1004,1005,3,334,167,0,1005,73,1,0,0,0,1006,1007,5,50,0,0,
+ 1007,1008,5,172,0,0,1008,1009,5,135,0,0,1009,1010,5,172,0,0,1010,
+ 1011,3,334,167,0,1011,1012,5,172,0,0,1012,1013,3,76,38,0,1013,75,
+ 1,0,0,0,1014,1019,3,78,39,0,1015,1019,3,82,41,0,1016,1019,3,84,42,
+ 0,1017,1019,3,86,43,0,1018,1014,1,0,0,0,1018,1015,1,0,0,0,1018,1016,
+ 1,0,0,0,1018,1017,1,0,0,0,1019,77,1,0,0,0,1020,1021,5,48,0,0,1021,
+ 1022,5,172,0,0,1022,1023,3,328,164,0,1023,1024,5,172,0,0,1024,1027,
+ 3,98,49,0,1025,1026,5,172,0,0,1026,1028,3,80,40,0,1027,1025,1,0,
+ 0,0,1027,1028,1,0,0,0,1028,79,1,0,0,0,1029,1030,5,73,0,0,1030,1031,
+ 5,172,0,0,1031,1032,3,230,115,0,1032,81,1,0,0,0,1033,1034,5,79,0,
+ 0,1034,1035,5,172,0,0,1035,1036,3,328,164,0,1036,83,1,0,0,0,1037,
+ 1038,5,126,0,0,1038,1039,5,172,0,0,1039,1040,5,137,0,0,1040,1041,
+ 5,172,0,0,1041,1042,3,334,167,0,1042,85,1,0,0,0,1043,1044,5,126,
+ 0,0,1044,1045,5,172,0,0,1045,1046,3,328,164,0,1046,1047,5,172,0,
+ 0,1047,1048,5,137,0,0,1048,1049,5,172,0,0,1049,1050,3,328,164,0,
+ 1050,87,1,0,0,0,1051,1062,3,90,45,0,1052,1054,5,172,0,0,1053,1052,
+ 1,0,0,0,1053,1054,1,0,0,0,1054,1055,1,0,0,0,1055,1057,5,3,0,0,1056,
+ 1058,5,172,0,0,1057,1056,1,0,0,0,1057,1058,1,0,0,0,1058,1059,1,0,
+ 0,0,1059,1061,3,90,45,0,1060,1053,1,0,0,0,1061,1064,1,0,0,0,1062,
+ 1060,1,0,0,0,1062,1063,1,0,0,0,1063,89,1,0,0,0,1064,1062,1,0,0,0,
+ 1065,1066,3,328,164,0,1066,1067,5,172,0,0,1067,1068,3,98,49,0,1068,
+ 91,1,0,0,0,1069,1080,3,94,47,0,1070,1072,5,172,0,0,1071,1070,1,0,
+ 0,0,1071,1072,1,0,0,0,1072,1073,1,0,0,0,1073,1075,5,3,0,0,1074,1076,
+ 5,172,0,0,1075,1074,1,0,0,0,1075,1076,1,0,0,0,1076,1077,1,0,0,0,
+ 1077,1079,3,94,47,0,1078,1071,1,0,0,0,1079,1082,1,0,0,0,1080,1078,
+ 1,0,0,0,1080,1081,1,0,0,0,1081,93,1,0,0,0,1082,1080,1,0,0,0,1083,
+ 1086,3,90,45,0,1084,1085,5,172,0,0,1085,1087,3,80,40,0,1086,1084,
+ 1,0,0,0,1086,1087,1,0,0,0,1087,1092,1,0,0,0,1088,1089,5,172,0,0,
+ 1089,1090,5,121,0,0,1090,1091,5,172,0,0,1091,1093,5,101,0,0,1092,
+ 1088,1,0,0,0,1092,1093,1,0,0,0,1093,95,1,0,0,0,1094,1095,5,121,0,
+ 0,1095,1096,5,172,0,0,1096,1098,5,101,0,0,1097,1099,5,172,0,0,1098,
+ 1097,1,0,0,0,1098,1099,1,0,0,0,1099,1100,1,0,0,0,1100,1102,5,2,0,
+ 0,1101,1103,5,172,0,0,1102,1101,1,0,0,0,1102,1103,1,0,0,0,1103,1104,
+ 1,0,0,0,1104,1106,3,328,164,0,1105,1107,5,172,0,0,1106,1105,1,0,
+ 0,0,1106,1107,1,0,0,0,1107,1108,1,0,0,0,1108,1109,5,4,0,0,1109,97,
+ 1,0,0,0,1110,1111,6,49,-1,0,1111,1185,3,336,168,0,1112,1114,5,142,
+ 0,0,1113,1115,5,172,0,0,1114,1113,1,0,0,0,1114,1115,1,0,0,0,1115,
+ 1116,1,0,0,0,1116,1118,5,2,0,0,1117,1119,5,172,0,0,1118,1117,1,0,
+ 0,0,1118,1119,1,0,0,0,1119,1120,1,0,0,0,1120,1122,3,88,44,0,1121,
+ 1123,5,172,0,0,1122,1121,1,0,0,0,1122,1123,1,0,0,0,1123,1124,1,0,
+ 0,0,1124,1125,5,4,0,0,1125,1185,1,0,0,0,1126,1128,3,336,168,0,1127,
+ 1129,5,172,0,0,1128,1127,1,0,0,0,1128,1129,1,0,0,0,1129,1130,1,0,
+ 0,0,1130,1132,5,2,0,0,1131,1133,5,172,0,0,1132,1131,1,0,0,0,1132,
+ 1133,1,0,0,0,1133,1134,1,0,0,0,1134,1136,3,88,44,0,1135,1137,5,172,
+ 0,0,1136,1135,1,0,0,0,1136,1137,1,0,0,0,1137,1138,1,0,0,0,1138,1139,
+ 5,4,0,0,1139,1185,1,0,0,0,1140,1142,3,336,168,0,1141,1143,5,172,
+ 0,0,1142,1141,1,0,0,0,1142,1143,1,0,0,0,1143,1144,1,0,0,0,1144,1146,
+ 5,2,0,0,1145,1147,5,172,0,0,1146,1145,1,0,0,0,1146,1147,1,0,0,0,
+ 1147,1148,1,0,0,0,1148,1150,3,98,49,0,1149,1151,5,172,0,0,1150,1149,
+ 1,0,0,0,1150,1151,1,0,0,0,1151,1152,1,0,0,0,1152,1154,5,3,0,0,1153,
+ 1155,5,172,0,0,1154,1153,1,0,0,0,1154,1155,1,0,0,0,1155,1156,1,0,
+ 0,0,1156,1158,3,98,49,0,1157,1159,5,172,0,0,1158,1157,1,0,0,0,1158,
+ 1159,1,0,0,0,1159,1160,1,0,0,0,1160,1161,5,4,0,0,1161,1185,1,0,0,
+ 0,1162,1164,5,151,0,0,1163,1165,5,172,0,0,1164,1163,1,0,0,0,1164,
+ 1165,1,0,0,0,1165,1166,1,0,0,0,1166,1168,5,2,0,0,1167,1169,5,172,
+ 0,0,1168,1167,1,0,0,0,1168,1169,1,0,0,0,1169,1170,1,0,0,0,1170,1172,
+ 3,330,165,0,1171,1173,5,172,0,0,1172,1171,1,0,0,0,1172,1173,1,0,
+ 0,0,1173,1174,1,0,0,0,1174,1176,5,3,0,0,1175,1177,5,172,0,0,1176,
+ 1175,1,0,0,0,1176,1177,1,0,0,0,1177,1178,1,0,0,0,1178,1180,3,330,
+ 165,0,1179,1181,5,172,0,0,1180,1179,1,0,0,0,1180,1181,1,0,0,0,1181,
+ 1182,1,0,0,0,1182,1183,5,4,0,0,1183,1185,1,0,0,0,1184,1110,1,0,0,
+ 0,1184,1112,1,0,0,0,1184,1126,1,0,0,0,1184,1140,1,0,0,0,1184,1162,
+ 1,0,0,0,1185,1190,1,0,0,0,1186,1187,10,5,0,0,1187,1189,3,100,50,
+ 0,1188,1186,1,0,0,0,1189,1192,1,0,0,0,1190,1188,1,0,0,0,1190,1191,
+ 1,0,0,0,1191,99,1,0,0,0,1192,1190,1,0,0,0,1193,1197,3,102,51,0,1194,
+ 1196,3,102,51,0,1195,1194,1,0,0,0,1196,1199,1,0,0,0,1197,1195,1,
+ 0,0,0,1197,1198,1,0,0,0,1198,101,1,0,0,0,1199,1197,1,0,0,0,1200,
+ 1202,5,7,0,0,1201,1203,3,330,165,0,1202,1201,1,0,0,0,1202,1203,1,
+ 0,0,0,1203,1204,1,0,0,0,1204,1205,5,8,0,0,1205,103,1,0,0,0,1206,
+ 1209,3,106,53,0,1207,1209,3,108,54,0,1208,1206,1,0,0,0,1208,1207,
+ 1,0,0,0,1209,105,1,0,0,0,1210,1213,5,84,0,0,1211,1212,5,172,0,0,
+ 1212,1214,5,104,0,0,1213,1211,1,0,0,0,1213,1214,1,0,0,0,1214,107,
+ 1,0,0,0,1215,1216,5,122,0,0,1216,109,1,0,0,0,1217,1218,5,56,0,0,
+ 1218,1219,5,172,0,0,1219,1231,5,139,0,0,1220,1221,5,56,0,0,1221,
+ 1222,5,172,0,0,1222,1223,5,139,0,0,1223,1224,5,172,0,0,1224,1225,
+ 5,124,0,0,1225,1226,5,172,0,0,1226,1231,5,117,0,0,1227,1231,5,64,
+ 0,0,1228,1231,5,128,0,0,1229,1231,5,61,0,0,1230,1217,1,0,0,0,1230,
+ 1220,1,0,0,0,1230,1227,1,0,0,0,1230,1228,1,0,0,0,1230,1229,1,0,0,
+ 0,1231,111,1,0,0,0,1232,1235,3,114,57,0,1233,1235,3,116,58,0,1234,
+ 1232,1,0,0,0,1234,1233,1,0,0,0,1235,113,1,0,0,0,1236,1237,5,103,
+ 0,0,1237,1238,5,172,0,0,1238,1239,5,86,0,0,1239,1242,5,172,0,0,1240,
+ 1243,5,158,0,0,1241,1243,3,320,160,0,1242,1240,1,0,0,0,1242,1241,
+ 1,0,0,0,1243,115,1,0,0,0,1244,1245,5,98,0,0,1245,1246,5,172,0,0,
+ 1246,1247,3,320,160,0,1247,117,1,0,0,0,1248,1250,3,120,60,0,1249,
+ 1251,5,172,0,0,1250,1249,1,0,0,0,1250,1251,1,0,0,0,1251,1253,1,0,
+ 0,0,1252,1248,1,0,0,0,1252,1253,1,0,0,0,1253,1254,1,0,0,0,1254,1255,
+ 3,124,62,0,1255,119,1,0,0,0,1256,1257,5,123,0,0,1257,1258,5,172,
+ 0,0,1258,1259,5,90,0,0,1259,1260,5,172,0,0,1260,1262,3,334,167,0,
+ 1261,1263,5,172,0,0,1262,1261,1,0,0,0,1262,1263,1,0,0,0,1263,1264,
+ 1,0,0,0,1264,1266,5,2,0,0,1265,1267,5,172,0,0,1266,1265,1,0,0,0,
+ 1266,1267,1,0,0,0,1267,1268,1,0,0,0,1268,1270,3,122,61,0,1269,1271,
+ 5,172,0,0,1270,1269,1,0,0,0,1270,1271,1,0,0,0,1271,1272,1,0,0,0,
+ 1272,1273,5,4,0,0,1273,121,1,0,0,0,1274,1285,3,144,72,0,1275,1277,
+ 5,172,0,0,1276,1275,1,0,0,0,1276,1277,1,0,0,0,1277,1278,1,0,0,0,
+ 1278,1280,5,3,0,0,1279,1281,5,172,0,0,1280,1279,1,0,0,0,1280,1281,
+ 1,0,0,0,1281,1282,1,0,0,0,1282,1284,3,144,72,0,1283,1276,1,0,0,0,
+ 1284,1287,1,0,0,0,1285,1283,1,0,0,0,1285,1286,1,0,0,0,1286,123,1,
+ 0,0,0,1287,1285,1,0,0,0,1288,1295,3,128,64,0,1289,1291,5,172,0,0,
+ 1290,1289,1,0,0,0,1290,1291,1,0,0,0,1291,1292,1,0,0,0,1292,1294,
+ 3,126,63,0,1293,1290,1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0,0,0,
+ 1295,1296,1,0,0,0,1296,1310,1,0,0,0,1297,1295,1,0,0,0,1298,1300,
+ 3,172,86,0,1299,1301,5,172,0,0,1300,1299,1,0,0,0,1300,1301,1,0,0,
+ 0,1301,1303,1,0,0,0,1302,1298,1,0,0,0,1303,1304,1,0,0,0,1304,1302,
+ 1,0,0,0,1304,1305,1,0,0,0,1305,1306,1,0,0,0,1306,1307,3,128,64,0,
+ 1307,1308,6,62,-1,0,1308,1310,1,0,0,0,1309,1288,1,0,0,0,1309,1302,
+ 1,0,0,0,1310,125,1,0,0,0,1311,1312,5,142,0,0,1312,1313,5,172,0,0,
+ 1313,1315,5,49,0,0,1314,1316,5,172,0,0,1315,1314,1,0,0,0,1315,1316,
+ 1,0,0,0,1316,1317,1,0,0,0,1317,1324,3,128,64,0,1318,1320,5,142,0,
+ 0,1319,1321,5,172,0,0,1320,1319,1,0,0,0,1320,1321,1,0,0,0,1321,1322,
+ 1,0,0,0,1322,1324,3,128,64,0,1323,1311,1,0,0,0,1323,1318,1,0,0,0,
+ 1324,127,1,0,0,0,1325,1328,3,130,65,0,1326,1328,3,132,66,0,1327,
+ 1325,1,0,0,0,1327,1326,1,0,0,0,1328,129,1,0,0,0,1329,1331,3,138,
+ 69,0,1330,1332,5,172,0,0,1331,1330,1,0,0,0,1331,1332,1,0,0,0,1332,
+ 1334,1,0,0,0,1333,1329,1,0,0,0,1334,1337,1,0,0,0,1335,1333,1,0,0,
+ 0,1335,1336,1,0,0,0,1336,1338,1,0,0,0,1337,1335,1,0,0,0,1338,1365,
+ 3,172,86,0,1339,1341,3,138,69,0,1340,1342,5,172,0,0,1341,1340,1,
+ 0,0,0,1341,1342,1,0,0,0,1342,1344,1,0,0,0,1343,1339,1,0,0,0,1344,
+ 1347,1,0,0,0,1345,1343,1,0,0,0,1345,1346,1,0,0,0,1346,1348,1,0,0,
+ 0,1347,1345,1,0,0,0,1348,1355,3,136,68,0,1349,1351,5,172,0,0,1350,
+ 1349,1,0,0,0,1350,1351,1,0,0,0,1351,1352,1,0,0,0,1352,1354,3,136,
+ 68,0,1353,1350,1,0,0,0,1354,1357,1,0,0,0,1355,1353,1,0,0,0,1355,
+ 1356,1,0,0,0,1356,1362,1,0,0,0,1357,1355,1,0,0,0,1358,1360,5,172,
+ 0,0,1359,1358,1,0,0,0,1359,1360,1,0,0,0,1360,1361,1,0,0,0,1361,1363,
+ 3,172,86,0,1362,1359,1,0,0,0,1362,1363,1,0,0,0,1363,1365,1,0,0,0,
+ 1364,1335,1,0,0,0,1364,1345,1,0,0,0,1365,131,1,0,0,0,1366,1368,3,
+ 134,67,0,1367,1369,5,172,0,0,1368,1367,1,0,0,0,1368,1369,1,0,0,0,
+ 1369,1371,1,0,0,0,1370,1366,1,0,0,0,1371,1372,1,0,0,0,1372,1370,
+ 1,0,0,0,1372,1373,1,0,0,0,1373,1374,1,0,0,0,1374,1375,3,130,65,0,
+ 1375,133,1,0,0,0,1376,1378,3,138,69,0,1377,1379,5,172,0,0,1378,1377,
+ 1,0,0,0,1378,1379,1,0,0,0,1379,1381,1,0,0,0,1380,1376,1,0,0,0,1381,
+ 1384,1,0,0,0,1382,1380,1,0,0,0,1382,1383,1,0,0,0,1383,1391,1,0,0,
+ 0,1384,1382,1,0,0,0,1385,1387,3,136,68,0,1386,1388,5,172,0,0,1387,
+ 1386,1,0,0,0,1387,1388,1,0,0,0,1388,1390,1,0,0,0,1389,1385,1,0,0,
+ 0,1390,1393,1,0,0,0,1391,1389,1,0,0,0,1391,1392,1,0,0,0,1392,1394,
+ 1,0,0,0,1393,1391,1,0,0,0,1394,1395,3,170,85,0,1395,135,1,0,0,0,
+ 1396,1401,3,158,79,0,1397,1401,3,160,80,0,1398,1401,3,164,82,0,1399,
+ 1401,3,168,84,0,1400,1396,1,0,0,0,1400,1397,1,0,0,0,1400,1398,1,
+ 0,0,0,1400,1399,1,0,0,0,1401,137,1,0,0,0,1402,1407,3,150,75,0,1403,
+ 1407,3,156,78,0,1404,1407,3,142,71,0,1405,1407,3,140,70,0,1406,1402,
+ 1,0,0,0,1406,1403,1,0,0,0,1406,1404,1,0,0,0,1406,1405,1,0,0,0,1407,
+ 139,1,0,0,0,1408,1426,5,103,0,0,1409,1410,5,172,0,0,1410,1411,5,
+ 147,0,0,1411,1412,5,172,0,0,1412,1414,5,92,0,0,1413,1415,5,172,0,
+ 0,1414,1413,1,0,0,0,1414,1415,1,0,0,0,1415,1416,1,0,0,0,1416,1418,
+ 5,2,0,0,1417,1419,5,172,0,0,1418,1417,1,0,0,0,1418,1419,1,0,0,0,
+ 1419,1420,1,0,0,0,1420,1422,3,88,44,0,1421,1423,5,172,0,0,1422,1421,
+ 1,0,0,0,1422,1423,1,0,0,0,1423,1424,1,0,0,0,1424,1425,5,4,0,0,1425,
+ 1427,1,0,0,0,1426,1409,1,0,0,0,1426,1427,1,0,0,0,1427,1428,1,0,0,
+ 0,1428,1429,5,172,0,0,1429,1430,5,88,0,0,1430,1431,5,172,0,0,1431,
+ 1436,3,10,5,0,1432,1434,5,172,0,0,1433,1432,1,0,0,0,1433,1434,1,
+ 0,0,0,1434,1435,1,0,0,0,1435,1437,3,42,21,0,1436,1433,1,0,0,0,1436,
+ 1437,1,0,0,0,1437,1442,1,0,0,0,1438,1440,5,172,0,0,1439,1438,1,0,
+ 0,0,1439,1440,1,0,0,0,1440,1441,1,0,0,0,1441,1443,3,188,94,0,1442,
+ 1439,1,0,0,0,1442,1443,1,0,0,0,1443,141,1,0,0,0,1444,1446,3,120,
+ 60,0,1445,1447,5,172,0,0,1446,1445,1,0,0,0,1446,1447,1,0,0,0,1447,
+ 1449,1,0,0,0,1448,1444,1,0,0,0,1448,1449,1,0,0,0,1449,1450,1,0,0,
+ 0,1450,1451,5,58,0,0,1451,1452,5,172,0,0,1452,1457,3,298,149,0,1453,
+ 1455,5,172,0,0,1454,1453,1,0,0,0,1454,1455,1,0,0,0,1455,1456,1,0,
+ 0,0,1456,1458,3,188,94,0,1457,1454,1,0,0,0,1457,1458,1,0,0,0,1458,
+ 143,1,0,0,0,1459,1473,3,334,167,0,1460,1462,5,172,0,0,1461,1460,
+ 1,0,0,0,1461,1462,1,0,0,0,1462,1463,1,0,0,0,1463,1465,5,9,0,0,1464,
+ 1466,5,172,0,0,1465,1464,1,0,0,0,1465,1466,1,0,0,0,1466,1467,1,0,
+ 0,0,1467,1469,3,146,73,0,1468,1470,5,172,0,0,1469,1468,1,0,0,0,1469,
+ 1470,1,0,0,0,1470,1471,1,0,0,0,1471,1472,5,10,0,0,1472,1474,1,0,
+ 0,0,1473,1461,1,0,0,0,1473,1474,1,0,0,0,1474,145,1,0,0,0,1475,1486,
+ 3,148,74,0,1476,1478,5,172,0,0,1477,1476,1,0,0,0,1477,1478,1,0,0,
+ 0,1478,1479,1,0,0,0,1479,1481,5,3,0,0,1480,1482,5,172,0,0,1481,1480,
+ 1,0,0,0,1481,1482,1,0,0,0,1482,1483,1,0,0,0,1483,1485,3,148,74,0,
+ 1484,1477,1,0,0,0,1485,1488,1,0,0,0,1486,1484,1,0,0,0,1486,1487,
+ 1,0,0,0,1487,147,1,0,0,0,1488,1486,1,0,0,0,1489,1492,3,328,164,0,
+ 1490,1491,5,172,0,0,1491,1493,3,80,40,0,1492,1490,1,0,0,0,1492,1493,
+ 1,0,0,0,1493,1496,1,0,0,0,1494,1495,5,172,0,0,1495,1497,3,188,94,
+ 0,1496,1494,1,0,0,0,1496,1497,1,0,0,0,1497,149,1,0,0,0,1498,1499,
+ 5,118,0,0,1499,1501,5,172,0,0,1500,1498,1,0,0,0,1500,1501,1,0,0,
+ 0,1501,1502,1,0,0,0,1502,1504,5,106,0,0,1503,1505,5,172,0,0,1504,
+ 1503,1,0,0,0,1504,1505,1,0,0,0,1505,1506,1,0,0,0,1506,1509,3,190,
+ 95,0,1507,1508,5,172,0,0,1508,1510,3,188,94,0,1509,1507,1,0,0,0,
+ 1509,1510,1,0,0,0,1510,1513,1,0,0,0,1511,1512,5,172,0,0,1512,1514,
+ 3,152,76,0,1513,1511,1,0,0,0,1513,1514,1,0,0,0,1514,151,1,0,0,0,
+ 1515,1516,5,93,0,0,1516,1517,5,172,0,0,1517,1518,3,154,77,0,1518,
+ 153,1,0,0,0,1519,1520,6,77,-1,0,1520,1522,5,2,0,0,1521,1523,5,172,
+ 0,0,1522,1521,1,0,0,0,1522,1523,1,0,0,0,1523,1524,1,0,0,0,1524,1526,
+ 3,154,77,0,1525,1527,5,172,0,0,1526,1525,1,0,0,0,1526,1527,1,0,0,
+ 0,1527,1528,1,0,0,0,1528,1529,5,4,0,0,1529,1532,1,0,0,0,1530,1532,
+ 3,334,167,0,1531,1519,1,0,0,0,1531,1530,1,0,0,0,1532,1549,1,0,0,
+ 0,1533,1534,10,4,0,0,1534,1535,5,172,0,0,1535,1536,5,100,0,0,1536,
+ 1537,5,172,0,0,1537,1548,3,154,77,5,1538,1543,10,3,0,0,1539,1540,
+ 5,172,0,0,1540,1541,5,110,0,0,1541,1542,5,172,0,0,1542,1544,3,334,
+ 167,0,1543,1539,1,0,0,0,1544,1545,1,0,0,0,1545,1543,1,0,0,0,1545,
+ 1546,1,0,0,0,1546,1548,1,0,0,0,1547,1533,1,0,0,0,1547,1538,1,0,0,
+ 0,1548,1551,1,0,0,0,1549,1547,1,0,0,0,1549,1550,1,0,0,0,1550,155,
+ 1,0,0,0,1551,1549,1,0,0,0,1552,1554,5,143,0,0,1553,1555,5,172,0,
+ 0,1554,1553,1,0,0,0,1554,1555,1,0,0,0,1555,1556,1,0,0,0,1556,1557,
+ 3,230,115,0,1557,1558,5,172,0,0,1558,1559,5,52,0,0,1559,1560,5,172,
+ 0,0,1560,1561,3,320,160,0,1561,157,1,0,0,0,1562,1564,5,69,0,0,1563,
+ 1565,5,172,0,0,1564,1563,1,0,0,0,1564,1565,1,0,0,0,1565,1566,1,0,
+ 0,0,1566,1567,3,190,95,0,1567,159,1,0,0,0,1568,1570,5,108,0,0,1569,
+ 1571,5,172,0,0,1570,1569,1,0,0,0,1570,1571,1,0,0,0,1571,1572,1,0,
+ 0,0,1572,1577,3,190,95,0,1573,1574,5,172,0,0,1574,1576,3,162,81,
+ 0,1575,1573,1,0,0,0,1576,1579,1,0,0,0,1577,1575,1,0,0,0,1577,1578,
+ 1,0,0,0,1578,161,1,0,0,0,1579,1577,1,0,0,0,1580,1581,5,116,0,0,1581,
+ 1582,5,172,0,0,1582,1583,5,106,0,0,1583,1584,5,172,0,0,1584,1591,
+ 3,164,82,0,1585,1586,5,116,0,0,1586,1587,5,172,0,0,1587,1588,5,69,
+ 0,0,1588,1589,5,172,0,0,1589,1591,3,164,82,0,1590,1580,1,0,0,0,1590,
+ 1585,1,0,0,0,1591,163,1,0,0,0,1592,1594,5,131,0,0,1593,1595,5,172,
+ 0,0,1594,1593,1,0,0,0,1594,1595,1,0,0,0,1595,1596,1,0,0,0,1596,1607,
+ 3,166,83,0,1597,1599,5,172,0,0,1598,1597,1,0,0,0,1598,1599,1,0,0,
+ 0,1599,1600,1,0,0,0,1600,1602,5,3,0,0,1601,1603,5,172,0,0,1602,1601,
+ 1,0,0,0,1602,1603,1,0,0,0,1603,1604,1,0,0,0,1604,1606,3,166,83,0,
+ 1605,1598,1,0,0,0,1606,1609,1,0,0,0,1607,1605,1,0,0,0,1607,1608,
+ 1,0,0,0,1608,165,1,0,0,0,1609,1607,1,0,0,0,1610,1612,3,326,163,0,
+ 1611,1613,5,172,0,0,1612,1611,1,0,0,0,1612,1613,1,0,0,0,1613,1614,
+ 1,0,0,0,1614,1616,5,6,0,0,1615,1617,5,172,0,0,1616,1615,1,0,0,0,
+ 1616,1617,1,0,0,0,1617,1618,1,0,0,0,1618,1619,3,230,115,0,1619,167,
+ 1,0,0,0,1620,1621,5,77,0,0,1621,1623,5,172,0,0,1622,1620,1,0,0,0,
+ 1622,1623,1,0,0,0,1623,1624,1,0,0,0,1624,1626,5,74,0,0,1625,1627,
+ 5,172,0,0,1626,1625,1,0,0,0,1626,1627,1,0,0,0,1627,1628,1,0,0,0,
+ 1628,1639,3,230,115,0,1629,1631,5,172,0,0,1630,1629,1,0,0,0,1630,
+ 1631,1,0,0,0,1631,1632,1,0,0,0,1632,1634,5,3,0,0,1633,1635,5,172,
+ 0,0,1634,1633,1,0,0,0,1634,1635,1,0,0,0,1635,1636,1,0,0,0,1636,1638,
+ 3,230,115,0,1637,1630,1,0,0,0,1638,1641,1,0,0,0,1639,1637,1,0,0,
+ 0,1639,1640,1,0,0,0,1640,169,1,0,0,0,1641,1639,1,0,0,0,1642,1643,
+ 5,147,0,0,1643,1648,3,174,87,0,1644,1646,5,172,0,0,1645,1644,1,0,
+ 0,0,1645,1646,1,0,0,0,1646,1647,1,0,0,0,1647,1649,3,188,94,0,1648,
+ 1645,1,0,0,0,1648,1649,1,0,0,0,1649,171,1,0,0,0,1650,1651,5,127,
+ 0,0,1651,1652,3,174,87,0,1652,173,1,0,0,0,1653,1655,5,172,0,0,1654,
+ 1653,1,0,0,0,1654,1655,1,0,0,0,1655,1656,1,0,0,0,1656,1658,5,78,
+ 0,0,1657,1654,1,0,0,0,1657,1658,1,0,0,0,1658,1659,1,0,0,0,1659,1660,
+ 5,172,0,0,1660,1663,3,176,88,0,1661,1662,5,172,0,0,1662,1664,3,180,
+ 90,0,1663,1661,1,0,0,0,1663,1664,1,0,0,0,1664,1667,1,0,0,0,1665,
+ 1666,5,172,0,0,1666,1668,3,182,91,0,1667,1665,1,0,0,0,1667,1668,
+ 1,0,0,0,1668,1671,1,0,0,0,1669,1670,5,172,0,0,1670,1672,3,184,92,
+ 0,1671,1669,1,0,0,0,1671,1672,1,0,0,0,1672,175,1,0,0,0,1673,1684,
+ 5,152,0,0,1674,1676,5,172,0,0,1675,1674,1,0,0,0,1675,1676,1,0,0,
+ 0,1676,1677,1,0,0,0,1677,1679,5,3,0,0,1678,1680,5,172,0,0,1679,1678,
+ 1,0,0,0,1679,1680,1,0,0,0,1680,1681,1,0,0,0,1681,1683,3,178,89,0,
+ 1682,1675,1,0,0,0,1683,1686,1,0,0,0,1684,1682,1,0,0,0,1684,1685,
+ 1,0,0,0,1685,1702,1,0,0,0,1686,1684,1,0,0,0,1687,1698,3,178,89,0,
+ 1688,1690,5,172,0,0,1689,1688,1,0,0,0,1689,1690,1,0,0,0,1690,1691,
+ 1,0,0,0,1691,1693,5,3,0,0,1692,1694,5,172,0,0,1693,1692,1,0,0,0,
+ 1693,1694,1,0,0,0,1694,1695,1,0,0,0,1695,1697,3,178,89,0,1696,1689,
+ 1,0,0,0,1697,1700,1,0,0,0,1698,1696,1,0,0,0,1698,1699,1,0,0,0,1699,
+ 1702,1,0,0,0,1700,1698,1,0,0,0,1701,1673,1,0,0,0,1701,1687,1,0,0,
+ 0,1702,177,1,0,0,0,1703,1704,3,230,115,0,1704,1705,5,172,0,0,1705,
+ 1706,5,52,0,0,1706,1707,5,172,0,0,1707,1708,3,320,160,0,1708,1711,
+ 1,0,0,0,1709,1711,3,230,115,0,1710,1703,1,0,0,0,1710,1709,1,0,0,
+ 0,1711,179,1,0,0,0,1712,1713,5,120,0,0,1713,1714,5,172,0,0,1714,
+ 1715,5,57,0,0,1715,1716,5,172,0,0,1716,1724,3,186,93,0,1717,1719,
+ 5,3,0,0,1718,1720,5,172,0,0,1719,1718,1,0,0,0,1719,1720,1,0,0,0,
+ 1720,1721,1,0,0,0,1721,1723,3,186,93,0,1722,1717,1,0,0,0,1723,1726,
+ 1,0,0,0,1724,1722,1,0,0,0,1724,1725,1,0,0,0,1725,181,1,0,0,0,1726,
+ 1724,1,0,0,0,1727,1728,5,153,0,0,1728,1729,5,172,0,0,1729,1730,3,
+ 230,115,0,1730,183,1,0,0,0,1731,1732,5,102,0,0,1732,1733,5,172,0,
+ 0,1733,1734,3,230,115,0,1734,185,1,0,0,0,1735,1740,3,230,115,0,1736,
+ 1738,5,172,0,0,1737,1736,1,0,0,0,1737,1738,1,0,0,0,1738,1739,1,0,
+ 0,0,1739,1741,7,1,0,0,1740,1737,1,0,0,0,1740,1741,1,0,0,0,1741,187,
+ 1,0,0,0,1742,1743,5,146,0,0,1743,1744,5,172,0,0,1744,1745,3,230,
+ 115,0,1745,189,1,0,0,0,1746,1757,3,192,96,0,1747,1749,5,172,0,0,
+ 1748,1747,1,0,0,0,1748,1749,1,0,0,0,1749,1750,1,0,0,0,1750,1752,
+ 5,3,0,0,1751,1753,5,172,0,0,1752,1751,1,0,0,0,1752,1753,1,0,0,0,
+ 1753,1754,1,0,0,0,1754,1756,3,192,96,0,1755,1748,1,0,0,0,1756,1759,
+ 1,0,0,0,1757,1755,1,0,0,0,1757,1758,1,0,0,0,1758,191,1,0,0,0,1759,
+ 1757,1,0,0,0,1760,1762,3,320,160,0,1761,1763,5,172,0,0,1762,1761,
+ 1,0,0,0,1762,1763,1,0,0,0,1763,1764,1,0,0,0,1764,1766,5,6,0,0,1765,
+ 1767,5,172,0,0,1766,1765,1,0,0,0,1766,1767,1,0,0,0,1767,1768,1,0,
+ 0,0,1768,1769,3,194,97,0,1769,1772,1,0,0,0,1770,1772,3,194,97,0,
+ 1771,1760,1,0,0,0,1771,1770,1,0,0,0,1772,193,1,0,0,0,1773,1774,3,
+ 196,98,0,1774,195,1,0,0,0,1775,1782,3,198,99,0,1776,1778,5,172,0,
+ 0,1777,1776,1,0,0,0,1777,1778,1,0,0,0,1778,1779,1,0,0,0,1779,1781,
+ 3,200,100,0,1780,1777,1,0,0,0,1781,1784,1,0,0,0,1782,1780,1,0,0,
+ 0,1782,1783,1,0,0,0,1783,1790,1,0,0,0,1784,1782,1,0,0,0,1785,1786,
+ 5,2,0,0,1786,1787,3,196,98,0,1787,1788,5,4,0,0,1788,1790,1,0,0,0,
+ 1789,1775,1,0,0,0,1789,1785,1,0,0,0,1790,197,1,0,0,0,1791,1793,5,
+ 2,0,0,1792,1794,5,172,0,0,1793,1792,1,0,0,0,1793,1794,1,0,0,0,1794,
+ 1799,1,0,0,0,1795,1797,3,320,160,0,1796,1798,5,172,0,0,1797,1796,
+ 1,0,0,0,1797,1798,1,0,0,0,1798,1800,1,0,0,0,1799,1795,1,0,0,0,1799,
+ 1800,1,0,0,0,1800,1805,1,0,0,0,1801,1803,3,210,105,0,1802,1804,5,
+ 172,0,0,1803,1802,1,0,0,0,1803,1804,1,0,0,0,1804,1806,1,0,0,0,1805,
+ 1801,1,0,0,0,1805,1806,1,0,0,0,1806,1811,1,0,0,0,1807,1809,3,206,
+ 103,0,1808,1810,5,172,0,0,1809,1808,1,0,0,0,1809,1810,1,0,0,0,1810,
+ 1812,1,0,0,0,1811,1807,1,0,0,0,1811,1812,1,0,0,0,1812,1813,1,0,0,
+ 0,1813,1814,5,4,0,0,1814,199,1,0,0,0,1815,1817,3,202,101,0,1816,
+ 1818,5,172,0,0,1817,1816,1,0,0,0,1817,1818,1,0,0,0,1818,1819,1,0,
+ 0,0,1819,1820,3,198,99,0,1820,201,1,0,0,0,1821,1823,3,340,170,0,
+ 1822,1824,5,172,0,0,1823,1822,1,0,0,0,1823,1824,1,0,0,0,1824,1825,
+ 1,0,0,0,1825,1827,3,344,172,0,1826,1828,5,172,0,0,1827,1826,1,0,
+ 0,0,1827,1828,1,0,0,0,1828,1830,1,0,0,0,1829,1831,3,204,102,0,1830,
+ 1829,1,0,0,0,1830,1831,1,0,0,0,1831,1833,1,0,0,0,1832,1834,5,172,
+ 0,0,1833,1832,1,0,0,0,1833,1834,1,0,0,0,1834,1835,1,0,0,0,1835,1836,
+ 3,344,172,0,1836,1866,1,0,0,0,1837,1839,3,344,172,0,1838,1840,5,
+ 172,0,0,1839,1838,1,0,0,0,1839,1840,1,0,0,0,1840,1842,1,0,0,0,1841,
+ 1843,3,204,102,0,1842,1841,1,0,0,0,1842,1843,1,0,0,0,1843,1845,1,
+ 0,0,0,1844,1846,5,172,0,0,1845,1844,1,0,0,0,1845,1846,1,0,0,0,1846,
+ 1847,1,0,0,0,1847,1849,3,344,172,0,1848,1850,5,172,0,0,1849,1848,
+ 1,0,0,0,1849,1850,1,0,0,0,1850,1851,1,0,0,0,1851,1852,3,342,171,
+ 0,1852,1866,1,0,0,0,1853,1855,3,344,172,0,1854,1856,5,172,0,0,1855,
+ 1854,1,0,0,0,1855,1856,1,0,0,0,1856,1858,1,0,0,0,1857,1859,3,204,
+ 102,0,1858,1857,1,0,0,0,1858,1859,1,0,0,0,1859,1861,1,0,0,0,1860,
+ 1862,5,172,0,0,1861,1860,1,0,0,0,1861,1862,1,0,0,0,1862,1863,1,0,
+ 0,0,1863,1864,3,344,172,0,1864,1866,1,0,0,0,1865,1821,1,0,0,0,1865,
+ 1837,1,0,0,0,1865,1853,1,0,0,0,1866,203,1,0,0,0,1867,1869,5,7,0,
+ 0,1868,1870,5,172,0,0,1869,1868,1,0,0,0,1869,1870,1,0,0,0,1870,1875,
+ 1,0,0,0,1871,1873,3,320,160,0,1872,1874,5,172,0,0,1873,1872,1,0,
+ 0,0,1873,1874,1,0,0,0,1874,1876,1,0,0,0,1875,1871,1,0,0,0,1875,1876,
+ 1,0,0,0,1876,1881,1,0,0,0,1877,1879,3,208,104,0,1878,1880,5,172,
+ 0,0,1879,1878,1,0,0,0,1879,1880,1,0,0,0,1880,1882,1,0,0,0,1881,1877,
+ 1,0,0,0,1881,1882,1,0,0,0,1882,1887,1,0,0,0,1883,1885,3,214,107,
+ 0,1884,1886,5,172,0,0,1885,1884,1,0,0,0,1885,1886,1,0,0,0,1886,1888,
+ 1,0,0,0,1887,1883,1,0,0,0,1887,1888,1,0,0,0,1888,1893,1,0,0,0,1889,
+ 1891,3,206,103,0,1890,1892,5,172,0,0,1891,1890,1,0,0,0,1891,1892,
+ 1,0,0,0,1892,1894,1,0,0,0,1893,1889,1,0,0,0,1893,1894,1,0,0,0,1894,
+ 1895,1,0,0,0,1895,1896,5,8,0,0,1896,205,1,0,0,0,1897,1899,5,9,0,
+ 0,1898,1900,5,172,0,0,1899,1898,1,0,0,0,1899,1900,1,0,0,0,1900,1934,
+ 1,0,0,0,1901,1903,3,328,164,0,1902,1904,5,172,0,0,1903,1902,1,0,
+ 0,0,1903,1904,1,0,0,0,1904,1905,1,0,0,0,1905,1907,5,157,0,0,1906,
+ 1908,5,172,0,0,1907,1906,1,0,0,0,1907,1908,1,0,0,0,1908,1909,1,0,
+ 0,0,1909,1911,3,230,115,0,1910,1912,5,172,0,0,1911,1910,1,0,0,0,
+ 1911,1912,1,0,0,0,1912,1931,1,0,0,0,1913,1915,5,3,0,0,1914,1916,
+ 5,172,0,0,1915,1914,1,0,0,0,1915,1916,1,0,0,0,1916,1917,1,0,0,0,
+ 1917,1919,3,328,164,0,1918,1920,5,172,0,0,1919,1918,1,0,0,0,1919,
+ 1920,1,0,0,0,1920,1921,1,0,0,0,1921,1923,5,157,0,0,1922,1924,5,172,
+ 0,0,1923,1922,1,0,0,0,1923,1924,1,0,0,0,1924,1925,1,0,0,0,1925,1927,
+ 3,230,115,0,1926,1928,5,172,0,0,1927,1926,1,0,0,0,1927,1928,1,0,
+ 0,0,1928,1930,1,0,0,0,1929,1913,1,0,0,0,1930,1933,1,0,0,0,1931,1929,
+ 1,0,0,0,1931,1932,1,0,0,0,1932,1935,1,0,0,0,1933,1931,1,0,0,0,1934,
+ 1901,1,0,0,0,1934,1935,1,0,0,0,1935,1936,1,0,0,0,1936,1937,5,10,
+ 0,0,1937,207,1,0,0,0,1938,1940,5,157,0,0,1939,1941,5,172,0,0,1940,
+ 1939,1,0,0,0,1940,1941,1,0,0,0,1941,1942,1,0,0,0,1942,1956,3,228,
+ 114,0,1943,1945,5,172,0,0,1944,1943,1,0,0,0,1944,1945,1,0,0,0,1945,
+ 1946,1,0,0,0,1946,1948,5,11,0,0,1947,1949,5,157,0,0,1948,1947,1,
+ 0,0,0,1948,1949,1,0,0,0,1949,1951,1,0,0,0,1950,1952,5,172,0,0,1951,
+ 1950,1,0,0,0,1951,1952,1,0,0,0,1952,1953,1,0,0,0,1953,1955,3,228,
+ 114,0,1954,1944,1,0,0,0,1955,1958,1,0,0,0,1956,1954,1,0,0,0,1956,
+ 1957,1,0,0,0,1957,209,1,0,0,0,1958,1956,1,0,0,0,1959,1966,3,212,
+ 106,0,1960,1962,5,172,0,0,1961,1960,1,0,0,0,1961,1962,1,0,0,0,1962,
+ 1963,1,0,0,0,1963,1965,3,212,106,0,1964,1961,1,0,0,0,1965,1968,1,
+ 0,0,0,1966,1964,1,0,0,0,1966,1967,1,0,0,0,1967,211,1,0,0,0,1968,
+ 1966,1,0,0,0,1969,1971,5,157,0,0,1970,1972,5,172,0,0,1971,1970,1,
+ 0,0,0,1971,1972,1,0,0,0,1972,1973,1,0,0,0,1973,1974,3,226,113,0,
+ 1974,213,1,0,0,0,1975,1977,5,152,0,0,1976,1978,5,172,0,0,1977,1976,
+ 1,0,0,0,1977,1978,1,0,0,0,1978,1985,1,0,0,0,1979,1986,5,132,0,0,
+ 1980,1981,5,49,0,0,1981,1982,5,172,0,0,1982,1986,5,132,0,0,1983,
+ 1986,5,138,0,0,1984,1986,5,46,0,0,1985,1979,1,0,0,0,1985,1980,1,
+ 0,0,0,1985,1983,1,0,0,0,1985,1984,1,0,0,0,1985,1986,1,0,0,0,1986,
+ 1988,1,0,0,0,1987,1989,5,172,0,0,1988,1987,1,0,0,0,1988,1989,1,0,
+ 0,0,1989,2004,1,0,0,0,1990,1992,3,222,111,0,1991,1990,1,0,0,0,1991,
+ 1992,1,0,0,0,1992,1994,1,0,0,0,1993,1995,5,172,0,0,1994,1993,1,0,
+ 0,0,1994,1995,1,0,0,0,1995,1996,1,0,0,0,1996,1998,5,12,0,0,1997,
+ 1999,5,172,0,0,1998,1997,1,0,0,0,1998,1999,1,0,0,0,1999,2001,1,0,
+ 0,0,2000,2002,3,224,112,0,2001,2000,1,0,0,0,2001,2002,1,0,0,0,2002,
+ 2005,1,0,0,0,2003,2005,3,330,165,0,2004,1991,1,0,0,0,2004,2003,1,
+ 0,0,0,2004,2005,1,0,0,0,2005,2010,1,0,0,0,2006,2008,5,172,0,0,2007,
+ 2006,1,0,0,0,2007,2008,1,0,0,0,2008,2009,1,0,0,0,2009,2011,3,216,
+ 108,0,2010,2007,1,0,0,0,2010,2011,1,0,0,0,2011,215,1,0,0,0,2012,
+ 2014,5,2,0,0,2013,2015,5,172,0,0,2014,2013,1,0,0,0,2014,2015,1,0,
+ 0,0,2015,2016,1,0,0,0,2016,2018,3,320,160,0,2017,2019,5,172,0,0,
+ 2018,2017,1,0,0,0,2018,2019,1,0,0,0,2019,2020,1,0,0,0,2020,2022,
+ 5,3,0,0,2021,2023,5,172,0,0,2022,2021,1,0,0,0,2022,2023,1,0,0,0,
+ 2023,2024,1,0,0,0,2024,2036,3,320,160,0,2025,2027,5,172,0,0,2026,
+ 2025,1,0,0,0,2026,2027,1,0,0,0,2027,2028,1,0,0,0,2028,2030,5,11,
+ 0,0,2029,2031,5,172,0,0,2030,2029,1,0,0,0,2030,2031,1,0,0,0,2031,
+ 2032,1,0,0,0,2032,2034,3,188,94,0,2033,2035,5,172,0,0,2034,2033,
+ 1,0,0,0,2034,2035,1,0,0,0,2035,2037,1,0,0,0,2036,2026,1,0,0,0,2036,
+ 2037,1,0,0,0,2037,2057,1,0,0,0,2038,2040,5,172,0,0,2039,2038,1,0,
+ 0,0,2039,2040,1,0,0,0,2040,2041,1,0,0,0,2041,2043,5,11,0,0,2042,
+ 2044,5,172,0,0,2043,2042,1,0,0,0,2043,2044,1,0,0,0,2044,2045,1,0,
+ 0,0,2045,2047,3,220,110,0,2046,2048,5,172,0,0,2047,2046,1,0,0,0,
+ 2047,2048,1,0,0,0,2048,2049,1,0,0,0,2049,2051,5,3,0,0,2050,2052,
+ 5,172,0,0,2051,2050,1,0,0,0,2051,2052,1,0,0,0,2052,2053,1,0,0,0,
+ 2053,2055,3,218,109,0,2054,2056,5,172,0,0,2055,2054,1,0,0,0,2055,
+ 2056,1,0,0,0,2056,2058,1,0,0,0,2057,2039,1,0,0,0,2057,2058,1,0,0,
+ 0,2058,2059,1,0,0,0,2059,2060,5,4,0,0,2060,217,1,0,0,0,2061,2063,
+ 5,9,0,0,2062,2064,5,172,0,0,2063,2062,1,0,0,0,2063,2064,1,0,0,0,
+ 2064,2066,1,0,0,0,2065,2067,3,176,88,0,2066,2065,1,0,0,0,2066,2067,
+ 1,0,0,0,2067,2069,1,0,0,0,2068,2070,5,172,0,0,2069,2068,1,0,0,0,
+ 2069,2070,1,0,0,0,2070,2071,1,0,0,0,2071,2072,5,10,0,0,2072,219,
+ 1,0,0,0,2073,2075,5,9,0,0,2074,2076,5,172,0,0,2075,2074,1,0,0,0,
+ 2075,2076,1,0,0,0,2076,2078,1,0,0,0,2077,2079,3,176,88,0,2078,2077,
+ 1,0,0,0,2078,2079,1,0,0,0,2079,2081,1,0,0,0,2080,2082,5,172,0,0,
+ 2081,2080,1,0,0,0,2081,2082,1,0,0,0,2082,2083,1,0,0,0,2083,2084,
+ 5,10,0,0,2084,221,1,0,0,0,2085,2086,5,160,0,0,2086,223,1,0,0,0,2087,
+ 2088,5,160,0,0,2088,225,1,0,0,0,2089,2090,3,334,167,0,2090,227,1,
+ 0,0,0,2091,2092,3,334,167,0,2092,229,1,0,0,0,2093,2094,3,232,116,
+ 0,2094,231,1,0,0,0,2095,2102,3,234,117,0,2096,2097,5,172,0,0,2097,
+ 2098,5,119,0,0,2098,2099,5,172,0,0,2099,2101,3,234,117,0,2100,2096,
+ 1,0,0,0,2101,2104,1,0,0,0,2102,2100,1,0,0,0,2102,2103,1,0,0,0,2103,
+ 233,1,0,0,0,2104,2102,1,0,0,0,2105,2112,3,236,118,0,2106,2107,5,
+ 172,0,0,2107,2108,5,149,0,0,2108,2109,5,172,0,0,2109,2111,3,236,
+ 118,0,2110,2106,1,0,0,0,2111,2114,1,0,0,0,2112,2110,1,0,0,0,2112,
+ 2113,1,0,0,0,2113,235,1,0,0,0,2114,2112,1,0,0,0,2115,2122,3,238,
+ 119,0,2116,2117,5,172,0,0,2117,2118,5,51,0,0,2118,2119,5,172,0,0,
+ 2119,2121,3,238,119,0,2120,2116,1,0,0,0,2121,2124,1,0,0,0,2122,2120,
+ 1,0,0,0,2122,2123,1,0,0,0,2123,237,1,0,0,0,2124,2122,1,0,0,0,2125,
+ 2127,5,113,0,0,2126,2128,5,172,0,0,2127,2126,1,0,0,0,2127,2128,1,
+ 0,0,0,2128,2130,1,0,0,0,2129,2125,1,0,0,0,2130,2133,1,0,0,0,2131,
+ 2129,1,0,0,0,2131,2132,1,0,0,0,2132,2134,1,0,0,0,2133,2131,1,0,0,
+ 0,2134,2135,3,240,120,0,2135,239,1,0,0,0,2136,2146,3,244,122,0,2137,
+ 2139,5,172,0,0,2138,2137,1,0,0,0,2138,2139,1,0,0,0,2139,2140,1,0,
+ 0,0,2140,2142,3,242,121,0,2141,2143,5,172,0,0,2142,2141,1,0,0,0,
+ 2142,2143,1,0,0,0,2143,2144,1,0,0,0,2144,2145,3,244,122,0,2145,2147,
+ 1,0,0,0,2146,2138,1,0,0,0,2146,2147,1,0,0,0,2147,2185,1,0,0,0,2148,
+ 2150,3,244,122,0,2149,2151,5,172,0,0,2150,2149,1,0,0,0,2150,2151,
+ 1,0,0,0,2151,2152,1,0,0,0,2152,2154,5,154,0,0,2153,2155,5,172,0,
+ 0,2154,2153,1,0,0,0,2154,2155,1,0,0,0,2155,2156,1,0,0,0,2156,2157,
+ 3,244,122,0,2157,2158,1,0,0,0,2158,2159,6,120,-1,0,2159,2185,1,0,
+ 0,0,2160,2162,3,244,122,0,2161,2163,5,172,0,0,2162,2161,1,0,0,0,
+ 2162,2163,1,0,0,0,2163,2164,1,0,0,0,2164,2166,3,242,121,0,2165,2167,
+ 5,172,0,0,2166,2165,1,0,0,0,2166,2167,1,0,0,0,2167,2168,1,0,0,0,
+ 2168,2178,3,244,122,0,2169,2171,5,172,0,0,2170,2169,1,0,0,0,2170,
+ 2171,1,0,0,0,2171,2172,1,0,0,0,2172,2174,3,242,121,0,2173,2175,5,
+ 172,0,0,2174,2173,1,0,0,0,2174,2175,1,0,0,0,2175,2176,1,0,0,0,2176,
+ 2177,3,244,122,0,2177,2179,1,0,0,0,2178,2170,1,0,0,0,2179,2180,1,
+ 0,0,0,2180,2178,1,0,0,0,2180,2181,1,0,0,0,2181,2182,1,0,0,0,2182,
+ 2183,6,120,-1,0,2183,2185,1,0,0,0,2184,2136,1,0,0,0,2184,2148,1,
+ 0,0,0,2184,2160,1,0,0,0,2185,241,1,0,0,0,2186,2187,7,2,0,0,2187,
+ 243,1,0,0,0,2188,2199,3,246,123,0,2189,2191,5,172,0,0,2190,2189,
+ 1,0,0,0,2190,2191,1,0,0,0,2191,2192,1,0,0,0,2192,2194,5,11,0,0,2193,
+ 2195,5,172,0,0,2194,2193,1,0,0,0,2194,2195,1,0,0,0,2195,2196,1,0,
+ 0,0,2196,2198,3,246,123,0,2197,2190,1,0,0,0,2198,2201,1,0,0,0,2199,
+ 2197,1,0,0,0,2199,2200,1,0,0,0,2200,245,1,0,0,0,2201,2199,1,0,0,
+ 0,2202,2213,3,248,124,0,2203,2205,5,172,0,0,2204,2203,1,0,0,0,2204,
+ 2205,1,0,0,0,2205,2206,1,0,0,0,2206,2208,5,18,0,0,2207,2209,5,172,
+ 0,0,2208,2207,1,0,0,0,2208,2209,1,0,0,0,2209,2210,1,0,0,0,2210,2212,
+ 3,248,124,0,2211,2204,1,0,0,0,2212,2215,1,0,0,0,2213,2211,1,0,0,
+ 0,2213,2214,1,0,0,0,2214,247,1,0,0,0,2215,2213,1,0,0,0,2216,2228,
+ 3,252,126,0,2217,2219,5,172,0,0,2218,2217,1,0,0,0,2218,2219,1,0,
+ 0,0,2219,2220,1,0,0,0,2220,2222,3,250,125,0,2221,2223,5,172,0,0,
+ 2222,2221,1,0,0,0,2222,2223,1,0,0,0,2223,2224,1,0,0,0,2224,2225,
+ 3,252,126,0,2225,2227,1,0,0,0,2226,2218,1,0,0,0,2227,2230,1,0,0,
+ 0,2228,2226,1,0,0,0,2228,2229,1,0,0,0,2229,249,1,0,0,0,2230,2228,
+ 1,0,0,0,2231,2232,7,3,0,0,2232,251,1,0,0,0,2233,2245,3,256,128,0,
+ 2234,2236,5,172,0,0,2235,2234,1,0,0,0,2235,2236,1,0,0,0,2236,2237,
+ 1,0,0,0,2237,2239,3,254,127,0,2238,2240,5,172,0,0,2239,2238,1,0,
+ 0,0,2239,2240,1,0,0,0,2240,2241,1,0,0,0,2241,2242,3,256,128,0,2242,
+ 2244,1,0,0,0,2243,2235,1,0,0,0,2244,2247,1,0,0,0,2245,2243,1,0,0,
+ 0,2245,2246,1,0,0,0,2246,253,1,0,0,0,2247,2245,1,0,0,0,2248,2249,
+ 7,4,0,0,2249,255,1,0,0,0,2250,2262,3,260,130,0,2251,2253,5,172,0,
+ 0,2252,2251,1,0,0,0,2252,2253,1,0,0,0,2253,2254,1,0,0,0,2254,2256,
+ 3,258,129,0,2255,2257,5,172,0,0,2256,2255,1,0,0,0,2256,2257,1,0,
+ 0,0,2257,2258,1,0,0,0,2258,2259,3,260,130,0,2259,2261,1,0,0,0,2260,
+ 2252,1,0,0,0,2261,2264,1,0,0,0,2262,2260,1,0,0,0,2262,2263,1,0,0,
+ 0,2263,257,1,0,0,0,2264,2262,1,0,0,0,2265,2266,7,5,0,0,2266,259,
+ 1,0,0,0,2267,2278,3,262,131,0,2268,2270,5,172,0,0,2269,2268,1,0,
+ 0,0,2269,2270,1,0,0,0,2270,2271,1,0,0,0,2271,2273,5,24,0,0,2272,
+ 2274,5,172,0,0,2273,2272,1,0,0,0,2273,2274,1,0,0,0,2274,2275,1,0,
+ 0,0,2275,2277,3,262,131,0,2276,2269,1,0,0,0,2277,2280,1,0,0,0,2278,
+ 2276,1,0,0,0,2278,2279,1,0,0,0,2279,261,1,0,0,0,2280,2278,1,0,0,
+ 0,2281,2283,5,155,0,0,2282,2284,5,172,0,0,2283,2282,1,0,0,0,2283,
+ 2284,1,0,0,0,2284,2286,1,0,0,0,2285,2281,1,0,0,0,2286,2289,1,0,0,
+ 0,2287,2285,1,0,0,0,2287,2288,1,0,0,0,2288,2290,1,0,0,0,2289,2287,
+ 1,0,0,0,2290,2295,3,264,132,0,2291,2293,5,172,0,0,2292,2291,1,0,
+ 0,0,2292,2293,1,0,0,0,2293,2294,1,0,0,0,2294,2296,5,156,0,0,2295,
+ 2292,1,0,0,0,2295,2296,1,0,0,0,2296,263,1,0,0,0,2297,2305,3,274,
+ 137,0,2298,2306,3,268,134,0,2299,2301,3,266,133,0,2300,2299,1,0,
+ 0,0,2301,2302,1,0,0,0,2302,2300,1,0,0,0,2302,2303,1,0,0,0,2303,2306,
+ 1,0,0,0,2304,2306,3,272,136,0,2305,2298,1,0,0,0,2305,2300,1,0,0,
+ 0,2305,2304,1,0,0,0,2305,2306,1,0,0,0,2306,265,1,0,0,0,2307,2308,
+ 5,172,0,0,2308,2310,5,96,0,0,2309,2311,5,172,0,0,2310,2309,1,0,0,
+ 0,2310,2311,1,0,0,0,2311,2312,1,0,0,0,2312,2327,3,274,137,0,2313,
+ 2314,5,7,0,0,2314,2315,3,230,115,0,2315,2316,5,8,0,0,2316,2327,1,
+ 0,0,0,2317,2319,5,7,0,0,2318,2320,3,230,115,0,2319,2318,1,0,0,0,
+ 2319,2320,1,0,0,0,2320,2321,1,0,0,0,2321,2323,5,157,0,0,2322,2324,
+ 3,230,115,0,2323,2322,1,0,0,0,2323,2324,1,0,0,0,2324,2325,1,0,0,
+ 0,2325,2327,5,8,0,0,2326,2307,1,0,0,0,2326,2313,1,0,0,0,2326,2317,
+ 1,0,0,0,2327,267,1,0,0,0,2328,2340,3,270,135,0,2329,2330,5,172,0,
+ 0,2330,2331,5,134,0,0,2331,2332,5,172,0,0,2332,2340,5,147,0,0,2333,
+ 2334,5,172,0,0,2334,2335,5,82,0,0,2335,2336,5,172,0,0,2336,2340,
+ 5,147,0,0,2337,2338,5,172,0,0,2338,2340,5,66,0,0,2339,2328,1,0,0,
+ 0,2339,2329,1,0,0,0,2339,2333,1,0,0,0,2339,2337,1,0,0,0,2340,2342,
+ 1,0,0,0,2341,2343,5,172,0,0,2342,2341,1,0,0,0,2342,2343,1,0,0,0,
+ 2343,2344,1,0,0,0,2344,2345,3,274,137,0,2345,269,1,0,0,0,2346,2348,
+ 5,172,0,0,2347,2346,1,0,0,0,2347,2348,1,0,0,0,2348,2349,1,0,0,0,
+ 2349,2350,5,25,0,0,2350,271,1,0,0,0,2351,2352,5,172,0,0,2352,2353,
+ 5,99,0,0,2353,2354,5,172,0,0,2354,2362,5,115,0,0,2355,2356,5,172,
+ 0,0,2356,2357,5,99,0,0,2357,2358,5,172,0,0,2358,2359,5,113,0,0,2359,
+ 2360,5,172,0,0,2360,2362,5,115,0,0,2361,2351,1,0,0,0,2361,2355,1,
+ 0,0,0,2362,273,1,0,0,0,2363,2370,3,276,138,0,2364,2366,5,172,0,0,
+ 2365,2364,1,0,0,0,2365,2366,1,0,0,0,2366,2367,1,0,0,0,2367,2369,
+ 3,314,157,0,2368,2365,1,0,0,0,2369,2372,1,0,0,0,2370,2368,1,0,0,
+ 0,2370,2371,1,0,0,0,2371,275,1,0,0,0,2372,2370,1,0,0,0,2373,2384,
+ 3,284,142,0,2374,2384,3,324,162,0,2375,2384,3,316,158,0,2376,2384,
+ 3,296,148,0,2377,2384,3,298,149,0,2378,2384,3,308,154,0,2379,2384,
+ 3,310,155,0,2380,2384,3,312,156,0,2381,2384,3,320,160,0,2382,2384,
+ 3,278,139,0,2383,2373,1,0,0,0,2383,2374,1,0,0,0,2383,2375,1,0,0,
+ 0,2383,2376,1,0,0,0,2383,2377,1,0,0,0,2383,2378,1,0,0,0,2383,2379,
+ 1,0,0,0,2383,2380,1,0,0,0,2383,2381,1,0,0,0,2383,2382,1,0,0,0,2384,
+ 277,1,0,0,0,2385,2387,5,49,0,0,2386,2388,5,172,0,0,2387,2386,1,0,
+ 0,0,2387,2388,1,0,0,0,2388,2389,1,0,0,0,2389,2391,5,2,0,0,2390,2392,
+ 5,172,0,0,2391,2390,1,0,0,0,2391,2392,1,0,0,0,2392,2393,1,0,0,0,
+ 2393,2395,3,280,140,0,2394,2396,5,172,0,0,2395,2394,1,0,0,0,2395,
+ 2396,1,0,0,0,2396,2397,1,0,0,0,2397,2398,5,4,0,0,2398,2442,1,0,0,
+ 0,2399,2401,5,47,0,0,2400,2402,5,172,0,0,2401,2400,1,0,0,0,2401,
+ 2402,1,0,0,0,2402,2403,1,0,0,0,2403,2405,5,2,0,0,2404,2406,5,172,
+ 0,0,2405,2404,1,0,0,0,2405,2406,1,0,0,0,2406,2407,1,0,0,0,2407,2409,
+ 3,280,140,0,2408,2410,5,172,0,0,2409,2408,1,0,0,0,2409,2410,1,0,
+ 0,0,2410,2411,1,0,0,0,2411,2412,5,4,0,0,2412,2442,1,0,0,0,2413,2415,
+ 5,114,0,0,2414,2416,5,172,0,0,2415,2414,1,0,0,0,2415,2416,1,0,0,
+ 0,2416,2417,1,0,0,0,2417,2419,5,2,0,0,2418,2420,5,172,0,0,2419,2418,
+ 1,0,0,0,2419,2420,1,0,0,0,2420,2421,1,0,0,0,2421,2423,3,280,140,
+ 0,2422,2424,5,172,0,0,2423,2422,1,0,0,0,2423,2424,1,0,0,0,2424,2425,
+ 1,0,0,0,2425,2426,5,4,0,0,2426,2442,1,0,0,0,2427,2429,5,150,0,0,
+ 2428,2430,5,172,0,0,2429,2428,1,0,0,0,2429,2430,1,0,0,0,2430,2431,
+ 1,0,0,0,2431,2433,5,2,0,0,2432,2434,5,172,0,0,2433,2432,1,0,0,0,
+ 2433,2434,1,0,0,0,2434,2435,1,0,0,0,2435,2437,3,280,140,0,2436,2438,
+ 5,172,0,0,2437,2436,1,0,0,0,2437,2438,1,0,0,0,2438,2439,1,0,0,0,
+ 2439,2440,5,4,0,0,2440,2442,1,0,0,0,2441,2385,1,0,0,0,2441,2399,
+ 1,0,0,0,2441,2413,1,0,0,0,2441,2427,1,0,0,0,2442,279,1,0,0,0,2443,
+ 2448,3,282,141,0,2444,2446,5,172,0,0,2445,2444,1,0,0,0,2445,2446,
+ 1,0,0,0,2446,2447,1,0,0,0,2447,2449,3,188,94,0,2448,2445,1,0,0,0,
+ 2448,2449,1,0,0,0,2449,281,1,0,0,0,2450,2451,3,320,160,0,2451,2452,
+ 5,172,0,0,2452,2453,5,96,0,0,2453,2454,5,172,0,0,2454,2455,3,230,
+ 115,0,2455,283,1,0,0,0,2456,2463,3,322,161,0,2457,2463,5,158,0,0,
+ 2458,2463,3,286,143,0,2459,2463,5,115,0,0,2460,2463,3,288,144,0,
+ 2461,2463,3,292,146,0,2462,2456,1,0,0,0,2462,2457,1,0,0,0,2462,2458,
+ 1,0,0,0,2462,2459,1,0,0,0,2462,2460,1,0,0,0,2462,2461,1,0,0,0,2463,
+ 285,1,0,0,0,2464,2465,7,6,0,0,2465,287,1,0,0,0,2466,2468,5,7,0,0,
+ 2467,2469,5,172,0,0,2468,2467,1,0,0,0,2468,2469,1,0,0,0,2469,2483,
+ 1,0,0,0,2470,2472,3,230,115,0,2471,2473,5,172,0,0,2472,2471,1,0,
+ 0,0,2472,2473,1,0,0,0,2473,2480,1,0,0,0,2474,2476,3,290,145,0,2475,
+ 2477,5,172,0,0,2476,2475,1,0,0,0,2476,2477,1,0,0,0,2477,2479,1,0,
+ 0,0,2478,2474,1,0,0,0,2479,2482,1,0,0,0,2480,2478,1,0,0,0,2480,2481,
+ 1,0,0,0,2481,2484,1,0,0,0,2482,2480,1,0,0,0,2483,2470,1,0,0,0,2483,
+ 2484,1,0,0,0,2484,2485,1,0,0,0,2485,2486,5,8,0,0,2486,289,1,0,0,
+ 0,2487,2489,5,3,0,0,2488,2490,5,172,0,0,2489,2488,1,0,0,0,2489,2490,
+ 1,0,0,0,2490,2492,1,0,0,0,2491,2493,3,230,115,0,2492,2491,1,0,0,
+ 0,2492,2493,1,0,0,0,2493,291,1,0,0,0,2494,2496,5,9,0,0,2495,2497,
+ 5,172,0,0,2496,2495,1,0,0,0,2496,2497,1,0,0,0,2497,2498,1,0,0,0,
+ 2498,2500,3,294,147,0,2499,2501,5,172,0,0,2500,2499,1,0,0,0,2500,
+ 2501,1,0,0,0,2501,2512,1,0,0,0,2502,2504,5,3,0,0,2503,2505,5,172,
+ 0,0,2504,2503,1,0,0,0,2504,2505,1,0,0,0,2505,2506,1,0,0,0,2506,2508,
+ 3,294,147,0,2507,2509,5,172,0,0,2508,2507,1,0,0,0,2508,2509,1,0,
+ 0,0,2509,2511,1,0,0,0,2510,2502,1,0,0,0,2511,2514,1,0,0,0,2512,2510,
+ 1,0,0,0,2512,2513,1,0,0,0,2513,2515,1,0,0,0,2514,2512,1,0,0,0,2515,
+ 2516,5,10,0,0,2516,293,1,0,0,0,2517,2520,3,336,168,0,2518,2520,5,
+ 158,0,0,2519,2517,1,0,0,0,2519,2518,1,0,0,0,2520,2522,1,0,0,0,2521,
+ 2523,5,172,0,0,2522,2521,1,0,0,0,2522,2523,1,0,0,0,2523,2524,1,0,
+ 0,0,2524,2526,5,157,0,0,2525,2527,5,172,0,0,2526,2525,1,0,0,0,2526,
+ 2527,1,0,0,0,2527,2528,1,0,0,0,2528,2529,3,230,115,0,2529,295,1,
+ 0,0,0,2530,2532,5,2,0,0,2531,2533,5,172,0,0,2532,2531,1,0,0,0,2532,
+ 2533,1,0,0,0,2533,2534,1,0,0,0,2534,2536,3,230,115,0,2535,2537,5,
+ 172,0,0,2536,2535,1,0,0,0,2536,2537,1,0,0,0,2537,2538,1,0,0,0,2538,
+ 2539,5,4,0,0,2539,297,1,0,0,0,2540,2542,5,68,0,0,2541,2543,5,172,
+ 0,0,2542,2541,1,0,0,0,2542,2543,1,0,0,0,2543,2544,1,0,0,0,2544,2546,
+ 5,2,0,0,2545,2547,5,172,0,0,2546,2545,1,0,0,0,2546,2547,1,0,0,0,
+ 2547,2548,1,0,0,0,2548,2550,5,152,0,0,2549,2551,5,172,0,0,2550,2549,
+ 1,0,0,0,2550,2551,1,0,0,0,2551,2552,1,0,0,0,2552,2618,5,4,0,0,2553,
+ 2555,5,60,0,0,2554,2556,5,172,0,0,2555,2554,1,0,0,0,2555,2556,1,
+ 0,0,0,2556,2557,1,0,0,0,2557,2559,5,2,0,0,2558,2560,5,172,0,0,2559,
+ 2558,1,0,0,0,2559,2560,1,0,0,0,2560,2561,1,0,0,0,2561,2563,3,302,
+ 151,0,2562,2564,5,172,0,0,2563,2562,1,0,0,0,2563,2564,1,0,0,0,2564,
+ 2575,1,0,0,0,2565,2567,5,52,0,0,2566,2568,5,172,0,0,2567,2566,1,
+ 0,0,0,2567,2568,1,0,0,0,2568,2569,1,0,0,0,2569,2576,3,98,49,0,2570,
+ 2572,5,3,0,0,2571,2573,5,172,0,0,2572,2571,1,0,0,0,2572,2573,1,0,
+ 0,0,2573,2574,1,0,0,0,2574,2576,3,302,151,0,2575,2565,1,0,0,0,2575,
+ 2570,1,0,0,0,2576,2578,1,0,0,0,2577,2579,5,172,0,0,2578,2577,1,0,
+ 0,0,2578,2579,1,0,0,0,2579,2580,1,0,0,0,2580,2581,5,4,0,0,2581,2618,
+ 1,0,0,0,2582,2584,3,300,150,0,2583,2585,5,172,0,0,2584,2583,1,0,
+ 0,0,2584,2585,1,0,0,0,2585,2586,1,0,0,0,2586,2588,5,2,0,0,2587,2589,
+ 5,172,0,0,2588,2587,1,0,0,0,2588,2589,1,0,0,0,2589,2594,1,0,0,0,
+ 2590,2592,5,78,0,0,2591,2593,5,172,0,0,2592,2591,1,0,0,0,2592,2593,
+ 1,0,0,0,2593,2595,1,0,0,0,2594,2590,1,0,0,0,2594,2595,1,0,0,0,2595,
+ 2613,1,0,0,0,2596,2598,3,302,151,0,2597,2599,5,172,0,0,2598,2597,
+ 1,0,0,0,2598,2599,1,0,0,0,2599,2610,1,0,0,0,2600,2602,5,3,0,0,2601,
+ 2603,5,172,0,0,2602,2601,1,0,0,0,2602,2603,1,0,0,0,2603,2604,1,0,
+ 0,0,2604,2606,3,302,151,0,2605,2607,5,172,0,0,2606,2605,1,0,0,0,
+ 2606,2607,1,0,0,0,2607,2609,1,0,0,0,2608,2600,1,0,0,0,2609,2612,
+ 1,0,0,0,2610,2608,1,0,0,0,2610,2611,1,0,0,0,2611,2614,1,0,0,0,2612,
+ 2610,1,0,0,0,2613,2596,1,0,0,0,2613,2614,1,0,0,0,2614,2615,1,0,0,
+ 0,2615,2616,5,4,0,0,2616,2618,1,0,0,0,2617,2540,1,0,0,0,2617,2553,
+ 1,0,0,0,2617,2582,1,0,0,0,2618,299,1,0,0,0,2619,2620,3,336,168,0,
+ 2620,301,1,0,0,0,2621,2623,3,336,168,0,2622,2624,5,172,0,0,2623,
+ 2622,1,0,0,0,2623,2624,1,0,0,0,2624,2625,1,0,0,0,2625,2626,5,157,
+ 0,0,2626,2628,5,6,0,0,2627,2629,5,172,0,0,2628,2627,1,0,0,0,2628,
+ 2629,1,0,0,0,2629,2631,1,0,0,0,2630,2621,1,0,0,0,2630,2631,1,0,0,
+ 0,2631,2632,1,0,0,0,2632,2635,3,230,115,0,2633,2635,3,304,152,0,
+ 2634,2630,1,0,0,0,2634,2633,1,0,0,0,2635,303,1,0,0,0,2636,2638,3,
+ 306,153,0,2637,2639,5,172,0,0,2638,2637,1,0,0,0,2638,2639,1,0,0,
+ 0,2639,2640,1,0,0,0,2640,2641,5,155,0,0,2641,2643,5,16,0,0,2642,
+ 2644,5,172,0,0,2643,2642,1,0,0,0,2643,2644,1,0,0,0,2644,2645,1,0,
+ 0,0,2645,2647,3,230,115,0,2646,2648,5,172,0,0,2647,2646,1,0,0,0,
+ 2647,2648,1,0,0,0,2648,305,1,0,0,0,2649,2674,3,336,168,0,2650,2652,
+ 5,2,0,0,2651,2653,5,172,0,0,2652,2651,1,0,0,0,2652,2653,1,0,0,0,
+ 2653,2654,1,0,0,0,2654,2656,3,336,168,0,2655,2657,5,172,0,0,2656,
+ 2655,1,0,0,0,2656,2657,1,0,0,0,2657,2668,1,0,0,0,2658,2660,5,3,0,
+ 0,2659,2661,5,172,0,0,2660,2659,1,0,0,0,2660,2661,1,0,0,0,2661,2662,
+ 1,0,0,0,2662,2664,3,336,168,0,2663,2665,5,172,0,0,2664,2663,1,0,
+ 0,0,2664,2665,1,0,0,0,2665,2667,1,0,0,0,2666,2658,1,0,0,0,2667,2670,
+ 1,0,0,0,2668,2666,1,0,0,0,2668,2669,1,0,0,0,2669,2671,1,0,0,0,2670,
+ 2668,1,0,0,0,2671,2672,5,4,0,0,2672,2674,1,0,0,0,2673,2649,1,0,0,
+ 0,2673,2650,1,0,0,0,2674,307,1,0,0,0,2675,2680,3,198,99,0,2676,2678,
+ 5,172,0,0,2677,2676,1,0,0,0,2677,2678,1,0,0,0,2678,2679,1,0,0,0,
+ 2679,2681,3,200,100,0,2680,2677,1,0,0,0,2681,2682,1,0,0,0,2682,2680,
+ 1,0,0,0,2682,2683,1,0,0,0,2683,309,1,0,0,0,2684,2686,5,83,0,0,2685,
+ 2687,5,172,0,0,2686,2685,1,0,0,0,2686,2687,1,0,0,0,2687,2688,1,0,
+ 0,0,2688,2690,5,9,0,0,2689,2691,5,172,0,0,2690,2689,1,0,0,0,2690,
+ 2691,1,0,0,0,2691,2692,1,0,0,0,2692,2694,5,106,0,0,2693,2695,5,172,
+ 0,0,2694,2693,1,0,0,0,2694,2695,1,0,0,0,2695,2696,1,0,0,0,2696,2701,
+ 3,190,95,0,2697,2699,5,172,0,0,2698,2697,1,0,0,0,2698,2699,1,0,0,
+ 0,2699,2700,1,0,0,0,2700,2702,3,188,94,0,2701,2698,1,0,0,0,2701,
+ 2702,1,0,0,0,2702,2704,1,0,0,0,2703,2705,5,172,0,0,2704,2703,1,0,
+ 0,0,2704,2705,1,0,0,0,2705,2706,1,0,0,0,2706,2707,5,10,0,0,2707,
+ 311,1,0,0,0,2708,2710,5,68,0,0,2709,2711,5,172,0,0,2710,2709,1,0,
+ 0,0,2710,2711,1,0,0,0,2711,2712,1,0,0,0,2712,2714,5,9,0,0,2713,2715,
+ 5,172,0,0,2714,2713,1,0,0,0,2714,2715,1,0,0,0,2715,2716,1,0,0,0,
+ 2716,2718,5,106,0,0,2717,2719,5,172,0,0,2718,2717,1,0,0,0,2718,2719,
+ 1,0,0,0,2719,2720,1,0,0,0,2720,2725,3,190,95,0,2721,2723,5,172,0,
+ 0,2722,2721,1,0,0,0,2722,2723,1,0,0,0,2723,2724,1,0,0,0,2724,2726,
+ 3,188,94,0,2725,2722,1,0,0,0,2725,2726,1,0,0,0,2726,2728,1,0,0,0,
+ 2727,2729,5,172,0,0,2728,2727,1,0,0,0,2728,2729,1,0,0,0,2729,2730,
+ 1,0,0,0,2730,2731,5,10,0,0,2731,313,1,0,0,0,2732,2734,5,5,0,0,2733,
+ 2735,5,172,0,0,2734,2733,1,0,0,0,2734,2735,1,0,0,0,2735,2738,1,0,
+ 0,0,2736,2739,3,328,164,0,2737,2739,5,152,0,0,2738,2736,1,0,0,0,
+ 2738,2737,1,0,0,0,2739,315,1,0,0,0,2740,2745,5,59,0,0,2741,2743,
+ 5,172,0,0,2742,2741,1,0,0,0,2742,2743,1,0,0,0,2743,2744,1,0,0,0,
+ 2744,2746,3,318,159,0,2745,2742,1,0,0,0,2746,2747,1,0,0,0,2747,2745,
+ 1,0,0,0,2747,2748,1,0,0,0,2748,2763,1,0,0,0,2749,2751,5,59,0,0,2750,
+ 2752,5,172,0,0,2751,2750,1,0,0,0,2751,2752,1,0,0,0,2752,2753,1,0,
+ 0,0,2753,2758,3,230,115,0,2754,2756,5,172,0,0,2755,2754,1,0,0,0,
+ 2755,2756,1,0,0,0,2756,2757,1,0,0,0,2757,2759,3,318,159,0,2758,2755,
+ 1,0,0,0,2759,2760,1,0,0,0,2760,2758,1,0,0,0,2760,2761,1,0,0,0,2761,
+ 2763,1,0,0,0,2762,2740,1,0,0,0,2762,2749,1,0,0,0,2763,2772,1,0,0,
+ 0,2764,2766,5,172,0,0,2765,2764,1,0,0,0,2765,2766,1,0,0,0,2766,2767,
+ 1,0,0,0,2767,2769,5,80,0,0,2768,2770,5,172,0,0,2769,2768,1,0,0,0,
+ 2769,2770,1,0,0,0,2770,2771,1,0,0,0,2771,2773,3,230,115,0,2772,2765,
+ 1,0,0,0,2772,2773,1,0,0,0,2773,2775,1,0,0,0,2774,2776,5,172,0,0,
+ 2775,2774,1,0,0,0,2775,2776,1,0,0,0,2776,2777,1,0,0,0,2777,2778,
+ 5,81,0,0,2778,317,1,0,0,0,2779,2781,5,145,0,0,2780,2782,5,172,0,
+ 0,2781,2780,1,0,0,0,2781,2782,1,0,0,0,2782,2783,1,0,0,0,2783,2785,
+ 3,230,115,0,2784,2786,5,172,0,0,2785,2784,1,0,0,0,2785,2786,1,0,
+ 0,0,2786,2787,1,0,0,0,2787,2789,5,136,0,0,2788,2790,5,172,0,0,2789,
+ 2788,1,0,0,0,2789,2790,1,0,0,0,2790,2791,1,0,0,0,2791,2792,3,230,
+ 115,0,2792,319,1,0,0,0,2793,2794,3,336,168,0,2794,321,1,0,0,0,2795,
+ 2798,3,332,166,0,2796,2798,3,330,165,0,2797,2795,1,0,0,0,2797,2796,
+ 1,0,0,0,2798,323,1,0,0,0,2799,2802,5,26,0,0,2800,2803,3,336,168,
+ 0,2801,2803,5,160,0,0,2802,2800,1,0,0,0,2802,2801,1,0,0,0,2803,325,
+ 1,0,0,0,2804,2806,3,276,138,0,2805,2807,5,172,0,0,2806,2805,1,0,
+ 0,0,2806,2807,1,0,0,0,2807,2808,1,0,0,0,2808,2809,3,314,157,0,2809,
+ 327,1,0,0,0,2810,2811,3,334,167,0,2811,329,1,0,0,0,2812,2813,5,160,
+ 0,0,2813,331,1,0,0,0,2814,2815,5,167,0,0,2815,333,1,0,0,0,2816,2817,
+ 3,336,168,0,2817,335,1,0,0,0,2818,2824,5,168,0,0,2819,2820,5,171,
+ 0,0,2820,2824,6,168,-1,0,2821,2824,5,161,0,0,2822,2824,3,338,169,
+ 0,2823,2818,1,0,0,0,2823,2819,1,0,0,0,2823,2821,1,0,0,0,2823,2822,
+ 1,0,0,0,2824,337,1,0,0,0,2825,2826,7,7,0,0,2826,339,1,0,0,0,2827,
+ 2828,7,8,0,0,2828,341,1,0,0,0,2829,2830,7,9,0,0,2830,343,1,0,0,0,
+ 2831,2832,7,10,0,0,2832,345,1,0,0,0,491,348,352,357,361,366,369,
+ 373,376,399,405,409,412,418,421,425,429,433,438,442,449,453,461,
+ 465,475,479,483,488,501,505,513,516,524,527,542,547,553,557,560,
+ 563,569,573,578,581,586,590,594,599,614,618,625,645,649,652,655,
+ 658,661,665,670,674,684,688,693,698,703,709,713,717,722,729,733,
+ 737,740,744,748,767,771,775,779,783,786,789,802,806,810,814,818,
+ 822,824,828,832,834,849,853,857,861,865,870,873,877,881,883,887,
+ 891,893,912,919,932,939,945,948,958,961,969,972,978,981,987,1002,
+ 1018,1027,1053,1057,1062,1071,1075,1080,1086,1092,1098,1102,1106,
+ 1114,1118,1122,1128,1132,1136,1142,1146,1150,1154,1158,1164,1168,
+ 1172,1176,1180,1184,1190,1197,1202,1208,1213,1230,1234,1242,1250,
+ 1252,1262,1266,1270,1276,1280,1285,1290,1295,1300,1304,1309,1315,
+ 1320,1323,1327,1331,1335,1341,1345,1350,1355,1359,1362,1364,1368,
+ 1372,1378,1382,1387,1391,1400,1406,1414,1418,1422,1426,1433,1436,
+ 1439,1442,1446,1448,1454,1457,1461,1465,1469,1473,1477,1481,1486,
+ 1492,1496,1500,1504,1509,1513,1522,1526,1531,1545,1547,1549,1554,
+ 1564,1570,1577,1590,1594,1598,1602,1607,1612,1616,1622,1626,1630,
+ 1634,1639,1645,1648,1654,1657,1663,1667,1671,1675,1679,1684,1689,
+ 1693,1698,1701,1710,1719,1724,1737,1740,1748,1752,1757,1762,1766,
+ 1771,1777,1782,1789,1793,1797,1799,1803,1805,1809,1811,1817,1823,
+ 1827,1830,1833,1839,1842,1845,1849,1855,1858,1861,1865,1869,1873,
+ 1875,1879,1881,1885,1887,1891,1893,1899,1903,1907,1911,1915,1919,
+ 1923,1927,1931,1934,1940,1944,1948,1951,1956,1961,1966,1971,1977,
+ 1985,1988,1991,1994,1998,2001,2004,2007,2010,2014,2018,2022,2026,
+ 2030,2034,2036,2039,2043,2047,2051,2055,2057,2063,2066,2069,2075,
+ 2078,2081,2102,2112,2122,2127,2131,2138,2142,2146,2150,2154,2162,
+ 2166,2170,2174,2180,2184,2190,2194,2199,2204,2208,2213,2218,2222,
+ 2228,2235,2239,2245,2252,2256,2262,2269,2273,2278,2283,2287,2292,
+ 2295,2302,2305,2310,2319,2323,2326,2339,2342,2347,2361,2365,2370,
+ 2383,2387,2391,2395,2401,2405,2409,2415,2419,2423,2429,2433,2437,
+ 2441,2445,2448,2462,2468,2472,2476,2480,2483,2489,2492,2496,2500,
+ 2504,2508,2512,2519,2522,2526,2532,2536,2542,2546,2550,2555,2559,
+ 2563,2567,2572,2575,2578,2584,2588,2592,2594,2598,2602,2606,2610,
+ 2613,2617,2623,2628,2630,2634,2638,2643,2647,2652,2656,2660,2664,
+ 2668,2673,2677,2682,2686,2690,2694,2698,2701,2704,2710,2714,2718,
+ 2722,2725,2728,2734,2738,2742,2747,2751,2755,2760,2762,2765,2769,
+ 2772,2775,2781,2785,2789,2797,2802,2806,2823
];
private static __ATN: antlr.ATN;
@@ -13297,9 +13672,6 @@ export class OC_StatementContext extends antlr.ParserRuleContext {
public kU_CreateRelTableGroup(): KU_CreateRelTableGroupContext {
return this.getTypedRuleContext(KU_CreateRelTableGroupContext, 0);
}
- public kU_CreateRdfGraph(): KU_CreateRdfGraphContext {
- return this.getTypedRuleContext(KU_CreateRdfGraphContext, 0);
- }
public kU_CreateSequence(): KU_CreateSequenceContext {
return this.getTypedRuleContext(KU_CreateSequenceContext, 0);
}
@@ -13700,6 +14072,9 @@ export class KU_StandaloneCallContext extends antlr.ParserRuleContext {
public oC_Expression(): OC_ExpressionContext {
return this.getTypedRuleContext(OC_ExpressionContext, 0);
}
+ public oC_FunctionInvocation(): OC_FunctionInvocationContext {
+ return this.getTypedRuleContext(OC_FunctionInvocationContext, 0);
+ }
public override get ruleIndex(): number {
return CypherParser.RULE_kU_StandaloneCall;
}
@@ -13918,15 +14293,15 @@ export class KU_CreateNodeTableContext extends antlr.ParserRuleContext {
public oC_SchemaName(): OC_SchemaNameContext {
return this.getTypedRuleContext(OC_SchemaNameContext, 0);
}
- public kU_PropertyDefinitionsDDL(): KU_PropertyDefinitionsDDLContext {
- return this.getTypedRuleContext(KU_PropertyDefinitionsDDLContext, 0);
- }
- public kU_CreateNodeConstraint(): KU_CreateNodeConstraintContext {
- return this.getTypedRuleContext(KU_CreateNodeConstraintContext, 0);
+ public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext {
+ return this.getTypedRuleContext(KU_PropertyDefinitionsContext, 0);
}
public kU_IfNotExists(): KU_IfNotExistsContext {
return this.getTypedRuleContext(KU_IfNotExistsContext, 0);
}
+ public kU_CreateNodeConstraint(): KU_CreateNodeConstraintContext {
+ return this.getTypedRuleContext(KU_CreateNodeConstraintContext, 0);
+ }
public override get ruleIndex(): number {
return CypherParser.RULE_kU_CreateNodeTable;
}
@@ -13961,8 +14336,8 @@ export class KU_CreateRelTableContext extends antlr.ParserRuleContext {
public kU_IfNotExists(): KU_IfNotExistsContext {
return this.getTypedRuleContext(KU_IfNotExistsContext, 0);
}
- public kU_PropertyDefinitionsDDL(): KU_PropertyDefinitionsDDLContext {
- return this.getTypedRuleContext(KU_PropertyDefinitionsDDLContext, 0);
+ public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext {
+ return this.getTypedRuleContext(KU_PropertyDefinitionsContext, 0);
}
public oC_SymbolicName(): OC_SymbolicNameContext {
return this.getTypedRuleContext(OC_SymbolicNameContext, 0);
@@ -14007,8 +14382,8 @@ export class KU_CreateRelTableGroupContext extends antlr.ParserRuleContext {
public kU_IfNotExists(): KU_IfNotExistsContext {
return this.getTypedRuleContext(KU_IfNotExistsContext, 0);
}
- public kU_PropertyDefinitionsDDL(): KU_PropertyDefinitionsDDLContext {
- return this.getTypedRuleContext(KU_PropertyDefinitionsDDLContext, 0);
+ public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext {
+ return this.getTypedRuleContext(KU_PropertyDefinitionsContext, 0);
}
public oC_SymbolicName(): OC_SymbolicNameContext {
return this.getTypedRuleContext(OC_SymbolicNameContext, 0);
@@ -14047,34 +14422,6 @@ export class KU_RelTableConnectionContext extends antlr.ParserRuleContext {
}
-export class KU_CreateRdfGraphContext 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 RDFGRAPH(): antlr.TerminalNode {
- return this.getToken(CypherParser.RDFGRAPH, 0);
- }
- public oC_SchemaName(): OC_SchemaNameContext {
- return this.getTypedRuleContext(OC_SchemaNameContext, 0);
- }
- public kU_IfNotExists(): KU_IfNotExistsContext {
- return this.getTypedRuleContext(KU_IfNotExistsContext, 0);
- }
- public override get ruleIndex(): number {
- return CypherParser.RULE_kU_CreateRdfGraph;
- }
-}
-
-
export class KU_CreateSequenceContext extends antlr.ParserRuleContext {
public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
super(parent, invokingState);
@@ -14328,9 +14675,6 @@ export class KU_DropContext extends antlr.ParserRuleContext {
public TABLE(): antlr.TerminalNode {
return this.getToken(CypherParser.TABLE, 0);
}
- public RDFGRAPH(): antlr.TerminalNode {
- return this.getToken(CypherParser.RDFGRAPH, 0);
- }
public SEQUENCE(): antlr.TerminalNode {
return this.getToken(CypherParser.SEQUENCE, 0);
}
@@ -14512,15 +14856,15 @@ export class KU_RenamePropertyContext extends antlr.ParserRuleContext {
}
-export class KU_PropertyDefinitionsContext extends antlr.ParserRuleContext {
+export class KU_ColumnDefinitionsContext 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 kU_ColumnDefinition__list(): KU_ColumnDefinitionContext[] {
+ return this.getTypedRuleContexts(KU_ColumnDefinitionContext);
}
- public kU_PropertyDefinition(i: number): KU_PropertyDefinitionContext {
- return this.getTypedRuleContext(KU_PropertyDefinitionContext, i);
+ public kU_ColumnDefinition(i: number): KU_ColumnDefinitionContext {
+ return this.getTypedRuleContext(KU_ColumnDefinitionContext, i);
}
public SP__list(): antlr.TerminalNode[] {
return this.getTokens(CypherParser.SP);
@@ -14529,12 +14873,12 @@ 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_kU_ColumnDefinitions;
}
}
-export class KU_PropertyDefinitionContext extends antlr.ParserRuleContext {
+export class KU_ColumnDefinitionContext extends antlr.ParserRuleContext {
public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
super(parent, invokingState);
}
@@ -14548,20 +14892,20 @@ export class KU_PropertyDefinitionContext extends antlr.ParserRuleContext {
return this.getTypedRuleContext(KU_DataTypeContext, 0);
}
public override get ruleIndex(): number {
- return CypherParser.RULE_kU_PropertyDefinition;
+ return CypherParser.RULE_kU_ColumnDefinition;
}
}
-export class KU_PropertyDefinitionsDDLContext extends antlr.ParserRuleContext {
+export class KU_PropertyDefinitionsContext extends antlr.ParserRuleContext {
public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
super(parent, invokingState);
}
- public kU_PropertyDefinitionDDL__list(): KU_PropertyDefinitionDDLContext[] {
- return this.getTypedRuleContexts(KU_PropertyDefinitionDDLContext);
+ public kU_PropertyDefinition__list(): KU_PropertyDefinitionContext[] {
+ return this.getTypedRuleContexts(KU_PropertyDefinitionContext);
}
- public kU_PropertyDefinitionDDL(i: number): KU_PropertyDefinitionDDLContext {
- return this.getTypedRuleContext(KU_PropertyDefinitionDDLContext, i);
+ public kU_PropertyDefinition(i: number): KU_PropertyDefinitionContext {
+ return this.getTypedRuleContext(KU_PropertyDefinitionContext, i);
}
public SP__list(): antlr.TerminalNode[] {
return this.getTokens(CypherParser.SP);
@@ -14570,17 +14914,17 @@ export class KU_PropertyDefinitionsDDLContext extends antlr.ParserRuleContext {
return this.getToken(CypherParser.SP, i);
}
public override get ruleIndex(): number {
- return CypherParser.RULE_kU_PropertyDefinitionsDDL;
+ return CypherParser.RULE_kU_PropertyDefinitions;
}
}
-export class KU_PropertyDefinitionDDLContext extends antlr.ParserRuleContext {
+export class KU_PropertyDefinitionContext 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 kU_ColumnDefinition(): KU_ColumnDefinitionContext {
+ return this.getTypedRuleContext(KU_ColumnDefinitionContext, 0);
}
public SP__list(): antlr.TerminalNode[] {
return this.getTokens(CypherParser.SP);
@@ -14588,14 +14932,17 @@ export class KU_PropertyDefinitionDDLContext extends antlr.ParserRuleContext {
public SP(i: number): antlr.TerminalNode {
return this.getToken(CypherParser.SP, i);
}
- public kU_DataType(): KU_DataTypeContext {
- return this.getTypedRuleContext(KU_DataTypeContext, 0);
- }
public kU_Default(): KU_DefaultContext {
return this.getTypedRuleContext(KU_DefaultContext, 0);
}
+ public PRIMARY(): antlr.TerminalNode {
+ return this.getToken(CypherParser.PRIMARY, 0);
+ }
+ public KEY(): antlr.TerminalNode {
+ return this.getToken(CypherParser.KEY, 0);
+ }
public override get ruleIndex(): number {
- return CypherParser.RULE_kU_PropertyDefinitionDDL;
+ return CypherParser.RULE_kU_PropertyDefinition;
}
}
@@ -14635,8 +14982,8 @@ export class KU_DataTypeContext extends antlr.ParserRuleContext {
public UNION(): antlr.TerminalNode {
return this.getToken(CypherParser.UNION, 0);
}
- public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext {
- return this.getTypedRuleContext(KU_PropertyDefinitionsContext, 0);
+ public kU_ColumnDefinitions(): KU_ColumnDefinitionsContext {
+ return this.getTypedRuleContext(KU_ColumnDefinitionsContext, 0);
}
public SP__list(): antlr.TerminalNode[] {
return this.getTokens(CypherParser.SP);
@@ -14720,6 +15067,12 @@ export class OC_ExplainContext extends antlr.ParserRuleContext {
public EXPLAIN(): antlr.TerminalNode {
return this.getToken(CypherParser.EXPLAIN, 0);
}
+ public SP(): antlr.TerminalNode {
+ return this.getToken(CypherParser.SP, 0);
+ }
+ public LOGICAL(): antlr.TerminalNode {
+ return this.getToken(CypherParser.LOGICAL, 0);
+ }
public override get ruleIndex(): number {
return CypherParser.RULE_oC_Explain;
}
@@ -15136,8 +15489,8 @@ export class KU_LoadFromContext extends antlr.ParserRuleContext {
public HEADERS(): antlr.TerminalNode {
return this.getToken(CypherParser.HEADERS, 0);
}
- public kU_PropertyDefinitions(): KU_PropertyDefinitionsContext {
- return this.getTypedRuleContext(KU_PropertyDefinitionsContext, 0);
+ public kU_ColumnDefinitions(): KU_ColumnDefinitionsContext {
+ return this.getTypedRuleContext(KU_ColumnDefinitionsContext, 0);
}
public kU_ParsingOptions(): KU_ParsingOptionsContext {
return this.getTypedRuleContext(KU_ParsingOptionsContext, 0);
@@ -16055,6 +16408,12 @@ export class OC_RangeLiteralContext extends antlr.ParserRuleContext {
public ALL(): antlr.TerminalNode {
return this.getToken(CypherParser.ALL, 0);
}
+ public TRAIL(): antlr.TerminalNode {
+ return this.getToken(CypherParser.TRAIL, 0);
+ }
+ public ACYCLIC(): antlr.TerminalNode {
+ return this.getToken(CypherParser.ACYCLIC, 0);
+ }
public oC_IntegerLiteral(): OC_IntegerLiteralContext {
return this.getTypedRuleContext(OC_IntegerLiteralContext, 0);
}
@@ -16756,12 +17115,90 @@ export class OC_AtomContext extends antlr.ParserRuleContext {
public oC_Variable(): OC_VariableContext {
return this.getTypedRuleContext(OC_VariableContext, 0);
}
+ public oC_Quantifier(): OC_QuantifierContext {
+ return this.getTypedRuleContext(OC_QuantifierContext, 0);
+ }
public override get ruleIndex(): number {
return CypherParser.RULE_oC_Atom;
}
}
+export class OC_QuantifierContext extends antlr.ParserRuleContext {
+ public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
+ super(parent, invokingState);
+ }
+ public ALL(): antlr.TerminalNode {
+ return this.getToken(CypherParser.ALL, 0);
+ }
+ public oC_FilterExpression(): OC_FilterExpressionContext {
+ return this.getTypedRuleContext(OC_FilterExpressionContext, 0);
+ }
+ public SP__list(): antlr.TerminalNode[] {
+ return this.getTokens(CypherParser.SP);
+ }
+ public SP(i: number): antlr.TerminalNode {
+ return this.getToken(CypherParser.SP, i);
+ }
+ public ANY(): antlr.TerminalNode {
+ return this.getToken(CypherParser.ANY, 0);
+ }
+ public NONE(): antlr.TerminalNode {
+ return this.getToken(CypherParser.NONE, 0);
+ }
+ public SINGLE(): antlr.TerminalNode {
+ return this.getToken(CypherParser.SINGLE, 0);
+ }
+ public override get ruleIndex(): number {
+ return CypherParser.RULE_oC_Quantifier;
+ }
+}
+
+
+export class OC_FilterExpressionContext extends antlr.ParserRuleContext {
+ public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
+ super(parent, invokingState);
+ }
+ public oC_IdInColl(): OC_IdInCollContext {
+ return this.getTypedRuleContext(OC_IdInCollContext, 0);
+ }
+ public oC_Where(): OC_WhereContext {
+ return this.getTypedRuleContext(OC_WhereContext, 0);
+ }
+ public SP(): antlr.TerminalNode {
+ return this.getToken(CypherParser.SP, 0);
+ }
+ public override get ruleIndex(): number {
+ return CypherParser.RULE_oC_FilterExpression;
+ }
+}
+
+
+export class OC_IdInCollContext 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 SP__list(): antlr.TerminalNode[] {
+ return this.getTokens(CypherParser.SP);
+ }
+ public SP(i: number): antlr.TerminalNode {
+ return this.getToken(CypherParser.SP, i);
+ }
+ public IN(): antlr.TerminalNode {
+ return this.getToken(CypherParser.IN, 0);
+ }
+ public oC_Expression(): OC_ExpressionContext {
+ return this.getTypedRuleContext(OC_ExpressionContext, 0);
+ }
+ public override get ruleIndex(): number {
+ return CypherParser.RULE_oC_IdInColl;
+ }
+}
+
+
export class OC_LiteralContext extends antlr.ParserRuleContext {
public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
super(parent, invokingState);
@@ -17442,6 +17879,9 @@ export class KU_NonReservedKeywordsContext extends antlr.ParserRuleContext {
public LOAD(): antlr.TerminalNode {
return this.getToken(CypherParser.LOAD, 0);
}
+ public LOGICAL(): antlr.TerminalNode {
+ return this.getToken(CypherParser.LOGICAL, 0);
+ }
public MATCH(): antlr.TerminalNode {
return this.getToken(CypherParser.MATCH, 0);
}
@@ -17490,6 +17930,9 @@ export class KU_NonReservedKeywordsContext extends antlr.ParserRuleContext {
public L_SKIP(): antlr.TerminalNode {
return this.getToken(CypherParser.L_SKIP, 0);
}
+ public LIMIT(): antlr.TerminalNode {
+ return this.getToken(CypherParser.LIMIT, 0);
+ }
public TRANSACTION(): antlr.TerminalNode {
return this.getToken(CypherParser.TRANSACTION, 0);
}
diff --git a/src/utils/DataDefinitionLanguage.js b/src/utils/DataDefinitionLanguage.js
index de7abce..e6a646d 100644
--- a/src/utils/DataDefinitionLanguage.js
+++ b/src/utils/DataDefinitionLanguage.js
@@ -141,7 +141,7 @@ class DataDefinitionLanguage {
}
getCsvOptionsSubquery(csvFormatOptions) {
- const { delimiter, quote, escape, hasHeader, listBegin, listEnd, parallelism } = csvFormatOptions;
+ const { delimiter, quote, escape, hasHeader, listBegin, listEnd, parallelism, ignoreErrors } = csvFormatOptions;
let csvOptions = [];
csvOptions.push(`HEADER=${hasHeader}`);
csvOptions.push(`DELIM="${this._jsonEscapedString(delimiter)}"`);
@@ -150,6 +150,7 @@ class DataDefinitionLanguage {
// csvOptions.push(`LIST_BEGIN="${this._jsonEscapedString(listBegin)}"`);
// csvOptions.push(`LIST_END="${this._jsonEscapedString(listEnd)}"`);
csvOptions.push(`PARALLEL=${parallelism}`);
+ csvOptions.push(`IGNORE_ERRORS=${ignoreErrors}`);
const csvOptionsString = `(${csvOptions.join(", ")})`;
return csvOptionsString;
}
diff --git a/src/utils/DuckDB.js b/src/utils/DuckDB.js
index c154783..d7a63ec 100644
--- a/src/utils/DuckDB.js
+++ b/src/utils/DuckDB.js
@@ -74,7 +74,7 @@ class DuckDB {
const db = await this.getDb();
const conn = await db.connect();
const fileName = this.getFileName(uuid, FILE_TYPE.CSV);
- const query = `DESCRIBE SELECT * FROM READ_CSV('${fileName}', delim=?, quote=?, escape=?, header=${hasHeader}) LIMIT 1`;
+ const query = `DESCRIBE SELECT * FROM READ_CSV('${fileName}', delim=?, quote=?, escape=?, header=${hasHeader}, ignore_errors=true) LIMIT 1`;
console.debug(query);
let preparedQuery = await conn.prepare(query);
let result = await preparedQuery.query(delimiter, quote, escape);
@@ -130,7 +130,7 @@ class DuckDB {
const db = await this.getDb();
const conn = await db.connect();
const fileName = this.getFileName(uuid, FILE_TYPE.CSV);
- const query = `SELECT * FROM READ_CSV('${fileName}', delim=?, quote=?, escape=?, header=${hasHeader}) LIMIT ${limit}`;
+ const query = `SELECT * FROM READ_CSV('${fileName}', delim=?, quote=?, escape=?, header=${hasHeader}, ignore_errors=true) LIMIT ${limit}`;
console.debug(query);
let preparedQuery = await conn.prepare(query);
let result = await preparedQuery.query(delimiter, quote, escape);