diff --git a/.eslintignore b/.eslintignore index ba3cc4d..6572585 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,3 @@ src/lib src/antlr -scripts/tokens-string.js +scripts diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index afb4ca3..236002e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -38,6 +38,8 @@ jobs: cache: 'npm' - name: Install run: npm install + - name: Install ANTLR4 + run: pip install antlr4-tools - name: Build run: npm run build - name: Run integration diff --git a/CHANGES.md b/CHANGELOG.md similarity index 81% rename from CHANGES.md rename to CHANGELOG.md index 411a4fa..32791f5 100644 --- a/CHANGES.md +++ b/CHANGELOG.md @@ -1,75 +1,81 @@ -### 0.5.0 (Unreleased) +# 0.17.0 + +- Using the official typescript target for antlr4. (#103) +- Exponentiation is right associative. `a ** (b ** c)` (#99) +- Conditional expression is right associative. `a ? (b ? c : d) : (e ? f : g)` (#99) + +# 0.5.0 - Remove `ParameterList` and `Parameter` node types. Parameters are now always of type `VariableDeclaration` and lists of parameters are represented as lists of nodes of type `VariableDeclaration`. This is a breaking change. -### 0.4.12 (Unreleased) +# 0.4.12 - Fix type name expressions to also support user-defined type names. -### 0.4.11 +# 0.4.11 - Bugfix release -### 0.4.9 +# 0.4.9 - Fix parsing of inheritance specifier with no arguments. -### 0.4.8 +# 0.4.8 - Fix parsing of string literals with escaped characters. -### 0.4.7 +# 0.4.7 - Fix parsing of underscores in number literals. -### 0.4.6 +# 0.4.6 - Add support for the `type` keyword. - Add support for underscores in number literals. -### 0.4.5 +# 0.4.5 - Improve TypeScript type definitions. -### 0.4.4 +# 0.4.4 - Add missing `storageLocation` to variables in VariableDeclarationStatement. - Return `null` for `arguments` instead of `[]` when `ModifierInvocation` contains no arguments and no parentheses to distinguish the two cases. - Improve TypeScript type definitions. -### 0.4.3 +# 0.4.3 - Improve TypeScript type definitions, thanks @Leeleo3x and @yxliang01. -### 0.4.2 +# 0.4.2 - Fix parsing of assembly function definitions with no args or return args. -### 0.4.1 +# 0.4.1 - Fix parsing of for loops with missing initial and condition statements. -### 0.4.0 +# 0.4.0 - Correctly handle non-existent tuple components. Thanks @maxsam4 - Accept calldata as identifier -### 0.3.3 +# 0.3.3 - Add support for `address payable` typename. -### 0.3.2 +# 0.3.2 - Fix parsing of hex numbers with uppercase X. -### 0.3.1 +# 0.3.1 - Fix parsing of zero-component tuples. -### 0.3.0 +# 0.3.0 - Use `components` for all `TupleExpression` nodes. Earlier versions incorrectly stored tuple components under the `elements` key. diff --git a/DEVELOPING.md b/DEVELOPING.md index c5809fe..4b394f0 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -27,19 +27,33 @@ git submodule update --init ## Updating the grammar -The [`scripts/antlr.sh`](scripts/antlr.sh) script should download ANTLR and generate the grammar. For this to work, you -need Java (1.6 or higher) installed. +If you want to try changes made to the `antlr/Solidity.g4` file you need to generate the typescript files to reflect the changes. + +To accomplish that, we rely on [antlr4-tools](https://github.com/antlr/antlr4-tools) to generate the grammar. + +```bash +# it requires Python 3 but doesn't require Java. +# install antlr4-tools +pip install antlr4-tools +``` + +Once it is installed you just need to run the following `npm` script to generate the new grammar files. + +```bash +# generate the grammar Typescript files +npm run antlr +``` ## Updating the parser -Run `yarn build` to build the parser. +Run `npm run build` to build the parser. ## Quick testing Right now the easier way to test something is to start the node REPL and import the project: ``` -yarn build +npm run build node > parser = require('.') > ast = parser.parse('contract Foo {}') diff --git a/package-lock.json b/package-lock.json index 88075b4..a5b8f8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,22 +8,18 @@ "name": "@solidity-parser/parser", "version": "0.16.2", "license": "MIT", - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - }, "devDependencies": { "@types/chai": "^4.3.11", "@types/mocha": "^10.0.6", - "@types/node": "^20.10.0", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", - "antlr4": "^4.9.2", - "antlr4ts-cli": "^0.5.0-alpha.4", + "@types/node": "^20.10.5", + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "antlr4": "^4.13.1-patch-1", "assert": "^2.1.0", "chai": "^4.3.10", "esbuild": "^0.11.13", - "eslint": "^8.54.0", - "eslint-plugin-import": "^2.29.0", + "eslint": "^8.56.0", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-standard": "^5.0.0", @@ -32,11 +28,10 @@ "karma-mocha": "^2.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", - "prettier": "^3.1.0", - "puppeteer": "^21.5.2", - "shx": "^0.3.4", - "ts-node": "^10.9.1", - "typescript": "^5.2.2", + "prettier": "^3.1.1", + "puppeteer": "^21.6.1", + "ts-node": "^10.9.2", + "typescript": "^5.3.3", "util": "^0.12.5", "yarn": "^1.22.21" } @@ -522,9 +517,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -545,9 +540,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -778,9 +773,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.8.0.tgz", - "integrity": "sha512-TkRHIV6k2D8OlUe8RtG+5jgOF/H98Myx0M6AOafC8DdNVOFiBSFa5cpRDtpm8LXOa9sVwe0+e6Q3FC56X/DZfg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.0.tgz", + "integrity": "sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==", "dev": true, "dependencies": { "debug": "4.3.4", @@ -915,9 +910,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -940,16 +935,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz", - "integrity": "sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.15.0.tgz", + "integrity": "sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/type-utils": "6.12.0", - "@typescript-eslint/utils": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/type-utils": "6.15.0", + "@typescript-eslint/utils": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -975,15 +970,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz", - "integrity": "sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", + "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/typescript-estree": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/typescript-estree": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", "debug": "^4.3.4" }, "engines": { @@ -1003,13 +998,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz", - "integrity": "sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz", + "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0" + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1020,13 +1015,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz", - "integrity": "sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.15.0.tgz", + "integrity": "sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.12.0", - "@typescript-eslint/utils": "6.12.0", + "@typescript-eslint/typescript-estree": "6.15.0", + "@typescript-eslint/utils": "6.15.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -1047,9 +1042,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz", - "integrity": "sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz", + "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1060,13 +1055,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz", - "integrity": "sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz", + "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1087,17 +1082,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz", - "integrity": "sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.15.0.tgz", + "integrity": "sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/typescript-estree": "6.15.0", "semver": "^7.5.4" }, "engines": { @@ -1112,12 +1107,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz", - "integrity": "sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", + "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/types": "6.15.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -1249,26 +1244,12 @@ } }, "node_modules/antlr4": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.9.2.tgz", - "integrity": "sha512-UjMSlenUORL+a+6g4RNZxRh5LcFWybRi2g0ASDBpgXBY6nlavg0BRVAVEQF0dz8jH6SyX3lV7uP5y/krJzc+Hw==", + "version": "4.13.1-patch-1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.1-patch-1.tgz", + "integrity": "sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==", "dev": true, "engines": { - "node": ">=14" - } - }, - "node_modules/antlr4ts": { - "version": "0.5.0-alpha.4", - "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", - "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==" - }, - "node_modules/antlr4ts-cli": { - "version": "0.5.0-alpha.4", - "resolved": "https://registry.npmjs.org/antlr4ts-cli/-/antlr4ts-cli-0.5.0-alpha.4.tgz", - "integrity": "sha512-lVPVBTA2CVHRYILSKilL6Jd4hAumhSZZWA7UbQNQrmaSSj7dPmmYaN4bOmZG79cOy0lS00i4LY68JZZjZMWVrw==", - "dev": true, - "bin": { - "antlr4ts": "antlr4ts" + "node": ">=16" } }, "node_modules/anymatch": { @@ -1519,9 +1500,9 @@ } }, "node_modules/basic-ftp": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", - "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.4.tgz", + "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", "dev": true, "engines": { "node": ">=10.0.0" @@ -1616,9 +1597,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "funding": [ { @@ -1635,10 +1616,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -1737,9 +1718,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001520", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001520.tgz", - "integrity": "sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==", + "version": "1.0.30001570", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", + "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", "dev": true, "funding": [ { @@ -1875,9 +1856,9 @@ } }, "node_modules/chromium-bidi": { - "version": "0.4.33", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.33.tgz", - "integrity": "sha512-IxoFM5WGQOIAd95qrSXzJUv4eXIrh+RvU3rwwqIiwYuvfE7U/Llj4fejbsJnjJMUYCuGtVQsY2gv7oGl4aTNSQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.1.tgz", + "integrity": "sha512-dcCqOgq9fHKExc2R4JZs/oKbOghWpUNFAJODS8WKRtLhp3avtIH5UDCBrutdqZdh3pARogH8y1ObXm87emwb3g==", "dev": true, "dependencies": { "mitt": "3.0.1", @@ -2275,9 +2256,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.492", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.492.tgz", - "integrity": "sha512-36K9b/6skMVwAIEsC7GiQ8I8N3soCALVSHqWHzNDtGemAcI9Xu8hP02cywWM0A794rTHm0b0zHPeLJHtgFVamQ==", + "version": "1.4.615", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz", + "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==", "dev": true }, "node_modules/emoji-regex": { @@ -2470,9 +2451,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.15.tgz", - "integrity": "sha512-Hh40byWZZgYbiLhcoOWiOUIy8yUYQeCEA4F9feWytToD2jGfJ1X4VPf5dsqj6vRL29H3YmFqZsxIJa5q0ifB3g==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.13.tgz", + "integrity": "sha512-d5coY4dd4rVWle0WzrR8+32ukKtZroVJ/wJzOwbBEmoSFB/H3QME0l+3IAN5Sf3LtuoUSivdv1/b5rD7OykXeg==", "dev": true, "hasInstallScript": true, "bin": { @@ -2528,15 +2509,15 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -2648,9 +2629,9 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", - "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { "array-includes": "^3.1.7", @@ -2669,7 +2650,7 @@ "object.groupby": "^1.0.1", "object.values": "^1.1.7", "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -3379,9 +3360,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3743,15 +3724,6 @@ "node": ">= 0.4" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/ip": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", @@ -4811,9 +4783,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-path": { @@ -5458,9 +5430,9 @@ } }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -5547,32 +5519,35 @@ } }, "node_modules/puppeteer": { - "version": "21.5.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.5.2.tgz", - "integrity": "sha512-BaAGJOq8Fl6/cck6obmwaNLksuY0Bg/lIahCLhJPGXBFUD2mCffypa4A592MaWnDcye7eaHmSK9yot0pxctY8A==", + "version": "21.6.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.6.1.tgz", + "integrity": "sha512-O+pbc61oj8ln6m8EJKncrsQFmytgRyFYERtk190PeLbJn5JKpmmynn2p1PiFrlhCitAQXLJ0MOy7F0TeyCRqBg==", "dev": true, "hasInstallScript": true, "dependencies": { - "@puppeteer/browsers": "1.8.0", + "@puppeteer/browsers": "1.9.0", "cosmiconfig": "8.3.6", - "puppeteer-core": "21.5.2" + "puppeteer-core": "21.6.1" + }, + "bin": { + "puppeteer": "lib/esm/puppeteer/node/cli.js" }, "engines": { "node": ">=16.13.2" } }, "node_modules/puppeteer-core": { - "version": "21.5.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.5.2.tgz", - "integrity": "sha512-v4T0cWnujSKs+iEfmb8ccd7u4/x8oblEyKqplqKnJ582Kw8PewYAWvkH4qUWhitN3O2q9RF7dzkvjyK5HbzjLA==", + "version": "21.6.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.6.1.tgz", + "integrity": "sha512-0chaaK/RL9S1U3bsyR4fUeUfoj51vNnjWvXgG6DcsyMjwYNpLcAThv187i1rZCo7QhJP0wZN8plQkjNyrq2h+A==", "dev": true, "dependencies": { - "@puppeteer/browsers": "1.8.0", - "chromium-bidi": "0.4.33", + "@puppeteer/browsers": "1.9.0", + "chromium-bidi": "0.5.1", "cross-fetch": "4.0.0", "debug": "4.3.4", "devtools-protocol": "0.0.1203626", - "ws": "8.14.2" + "ws": "8.15.1" }, "engines": { "node": ">=16.13.2" @@ -5673,18 +5648,6 @@ "node": ">=8.10.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", @@ -5989,39 +5952,6 @@ "node": ">=8" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shx": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", - "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", - "dev": true, - "dependencies": { - "minimist": "^1.2.3", - "shelljs": "^0.8.5" - }, - "bin": { - "shx": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -6212,9 +6142,9 @@ } }, "node_modules/streamx": { - "version": "2.15.5", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", - "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", "dev": true, "dependencies": { "fast-fifo": "^1.1.0", @@ -6449,9 +6379,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -6501,9 +6431,9 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -6660,9 +6590,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6741,9 +6671,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -6987,9 +6917,9 @@ } }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", + "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", "dev": true, "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index fae6e3a..80178ea 100644 --- a/package.json +++ b/package.json @@ -13,13 +13,12 @@ ], "types": "dist/src/index.d.ts", "scripts": { - "antlr": "antlr4ts -visitor antlr/Solidity.g4 -o src && npm run tokens", + "antlr": "antlr4 -Dlanguage=TypeScript -visitor -o src/ antlr/Solidity.g4 && npm run tokens", "tokens": "node ./scripts/tokens-string.js", - "build:browser": "esbuild src/index.ts --outfile=dist/index.iife.js --bundle --sourcemap --format=iife --global-name=SolidityParser --inject:./process-shim.js", - "build:node": "esbuild src/index.ts --outfile=dist/index.cjs.js --bundle --sourcemap --format=cjs --platform=node --target=node12", - "build": "npm run antlr && npm run build:node && npm run build:browser && npm run generate-types && npm run copy-files", + "build:browser": "node ./scripts/build-browser.js", + "build:node": "node ./scripts/build-node.js", + "build": "npm run antlr && npm run build:node && npm run build:browser && npm run generate-types", "generate-types": "tsc", - "copy-files": "shx mkdir -p dist/antlr && shx cp './src/antlr/*tokens' dist/antlr", "eslint": "eslint 'src/**' 'test/**'", "lint": "npm run eslint && npm run prettier -- --list-different", "lint:fix": "npm run eslint -- --fix && npm run prettier -- --write", @@ -43,22 +42,18 @@ "url": "https://github.com/solidity-parser/parser" }, "license": "MIT", - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - }, "devDependencies": { "@types/chai": "^4.3.11", "@types/mocha": "^10.0.6", - "@types/node": "^20.10.0", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", - "antlr4": "^4.9.2", - "antlr4ts-cli": "^0.5.0-alpha.4", + "@types/node": "^20.10.5", + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "antlr4": "^4.13.1-patch-1", "assert": "^2.1.0", "chai": "^4.3.10", "esbuild": "^0.11.13", - "eslint": "^8.54.0", - "eslint-plugin-import": "^2.29.0", + "eslint": "^8.56.0", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-standard": "^5.0.0", @@ -67,11 +62,10 @@ "karma-mocha": "^2.0.1", "mocha": "^10.2.0", "nyc": "^15.1.0", - "prettier": "^3.1.0", - "puppeteer": "^21.5.2", - "shx": "^0.3.4", - "ts-node": "^10.9.1", - "typescript": "^5.2.2", + "prettier": "^3.1.1", + "puppeteer": "^21.6.1", + "ts-node": "^10.9.2", + "typescript": "^5.3.3", "util": "^0.12.5", "yarn": "^1.22.21" }, diff --git a/process-shim.js b/process-shim.js deleted file mode 100644 index 14aaf38..0000000 --- a/process-shim.js +++ /dev/null @@ -1,6 +0,0 @@ -export let process = { - cwd: () => '', - env: () => {}, -} - -export let global = {} diff --git a/scripts/antlr.sh b/scripts/antlr.sh deleted file mode 100755 index d2e6eee..0000000 --- a/scripts/antlr.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env sh - -set -o errexit - -ANTLR_JAR="antlr/antlr4.jar" - -if [ ! -e "$ANTLR_JAR" ]; then - curl https://www.antlr.org/download/antlr-4.7.2-complete.jar -o "$ANTLR_JAR" -fi - -java -jar $ANTLR_JAR -Dlanguage=JavaScript antlr/Solidity.g4 -o lib - -mv lib/antlr/* src/lib/ - -rmdir lib/antlr - -sed -i.bak -e 's/antlr4\/index/\.\.\/antlr4\/index/g' src/lib/*.js - -find src/lib -name '*.js.bak' -delete diff --git a/scripts/build-browser.js b/scripts/build-browser.js new file mode 100644 index 0000000..4b70704 --- /dev/null +++ b/scripts/build-browser.js @@ -0,0 +1,12 @@ +const path = require('path') +const { build } = require('esbuild') + +build({ + logLevel: 'info', + entryPoints: [path.resolve(__dirname, '../src/index.ts')], + bundle: true, + sourcemap: true, + format: 'iife', + globalName: 'SolidityParser', + outfile: path.resolve(__dirname, '../dist/index.iife.js'), +}).catch(() => process.exit(1)) diff --git a/scripts/build-node.js b/scripts/build-node.js new file mode 100644 index 0000000..ffa77f0 --- /dev/null +++ b/scripts/build-node.js @@ -0,0 +1,19 @@ +const path = require('path') +const { build } = require('esbuild') + +build({ + logLevel: 'info', + entryPoints: [path.resolve(__dirname, '../src/index.ts')], + bundle: true, + sourcemap: true, + format: 'cjs', + platform: 'node', + target: 'node16', + // esbuild has an issue with import.meta.url and output in cjs so we need to + // explicitly tell what to do with it. + define: { 'import.meta.url': '_importMetaUrl' }, + banner: { + js: 'const _importMetaUrl=require("url").pathToFileURL(__filename)', + }, + outfile: path.resolve(__dirname, '../dist/index.cjs.js'), +}).catch(() => process.exit(1)) diff --git a/src/ASTBuilder.ts b/src/ASTBuilder.ts index 5fa601f..fbe9d37 100644 --- a/src/ASTBuilder.ts +++ b/src/ASTBuilder.ts @@ -1,12 +1,8 @@ -import { ParserRuleContext } from 'antlr4ts' -import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor' -import { ParseTree } from 'antlr4ts/tree/ParseTree' +import { ParserRuleContext, ParseTreeVisitor, ParseTree } from 'antlr4' import * as SP from './antlr/SolidityParser' - -import { SolidityVisitor } from './antlr/SolidityVisitor' +import SolidityVisitor from './antlr/SolidityVisitor' import { ParseOptions } from './types' import * as AST from './ast-types' -import { ErrorNode } from 'antlr4ts/tree/ErrorNode' interface SourceLocation { start: { @@ -26,7 +22,7 @@ interface WithMeta { type ASTBuilderNode = AST.ASTNode & WithMeta export class ASTBuilder - extends AbstractParseTreeVisitor + extends ParseTreeVisitor implements SolidityVisitor { public result: AST.SourceUnit | null = null @@ -45,9 +41,7 @@ export class ASTBuilder } public visitSourceUnit(ctx: SP.SourceUnitContext): AST.SourceUnit & WithMeta { - const children = (ctx.children ?? []).filter( - (x) => !(x instanceof ErrorNode) - ) + const children = ctx.children ?? [] const node: AST.SourceUnit = { type: 'SourceUnit', @@ -75,9 +69,9 @@ export class ASTBuilder type: 'ContractDefinition', name, baseContracts: ctx - .inheritanceSpecifier() + .inheritanceSpecifier_list() .map((x) => this.visitInheritanceSpecifier(x)), - subNodes: ctx.contractPart().map((x) => this.visit(x)), + subNodes: ctx.contractPart_list().map((x) => this.visit(x)), kind, } @@ -98,31 +92,31 @@ export class ASTBuilder } let visibility: AST.VariableDeclaration['visibility'] = 'default' - if (ctx.InternalKeyword().length > 0) { + if (ctx.InternalKeyword_list().length > 0) { visibility = 'internal' - } else if (ctx.PublicKeyword().length > 0) { + } else if (ctx.PublicKeyword_list().length > 0) { visibility = 'public' - } else if (ctx.PrivateKeyword().length > 0) { + } else if (ctx.PrivateKeyword_list().length > 0) { visibility = 'private' } let isDeclaredConst = false - if (ctx.ConstantKeyword().length > 0) { + if (ctx.ConstantKeyword_list().length > 0) { isDeclaredConst = true } let override - const overrideSpecifier = ctx.overrideSpecifier() + const overrideSpecifier = ctx.overrideSpecifier_list() if (overrideSpecifier.length === 0) { override = null } else { override = overrideSpecifier[0] - .userDefinedTypeName() + .userDefinedTypeName_list() .map((x) => this.visitUserDefinedTypeName(x)) } let isImmutable = false - if (ctx.ImmutableKeyword().length > 0) { + if (ctx.ImmutableKeyword_list().length > 0) { isImmutable = true } @@ -182,9 +176,9 @@ export class ASTBuilder const ctxVariableDeclaration = ctx.variableDeclaration() const ctxIdentifierList = ctx.identifierList() const ctxVariableDeclarationList = ctx.variableDeclarationList() - if (ctxVariableDeclaration !== undefined) { + if (ctxVariableDeclaration) { variables = [this.visitVariableDeclaration(ctxVariableDeclaration)] - } else if (ctxIdentifierList !== undefined) { + } else if (ctxIdentifierList) { variables = this.buildIdentifierList(ctxIdentifierList) } else if (ctxVariableDeclarationList) { variables = this.buildVariableDeclarationList(ctxVariableDeclarationList) @@ -216,7 +210,7 @@ export class ASTBuilder public visitEventDefinition(ctx: SP.EventDefinitionContext) { const parameters = ctx .eventParameterList() - .eventParameter() + .eventParameter_list() .map((paramCtx) => { const type = this.visitTypeName(paramCtx.typeName()) let name: string | null = null @@ -229,12 +223,11 @@ export class ASTBuilder type: 'VariableDeclaration', typeName: type, name, - identifier: - paramCtxIdentifier !== undefined - ? this.visitIdentifier(paramCtxIdentifier) - : null, + identifier: paramCtxIdentifier + ? this.visitIdentifier(paramCtxIdentifier) + : null, isStateVar: false, - isIndexed: paramCtx.IndexedKeyword() !== undefined, + isIndexed: Boolean(paramCtx.IndexedKeyword()), storageLocation: null, expression: null, } @@ -245,7 +238,7 @@ export class ASTBuilder type: 'EventDefinition', name: this._toText(ctx.identifier()), parameters, - isAnonymous: ctx.AnonymousKeyword() !== undefined, + isAnonymous: Boolean(ctx.AnonymousKeyword()), } return this._addMeta(node, ctx) @@ -254,7 +247,7 @@ export class ASTBuilder public visitBlock(ctx: SP.BlockContext): AST.Block & WithMeta { const node: AST.Block = { type: 'Block', - statements: ctx.statement().map((x) => this.visitStatement(x)), + statements: ctx.statement_list().map((x) => this.visitStatement(x)), } return this._addMeta(node, ctx) @@ -263,13 +256,13 @@ export class ASTBuilder public visitParameter(ctx: SP.ParameterContext) { let storageLocation: string | null = null const ctxStorageLocation = ctx.storageLocation() - if (ctxStorageLocation !== undefined) { + if (ctxStorageLocation) { storageLocation = this._toText(ctxStorageLocation) } let name: string | null = null const ctxIdentifier = ctx.identifier() - if (ctxIdentifier !== undefined) { + if (ctxIdentifier) { name = this._toText(ctxIdentifier) } @@ -277,10 +270,7 @@ export class ASTBuilder type: 'VariableDeclaration', typeName: this.visitTypeName(ctx.typeName()), name, - identifier: - ctxIdentifier !== undefined - ? this.visitIdentifier(ctxIdentifier) - : null, + identifier: ctxIdentifier ? this.visitIdentifier(ctxIdentifier) : null, storageLocation, isStateVar: false, isIndexed: false, @@ -304,17 +294,17 @@ export class ASTBuilder let block: AST.Block | null = null const ctxBlock = ctx.block() - if (ctxBlock !== undefined) { + if (ctxBlock) { block = this.visitBlock(ctxBlock) } const modifiers = ctx .modifierList() - .modifierInvocation() + .modifierInvocation_list() .map((mod) => this.visitModifierInvocation(mod)) let stateMutability = null - if (ctx.modifierList().stateMutability().length > 0) { + if (ctx.modifierList().stateMutability_list().length > 0) { stateMutability = this._stateMutabilityToText( ctx.modifierList().stateMutability(0) ) @@ -326,13 +316,13 @@ export class ASTBuilder case 'constructor': parameters = ctx .parameterList() - .parameter() + .parameter_list() .map((x) => this.visit(x)) // error out on incorrect function visibility - if (ctx.modifierList().InternalKeyword().length > 0) { + if (ctx.modifierList().InternalKeyword_list().length > 0) { visibility = 'internal' - } else if (ctx.modifierList().PublicKeyword().length > 0) { + } else if (ctx.modifierList().PublicKeyword_list().length > 0) { visibility = 'public' } else { visibility = 'default' @@ -343,12 +333,11 @@ export class ASTBuilder case 'fallback': parameters = ctx .parameterList() - .parameter() + .parameter_list() .map((x) => this.visit(x)) - returnParameters = - ctxReturnParameters !== undefined - ? this.visitReturnParameters(ctxReturnParameters) - : null + returnParameters = ctxReturnParameters + ? this.visitReturnParameters(ctxReturnParameters) + : null visibility = 'external' isFallback = true @@ -359,25 +348,24 @@ export class ASTBuilder break case 'function': { const identifier = ctx.functionDescriptor().identifier() - name = identifier !== undefined ? this._toText(identifier) : '' + name = identifier ? this._toText(identifier) : '' parameters = ctx .parameterList() - .parameter() + .parameter_list() .map((x) => this.visit(x)) - returnParameters = - ctxReturnParameters !== undefined - ? this.visitReturnParameters(ctxReturnParameters) - : null + returnParameters = ctxReturnParameters + ? this.visitReturnParameters(ctxReturnParameters) + : null // parse function visibility - if (ctx.modifierList().ExternalKeyword().length > 0) { + if (ctx.modifierList().ExternalKeyword_list().length > 0) { visibility = 'external' - } else if (ctx.modifierList().InternalKeyword().length > 0) { + } else if (ctx.modifierList().InternalKeyword_list().length > 0) { visibility = 'internal' - } else if (ctx.modifierList().PublicKeyword().length > 0) { + } else if (ctx.modifierList().PublicKeyword_list().length > 0) { visibility = 'public' - } else if (ctx.modifierList().PrivateKeyword().length > 0) { + } else if (ctx.modifierList().PrivateKeyword_list().length > 0) { visibility = 'private' } @@ -388,17 +376,17 @@ export class ASTBuilder } // check if function is virtual - if (ctx.modifierList().VirtualKeyword().length > 0) { + if (ctx.modifierList().VirtualKeyword_list().length > 0) { isVirtual = true } let override: AST.UserDefinedTypeName[] | null - const overrideSpecifier = ctx.modifierList().overrideSpecifier() + const overrideSpecifier = ctx.modifierList().overrideSpecifier_list() if (overrideSpecifier.length === 0) { override = null } else { override = overrideSpecifier[0] - .userDefinedTypeName() + .userDefinedTypeName_list() .map((x) => this.visitUserDefinedTypeName(x)) } @@ -427,7 +415,7 @@ export class ASTBuilder const node: AST.EnumDefinition = { type: 'EnumDefinition', name: this._toText(ctx.identifier()), - members: ctx.enumValue().map((x) => this.visitEnumValue(x)), + members: ctx.enumValue_list().map((x) => this.visitEnumValue(x)), } return this._addMeta(node, ctx) @@ -462,11 +450,11 @@ export class ASTBuilder } public visitTypeName(ctx: SP.TypeNameContext): AST.TypeName & WithMeta { - if (ctx.children !== undefined && ctx.children.length > 2) { + if (ctx.children && ctx.children.length > 2) { let length = null if (ctx.children.length === 4) { const expression = ctx.expression() - if (expression === undefined) { + if (expression === undefined || expression === null) { throw new Error( 'Assertion error: a typeName with 4 children should have an expression' ) @@ -474,11 +462,9 @@ export class ASTBuilder length = this.visitExpression(expression) } - const ctxTypeName = ctx.typeName() - const node: AST.ArrayTypeName = { type: 'ArrayTypeName', - baseTypeName: this.visitTypeName(ctxTypeName!), + baseTypeName: this.visitTypeName(ctx.typeName()), length, } @@ -495,19 +481,19 @@ export class ASTBuilder return this._addMeta(node, ctx) } - if (ctx.elementaryTypeName() !== undefined) { + if (ctx.elementaryTypeName()) { return this.visitElementaryTypeName(ctx.elementaryTypeName()!) } - if (ctx.userDefinedTypeName() !== undefined) { + if (ctx.userDefinedTypeName()) { return this.visitUserDefinedTypeName(ctx.userDefinedTypeName()!) } - if (ctx.mapping() !== undefined) { + if (ctx.mapping()) { return this.visitMapping(ctx.mapping()!) } - if (ctx.functionTypeName() !== undefined) { + if (ctx.functionTypeName()) { return this.visitFunctionTypeName(ctx.functionTypeName()!) } @@ -530,18 +516,18 @@ export class ASTBuilder ): AST.UsingForDeclaration & WithMeta { let typeName = null const ctxTypeName = ctx.typeName() - if (ctxTypeName !== undefined) { + if (ctxTypeName) { typeName = this.visitTypeName(ctxTypeName) } - const isGlobal = ctx.GlobalKeyword() !== undefined + const isGlobal = Boolean(ctx.GlobalKeyword()) const usingForObjectCtx = ctx.usingForObject() const userDefinedTypeNameCtx = usingForObjectCtx.userDefinedTypeName() let node: AST.UsingForDeclaration - if (userDefinedTypeNameCtx !== undefined) { + if (userDefinedTypeNameCtx) { // using Lib for ... node = { type: 'UsingForDeclaration', @@ -554,7 +540,7 @@ export class ASTBuilder } else { // using { } for ... const usingForObjectDirectives = - usingForObjectCtx.usingForObjectDirective() + usingForObjectCtx.usingForObjectDirective_list() const functions: string[] = [] const operators: Array = [] @@ -563,7 +549,7 @@ export class ASTBuilder this._toText(usingForObjectDirective.userDefinedTypeName()) ) const operator = usingForObjectDirective.userDefinableOperators() - if (operator !== undefined) { + if (operator) { operators.push(this._toText(operator)) } else { operators.push(null) @@ -591,7 +577,7 @@ export class ASTBuilder const versionContext = ctx.pragmaValue().version() let value = this._toText(ctx.pragmaValue()) - if (versionContext?.children !== undefined) { + if (versionContext?.children) { value = versionContext.children.map((x) => this._toText(x)).join(' ') } @@ -608,10 +594,9 @@ export class ASTBuilder ctx: SP.InheritanceSpecifierContext ): AST.InheritanceSpecifier & WithMeta { const exprList = ctx.expressionList() - const args = - exprList !== undefined - ? exprList.expression().map((x) => this.visitExpression(x)) - : [] + const args = exprList + ? exprList.expression_list().map((x) => this.visitExpression(x)) + : [] const node: AST.InheritanceSpecifier = { type: 'InheritanceSpecifier', @@ -629,8 +614,8 @@ export class ASTBuilder let args if (exprList != null) { - args = exprList.expression().map((x) => this.visit(x)) - } else if (ctx.children !== undefined && ctx.children.length > 1) { + args = exprList.expression_list().map((x) => this.visit(x)) + } else if (ctx.children && ctx.children.length > 1) { args = [] } else { args = null @@ -649,26 +634,26 @@ export class ASTBuilder ): AST.FunctionTypeName & WithMeta { const parameterTypes = ctx .functionTypeParameterList(0) - .functionTypeParameter() + .functionTypeParameter_list() .map((typeCtx) => this.visitFunctionTypeParameter(typeCtx)) let returnTypes: AST.VariableDeclaration[] = [] - if (ctx.functionTypeParameterList().length > 1) { + if (ctx.functionTypeParameterList_list().length > 1) { returnTypes = ctx .functionTypeParameterList(1) - .functionTypeParameter() + .functionTypeParameter_list() .map((typeCtx) => this.visitFunctionTypeParameter(typeCtx)) } let visibility = 'default' - if (ctx.InternalKeyword().length > 0) { + if (ctx.InternalKeyword_list().length > 0) { visibility = 'internal' - } else if (ctx.ExternalKeyword().length > 0) { + } else if (ctx.ExternalKeyword_list().length > 0) { visibility = 'external' } let stateMutability = null - if (ctx.stateMutability().length > 0) { + if (ctx.stateMutability_list().length > 0) { stateMutability = this._toText(ctx.stateMutability(0)) } @@ -790,10 +775,10 @@ export class ASTBuilder const ctxArgsNameValueList = ctxArgs.nameValueList() if (ctxArgsExpressionList) { args = ctxArgsExpressionList - .expression() + .expression_list() .map((exprCtx) => this.visitExpression(exprCtx)) } else if (ctxArgsNameValueList) { - for (const nameValue of ctxArgsNameValueList.nameValue()) { + for (const nameValue of ctxArgsNameValueList.nameValue_list()) { args.push(this.visitExpression(nameValue.expression())) names.push(this._toText(nameValue.identifier())) identifiers.push(this.visitIdentifier(nameValue.identifier())) @@ -818,7 +803,7 @@ export class ASTBuilder type: 'StructDefinition', name: this._toText(ctx.identifier()), members: ctx - .variableDeclaration() + .variableDeclaration_list() .map((x) => this.visitVariableDeclaration(x)), } @@ -855,7 +840,7 @@ export class ASTBuilder const trueBody = this.visitStatement(ctx.statement(0)) let falseBody = null - if (ctx.statement().length > 1) { + if (ctx.statement_list().length > 1) { falseBody = this.visitStatement(ctx.statement(1)) } @@ -874,12 +859,12 @@ export class ASTBuilder ): AST.TryStatement & WithMeta { let returnParameters = null const ctxReturnParameters = ctx.returnParameters() - if (ctxReturnParameters !== undefined) { + if (ctxReturnParameters) { returnParameters = this.visitReturnParameters(ctxReturnParameters) } const catchClauses = ctx - .catchClause() + .catchClause_list() .map((exprCtx) => this.visitCatchClause(exprCtx)) const node: AST.TryStatement = { @@ -911,7 +896,7 @@ export class ASTBuilder let kind = null const ctxIdentifier = ctx.identifier() - if (ctxIdentifier !== undefined) { + if (ctxIdentifier) { kind = this._toText(ctxIdentifier) } @@ -982,15 +967,13 @@ export class ASTBuilder const node: AST.Mapping = { type: 'Mapping', keyType: this.visitMappingKey(ctx.mappingKey()), - keyName: - mappingKeyNameCtx === undefined - ? null - : this.visitIdentifier(mappingKeyNameCtx.identifier()), + keyName: mappingKeyNameCtx + ? this.visitIdentifier(mappingKeyNameCtx.identifier()) + : null, valueType: this.visitTypeName(ctx.typeName()), - valueName: - mappingValueNameCtx === undefined - ? null - : this.visitIdentifier(mappingValueNameCtx.identifier()), + valueName: mappingValueNameCtx + ? this.visitIdentifier(mappingValueNameCtx.identifier()) + : null, } return this._addMeta(node, ctx) @@ -1005,23 +988,23 @@ export class ASTBuilder } let isVirtual = false - if (ctx.VirtualKeyword().length > 0) { + if (ctx.VirtualKeyword_list().length > 0) { isVirtual = true } let override - const overrideSpecifier = ctx.overrideSpecifier() + const overrideSpecifier = ctx.overrideSpecifier_list() if (overrideSpecifier.length === 0) { override = null } else { override = overrideSpecifier[0] - .userDefinedTypeName() + .userDefinedTypeName_list() .map((x) => this.visitUserDefinedTypeName(x)) } let body = null const blockCtx = ctx.block() - if (blockCtx !== undefined) { + if (blockCtx) { body = this.visitBlock(blockCtx) } @@ -1054,11 +1037,11 @@ export class ASTBuilder switch (ctx.children!.length) { case 1: { // primary expression - const primaryExpressionCtx = ctx.tryGetRuleContext( - 0, - SP.PrimaryExpressionContext - ) - if (primaryExpressionCtx === undefined) { + const primaryExpressionCtx = ctx.primaryExpression() + if ( + primaryExpressionCtx === undefined || + primaryExpressionCtx === null + ) { throw new Error( 'Assertion error: primary expression should exist when children length is 1' ) @@ -1082,9 +1065,7 @@ export class ASTBuilder const node: AST.UnaryOperation = { type: 'UnaryOperation', operator: op as AST.UnaryOp, - subExpression: this.visitExpression( - ctx.getRuleContext(0, SP.ExpressionContext) - ), + subExpression: this.visitExpression(ctx.expression(0)), isPrefix: true, } return this._addMeta(node, ctx) @@ -1097,9 +1078,7 @@ export class ASTBuilder const node: AST.UnaryOperation = { type: 'UnaryOperation', operator: op as AST.UnaryOp, - subExpression: this.visitExpression( - ctx.getRuleContext(0, SP.ExpressionContext) - ), + subExpression: this.visitExpression(ctx.expression(0)), isPrefix: false, } return this._addMeta(node, ctx) @@ -1114,9 +1093,7 @@ export class ASTBuilder ) { const node: AST.TupleExpression = { type: 'TupleExpression', - components: [ - this.visitExpression(ctx.getRuleContext(0, SP.ExpressionContext)), - ], + components: [this.visitExpression(ctx.expression(0))], isArray: false, } return this._addMeta(node, ctx) @@ -1159,10 +1136,10 @@ export class ASTBuilder if (ctxArgs.expressionList()) { args = ctxArgs .expressionList()! - .expression() + .expression_list() .map((exprCtx) => this.visitExpression(exprCtx)) } else if (ctxArgs.nameValueList()) { - for (const nameValue of ctxArgs.nameValueList()!.nameValue()) { + for (const nameValue of ctxArgs.nameValueList()!.nameValue_list()) { args.push(this.visitExpression(nameValue.expression())) names.push(this._toText(nameValue.identifier())) identifiers.push(this.visitIdentifier(nameValue.identifier())) @@ -1185,7 +1162,7 @@ export class ASTBuilder this._toText(ctx.getChild(1)) === '[' && this._toText(ctx.getChild(3)) === ']' ) { - if (ctx.getChild(2).text === ':') { + if (ctx.getChild(2).getText() === ':') { const node: AST.IndexRangeAccess = { type: 'IndexRangeAccess', base: this.visitExpression(ctx.expression(0)), @@ -1292,7 +1269,7 @@ export class ASTBuilder const identifiers: AST.Identifier[] = [] const args: AST.Expression[] = [] - for (const nameValue of ctx.nameValue()) { + for (const nameValue of ctx.nameValue_list()) { names.push(this._toText(nameValue.identifier())) identifiers.push(this.visitIdentifier(nameValue.identifier())) args.push(this.visitExpression(nameValue.expression())) @@ -1310,8 +1287,7 @@ export class ASTBuilder public visitFileLevelConstant(ctx: SP.FileLevelConstantContext) { const type = this.visitTypeName(ctx.typeName()) - const iden = ctx.identifier() - const name = this._toText(iden) + const name = this._toText(ctx.identifier()) const expression = this.visitExpression(ctx.expression()) @@ -1342,10 +1318,9 @@ export class ASTBuilder conditionExpression, loopExpression: { type: 'ExpressionStatement', - expression: - ctx.expression() !== undefined - ? this.visitExpression(ctx.expression()!) - : null, + expression: ctx.expression() + ? this.visitExpression(ctx.expression()!) + : null, }, body: this.visitStatement(ctx.statement()), } @@ -1355,7 +1330,7 @@ export class ASTBuilder public visitHexLiteral(ctx: SP.HexLiteralContext) { const parts = ctx - .HexLiteralFragment() + .HexLiteralFragment_list() .map((x) => this._toText(x)) .map((x) => x.substring(4, x.length - 1)) @@ -1387,7 +1362,7 @@ export class ASTBuilder if (ctx.stringLiteral()) { const fragments = ctx .stringLiteral()! - .StringLiteralFragment() + .StringLiteralFragment_list() .map((stringLiteralFragmentCtx) => { let text = this._toText(stringLiteralFragmentCtx)! @@ -1461,11 +1436,11 @@ export class ASTBuilder public buildIdentifierList(ctx: SP.IdentifierListContext) { // remove parentheses const children = ctx.children!.slice(1, -1) - const identifiers = ctx.identifier() + const identifiers = ctx.identifier_list() let i = 0 - return this._mapCommasToNulls(children).map((idenOrNull) => { + return this._mapCommasToNulls(children).map((identifierOrNull) => { // add a null for each empty value - if (!idenOrNull) { + if (identifierOrNull === null) { return null } @@ -1490,7 +1465,7 @@ export class ASTBuilder public buildVariableDeclarationList( ctx: SP.VariableDeclarationListContext ): Array<(AST.VariableDeclaration & WithMeta) | null> { - const variableDeclarations = ctx.variableDeclaration() + const variableDeclarations = ctx.variableDeclaration_list() let i = 0 return this._mapCommasToNulls(ctx.children ?? []).map((declOrNull) => { // add a null for each empty value @@ -1530,19 +1505,19 @@ export class ASTBuilder let symbolAliases = null let symbolAliasesIdentifiers = null - if (ctx.importDeclaration().length > 0) { - symbolAliases = ctx.importDeclaration().map((decl) => { + if (ctx.importDeclaration_list().length > 0) { + symbolAliases = ctx.importDeclaration_list().map((decl) => { const symbol = this._toText(decl.identifier(0)) let alias = null - if (decl.identifier().length > 1) { + if (decl.identifier_list().length > 1) { alias = this._toText(decl.identifier(1)) } return [symbol, alias] as [string, string | null] }) - symbolAliasesIdentifiers = ctx.importDeclaration().map((decl) => { + symbolAliasesIdentifiers = ctx.importDeclaration_list().map((decl) => { const symbolIdentifier = this.visitIdentifier(decl.identifier(0)) let aliasIdentifier = null - if (decl.identifier().length > 1) { + if (decl.identifier_list().length > 1) { aliasIdentifier = this.visitIdentifier(decl.identifier(1)) } return [symbolIdentifier, aliasIdentifier] as [ @@ -1551,7 +1526,7 @@ export class ASTBuilder ] }) } else { - const identifierCtxList = ctx.identifier() + const identifierCtxList = ctx.identifier_list() if (identifierCtxList.length === 0) { // nothing to do } else if (identifierCtxList.length === 1) { @@ -1592,7 +1567,7 @@ export class ASTBuilder } public buildEventParameterList(ctx: SP.EventParameterListContext) { - return ctx.eventParameter().map((paramCtx) => { + return ctx.eventParameter_list().map((paramCtx) => { const type = this.visit(paramCtx.typeName()) const identifier = paramCtx.identifier() const name = identifier ? this._toText(identifier) : null @@ -1616,7 +1591,7 @@ export class ASTBuilder public visitParameterList( ctx: SP.ParameterListContext ): (AST.VariableDeclaration & WithMeta)[] { - return ctx.parameter().map((paramCtx) => this.visitParameter(paramCtx)) + return ctx.parameter_list().map((paramCtx) => this.visitParameter(paramCtx)) } public visitInlineAssemblyStatement(ctx: SP.InlineAssemblyStatementContext) { @@ -1628,7 +1603,7 @@ export class ASTBuilder const flags = [] const flag = ctx.inlineAssemblyStatementFlag() - if (flag !== undefined) { + if (flag) { const flagString = this._toText(flag.stringLiteral()) flags.push(flagString.slice(1, flagString.length - 1)) } @@ -1647,7 +1622,7 @@ export class ASTBuilder ctx: SP.AssemblyBlockContext ): AST.AssemblyBlock & WithMeta { const operations = ctx - .assemblyItem() + .assemblyItem_list() .map((item) => this.visitAssemblyItem(item)) const node: AST.AssemblyBlock = { @@ -1706,7 +1681,7 @@ export class ASTBuilder public visitAssemblyCall(ctx: SP.AssemblyCallContext) { const functionName = this._toText(ctx.getChild(0)) const args = ctx - .assemblyExpression() + .assemblyExpression_list() .map((assemblyExpr) => this.visitAssemblyExpression(assemblyExpr)) const node: AST.AssemblyCall = { @@ -1774,7 +1749,7 @@ export class ASTBuilder const node: AST.AssemblySwitch = { type: 'AssemblySwitch', expression: this.visitAssemblyExpression(ctx.assemblyExpression()), - cases: ctx.assemblyCase().map((c) => this.visitAssemblyCase(c)), + cases: ctx.assemblyCase_list().map((c) => this.visitAssemblyCase(c)), } return this._addMeta(node, ctx) @@ -1812,12 +1787,12 @@ export class ASTBuilder } else { names = ctxAssemblyIdentifierOrList .assemblyIdentifierList()! - .identifier()! + .identifier_list()! .map((x) => this.visitIdentifier(x)) } let expression: AST.AssemblyExpression | null = null - if (ctx.assemblyExpression() !== undefined) { + if (ctx.assemblyExpression()) { expression = this.visitAssemblyExpression(ctx.assemblyExpression()!) } @@ -1834,18 +1809,17 @@ export class ASTBuilder ctx: SP.AssemblyFunctionDefinitionContext ) { const ctxAssemblyIdentifierList = ctx.assemblyIdentifierList() - const args = - ctxAssemblyIdentifierList !== undefined - ? ctxAssemblyIdentifierList - .identifier() - .map((x) => this.visitIdentifier(x)) - : [] + const args = ctxAssemblyIdentifierList + ? ctxAssemblyIdentifierList + .identifier_list() + .map((x) => this.visitIdentifier(x)) + : [] const ctxAssemblyFunctionReturns = ctx.assemblyFunctionReturns() const returnArgs = ctxAssemblyFunctionReturns ? ctxAssemblyFunctionReturns .assemblyIdentifierList()! - .identifier() + .identifier_list() .map((x) => this.visitIdentifier(x)) : [] @@ -1872,7 +1846,7 @@ export class ASTBuilder } else { names = ctxAssemblyIdentifierOrList .assemblyIdentifierList()! - .identifier() + .identifier_list() .map((x) => this.visitIdentifier(x)) } @@ -1888,7 +1862,7 @@ export class ASTBuilder public visitAssemblyMember( ctx: SP.AssemblyMemberContext ): AST.AssemblyMemberAccess & WithMeta { - const [accessed, member] = ctx.identifier() + const [accessed, member] = ctx.identifier_list() const node: AST.AssemblyMemberAccess = { type: 'AssemblyMemberAccess', expression: this.visitIdentifier(accessed), @@ -1965,9 +1939,9 @@ export class ASTBuilder } private _toText(ctx: ParserRuleContext | ParseTree): string { - const text = ctx.text - if (text === undefined) { - throw new Error('Assertion error: text should never be undefiend') + const text = ctx.getText() + if (text === undefined || text === null) { + throw new Error('Assertion error: text should never be undefined') } return text @@ -1976,16 +1950,16 @@ export class ASTBuilder private _stateMutabilityToText( ctx: SP.StateMutabilityContext ): AST.FunctionDefinition['stateMutability'] { - if (ctx.PureKeyword() !== undefined) { + if (ctx.PureKeyword()) { return 'pure' } - if (ctx.ConstantKeyword() !== undefined) { + if (ctx.ConstantKeyword()) { return 'constant' } - if (ctx.PayableKeyword() !== undefined) { + if (ctx.PayableKeyword()) { return 'payable' } - if (ctx.ViewKeyword() !== undefined) { + if (ctx.ViewKeyword()) { return 'view' } @@ -1996,20 +1970,18 @@ export class ASTBuilder const sourceLocation: SourceLocation = { start: { line: ctx.start.line, - column: ctx.start.charPositionInLine, + column: ctx.start.column, }, end: { line: ctx.stop ? ctx.stop.line : ctx.start.line, - column: ctx.stop - ? ctx.stop.charPositionInLine - : ctx.start.charPositionInLine, + column: ctx.stop ? ctx.stop.column : ctx.start.column, }, } return sourceLocation } _range(ctx: ParserRuleContext): [number, number] { - return [ctx.start.startIndex, ctx.stop?.stopIndex ?? ctx.start.startIndex] + return [ctx.start.start, ctx.stop?.stop ?? ctx.start.start] } private _addMeta( diff --git a/src/ErrorListener.ts b/src/ErrorListener.ts index 24e658d..580cd1a 100644 --- a/src/ErrorListener.ts +++ b/src/ErrorListener.ts @@ -1,6 +1,6 @@ -import antlr4 from 'antlr4' +import { ErrorListener as AntlrErrorListener } from 'antlr4' -class ErrorListener extends antlr4.error.ErrorListener { +class ErrorListener extends AntlrErrorListener { private _errors: any[] constructor() { diff --git a/src/antlr/Solidity.interp b/src/antlr/Solidity.interp index fe6a7be..4445590 100644 --- a/src/antlr/Solidity.interp +++ b/src/antlr/Solidity.interp @@ -375,4 +375,4 @@ stringLiteral atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 135, 1172, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 216, 10, 2, 12, 2, 14, 2, 219, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 5, 5, 233, 10, 5, 3, 6, 3, 6, 5, 6, 237, 10, 6, 3, 6, 7, 6, 240, 10, 6, 12, 6, 14, 6, 243, 11, 6, 3, 7, 3, 7, 3, 8, 5, 8, 248, 10, 8, 3, 8, 3, 8, 5, 8, 252, 10, 8, 3, 8, 5, 8, 255, 10, 8, 3, 9, 3, 9, 3, 9, 5, 9, 260, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 266, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 273, 10, 10, 3, 10, 3, 10, 5, 10, 277, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 288, 10, 10, 12, 10, 14, 10, 291, 11, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 298, 10, 10, 3, 11, 3, 11, 3, 12, 5, 12, 303, 10, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 311, 10, 12, 12, 12, 14, 12, 314, 11, 12, 5, 12, 316, 10, 12, 3, 12, 3, 12, 7, 12, 320, 10, 12, 12, 12, 14, 12, 323, 11, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 5, 13, 330, 10, 13, 3, 13, 5, 13, 333, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 344, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 7, 15, 353, 10, 15, 12, 15, 14, 15, 356, 11, 15, 3, 15, 3, 15, 3, 15, 5, 15, 361, 10, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 388, 10, 19, 3, 19, 5, 19, 391, 10, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 400, 10, 20, 12, 20, 14, 20, 403, 11, 20, 3, 20, 3, 20, 5, 20, 407, 10, 20, 3, 21, 3, 21, 3, 21, 5, 21, 412, 10, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 424, 10, 23, 12, 23, 14, 23, 427, 11, 23, 5, 23, 429, 10, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 5, 24, 436, 10, 24, 3, 24, 3, 24, 7, 24, 440, 10, 24, 12, 24, 14, 24, 443, 11, 24, 3, 24, 3, 24, 5, 24, 447, 10, 24, 3, 25, 3, 25, 3, 25, 5, 25, 452, 10, 25, 3, 25, 5, 25, 455, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 461, 10, 26, 3, 26, 3, 26, 5, 26, 465, 10, 26, 3, 27, 3, 27, 5, 27, 469, 10, 27, 3, 27, 3, 27, 3, 27, 5, 27, 474, 10, 27, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 487, 10, 29, 12, 29, 14, 29, 490, 11, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 496, 10, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 506, 10, 32, 3, 32, 3, 32, 7, 32, 510, 10, 32, 12, 32, 14, 32, 513, 11, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 521, 10, 33, 12, 33, 14, 33, 524, 11, 33, 5, 33, 526, 10, 33, 3, 33, 3, 33, 3, 34, 3, 34, 5, 34, 532, 10, 34, 3, 34, 5, 34, 535, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 7, 35, 541, 10, 35, 12, 35, 14, 35, 544, 11, 35, 5, 35, 546, 10, 35, 3, 35, 3, 35, 3, 36, 3, 36, 5, 36, 552, 10, 36, 3, 36, 5, 36, 555, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 561, 10, 37, 12, 37, 14, 37, 564, 11, 37, 5, 37, 566, 10, 37, 3, 37, 3, 37, 3, 38, 3, 38, 5, 38, 572, 10, 38, 3, 39, 3, 39, 5, 39, 576, 10, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 587, 10, 40, 3, 40, 3, 40, 3, 40, 5, 40, 592, 10, 40, 3, 40, 7, 40, 595, 10, 40, 12, 40, 14, 40, 598, 11, 40, 3, 41, 3, 41, 3, 41, 7, 41, 603, 10, 41, 12, 41, 14, 41, 606, 11, 41, 3, 42, 3, 42, 5, 42, 610, 10, 42, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 616, 10, 43, 3, 43, 3, 43, 3, 43, 5, 43, 621, 10, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 7, 46, 634, 10, 46, 12, 46, 14, 46, 637, 11, 46, 3, 46, 3, 46, 5, 46, 641, 10, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 7, 49, 649, 10, 49, 12, 49, 14, 49, 652, 11, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 671, 10, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 683, 10, 52, 3, 53, 3, 53, 3, 53, 5, 53, 688, 10, 53, 3, 53, 3, 53, 6, 53, 692, 10, 53, 13, 53, 14, 53, 693, 3, 54, 3, 54, 5, 54, 698, 10, 54, 3, 54, 5, 54, 701, 10, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 5, 56, 713, 10, 56, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 5, 58, 722, 10, 58, 3, 58, 3, 58, 5, 58, 726, 10, 58, 3, 58, 5, 58, 729, 10, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 5, 59, 736, 10, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 742, 10, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 5, 64, 764, 10, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 786, 10, 68, 3, 68, 3, 68, 5, 68, 790, 10, 68, 3, 68, 3, 68, 3, 69, 5, 69, 795, 10, 69, 3, 69, 3, 69, 5, 69, 799, 10, 69, 7, 69, 801, 10, 69, 12, 69, 14, 69, 804, 11, 69, 3, 70, 3, 70, 5, 70, 808, 10, 70, 3, 70, 7, 70, 811, 10, 70, 12, 70, 14, 70, 814, 11, 70, 3, 70, 5, 70, 817, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 841, 10, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 895, 10, 72, 3, 72, 3, 72, 5, 72, 899, 10, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 7, 72, 915, 10, 72, 12, 72, 14, 72, 918, 11, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 5, 73, 929, 10, 73, 3, 74, 3, 74, 3, 74, 7, 74, 934, 10, 74, 12, 74, 14, 74, 937, 11, 74, 3, 75, 3, 75, 3, 75, 7, 75, 942, 10, 75, 12, 75, 14, 75, 945, 11, 75, 3, 75, 5, 75, 948, 10, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 5, 77, 956, 10, 77, 3, 77, 3, 77, 5, 77, 960, 10, 77, 5, 77, 962, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 7, 79, 971, 10, 79, 12, 79, 14, 79, 974, 11, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 995, 10, 80, 3, 81, 3, 81, 3, 81, 5, 81, 1000, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1010, 10, 83, 3, 83, 3, 83, 5, 83, 1014, 10, 83, 3, 83, 3, 83, 7, 83, 1018, 10, 83, 12, 83, 14, 83, 1021, 11, 83, 3, 83, 5, 83, 1024, 10, 83, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1030, 10, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 5, 86, 1043, 10, 86, 3, 87, 3, 87, 3, 87, 7, 87, 1048, 10, 87, 12, 87, 14, 87, 1051, 11, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 7, 90, 1063, 10, 90, 12, 90, 14, 90, 1066, 11, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 1074, 10, 91, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92, 1080, 10, 92, 3, 92, 3, 92, 5, 92, 1084, 10, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 5, 94, 1094, 10, 94, 3, 94, 3, 94, 3, 94, 5, 94, 1099, 10, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 5, 96, 1112, 10, 96, 3, 97, 3, 97, 5, 97, 1116, 10, 97, 3, 97, 3, 97, 5, 97, 1120, 10, 97, 7, 97, 1122, 10, 97, 12, 97, 14, 97, 1125, 11, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 7, 97, 1132, 10, 97, 12, 97, 14, 97, 1135, 11, 97, 5, 97, 1137, 10, 97, 3, 97, 5, 97, 1140, 10, 97, 3, 98, 3, 98, 5, 98, 1144, 10, 98, 3, 99, 3, 99, 3, 100, 6, 100, 1149, 10, 100, 13, 100, 14, 100, 1150, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 7, 101, 1158, 10, 101, 12, 101, 14, 101, 1161, 11, 101, 3, 101, 3, 101, 5, 101, 1165, 10, 101, 3, 102, 6, 102, 1168, 10, 102, 13, 102, 14, 102, 1169, 3, 102, 2, 2, 4, 78, 142, 103, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 102, 2, 104, 2, 106, 2, 108, 2, 110, 2, 112, 2, 114, 2, 116, 2, 118, 2, 120, 2, 122, 2, 124, 2, 126, 2, 128, 2, 130, 2, 132, 2, 134, 2, 136, 2, 138, 2, 140, 2, 142, 2, 144, 2, 146, 2, 148, 2, 150, 2, 152, 2, 154, 2, 156, 2, 158, 2, 160, 2, 162, 2, 164, 2, 166, 2, 168, 2, 170, 2, 172, 2, 174, 2, 176, 2, 178, 2, 180, 2, 182, 2, 184, 2, 186, 2, 188, 2, 190, 2, 192, 2, 194, 2, 196, 2, 198, 2, 200, 2, 202, 2, 2, 17, 3, 2, 7, 13, 3, 2, 21, 23, 5, 2, 5, 5, 7, 12, 30, 37, 3, 2, 50, 52, 6, 2, 112, 112, 119, 119, 123, 123, 125, 125, 5, 2, 46, 46, 65, 68, 99, 103, 3, 2, 69, 70, 3, 2, 32, 33, 4, 2, 5, 5, 34, 35, 3, 2, 76, 77, 3, 2, 9, 12, 3, 2, 36, 37, 4, 2, 13, 13, 80, 89, 3, 2, 105, 106, 12, 2, 16, 16, 27, 27, 46, 46, 52, 52, 64, 64, 97, 97, 115, 115, 119, 119, 126, 127, 129, 130, 2, 1301, 2, 217, 3, 2, 2, 2, 4, 222, 3, 2, 2, 2, 6, 227, 3, 2, 2, 2, 8, 232, 3, 2, 2, 2, 10, 234, 3, 2, 2, 2, 12, 244, 3, 2, 2, 2, 14, 254, 3, 2, 2, 2, 16, 256, 3, 2, 2, 2, 18, 297, 3, 2, 2, 2, 20, 299, 3, 2, 2, 2, 22, 302, 3, 2, 2, 2, 24, 326, 3, 2, 2, 2, 26, 343, 3, 2, 2, 2, 28, 345, 3, 2, 2, 2, 30, 364, 3, 2, 2, 2, 32, 371, 3, 2, 2, 2, 34, 376, 3, 2, 2, 2, 36, 382, 3, 2, 2, 2, 38, 406, 3, 2, 2, 2, 40, 408, 3, 2, 2, 2, 42, 413, 3, 2, 2, 2, 44, 415, 3, 2, 2, 2, 46, 432, 3, 2, 2, 2, 48, 448, 3, 2, 2, 2, 50, 456, 3, 2, 2, 2, 52, 473, 3, 2, 2, 2, 54, 475, 3, 2, 2, 2, 56, 488, 3, 2, 2, 2, 58, 491, 3, 2, 2, 2, 60, 499, 3, 2, 2, 2, 62, 501, 3, 2, 2, 2, 64, 516, 3, 2, 2, 2, 66, 529, 3, 2, 2, 2, 68, 536, 3, 2, 2, 2, 70, 549, 3, 2, 2, 2, 72, 556, 3, 2, 2, 2, 74, 569, 3, 2, 2, 2, 76, 573, 3, 2, 2, 2, 78, 586, 3, 2, 2, 2, 80, 599, 3, 2, 2, 2, 82, 609, 3, 2, 2, 2, 84, 611, 3, 2, 2, 2, 86, 624, 3, 2, 2, 2, 88, 626, 3, 2, 2, 2, 90, 628, 3, 2, 2, 2, 92, 642, 3, 2, 2, 2, 94, 644, 3, 2, 2, 2, 96, 646, 3, 2, 2, 2, 98, 670, 3, 2, 2, 2, 100, 672, 3, 2, 2, 2, 102, 675, 3, 2, 2, 2, 104, 684, 3, 2, 2, 2, 106, 695, 3, 2, 2, 2, 108, 704, 3, 2, 2, 2, 110, 712, 3, 2, 2, 2, 112, 714, 3, 2, 2, 2, 114, 717, 3, 2, 2, 2, 116, 733, 3, 2, 2, 2, 118, 745, 3, 2, 2, 2, 120, 747, 3, 2, 2, 2, 122, 755, 3, 2, 2, 2, 124, 758, 3, 2, 2, 2, 126, 761, 3, 2, 2, 2, 128, 767, 3, 2, 2, 2, 130, 770, 3, 2, 2, 2, 132, 774, 3, 2, 2, 2, 134, 785, 3, 2, 2, 2, 136, 794, 3, 2, 2, 2, 138, 805, 3, 2, 2, 2, 140, 820, 3, 2, 2, 2, 142, 840, 3, 2, 2, 2, 144, 928, 3, 2, 2, 2, 146, 930, 3, 2, 2, 2, 148, 938, 3, 2, 2, 2, 150, 949, 3, 2, 2, 2, 152, 961, 3, 2, 2, 2, 154, 963, 3, 2, 2, 2, 156, 968, 3, 2, 2, 2, 158, 994, 3, 2, 2, 2, 160, 999, 3, 2, 2, 2, 162, 1001, 3, 2, 2, 2, 164, 1009, 3, 2, 2, 2, 166, 1025, 3, 2, 2, 2, 168, 1031, 3, 2, 2, 2, 170, 1042, 3, 2, 2, 2, 172, 1044, 3, 2, 2, 2, 174, 1052, 3, 2, 2, 2, 176, 1056, 3, 2, 2, 2, 178, 1059, 3, 2, 2, 2, 180, 1073, 3, 2, 2, 2, 182, 1075, 3, 2, 2, 2, 184, 1087, 3, 2, 2, 2, 186, 1090, 3, 2, 2, 2, 188, 1102, 3, 2, 2, 2, 190, 1111, 3, 2, 2, 2, 192, 1139, 3, 2, 2, 2, 194, 1141, 3, 2, 2, 2, 196, 1145, 3, 2, 2, 2, 198, 1148, 3, 2, 2, 2, 200, 1152, 3, 2, 2, 2, 202, 1167, 3, 2, 2, 2, 204, 216, 5, 4, 3, 2, 205, 216, 5, 18, 10, 2, 206, 216, 5, 22, 12, 2, 207, 216, 5, 62, 32, 2, 208, 216, 5, 58, 30, 2, 209, 216, 5, 44, 23, 2, 210, 216, 5, 50, 26, 2, 211, 216, 5, 30, 16, 2, 212, 216, 5, 32, 17, 2, 213, 216, 5, 34, 18, 2, 214, 216, 5, 36, 19, 2, 215, 204, 3, 2, 2, 2, 215, 205, 3, 2, 2, 2, 215, 206, 3, 2, 2, 2, 215, 207, 3, 2, 2, 2, 215, 208, 3, 2, 2, 2, 215, 209, 3, 2, 2, 2, 215, 210, 3, 2, 2, 2, 215, 211, 3, 2, 2, 2, 215, 212, 3, 2, 2, 2, 215, 213, 3, 2, 2, 2, 215, 214, 3, 2, 2, 2, 216, 219, 3, 2, 2, 2, 217, 215, 3, 2, 2, 2, 217, 218, 3, 2, 2, 2, 218, 220, 3, 2, 2, 2, 219, 217, 3, 2, 2, 2, 220, 221, 7, 2, 2, 3, 221, 3, 3, 2, 2, 2, 222, 223, 7, 3, 2, 2, 223, 224, 5, 6, 4, 2, 224, 225, 5, 8, 5, 2, 225, 226, 7, 4, 2, 2, 226, 5, 3, 2, 2, 2, 227, 228, 5, 196, 99, 2, 228, 7, 3, 2, 2, 2, 229, 233, 7, 5, 2, 2, 230, 233, 5, 10, 6, 2, 231, 233, 5, 142, 72, 2, 232, 229, 3, 2, 2, 2, 232, 230, 3, 2, 2, 2, 232, 231, 3, 2, 2, 2, 233, 9, 3, 2, 2, 2, 234, 241, 5, 14, 8, 2, 235, 237, 7, 6, 2, 2, 236, 235, 3, 2, 2, 2, 236, 237, 3, 2, 2, 2, 237, 238, 3, 2, 2, 2, 238, 240, 5, 14, 8, 2, 239, 236, 3, 2, 2, 2, 240, 243, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 241, 242, 3, 2, 2, 2, 242, 11, 3, 2, 2, 2, 243, 241, 3, 2, 2, 2, 244, 245, 9, 2, 2, 2, 245, 13, 3, 2, 2, 2, 246, 248, 5, 12, 7, 2, 247, 246, 3, 2, 2, 2, 247, 248, 3, 2, 2, 2, 248, 249, 3, 2, 2, 2, 249, 255, 7, 132, 2, 2, 250, 252, 5, 12, 7, 2, 251, 250, 3, 2, 2, 2, 251, 252, 3, 2, 2, 2, 252, 253, 3, 2, 2, 2, 253, 255, 7, 105, 2, 2, 254, 247, 3, 2, 2, 2, 254, 251, 3, 2, 2, 2, 255, 15, 3, 2, 2, 2, 256, 259, 5, 196, 99, 2, 257, 258, 7, 14, 2, 2, 258, 260, 5, 196, 99, 2, 259, 257, 3, 2, 2, 2, 259, 260, 3, 2, 2, 2, 260, 17, 3, 2, 2, 2, 261, 262, 7, 15, 2, 2, 262, 265, 5, 20, 11, 2, 263, 264, 7, 14, 2, 2, 264, 266, 5, 196, 99, 2, 265, 263, 3, 2, 2, 2, 265, 266, 3, 2, 2, 2, 266, 267, 3, 2, 2, 2, 267, 268, 7, 4, 2, 2, 268, 298, 3, 2, 2, 2, 269, 272, 7, 15, 2, 2, 270, 273, 7, 5, 2, 2, 271, 273, 5, 196, 99, 2, 272, 270, 3, 2, 2, 2, 272, 271, 3, 2, 2, 2, 273, 276, 3, 2, 2, 2, 274, 275, 7, 14, 2, 2, 275, 277, 5, 196, 99, 2, 276, 274, 3, 2, 2, 2, 276, 277, 3, 2, 2, 2, 277, 278, 3, 2, 2, 2, 278, 279, 7, 16, 2, 2, 279, 280, 5, 20, 11, 2, 280, 281, 7, 4, 2, 2, 281, 298, 3, 2, 2, 2, 282, 283, 7, 15, 2, 2, 283, 284, 7, 17, 2, 2, 284, 289, 5, 16, 9, 2, 285, 286, 7, 18, 2, 2, 286, 288, 5, 16, 9, 2, 287, 285, 3, 2, 2, 2, 288, 291, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 289, 290, 3, 2, 2, 2, 290, 292, 3, 2, 2, 2, 291, 289, 3, 2, 2, 2, 292, 293, 7, 19, 2, 2, 293, 294, 7, 16, 2, 2, 294, 295, 5, 20, 11, 2, 295, 296, 7, 4, 2, 2, 296, 298, 3, 2, 2, 2, 297, 261, 3, 2, 2, 2, 297, 269, 3, 2, 2, 2, 297, 282, 3, 2, 2, 2, 298, 19, 3, 2, 2, 2, 299, 300, 7, 131, 2, 2, 300, 21, 3, 2, 2, 2, 301, 303, 7, 20, 2, 2, 302, 301, 3, 2, 2, 2, 302, 303, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 305, 9, 3, 2, 2, 305, 315, 5, 196, 99, 2, 306, 307, 7, 24, 2, 2, 307, 312, 5, 24, 13, 2, 308, 309, 7, 18, 2, 2, 309, 311, 5, 24, 13, 2, 310, 308, 3, 2, 2, 2, 311, 314, 3, 2, 2, 2, 312, 310, 3, 2, 2, 2, 312, 313, 3, 2, 2, 2, 313, 316, 3, 2, 2, 2, 314, 312, 3, 2, 2, 2, 315, 306, 3, 2, 2, 2, 315, 316, 3, 2, 2, 2, 316, 317, 3, 2, 2, 2, 317, 321, 7, 17, 2, 2, 318, 320, 5, 26, 14, 2, 319, 318, 3, 2, 2, 2, 320, 323, 3, 2, 2, 2, 321, 319, 3, 2, 2, 2, 321, 322, 3, 2, 2, 2, 322, 324, 3, 2, 2, 2, 323, 321, 3, 2, 2, 2, 324, 325, 7, 19, 2, 2, 325, 23, 3, 2, 2, 2, 326, 332, 5, 80, 41, 2, 327, 329, 7, 25, 2, 2, 328, 330, 5, 146, 74, 2, 329, 328, 3, 2, 2, 2, 329, 330, 3, 2, 2, 2, 330, 331, 3, 2, 2, 2, 331, 333, 7, 26, 2, 2, 332, 327, 3, 2, 2, 2, 332, 333, 3, 2, 2, 2, 333, 25, 3, 2, 2, 2, 334, 344, 5, 28, 15, 2, 335, 344, 5, 36, 19, 2, 336, 344, 5, 44, 23, 2, 337, 344, 5, 46, 24, 2, 338, 344, 5, 50, 26, 2, 339, 344, 5, 58, 30, 2, 340, 344, 5, 62, 32, 2, 341, 344, 5, 32, 17, 2, 342, 344, 5, 34, 18, 2, 343, 334, 3, 2, 2, 2, 343, 335, 3, 2, 2, 2, 343, 336, 3, 2, 2, 2, 343, 337, 3, 2, 2, 2, 343, 338, 3, 2, 2, 2, 343, 339, 3, 2, 2, 2, 343, 340, 3, 2, 2, 2, 343, 341, 3, 2, 2, 2, 343, 342, 3, 2, 2, 2, 344, 27, 3, 2, 2, 2, 345, 354, 5, 78, 40, 2, 346, 353, 7, 121, 2, 2, 347, 353, 7, 118, 2, 2, 348, 353, 7, 120, 2, 2, 349, 353, 7, 112, 2, 2, 350, 353, 7, 113, 2, 2, 351, 353, 5, 200, 101, 2, 352, 346, 3, 2, 2, 2, 352, 347, 3, 2, 2, 2, 352, 348, 3, 2, 2, 2, 352, 349, 3, 2, 2, 2, 352, 350, 3, 2, 2, 2, 352, 351, 3, 2, 2, 2, 353, 356, 3, 2, 2, 2, 354, 352, 3, 2, 2, 2, 354, 355, 3, 2, 2, 2, 355, 357, 3, 2, 2, 2, 356, 354, 3, 2, 2, 2, 357, 360, 5, 196, 99, 2, 358, 359, 7, 13, 2, 2, 359, 361, 5, 142, 72, 2, 360, 358, 3, 2, 2, 2, 360, 361, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 363, 7, 4, 2, 2, 363, 29, 3, 2, 2, 2, 364, 365, 5, 78, 40, 2, 365, 366, 7, 112, 2, 2, 366, 367, 5, 196, 99, 2, 367, 368, 7, 13, 2, 2, 368, 369, 5, 142, 72, 2, 369, 370, 7, 4, 2, 2, 370, 31, 3, 2, 2, 2, 371, 372, 7, 27, 2, 2, 372, 373, 5, 196, 99, 2, 373, 374, 5, 64, 33, 2, 374, 375, 7, 4, 2, 2, 375, 33, 3, 2, 2, 2, 376, 377, 7, 124, 2, 2, 377, 378, 5, 196, 99, 2, 378, 379, 7, 24, 2, 2, 379, 380, 5, 140, 71, 2, 380, 381, 7, 4, 2, 2, 381, 35, 3, 2, 2, 2, 382, 383, 7, 28, 2, 2, 383, 384, 5, 38, 20, 2, 384, 387, 7, 29, 2, 2, 385, 388, 7, 5, 2, 2, 386, 388, 5, 78, 40, 2, 387, 385, 3, 2, 2, 2, 387, 386, 3, 2, 2, 2, 388, 390, 3, 2, 2, 2, 389, 391, 7, 126, 2, 2, 390, 389, 3, 2, 2, 2, 390, 391, 3, 2, 2, 2, 391, 392, 3, 2, 2, 2, 392, 393, 7, 4, 2, 2, 393, 37, 3, 2, 2, 2, 394, 407, 5, 80, 41, 2, 395, 396, 7, 17, 2, 2, 396, 401, 5, 40, 21, 2, 397, 398, 7, 18, 2, 2, 398, 400, 5, 40, 21, 2, 399, 397, 3, 2, 2, 2, 400, 403, 3, 2, 2, 2, 401, 399, 3, 2, 2, 2, 401, 402, 3, 2, 2, 2, 402, 404, 3, 2, 2, 2, 403, 401, 3, 2, 2, 2, 404, 405, 7, 19, 2, 2, 405, 407, 3, 2, 2, 2, 406, 394, 3, 2, 2, 2, 406, 395, 3, 2, 2, 2, 407, 39, 3, 2, 2, 2, 408, 411, 5, 80, 41, 2, 409, 410, 7, 14, 2, 2, 410, 412, 5, 42, 22, 2, 411, 409, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, 41, 3, 2, 2, 2, 413, 414, 9, 4, 2, 2, 414, 43, 3, 2, 2, 2, 415, 416, 7, 38, 2, 2, 416, 417, 5, 196, 99, 2, 417, 428, 7, 17, 2, 2, 418, 419, 5, 76, 39, 2, 419, 425, 7, 4, 2, 2, 420, 421, 5, 76, 39, 2, 421, 422, 7, 4, 2, 2, 422, 424, 3, 2, 2, 2, 423, 420, 3, 2, 2, 2, 424, 427, 3, 2, 2, 2, 425, 423, 3, 2, 2, 2, 425, 426, 3, 2, 2, 2, 426, 429, 3, 2, 2, 2, 427, 425, 3, 2, 2, 2, 428, 418, 3, 2, 2, 2, 428, 429, 3, 2, 2, 2, 429, 430, 3, 2, 2, 2, 430, 431, 7, 19, 2, 2, 431, 45, 3, 2, 2, 2, 432, 433, 7, 39, 2, 2, 433, 435, 5, 196, 99, 2, 434, 436, 5, 64, 33, 2, 435, 434, 3, 2, 2, 2, 435, 436, 3, 2, 2, 2, 436, 441, 3, 2, 2, 2, 437, 440, 7, 122, 2, 2, 438, 440, 5, 200, 101, 2, 439, 437, 3, 2, 2, 2, 439, 438, 3, 2, 2, 2, 440, 443, 3, 2, 2, 2, 441, 439, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 446, 3, 2, 2, 2, 443, 441, 3, 2, 2, 2, 444, 447, 7, 4, 2, 2, 445, 447, 5, 96, 49, 2, 446, 444, 3, 2, 2, 2, 446, 445, 3, 2, 2, 2, 447, 47, 3, 2, 2, 2, 448, 454, 5, 196, 99, 2, 449, 451, 7, 25, 2, 2, 450, 452, 5, 146, 74, 2, 451, 450, 3, 2, 2, 2, 451, 452, 3, 2, 2, 2, 452, 453, 3, 2, 2, 2, 453, 455, 7, 26, 2, 2, 454, 449, 3, 2, 2, 2, 454, 455, 3, 2, 2, 2, 455, 49, 3, 2, 2, 2, 456, 457, 5, 52, 27, 2, 457, 458, 5, 64, 33, 2, 458, 460, 5, 56, 29, 2, 459, 461, 5, 54, 28, 2, 460, 459, 3, 2, 2, 2, 460, 461, 3, 2, 2, 2, 461, 464, 3, 2, 2, 2, 462, 465, 7, 4, 2, 2, 463, 465, 5, 96, 49, 2, 464, 462, 3, 2, 2, 2, 464, 463, 3, 2, 2, 2, 465, 51, 3, 2, 2, 2, 466, 468, 7, 40, 2, 2, 467, 469, 5, 196, 99, 2, 468, 467, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 474, 3, 2, 2, 2, 470, 474, 7, 127, 2, 2, 471, 474, 7, 128, 2, 2, 472, 474, 7, 129, 2, 2, 473, 466, 3, 2, 2, 2, 473, 470, 3, 2, 2, 2, 473, 471, 3, 2, 2, 2, 473, 472, 3, 2, 2, 2, 474, 53, 3, 2, 2, 2, 475, 476, 7, 41, 2, 2, 476, 477, 5, 64, 33, 2, 477, 55, 3, 2, 2, 2, 478, 487, 7, 116, 2, 2, 479, 487, 7, 121, 2, 2, 480, 487, 7, 118, 2, 2, 481, 487, 7, 120, 2, 2, 482, 487, 7, 122, 2, 2, 483, 487, 5, 94, 48, 2, 484, 487, 5, 48, 25, 2, 485, 487, 5, 200, 101, 2, 486, 478, 3, 2, 2, 2, 486, 479, 3, 2, 2, 2, 486, 480, 3, 2, 2, 2, 486, 481, 3, 2, 2, 2, 486, 482, 3, 2, 2, 2, 486, 483, 3, 2, 2, 2, 486, 484, 3, 2, 2, 2, 486, 485, 3, 2, 2, 2, 487, 490, 3, 2, 2, 2, 488, 486, 3, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 57, 3, 2, 2, 2, 490, 488, 3, 2, 2, 2, 491, 492, 7, 42, 2, 2, 492, 493, 5, 196, 99, 2, 493, 495, 5, 68, 35, 2, 494, 496, 7, 110, 2, 2, 495, 494, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 498, 7, 4, 2, 2, 498, 59, 3, 2, 2, 2, 499, 500, 5, 196, 99, 2, 500, 61, 3, 2, 2, 2, 501, 502, 7, 43, 2, 2, 502, 503, 5, 196, 99, 2, 503, 505, 7, 17, 2, 2, 504, 506, 5, 60, 31, 2, 505, 504, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 511, 3, 2, 2, 2, 507, 508, 7, 18, 2, 2, 508, 510, 5, 60, 31, 2, 509, 507, 3, 2, 2, 2, 510, 513, 3, 2, 2, 2, 511, 509, 3, 2, 2, 2, 511, 512, 3, 2, 2, 2, 512, 514, 3, 2, 2, 2, 513, 511, 3, 2, 2, 2, 514, 515, 7, 19, 2, 2, 515, 63, 3, 2, 2, 2, 516, 525, 7, 25, 2, 2, 517, 522, 5, 66, 34, 2, 518, 519, 7, 18, 2, 2, 519, 521, 5, 66, 34, 2, 520, 518, 3, 2, 2, 2, 521, 524, 3, 2, 2, 2, 522, 520, 3, 2, 2, 2, 522, 523, 3, 2, 2, 2, 523, 526, 3, 2, 2, 2, 524, 522, 3, 2, 2, 2, 525, 517, 3, 2, 2, 2, 525, 526, 3, 2, 2, 2, 526, 527, 3, 2, 2, 2, 527, 528, 7, 26, 2, 2, 528, 65, 3, 2, 2, 2, 529, 531, 5, 78, 40, 2, 530, 532, 5, 92, 47, 2, 531, 530, 3, 2, 2, 2, 531, 532, 3, 2, 2, 2, 532, 534, 3, 2, 2, 2, 533, 535, 5, 196, 99, 2, 534, 533, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 67, 3, 2, 2, 2, 536, 545, 7, 25, 2, 2, 537, 542, 5, 70, 36, 2, 538, 539, 7, 18, 2, 2, 539, 541, 5, 70, 36, 2, 540, 538, 3, 2, 2, 2, 541, 544, 3, 2, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 546, 3, 2, 2, 2, 544, 542, 3, 2, 2, 2, 545, 537, 3, 2, 2, 2, 545, 546, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 548, 7, 26, 2, 2, 548, 69, 3, 2, 2, 2, 549, 551, 5, 78, 40, 2, 550, 552, 7, 117, 2, 2, 551, 550, 3, 2, 2, 2, 551, 552, 3, 2, 2, 2, 552, 554, 3, 2, 2, 2, 553, 555, 5, 196, 99, 2, 554, 553, 3, 2, 2, 2, 554, 555, 3, 2, 2, 2, 555, 71, 3, 2, 2, 2, 556, 565, 7, 25, 2, 2, 557, 562, 5, 74, 38, 2, 558, 559, 7, 18, 2, 2, 559, 561, 5, 74, 38, 2, 560, 558, 3, 2, 2, 2, 561, 564, 3, 2, 2, 2, 562, 560, 3, 2, 2, 2, 562, 563, 3, 2, 2, 2, 563, 566, 3, 2, 2, 2, 564, 562, 3, 2, 2, 2, 565, 557, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 567, 3, 2, 2, 2, 567, 568, 7, 26, 2, 2, 568, 73, 3, 2, 2, 2, 569, 571, 5, 78, 40, 2, 570, 572, 5, 92, 47, 2, 571, 570, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 75, 3, 2, 2, 2, 573, 575, 5, 78, 40, 2, 574, 576, 5, 92, 47, 2, 575, 574, 3, 2, 2, 2, 575, 576, 3, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 578, 5, 196, 99, 2, 578, 77, 3, 2, 2, 2, 579, 580, 8, 40, 1, 2, 580, 587, 5, 140, 71, 2, 581, 587, 5, 80, 41, 2, 582, 587, 5, 84, 43, 2, 583, 587, 5, 90, 46, 2, 584, 585, 7, 46, 2, 2, 585, 587, 7, 119, 2, 2, 586, 579, 3, 2, 2, 2, 586, 581, 3, 2, 2, 2, 586, 582, 3, 2, 2, 2, 586, 583, 3, 2, 2, 2, 586, 584, 3, 2, 2, 2, 587, 596, 3, 2, 2, 2, 588, 589, 12, 5, 2, 2, 589, 591, 7, 44, 2, 2, 590, 592, 5, 142, 72, 2, 591, 590, 3, 2, 2, 2, 591, 592, 3, 2, 2, 2, 592, 593, 3, 2, 2, 2, 593, 595, 7, 45, 2, 2, 594, 588, 3, 2, 2, 2, 595, 598, 3, 2, 2, 2, 596, 594, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 79, 3, 2, 2, 2, 598, 596, 3, 2, 2, 2, 599, 604, 5, 196, 99, 2, 600, 601, 7, 47, 2, 2, 601, 603, 5, 196, 99, 2, 602, 600, 3, 2, 2, 2, 603, 606, 3, 2, 2, 2, 604, 602, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, 605, 81, 3, 2, 2, 2, 606, 604, 3, 2, 2, 2, 607, 610, 5, 140, 71, 2, 608, 610, 5, 80, 41, 2, 609, 607, 3, 2, 2, 2, 609, 608, 3, 2, 2, 2, 610, 83, 3, 2, 2, 2, 611, 612, 7, 48, 2, 2, 612, 613, 7, 25, 2, 2, 613, 615, 5, 82, 42, 2, 614, 616, 5, 86, 44, 2, 615, 614, 3, 2, 2, 2, 615, 616, 3, 2, 2, 2, 616, 617, 3, 2, 2, 2, 617, 618, 7, 49, 2, 2, 618, 620, 5, 78, 40, 2, 619, 621, 5, 88, 45, 2, 620, 619, 3, 2, 2, 2, 620, 621, 3, 2, 2, 2, 621, 622, 3, 2, 2, 2, 622, 623, 7, 26, 2, 2, 623, 85, 3, 2, 2, 2, 624, 625, 5, 196, 99, 2, 625, 87, 3, 2, 2, 2, 626, 627, 5, 196, 99, 2, 627, 89, 3, 2, 2, 2, 628, 629, 7, 40, 2, 2, 629, 635, 5, 72, 37, 2, 630, 634, 7, 118, 2, 2, 631, 634, 7, 116, 2, 2, 632, 634, 5, 94, 48, 2, 633, 630, 3, 2, 2, 2, 633, 631, 3, 2, 2, 2, 633, 632, 3, 2, 2, 2, 634, 637, 3, 2, 2, 2, 635, 633, 3, 2, 2, 2, 635, 636, 3, 2, 2, 2, 636, 640, 3, 2, 2, 2, 637, 635, 3, 2, 2, 2, 638, 639, 7, 41, 2, 2, 639, 641, 5, 72, 37, 2, 640, 638, 3, 2, 2, 2, 640, 641, 3, 2, 2, 2, 641, 91, 3, 2, 2, 2, 642, 643, 9, 5, 2, 2, 643, 93, 3, 2, 2, 2, 644, 645, 9, 6, 2, 2, 645, 95, 3, 2, 2, 2, 646, 650, 7, 17, 2, 2, 647, 649, 5, 98, 50, 2, 648, 647, 3, 2, 2, 2, 649, 652, 3, 2, 2, 2, 650, 648, 3, 2, 2, 2, 650, 651, 3, 2, 2, 2, 651, 653, 3, 2, 2, 2, 652, 650, 3, 2, 2, 2, 653, 654, 7, 19, 2, 2, 654, 97, 3, 2, 2, 2, 655, 671, 5, 102, 52, 2, 656, 671, 5, 104, 53, 2, 657, 671, 5, 108, 55, 2, 658, 671, 5, 114, 58, 2, 659, 671, 5, 96, 49, 2, 660, 671, 5, 116, 59, 2, 661, 671, 5, 120, 61, 2, 662, 671, 5, 122, 62, 2, 663, 671, 5, 124, 63, 2, 664, 671, 5, 126, 64, 2, 665, 671, 5, 128, 65, 2, 666, 671, 5, 130, 66, 2, 667, 671, 5, 110, 56, 2, 668, 671, 5, 112, 57, 2, 669, 671, 5, 132, 67, 2, 670, 655, 3, 2, 2, 2, 670, 656, 3, 2, 2, 2, 670, 657, 3, 2, 2, 2, 670, 658, 3, 2, 2, 2, 670, 659, 3, 2, 2, 2, 670, 660, 3, 2, 2, 2, 670, 661, 3, 2, 2, 2, 670, 662, 3, 2, 2, 2, 670, 663, 3, 2, 2, 2, 670, 664, 3, 2, 2, 2, 670, 665, 3, 2, 2, 2, 670, 666, 3, 2, 2, 2, 670, 667, 3, 2, 2, 2, 670, 668, 3, 2, 2, 2, 670, 669, 3, 2, 2, 2, 671, 99, 3, 2, 2, 2, 672, 673, 5, 142, 72, 2, 673, 674, 7, 4, 2, 2, 674, 101, 3, 2, 2, 2, 675, 676, 7, 53, 2, 2, 676, 677, 7, 25, 2, 2, 677, 678, 5, 142, 72, 2, 678, 679, 7, 26, 2, 2, 679, 682, 5, 98, 50, 2, 680, 681, 7, 54, 2, 2, 681, 683, 5, 98, 50, 2, 682, 680, 3, 2, 2, 2, 682, 683, 3, 2, 2, 2, 683, 103, 3, 2, 2, 2, 684, 685, 7, 55, 2, 2, 685, 687, 5, 142, 72, 2, 686, 688, 5, 54, 28, 2, 687, 686, 3, 2, 2, 2, 687, 688, 3, 2, 2, 2, 688, 689, 3, 2, 2, 2, 689, 691, 5, 96, 49, 2, 690, 692, 5, 106, 54, 2, 691, 690, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 691, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 105, 3, 2, 2, 2, 695, 700, 7, 56, 2, 2, 696, 698, 5, 196, 99, 2, 697, 696, 3, 2, 2, 2, 697, 698, 3, 2, 2, 2, 698, 699, 3, 2, 2, 2, 699, 701, 5, 64, 33, 2, 700, 697, 3, 2, 2, 2, 700, 701, 3, 2, 2, 2, 701, 702, 3, 2, 2, 2, 702, 703, 5, 96, 49, 2, 703, 107, 3, 2, 2, 2, 704, 705, 7, 57, 2, 2, 705, 706, 7, 25, 2, 2, 706, 707, 5, 142, 72, 2, 707, 708, 7, 26, 2, 2, 708, 709, 5, 98, 50, 2, 709, 109, 3, 2, 2, 2, 710, 713, 5, 134, 68, 2, 711, 713, 5, 100, 51, 2, 712, 710, 3, 2, 2, 2, 712, 711, 3, 2, 2, 2, 713, 111, 3, 2, 2, 2, 714, 715, 7, 58, 2, 2, 715, 716, 5, 96, 49, 2, 716, 113, 3, 2, 2, 2, 717, 718, 7, 29, 2, 2, 718, 721, 7, 25, 2, 2, 719, 722, 5, 110, 56, 2, 720, 722, 7, 4, 2, 2, 721, 719, 3, 2, 2, 2, 721, 720, 3, 2, 2, 2, 722, 725, 3, 2, 2, 2, 723, 726, 5, 100, 51, 2, 724, 726, 7, 4, 2, 2, 725, 723, 3, 2, 2, 2, 725, 724, 3, 2, 2, 2, 726, 728, 3, 2, 2, 2, 727, 729, 5, 142, 72, 2, 728, 727, 3, 2, 2, 2, 728, 729, 3, 2, 2, 2, 729, 730, 3, 2, 2, 2, 730, 731, 7, 26, 2, 2, 731, 732, 5, 98, 50, 2, 732, 115, 3, 2, 2, 2, 733, 735, 7, 59, 2, 2, 734, 736, 7, 131, 2, 2, 735, 734, 3, 2, 2, 2, 735, 736, 3, 2, 2, 2, 736, 741, 3, 2, 2, 2, 737, 738, 7, 25, 2, 2, 738, 739, 5, 118, 60, 2, 739, 740, 7, 26, 2, 2, 740, 742, 3, 2, 2, 2, 741, 737, 3, 2, 2, 2, 741, 742, 3, 2, 2, 2, 742, 743, 3, 2, 2, 2, 743, 744, 5, 156, 79, 2, 744, 117, 3, 2, 2, 2, 745, 746, 5, 202, 102, 2, 746, 119, 3, 2, 2, 2, 747, 748, 7, 60, 2, 2, 748, 749, 5, 98, 50, 2, 749, 750, 7, 57, 2, 2, 750, 751, 7, 25, 2, 2, 751, 752, 5, 142, 72, 2, 752, 753, 7, 26, 2, 2, 753, 754, 7, 4, 2, 2, 754, 121, 3, 2, 2, 2, 755, 756, 7, 114, 2, 2, 756, 757, 7, 4, 2, 2, 757, 123, 3, 2, 2, 2, 758, 759, 7, 111, 2, 2, 759, 760, 7, 4, 2, 2, 760, 125, 3, 2, 2, 2, 761, 763, 7, 61, 2, 2, 762, 764, 5, 142, 72, 2, 763, 762, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 765, 3, 2, 2, 2, 765, 766, 7, 4, 2, 2, 766, 127, 3, 2, 2, 2, 767, 768, 7, 62, 2, 2, 768, 769, 7, 4, 2, 2, 769, 129, 3, 2, 2, 2, 770, 771, 7, 63, 2, 2, 771, 772, 5, 154, 78, 2, 772, 773, 7, 4, 2, 2, 773, 131, 3, 2, 2, 2, 774, 775, 7, 64, 2, 2, 775, 776, 5, 154, 78, 2, 776, 777, 7, 4, 2, 2, 777, 133, 3, 2, 2, 2, 778, 779, 7, 65, 2, 2, 779, 786, 5, 138, 70, 2, 780, 786, 5, 76, 39, 2, 781, 782, 7, 25, 2, 2, 782, 783, 5, 136, 69, 2, 783, 784, 7, 26, 2, 2, 784, 786, 3, 2, 2, 2, 785, 778, 3, 2, 2, 2, 785, 780, 3, 2, 2, 2, 785, 781, 3, 2, 2, 2, 786, 789, 3, 2, 2, 2, 787, 788, 7, 13, 2, 2, 788, 790, 5, 142, 72, 2, 789, 787, 3, 2, 2, 2, 789, 790, 3, 2, 2, 2, 790, 791, 3, 2, 2, 2, 791, 792, 7, 4, 2, 2, 792, 135, 3, 2, 2, 2, 793, 795, 5, 76, 39, 2, 794, 793, 3, 2, 2, 2, 794, 795, 3, 2, 2, 2, 795, 802, 3, 2, 2, 2, 796, 798, 7, 18, 2, 2, 797, 799, 5, 76, 39, 2, 798, 797, 3, 2, 2, 2, 798, 799, 3, 2, 2, 2, 799, 801, 3, 2, 2, 2, 800, 796, 3, 2, 2, 2, 801, 804, 3, 2, 2, 2, 802, 800, 3, 2, 2, 2, 802, 803, 3, 2, 2, 2, 803, 137, 3, 2, 2, 2, 804, 802, 3, 2, 2, 2, 805, 812, 7, 25, 2, 2, 806, 808, 5, 196, 99, 2, 807, 806, 3, 2, 2, 2, 807, 808, 3, 2, 2, 2, 808, 809, 3, 2, 2, 2, 809, 811, 7, 18, 2, 2, 810, 807, 3, 2, 2, 2, 811, 814, 3, 2, 2, 2, 812, 810, 3, 2, 2, 2, 812, 813, 3, 2, 2, 2, 813, 816, 3, 2, 2, 2, 814, 812, 3, 2, 2, 2, 815, 817, 5, 196, 99, 2, 816, 815, 3, 2, 2, 2, 816, 817, 3, 2, 2, 2, 817, 818, 3, 2, 2, 2, 818, 819, 7, 26, 2, 2, 819, 139, 3, 2, 2, 2, 820, 821, 9, 7, 2, 2, 821, 141, 3, 2, 2, 2, 822, 823, 8, 72, 1, 2, 823, 824, 7, 71, 2, 2, 824, 841, 5, 78, 40, 2, 825, 826, 7, 25, 2, 2, 826, 827, 5, 142, 72, 2, 827, 828, 7, 26, 2, 2, 828, 841, 3, 2, 2, 2, 829, 830, 9, 8, 2, 2, 830, 841, 5, 142, 72, 21, 831, 832, 9, 9, 2, 2, 832, 841, 5, 142, 72, 20, 833, 834, 7, 73, 2, 2, 834, 841, 5, 142, 72, 19, 835, 836, 7, 74, 2, 2, 836, 841, 5, 142, 72, 18, 837, 838, 7, 8, 2, 2, 838, 841, 5, 142, 72, 17, 839, 841, 5, 144, 73, 2, 840, 822, 3, 2, 2, 2, 840, 825, 3, 2, 2, 2, 840, 829, 3, 2, 2, 2, 840, 831, 3, 2, 2, 2, 840, 833, 3, 2, 2, 2, 840, 835, 3, 2, 2, 2, 840, 837, 3, 2, 2, 2, 840, 839, 3, 2, 2, 2, 841, 916, 3, 2, 2, 2, 842, 843, 12, 16, 2, 2, 843, 844, 7, 75, 2, 2, 844, 915, 5, 142, 72, 16, 845, 846, 12, 15, 2, 2, 846, 847, 9, 10, 2, 2, 847, 915, 5, 142, 72, 16, 848, 849, 12, 14, 2, 2, 849, 850, 9, 9, 2, 2, 850, 915, 5, 142, 72, 15, 851, 852, 12, 13, 2, 2, 852, 853, 9, 11, 2, 2, 853, 915, 5, 142, 72, 14, 854, 855, 12, 12, 2, 2, 855, 856, 7, 31, 2, 2, 856, 915, 5, 142, 72, 13, 857, 858, 12, 11, 2, 2, 858, 859, 7, 7, 2, 2, 859, 915, 5, 142, 72, 12, 860, 861, 12, 10, 2, 2, 861, 862, 7, 30, 2, 2, 862, 915, 5, 142, 72, 11, 863, 864, 12, 9, 2, 2, 864, 865, 9, 12, 2, 2, 865, 915, 5, 142, 72, 10, 866, 867, 12, 8, 2, 2, 867, 868, 9, 13, 2, 2, 868, 915, 5, 142, 72, 9, 869, 870, 12, 7, 2, 2, 870, 871, 7, 78, 2, 2, 871, 915, 5, 142, 72, 8, 872, 873, 12, 6, 2, 2, 873, 874, 7, 6, 2, 2, 874, 915, 5, 142, 72, 7, 875, 876, 12, 5, 2, 2, 876, 877, 7, 79, 2, 2, 877, 878, 5, 142, 72, 2, 878, 879, 7, 72, 2, 2, 879, 880, 5, 142, 72, 5, 880, 915, 3, 2, 2, 2, 881, 882, 12, 4, 2, 2, 882, 883, 9, 14, 2, 2, 883, 915, 5, 142, 72, 5, 884, 885, 12, 29, 2, 2, 885, 915, 9, 8, 2, 2, 886, 887, 12, 27, 2, 2, 887, 888, 7, 44, 2, 2, 888, 889, 5, 142, 72, 2, 889, 890, 7, 45, 2, 2, 890, 915, 3, 2, 2, 2, 891, 892, 12, 26, 2, 2, 892, 894, 7, 44, 2, 2, 893, 895, 5, 142, 72, 2, 894, 893, 3, 2, 2, 2, 894, 895, 3, 2, 2, 2, 895, 896, 3, 2, 2, 2, 896, 898, 7, 72, 2, 2, 897, 899, 5, 142, 72, 2, 898, 897, 3, 2, 2, 2, 898, 899, 3, 2, 2, 2, 899, 900, 3, 2, 2, 2, 900, 915, 7, 45, 2, 2, 901, 902, 12, 25, 2, 2, 902, 903, 7, 47, 2, 2, 903, 915, 5, 196, 99, 2, 904, 905, 12, 24, 2, 2, 905, 906, 7, 17, 2, 2, 906, 907, 5, 148, 75, 2, 907, 908, 7, 19, 2, 2, 908, 915, 3, 2, 2, 2, 909, 910, 12, 23, 2, 2, 910, 911, 7, 25, 2, 2, 911, 912, 5, 152, 77, 2, 912, 913, 7, 26, 2, 2, 913, 915, 3, 2, 2, 2, 914, 842, 3, 2, 2, 2, 914, 845, 3, 2, 2, 2, 914, 848, 3, 2, 2, 2, 914, 851, 3, 2, 2, 2, 914, 854, 3, 2, 2, 2, 914, 857, 3, 2, 2, 2, 914, 860, 3, 2, 2, 2, 914, 863, 3, 2, 2, 2, 914, 866, 3, 2, 2, 2, 914, 869, 3, 2, 2, 2, 914, 872, 3, 2, 2, 2, 914, 875, 3, 2, 2, 2, 914, 881, 3, 2, 2, 2, 914, 884, 3, 2, 2, 2, 914, 886, 3, 2, 2, 2, 914, 891, 3, 2, 2, 2, 914, 901, 3, 2, 2, 2, 914, 904, 3, 2, 2, 2, 914, 909, 3, 2, 2, 2, 915, 918, 3, 2, 2, 2, 916, 914, 3, 2, 2, 2, 916, 917, 3, 2, 2, 2, 917, 143, 3, 2, 2, 2, 918, 916, 3, 2, 2, 2, 919, 929, 7, 104, 2, 2, 920, 929, 5, 194, 98, 2, 921, 929, 5, 198, 100, 2, 922, 929, 5, 202, 102, 2, 923, 929, 5, 196, 99, 2, 924, 929, 7, 124, 2, 2, 925, 929, 7, 119, 2, 2, 926, 929, 5, 192, 97, 2, 927, 929, 5, 78, 40, 2, 928, 919, 3, 2, 2, 2, 928, 920, 3, 2, 2, 2, 928, 921, 3, 2, 2, 2, 928, 922, 3, 2, 2, 2, 928, 923, 3, 2, 2, 2, 928, 924, 3, 2, 2, 2, 928, 925, 3, 2, 2, 2, 928, 926, 3, 2, 2, 2, 928, 927, 3, 2, 2, 2, 929, 145, 3, 2, 2, 2, 930, 935, 5, 142, 72, 2, 931, 932, 7, 18, 2, 2, 932, 934, 5, 142, 72, 2, 933, 931, 3, 2, 2, 2, 934, 937, 3, 2, 2, 2, 935, 933, 3, 2, 2, 2, 935, 936, 3, 2, 2, 2, 936, 147, 3, 2, 2, 2, 937, 935, 3, 2, 2, 2, 938, 943, 5, 150, 76, 2, 939, 940, 7, 18, 2, 2, 940, 942, 5, 150, 76, 2, 941, 939, 3, 2, 2, 2, 942, 945, 3, 2, 2, 2, 943, 941, 3, 2, 2, 2, 943, 944, 3, 2, 2, 2, 944, 947, 3, 2, 2, 2, 945, 943, 3, 2, 2, 2, 946, 948, 7, 18, 2, 2, 947, 946, 3, 2, 2, 2, 947, 948, 3, 2, 2, 2, 948, 149, 3, 2, 2, 2, 949, 950, 5, 196, 99, 2, 950, 951, 7, 72, 2, 2, 951, 952, 5, 142, 72, 2, 952, 151, 3, 2, 2, 2, 953, 955, 7, 17, 2, 2, 954, 956, 5, 148, 75, 2, 955, 954, 3, 2, 2, 2, 955, 956, 3, 2, 2, 2, 956, 957, 3, 2, 2, 2, 957, 962, 7, 19, 2, 2, 958, 960, 5, 146, 74, 2, 959, 958, 3, 2, 2, 2, 959, 960, 3, 2, 2, 2, 960, 962, 3, 2, 2, 2, 961, 953, 3, 2, 2, 2, 961, 959, 3, 2, 2, 2, 962, 153, 3, 2, 2, 2, 963, 964, 5, 142, 72, 2, 964, 965, 7, 25, 2, 2, 965, 966, 5, 152, 77, 2, 966, 967, 7, 26, 2, 2, 967, 155, 3, 2, 2, 2, 968, 972, 7, 17, 2, 2, 969, 971, 5, 158, 80, 2, 970, 969, 3, 2, 2, 2, 971, 974, 3, 2, 2, 2, 972, 970, 3, 2, 2, 2, 972, 973, 3, 2, 2, 2, 973, 975, 3, 2, 2, 2, 974, 972, 3, 2, 2, 2, 975, 976, 7, 19, 2, 2, 976, 157, 3, 2, 2, 2, 977, 995, 5, 196, 99, 2, 978, 995, 5, 156, 79, 2, 979, 995, 5, 160, 81, 2, 980, 995, 5, 166, 84, 2, 981, 995, 5, 168, 85, 2, 982, 995, 5, 174, 88, 2, 983, 995, 5, 176, 89, 2, 984, 995, 5, 178, 90, 2, 985, 995, 5, 182, 92, 2, 986, 995, 5, 186, 94, 2, 987, 995, 5, 188, 95, 2, 988, 995, 7, 111, 2, 2, 989, 995, 7, 114, 2, 2, 990, 995, 7, 115, 2, 2, 991, 995, 5, 194, 98, 2, 992, 995, 5, 202, 102, 2, 993, 995, 5, 198, 100, 2, 994, 977, 3, 2, 2, 2, 994, 978, 3, 2, 2, 2, 994, 979, 3, 2, 2, 2, 994, 980, 3, 2, 2, 2, 994, 981, 3, 2, 2, 2, 994, 982, 3, 2, 2, 2, 994, 983, 3, 2, 2, 2, 994, 984, 3, 2, 2, 2, 994, 985, 3, 2, 2, 2, 994, 986, 3, 2, 2, 2, 994, 987, 3, 2, 2, 2, 994, 988, 3, 2, 2, 2, 994, 989, 3, 2, 2, 2, 994, 990, 3, 2, 2, 2, 994, 991, 3, 2, 2, 2, 994, 992, 3, 2, 2, 2, 994, 993, 3, 2, 2, 2, 995, 159, 3, 2, 2, 2, 996, 1000, 5, 164, 83, 2, 997, 1000, 5, 190, 96, 2, 998, 1000, 5, 162, 82, 2, 999, 996, 3, 2, 2, 2, 999, 997, 3, 2, 2, 2, 999, 998, 3, 2, 2, 2, 1000, 161, 3, 2, 2, 2, 1001, 1002, 5, 196, 99, 2, 1002, 1003, 7, 47, 2, 2, 1003, 1004, 5, 196, 99, 2, 1004, 163, 3, 2, 2, 2, 1005, 1010, 7, 61, 2, 2, 1006, 1010, 7, 46, 2, 2, 1007, 1010, 7, 68, 2, 2, 1008, 1010, 5, 196, 99, 2, 1009, 1005, 3, 2, 2, 2, 1009, 1006, 3, 2, 2, 2, 1009, 1007, 3, 2, 2, 2, 1009, 1008, 3, 2, 2, 2, 1010, 1023, 3, 2, 2, 2, 1011, 1013, 7, 25, 2, 2, 1012, 1014, 5, 160, 81, 2, 1013, 1012, 3, 2, 2, 2, 1013, 1014, 3, 2, 2, 2, 1014, 1019, 3, 2, 2, 2, 1015, 1016, 7, 18, 2, 2, 1016, 1018, 5, 160, 81, 2, 1017, 1015, 3, 2, 2, 2, 1018, 1021, 3, 2, 2, 2, 1019, 1017, 3, 2, 2, 2, 1019, 1020, 3, 2, 2, 2, 1020, 1022, 3, 2, 2, 2, 1021, 1019, 3, 2, 2, 2, 1022, 1024, 7, 26, 2, 2, 1023, 1011, 3, 2, 2, 2, 1023, 1024, 3, 2, 2, 2, 1024, 165, 3, 2, 2, 2, 1025, 1026, 7, 90, 2, 2, 1026, 1029, 5, 170, 86, 2, 1027, 1028, 7, 91, 2, 2, 1028, 1030, 5, 160, 81, 2, 1029, 1027, 3, 2, 2, 2, 1029, 1030, 3, 2, 2, 2, 1030, 167, 3, 2, 2, 2, 1031, 1032, 5, 170, 86, 2, 1032, 1033, 7, 91, 2, 2, 1033, 1034, 5, 160, 81, 2, 1034, 169, 3, 2, 2, 2, 1035, 1043, 5, 196, 99, 2, 1036, 1043, 5, 162, 82, 2, 1037, 1043, 5, 172, 87, 2, 1038, 1039, 7, 25, 2, 2, 1039, 1040, 5, 172, 87, 2, 1040, 1041, 7, 26, 2, 2, 1041, 1043, 3, 2, 2, 2, 1042, 1035, 3, 2, 2, 2, 1042, 1036, 3, 2, 2, 2, 1042, 1037, 3, 2, 2, 2, 1042, 1038, 3, 2, 2, 2, 1043, 171, 3, 2, 2, 2, 1044, 1049, 5, 196, 99, 2, 1045, 1046, 7, 18, 2, 2, 1046, 1048, 5, 196, 99, 2, 1047, 1045, 3, 2, 2, 2, 1048, 1051, 3, 2, 2, 2, 1049, 1047, 3, 2, 2, 2, 1049, 1050, 3, 2, 2, 2, 1050, 173, 3, 2, 2, 2, 1051, 1049, 3, 2, 2, 2, 1052, 1053, 5, 160, 81, 2, 1053, 1054, 7, 92, 2, 2, 1054, 1055, 5, 196, 99, 2, 1055, 175, 3, 2, 2, 2, 1056, 1057, 5, 196, 99, 2, 1057, 1058, 7, 72, 2, 2, 1058, 177, 3, 2, 2, 2, 1059, 1060, 7, 93, 2, 2, 1060, 1064, 5, 160, 81, 2, 1061, 1063, 5, 180, 91, 2, 1062, 1061, 3, 2, 2, 2, 1063, 1066, 3, 2, 2, 2, 1064, 1062, 3, 2, 2, 2, 1064, 1065, 3, 2, 2, 2, 1065, 179, 3, 2, 2, 2, 1066, 1064, 3, 2, 2, 2, 1067, 1068, 7, 94, 2, 2, 1068, 1069, 5, 190, 96, 2, 1069, 1070, 5, 156, 79, 2, 1070, 1074, 3, 2, 2, 2, 1071, 1072, 7, 95, 2, 2, 1072, 1074, 5, 156, 79, 2, 1073, 1067, 3, 2, 2, 2, 1073, 1071, 3, 2, 2, 2, 1074, 181, 3, 2, 2, 2, 1075, 1076, 7, 40, 2, 2, 1076, 1077, 5, 196, 99, 2, 1077, 1079, 7, 25, 2, 2, 1078, 1080, 5, 172, 87, 2, 1079, 1078, 3, 2, 2, 2, 1079, 1080, 3, 2, 2, 2, 1080, 1081, 3, 2, 2, 2, 1081, 1083, 7, 26, 2, 2, 1082, 1084, 5, 184, 93, 2, 1083, 1082, 3, 2, 2, 2, 1083, 1084, 3, 2, 2, 2, 1084, 1085, 3, 2, 2, 2, 1085, 1086, 5, 156, 79, 2, 1086, 183, 3, 2, 2, 2, 1087, 1088, 7, 96, 2, 2, 1088, 1089, 5, 172, 87, 2, 1089, 185, 3, 2, 2, 2, 1090, 1093, 7, 29, 2, 2, 1091, 1094, 5, 156, 79, 2, 1092, 1094, 5, 160, 81, 2, 1093, 1091, 3, 2, 2, 2, 1093, 1092, 3, 2, 2, 2, 1094, 1095, 3, 2, 2, 2, 1095, 1098, 5, 160, 81, 2, 1096, 1099, 5, 156, 79, 2, 1097, 1099, 5, 160, 81, 2, 1098, 1096, 3, 2, 2, 2, 1098, 1097, 3, 2, 2, 2, 1099, 1100, 3, 2, 2, 2, 1100, 1101, 5, 156, 79, 2, 1101, 187, 3, 2, 2, 2, 1102, 1103, 7, 53, 2, 2, 1103, 1104, 5, 160, 81, 2, 1104, 1105, 5, 156, 79, 2, 1105, 189, 3, 2, 2, 2, 1106, 1112, 5, 202, 102, 2, 1107, 1112, 7, 105, 2, 2, 1108, 1112, 7, 106, 2, 2, 1109, 1112, 5, 198, 100, 2, 1110, 1112, 7, 104, 2, 2, 1111, 1106, 3, 2, 2, 2, 1111, 1107, 3, 2, 2, 2, 1111, 1108, 3, 2, 2, 2, 1111, 1109, 3, 2, 2, 2, 1111, 1110, 3, 2, 2, 2, 1112, 191, 3, 2, 2, 2, 1113, 1115, 7, 25, 2, 2, 1114, 1116, 5, 142, 72, 2, 1115, 1114, 3, 2, 2, 2, 1115, 1116, 3, 2, 2, 2, 1116, 1123, 3, 2, 2, 2, 1117, 1119, 7, 18, 2, 2, 1118, 1120, 5, 142, 72, 2, 1119, 1118, 3, 2, 2, 2, 1119, 1120, 3, 2, 2, 2, 1120, 1122, 3, 2, 2, 2, 1121, 1117, 3, 2, 2, 2, 1122, 1125, 3, 2, 2, 2, 1123, 1121, 3, 2, 2, 2, 1123, 1124, 3, 2, 2, 2, 1124, 1126, 3, 2, 2, 2, 1125, 1123, 3, 2, 2, 2, 1126, 1140, 7, 26, 2, 2, 1127, 1136, 7, 44, 2, 2, 1128, 1133, 5, 142, 72, 2, 1129, 1130, 7, 18, 2, 2, 1130, 1132, 5, 142, 72, 2, 1131, 1129, 3, 2, 2, 2, 1132, 1135, 3, 2, 2, 2, 1133, 1131, 3, 2, 2, 2, 1133, 1134, 3, 2, 2, 2, 1134, 1137, 3, 2, 2, 2, 1135, 1133, 3, 2, 2, 2, 1136, 1128, 3, 2, 2, 2, 1136, 1137, 3, 2, 2, 2, 1137, 1138, 3, 2, 2, 2, 1138, 1140, 7, 45, 2, 2, 1139, 1113, 3, 2, 2, 2, 1139, 1127, 3, 2, 2, 2, 1140, 193, 3, 2, 2, 2, 1141, 1143, 9, 15, 2, 2, 1142, 1144, 7, 107, 2, 2, 1143, 1142, 3, 2, 2, 2, 1143, 1144, 3, 2, 2, 2, 1144, 195, 3, 2, 2, 2, 1145, 1146, 9, 16, 2, 2, 1146, 197, 3, 2, 2, 2, 1147, 1149, 7, 108, 2, 2, 1148, 1147, 3, 2, 2, 2, 1149, 1150, 3, 2, 2, 2, 1150, 1148, 3, 2, 2, 2, 1150, 1151, 3, 2, 2, 2, 1151, 199, 3, 2, 2, 2, 1152, 1164, 7, 98, 2, 2, 1153, 1154, 7, 25, 2, 2, 1154, 1159, 5, 80, 41, 2, 1155, 1156, 7, 18, 2, 2, 1156, 1158, 5, 80, 41, 2, 1157, 1155, 3, 2, 2, 2, 1158, 1161, 3, 2, 2, 2, 1159, 1157, 3, 2, 2, 2, 1159, 1160, 3, 2, 2, 2, 1160, 1162, 3, 2, 2, 2, 1161, 1159, 3, 2, 2, 2, 1162, 1163, 7, 26, 2, 2, 1163, 1165, 3, 2, 2, 2, 1164, 1153, 3, 2, 2, 2, 1164, 1165, 3, 2, 2, 2, 1165, 201, 3, 2, 2, 2, 1166, 1168, 7, 131, 2, 2, 1167, 1166, 3, 2, 2, 2, 1168, 1169, 3, 2, 2, 2, 1169, 1167, 3, 2, 2, 2, 1169, 1170, 3, 2, 2, 2, 1170, 203, 3, 2, 2, 2, 132, 215, 217, 232, 236, 241, 247, 251, 254, 259, 265, 272, 276, 289, 297, 302, 312, 315, 321, 329, 332, 343, 352, 354, 360, 387, 390, 401, 406, 411, 425, 428, 435, 439, 441, 446, 451, 454, 460, 464, 468, 473, 486, 488, 495, 505, 511, 522, 525, 531, 534, 542, 545, 551, 554, 562, 565, 571, 575, 586, 591, 596, 604, 609, 615, 620, 633, 635, 640, 650, 670, 682, 687, 693, 697, 700, 712, 721, 725, 728, 735, 741, 763, 785, 789, 794, 798, 802, 807, 812, 816, 840, 894, 898, 914, 916, 928, 935, 943, 947, 955, 959, 961, 972, 994, 999, 1009, 1013, 1019, 1023, 1029, 1042, 1049, 1064, 1073, 1079, 1083, 1093, 1098, 1111, 1115, 1119, 1123, 1133, 1136, 1139, 1143, 1150, 1159, 1164, 1169] \ No newline at end of file +[4, 1, 133, 1170, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 214, 8, 0, 10, 0, 12, 0, 217, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 231, 8, 3, 1, 4, 1, 4, 3, 4, 235, 8, 4, 1, 4, 5, 4, 238, 8, 4, 10, 4, 12, 4, 241, 9, 4, 1, 5, 1, 5, 1, 6, 3, 6, 246, 8, 6, 1, 6, 1, 6, 3, 6, 250, 8, 6, 1, 6, 3, 6, 253, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 258, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 264, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 271, 8, 8, 1, 8, 1, 8, 3, 8, 275, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 286, 8, 8, 10, 8, 12, 8, 289, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 296, 8, 8, 1, 9, 1, 9, 1, 10, 3, 10, 301, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 309, 8, 10, 10, 10, 12, 10, 312, 9, 10, 3, 10, 314, 8, 10, 1, 10, 1, 10, 5, 10, 318, 8, 10, 10, 10, 12, 10, 321, 9, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 328, 8, 11, 1, 11, 3, 11, 331, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 342, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 351, 8, 13, 10, 13, 12, 13, 354, 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 359, 8, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 386, 8, 17, 1, 17, 3, 17, 389, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 398, 8, 18, 10, 18, 12, 18, 401, 9, 18, 1, 18, 1, 18, 3, 18, 405, 8, 18, 1, 19, 1, 19, 1, 19, 3, 19, 410, 8, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 422, 8, 21, 10, 21, 12, 21, 425, 9, 21, 3, 21, 427, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 3, 22, 434, 8, 22, 1, 22, 1, 22, 5, 22, 438, 8, 22, 10, 22, 12, 22, 441, 9, 22, 1, 22, 1, 22, 3, 22, 445, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 450, 8, 23, 1, 23, 3, 23, 453, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 459, 8, 24, 1, 24, 1, 24, 3, 24, 463, 8, 24, 1, 25, 1, 25, 3, 25, 467, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 472, 8, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 485, 8, 27, 10, 27, 12, 27, 488, 9, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 494, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 504, 8, 30, 1, 30, 1, 30, 5, 30, 508, 8, 30, 10, 30, 12, 30, 511, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 519, 8, 31, 10, 31, 12, 31, 522, 9, 31, 3, 31, 524, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 530, 8, 32, 1, 32, 3, 32, 533, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 539, 8, 33, 10, 33, 12, 33, 542, 9, 33, 3, 33, 544, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 550, 8, 34, 1, 34, 3, 34, 553, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 559, 8, 35, 10, 35, 12, 35, 562, 9, 35, 3, 35, 564, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 570, 8, 36, 1, 37, 1, 37, 3, 37, 574, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 585, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 590, 8, 38, 1, 38, 5, 38, 593, 8, 38, 10, 38, 12, 38, 596, 9, 38, 1, 39, 1, 39, 1, 39, 5, 39, 601, 8, 39, 10, 39, 12, 39, 604, 9, 39, 1, 40, 1, 40, 3, 40, 608, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 614, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 619, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 632, 8, 44, 10, 44, 12, 44, 635, 9, 44, 1, 44, 1, 44, 3, 44, 639, 8, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 5, 47, 647, 8, 47, 10, 47, 12, 47, 650, 9, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 669, 8, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 681, 8, 50, 1, 51, 1, 51, 1, 51, 3, 51, 686, 8, 51, 1, 51, 1, 51, 4, 51, 690, 8, 51, 11, 51, 12, 51, 691, 1, 52, 1, 52, 3, 52, 696, 8, 52, 1, 52, 3, 52, 699, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 711, 8, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 720, 8, 56, 1, 56, 1, 56, 3, 56, 724, 8, 56, 1, 56, 3, 56, 727, 8, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 3, 57, 734, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 740, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 3, 62, 762, 8, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 784, 8, 66, 1, 66, 1, 66, 3, 66, 788, 8, 66, 1, 66, 1, 66, 1, 67, 3, 67, 793, 8, 67, 1, 67, 1, 67, 3, 67, 797, 8, 67, 5, 67, 799, 8, 67, 10, 67, 12, 67, 802, 9, 67, 1, 68, 1, 68, 3, 68, 806, 8, 68, 1, 68, 5, 68, 809, 8, 68, 10, 68, 12, 68, 812, 9, 68, 1, 68, 3, 68, 815, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 839, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 893, 8, 70, 1, 70, 1, 70, 3, 70, 897, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 913, 8, 70, 10, 70, 12, 70, 916, 9, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 927, 8, 71, 1, 72, 1, 72, 1, 72, 5, 72, 932, 8, 72, 10, 72, 12, 72, 935, 9, 72, 1, 73, 1, 73, 1, 73, 5, 73, 940, 8, 73, 10, 73, 12, 73, 943, 9, 73, 1, 73, 3, 73, 946, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 954, 8, 75, 1, 75, 1, 75, 3, 75, 958, 8, 75, 3, 75, 960, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 5, 77, 969, 8, 77, 10, 77, 12, 77, 972, 9, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 993, 8, 78, 1, 79, 1, 79, 1, 79, 3, 79, 998, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1008, 8, 81, 1, 81, 1, 81, 3, 81, 1012, 8, 81, 1, 81, 1, 81, 5, 81, 1016, 8, 81, 10, 81, 12, 81, 1019, 9, 81, 1, 81, 3, 81, 1022, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 1028, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1041, 8, 84, 1, 85, 1, 85, 1, 85, 5, 85, 1046, 8, 85, 10, 85, 12, 85, 1049, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 5, 88, 1061, 8, 88, 10, 88, 12, 88, 1064, 9, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1072, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1078, 8, 90, 1, 90, 1, 90, 3, 90, 1082, 8, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 1092, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1097, 8, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1110, 8, 94, 1, 95, 1, 95, 3, 95, 1114, 8, 95, 1, 95, 1, 95, 3, 95, 1118, 8, 95, 5, 95, 1120, 8, 95, 10, 95, 12, 95, 1123, 9, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 5, 95, 1130, 8, 95, 10, 95, 12, 95, 1133, 9, 95, 3, 95, 1135, 8, 95, 1, 95, 3, 95, 1138, 8, 95, 1, 96, 1, 96, 3, 96, 1142, 8, 96, 1, 97, 1, 97, 1, 98, 4, 98, 1147, 8, 98, 11, 98, 12, 98, 1148, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 1156, 8, 99, 10, 99, 12, 99, 1159, 9, 99, 1, 99, 1, 99, 3, 99, 1163, 8, 99, 1, 100, 4, 100, 1166, 8, 100, 11, 100, 12, 100, 1167, 1, 100, 0, 2, 76, 140, 101, 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, 0, 15, 1, 0, 5, 11, 1, 0, 19, 21, 3, 0, 3, 3, 5, 10, 28, 35, 1, 0, 48, 50, 4, 0, 110, 110, 117, 117, 121, 121, 123, 123, 3, 0, 44, 44, 63, 66, 97, 101, 1, 0, 67, 68, 1, 0, 30, 31, 2, 0, 3, 3, 32, 33, 1, 0, 74, 75, 1, 0, 7, 10, 1, 0, 34, 35, 2, 0, 11, 11, 78, 87, 1, 0, 103, 104, 10, 0, 14, 14, 25, 25, 44, 44, 50, 50, 62, 62, 95, 95, 113, 113, 117, 117, 124, 125, 127, 128, 1299, 0, 215, 1, 0, 0, 0, 2, 220, 1, 0, 0, 0, 4, 225, 1, 0, 0, 0, 6, 230, 1, 0, 0, 0, 8, 232, 1, 0, 0, 0, 10, 242, 1, 0, 0, 0, 12, 252, 1, 0, 0, 0, 14, 254, 1, 0, 0, 0, 16, 295, 1, 0, 0, 0, 18, 297, 1, 0, 0, 0, 20, 300, 1, 0, 0, 0, 22, 324, 1, 0, 0, 0, 24, 341, 1, 0, 0, 0, 26, 343, 1, 0, 0, 0, 28, 362, 1, 0, 0, 0, 30, 369, 1, 0, 0, 0, 32, 374, 1, 0, 0, 0, 34, 380, 1, 0, 0, 0, 36, 404, 1, 0, 0, 0, 38, 406, 1, 0, 0, 0, 40, 411, 1, 0, 0, 0, 42, 413, 1, 0, 0, 0, 44, 430, 1, 0, 0, 0, 46, 446, 1, 0, 0, 0, 48, 454, 1, 0, 0, 0, 50, 471, 1, 0, 0, 0, 52, 473, 1, 0, 0, 0, 54, 486, 1, 0, 0, 0, 56, 489, 1, 0, 0, 0, 58, 497, 1, 0, 0, 0, 60, 499, 1, 0, 0, 0, 62, 514, 1, 0, 0, 0, 64, 527, 1, 0, 0, 0, 66, 534, 1, 0, 0, 0, 68, 547, 1, 0, 0, 0, 70, 554, 1, 0, 0, 0, 72, 567, 1, 0, 0, 0, 74, 571, 1, 0, 0, 0, 76, 584, 1, 0, 0, 0, 78, 597, 1, 0, 0, 0, 80, 607, 1, 0, 0, 0, 82, 609, 1, 0, 0, 0, 84, 622, 1, 0, 0, 0, 86, 624, 1, 0, 0, 0, 88, 626, 1, 0, 0, 0, 90, 640, 1, 0, 0, 0, 92, 642, 1, 0, 0, 0, 94, 644, 1, 0, 0, 0, 96, 668, 1, 0, 0, 0, 98, 670, 1, 0, 0, 0, 100, 673, 1, 0, 0, 0, 102, 682, 1, 0, 0, 0, 104, 693, 1, 0, 0, 0, 106, 702, 1, 0, 0, 0, 108, 710, 1, 0, 0, 0, 110, 712, 1, 0, 0, 0, 112, 715, 1, 0, 0, 0, 114, 731, 1, 0, 0, 0, 116, 743, 1, 0, 0, 0, 118, 745, 1, 0, 0, 0, 120, 753, 1, 0, 0, 0, 122, 756, 1, 0, 0, 0, 124, 759, 1, 0, 0, 0, 126, 765, 1, 0, 0, 0, 128, 768, 1, 0, 0, 0, 130, 772, 1, 0, 0, 0, 132, 783, 1, 0, 0, 0, 134, 792, 1, 0, 0, 0, 136, 803, 1, 0, 0, 0, 138, 818, 1, 0, 0, 0, 140, 838, 1, 0, 0, 0, 142, 926, 1, 0, 0, 0, 144, 928, 1, 0, 0, 0, 146, 936, 1, 0, 0, 0, 148, 947, 1, 0, 0, 0, 150, 959, 1, 0, 0, 0, 152, 961, 1, 0, 0, 0, 154, 966, 1, 0, 0, 0, 156, 992, 1, 0, 0, 0, 158, 997, 1, 0, 0, 0, 160, 999, 1, 0, 0, 0, 162, 1007, 1, 0, 0, 0, 164, 1023, 1, 0, 0, 0, 166, 1029, 1, 0, 0, 0, 168, 1040, 1, 0, 0, 0, 170, 1042, 1, 0, 0, 0, 172, 1050, 1, 0, 0, 0, 174, 1054, 1, 0, 0, 0, 176, 1057, 1, 0, 0, 0, 178, 1071, 1, 0, 0, 0, 180, 1073, 1, 0, 0, 0, 182, 1085, 1, 0, 0, 0, 184, 1088, 1, 0, 0, 0, 186, 1100, 1, 0, 0, 0, 188, 1109, 1, 0, 0, 0, 190, 1137, 1, 0, 0, 0, 192, 1139, 1, 0, 0, 0, 194, 1143, 1, 0, 0, 0, 196, 1146, 1, 0, 0, 0, 198, 1150, 1, 0, 0, 0, 200, 1165, 1, 0, 0, 0, 202, 214, 3, 2, 1, 0, 203, 214, 3, 16, 8, 0, 204, 214, 3, 20, 10, 0, 205, 214, 3, 60, 30, 0, 206, 214, 3, 56, 28, 0, 207, 214, 3, 42, 21, 0, 208, 214, 3, 48, 24, 0, 209, 214, 3, 28, 14, 0, 210, 214, 3, 30, 15, 0, 211, 214, 3, 32, 16, 0, 212, 214, 3, 34, 17, 0, 213, 202, 1, 0, 0, 0, 213, 203, 1, 0, 0, 0, 213, 204, 1, 0, 0, 0, 213, 205, 1, 0, 0, 0, 213, 206, 1, 0, 0, 0, 213, 207, 1, 0, 0, 0, 213, 208, 1, 0, 0, 0, 213, 209, 1, 0, 0, 0, 213, 210, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 212, 1, 0, 0, 0, 214, 217, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 218, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 218, 219, 5, 0, 0, 1, 219, 1, 1, 0, 0, 0, 220, 221, 5, 1, 0, 0, 221, 222, 3, 4, 2, 0, 222, 223, 3, 6, 3, 0, 223, 224, 5, 2, 0, 0, 224, 3, 1, 0, 0, 0, 225, 226, 3, 194, 97, 0, 226, 5, 1, 0, 0, 0, 227, 231, 5, 3, 0, 0, 228, 231, 3, 8, 4, 0, 229, 231, 3, 140, 70, 0, 230, 227, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 230, 229, 1, 0, 0, 0, 231, 7, 1, 0, 0, 0, 232, 239, 3, 12, 6, 0, 233, 235, 5, 4, 0, 0, 234, 233, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 3, 12, 6, 0, 237, 234, 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 9, 1, 0, 0, 0, 241, 239, 1, 0, 0, 0, 242, 243, 7, 0, 0, 0, 243, 11, 1, 0, 0, 0, 244, 246, 3, 10, 5, 0, 245, 244, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 253, 5, 130, 0, 0, 248, 250, 3, 10, 5, 0, 249, 248, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 253, 5, 103, 0, 0, 252, 245, 1, 0, 0, 0, 252, 249, 1, 0, 0, 0, 253, 13, 1, 0, 0, 0, 254, 257, 3, 194, 97, 0, 255, 256, 5, 12, 0, 0, 256, 258, 3, 194, 97, 0, 257, 255, 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, 258, 15, 1, 0, 0, 0, 259, 260, 5, 13, 0, 0, 260, 263, 3, 18, 9, 0, 261, 262, 5, 12, 0, 0, 262, 264, 3, 194, 97, 0, 263, 261, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 266, 5, 2, 0, 0, 266, 296, 1, 0, 0, 0, 267, 270, 5, 13, 0, 0, 268, 271, 5, 3, 0, 0, 269, 271, 3, 194, 97, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 273, 5, 12, 0, 0, 273, 275, 3, 194, 97, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 277, 5, 14, 0, 0, 277, 278, 3, 18, 9, 0, 278, 279, 5, 2, 0, 0, 279, 296, 1, 0, 0, 0, 280, 281, 5, 13, 0, 0, 281, 282, 5, 15, 0, 0, 282, 287, 3, 14, 7, 0, 283, 284, 5, 16, 0, 0, 284, 286, 3, 14, 7, 0, 285, 283, 1, 0, 0, 0, 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 290, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 291, 5, 17, 0, 0, 291, 292, 5, 14, 0, 0, 292, 293, 3, 18, 9, 0, 293, 294, 5, 2, 0, 0, 294, 296, 1, 0, 0, 0, 295, 259, 1, 0, 0, 0, 295, 267, 1, 0, 0, 0, 295, 280, 1, 0, 0, 0, 296, 17, 1, 0, 0, 0, 297, 298, 5, 129, 0, 0, 298, 19, 1, 0, 0, 0, 299, 301, 5, 18, 0, 0, 300, 299, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 7, 1, 0, 0, 303, 313, 3, 194, 97, 0, 304, 305, 5, 22, 0, 0, 305, 310, 3, 22, 11, 0, 306, 307, 5, 16, 0, 0, 307, 309, 3, 22, 11, 0, 308, 306, 1, 0, 0, 0, 309, 312, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 313, 304, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 319, 5, 15, 0, 0, 316, 318, 3, 24, 12, 0, 317, 316, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 323, 5, 17, 0, 0, 323, 21, 1, 0, 0, 0, 324, 330, 3, 78, 39, 0, 325, 327, 5, 23, 0, 0, 326, 328, 3, 144, 72, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 331, 5, 24, 0, 0, 330, 325, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 23, 1, 0, 0, 0, 332, 342, 3, 26, 13, 0, 333, 342, 3, 34, 17, 0, 334, 342, 3, 42, 21, 0, 335, 342, 3, 44, 22, 0, 336, 342, 3, 48, 24, 0, 337, 342, 3, 56, 28, 0, 338, 342, 3, 60, 30, 0, 339, 342, 3, 30, 15, 0, 340, 342, 3, 32, 16, 0, 341, 332, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341, 334, 1, 0, 0, 0, 341, 335, 1, 0, 0, 0, 341, 336, 1, 0, 0, 0, 341, 337, 1, 0, 0, 0, 341, 338, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 340, 1, 0, 0, 0, 342, 25, 1, 0, 0, 0, 343, 352, 3, 76, 38, 0, 344, 351, 5, 119, 0, 0, 345, 351, 5, 116, 0, 0, 346, 351, 5, 118, 0, 0, 347, 351, 5, 110, 0, 0, 348, 351, 5, 111, 0, 0, 349, 351, 3, 198, 99, 0, 350, 344, 1, 0, 0, 0, 350, 345, 1, 0, 0, 0, 350, 346, 1, 0, 0, 0, 350, 347, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 350, 349, 1, 0, 0, 0, 351, 354, 1, 0, 0, 0, 352, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 355, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 355, 358, 3, 194, 97, 0, 356, 357, 5, 11, 0, 0, 357, 359, 3, 140, 70, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 361, 5, 2, 0, 0, 361, 27, 1, 0, 0, 0, 362, 363, 3, 76, 38, 0, 363, 364, 5, 110, 0, 0, 364, 365, 3, 194, 97, 0, 365, 366, 5, 11, 0, 0, 366, 367, 3, 140, 70, 0, 367, 368, 5, 2, 0, 0, 368, 29, 1, 0, 0, 0, 369, 370, 5, 25, 0, 0, 370, 371, 3, 194, 97, 0, 371, 372, 3, 62, 31, 0, 372, 373, 5, 2, 0, 0, 373, 31, 1, 0, 0, 0, 374, 375, 5, 122, 0, 0, 375, 376, 3, 194, 97, 0, 376, 377, 5, 22, 0, 0, 377, 378, 3, 138, 69, 0, 378, 379, 5, 2, 0, 0, 379, 33, 1, 0, 0, 0, 380, 381, 5, 26, 0, 0, 381, 382, 3, 36, 18, 0, 382, 385, 5, 27, 0, 0, 383, 386, 5, 3, 0, 0, 384, 386, 3, 76, 38, 0, 385, 383, 1, 0, 0, 0, 385, 384, 1, 0, 0, 0, 386, 388, 1, 0, 0, 0, 387, 389, 5, 124, 0, 0, 388, 387, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 391, 5, 2, 0, 0, 391, 35, 1, 0, 0, 0, 392, 405, 3, 78, 39, 0, 393, 394, 5, 15, 0, 0, 394, 399, 3, 38, 19, 0, 395, 396, 5, 16, 0, 0, 396, 398, 3, 38, 19, 0, 397, 395, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 402, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 402, 403, 5, 17, 0, 0, 403, 405, 1, 0, 0, 0, 404, 392, 1, 0, 0, 0, 404, 393, 1, 0, 0, 0, 405, 37, 1, 0, 0, 0, 406, 409, 3, 78, 39, 0, 407, 408, 5, 12, 0, 0, 408, 410, 3, 40, 20, 0, 409, 407, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 39, 1, 0, 0, 0, 411, 412, 7, 2, 0, 0, 412, 41, 1, 0, 0, 0, 413, 414, 5, 36, 0, 0, 414, 415, 3, 194, 97, 0, 415, 426, 5, 15, 0, 0, 416, 417, 3, 74, 37, 0, 417, 423, 5, 2, 0, 0, 418, 419, 3, 74, 37, 0, 419, 420, 5, 2, 0, 0, 420, 422, 1, 0, 0, 0, 421, 418, 1, 0, 0, 0, 422, 425, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 427, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 426, 416, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 5, 17, 0, 0, 429, 43, 1, 0, 0, 0, 430, 431, 5, 37, 0, 0, 431, 433, 3, 194, 97, 0, 432, 434, 3, 62, 31, 0, 433, 432, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 439, 1, 0, 0, 0, 435, 438, 5, 120, 0, 0, 436, 438, 3, 198, 99, 0, 437, 435, 1, 0, 0, 0, 437, 436, 1, 0, 0, 0, 438, 441, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 444, 1, 0, 0, 0, 441, 439, 1, 0, 0, 0, 442, 445, 5, 2, 0, 0, 443, 445, 3, 94, 47, 0, 444, 442, 1, 0, 0, 0, 444, 443, 1, 0, 0, 0, 445, 45, 1, 0, 0, 0, 446, 452, 3, 194, 97, 0, 447, 449, 5, 23, 0, 0, 448, 450, 3, 144, 72, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 453, 5, 24, 0, 0, 452, 447, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 47, 1, 0, 0, 0, 454, 455, 3, 50, 25, 0, 455, 456, 3, 62, 31, 0, 456, 458, 3, 54, 27, 0, 457, 459, 3, 52, 26, 0, 458, 457, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 462, 1, 0, 0, 0, 460, 463, 5, 2, 0, 0, 461, 463, 3, 94, 47, 0, 462, 460, 1, 0, 0, 0, 462, 461, 1, 0, 0, 0, 463, 49, 1, 0, 0, 0, 464, 466, 5, 38, 0, 0, 465, 467, 3, 194, 97, 0, 466, 465, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 472, 1, 0, 0, 0, 468, 472, 5, 125, 0, 0, 469, 472, 5, 126, 0, 0, 470, 472, 5, 127, 0, 0, 471, 464, 1, 0, 0, 0, 471, 468, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 471, 470, 1, 0, 0, 0, 472, 51, 1, 0, 0, 0, 473, 474, 5, 39, 0, 0, 474, 475, 3, 62, 31, 0, 475, 53, 1, 0, 0, 0, 476, 485, 5, 114, 0, 0, 477, 485, 5, 119, 0, 0, 478, 485, 5, 116, 0, 0, 479, 485, 5, 118, 0, 0, 480, 485, 5, 120, 0, 0, 481, 485, 3, 92, 46, 0, 482, 485, 3, 46, 23, 0, 483, 485, 3, 198, 99, 0, 484, 476, 1, 0, 0, 0, 484, 477, 1, 0, 0, 0, 484, 478, 1, 0, 0, 0, 484, 479, 1, 0, 0, 0, 484, 480, 1, 0, 0, 0, 484, 481, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484, 483, 1, 0, 0, 0, 485, 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 55, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 489, 490, 5, 40, 0, 0, 490, 491, 3, 194, 97, 0, 491, 493, 3, 66, 33, 0, 492, 494, 5, 108, 0, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 496, 5, 2, 0, 0, 496, 57, 1, 0, 0, 0, 497, 498, 3, 194, 97, 0, 498, 59, 1, 0, 0, 0, 499, 500, 5, 41, 0, 0, 500, 501, 3, 194, 97, 0, 501, 503, 5, 15, 0, 0, 502, 504, 3, 58, 29, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 509, 1, 0, 0, 0, 505, 506, 5, 16, 0, 0, 506, 508, 3, 58, 29, 0, 507, 505, 1, 0, 0, 0, 508, 511, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 512, 1, 0, 0, 0, 511, 509, 1, 0, 0, 0, 512, 513, 5, 17, 0, 0, 513, 61, 1, 0, 0, 0, 514, 523, 5, 23, 0, 0, 515, 520, 3, 64, 32, 0, 516, 517, 5, 16, 0, 0, 517, 519, 3, 64, 32, 0, 518, 516, 1, 0, 0, 0, 519, 522, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 524, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 523, 515, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 5, 24, 0, 0, 526, 63, 1, 0, 0, 0, 527, 529, 3, 76, 38, 0, 528, 530, 3, 90, 45, 0, 529, 528, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 532, 1, 0, 0, 0, 531, 533, 3, 194, 97, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 65, 1, 0, 0, 0, 534, 543, 5, 23, 0, 0, 535, 540, 3, 68, 34, 0, 536, 537, 5, 16, 0, 0, 537, 539, 3, 68, 34, 0, 538, 536, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 535, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 5, 24, 0, 0, 546, 67, 1, 0, 0, 0, 547, 549, 3, 76, 38, 0, 548, 550, 5, 115, 0, 0, 549, 548, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 552, 1, 0, 0, 0, 551, 553, 3, 194, 97, 0, 552, 551, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 69, 1, 0, 0, 0, 554, 563, 5, 23, 0, 0, 555, 560, 3, 72, 36, 0, 556, 557, 5, 16, 0, 0, 557, 559, 3, 72, 36, 0, 558, 556, 1, 0, 0, 0, 559, 562, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 564, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 563, 555, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 5, 24, 0, 0, 566, 71, 1, 0, 0, 0, 567, 569, 3, 76, 38, 0, 568, 570, 3, 90, 45, 0, 569, 568, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 73, 1, 0, 0, 0, 571, 573, 3, 76, 38, 0, 572, 574, 3, 90, 45, 0, 573, 572, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 576, 3, 194, 97, 0, 576, 75, 1, 0, 0, 0, 577, 578, 6, 38, -1, 0, 578, 585, 3, 138, 69, 0, 579, 585, 3, 78, 39, 0, 580, 585, 3, 82, 41, 0, 581, 585, 3, 88, 44, 0, 582, 583, 5, 44, 0, 0, 583, 585, 5, 117, 0, 0, 584, 577, 1, 0, 0, 0, 584, 579, 1, 0, 0, 0, 584, 580, 1, 0, 0, 0, 584, 581, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 585, 594, 1, 0, 0, 0, 586, 587, 10, 3, 0, 0, 587, 589, 5, 42, 0, 0, 588, 590, 3, 140, 70, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 593, 5, 43, 0, 0, 592, 586, 1, 0, 0, 0, 593, 596, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 77, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 597, 602, 3, 194, 97, 0, 598, 599, 5, 45, 0, 0, 599, 601, 3, 194, 97, 0, 600, 598, 1, 0, 0, 0, 601, 604, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 79, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 605, 608, 3, 138, 69, 0, 606, 608, 3, 78, 39, 0, 607, 605, 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 81, 1, 0, 0, 0, 609, 610, 5, 46, 0, 0, 610, 611, 5, 23, 0, 0, 611, 613, 3, 80, 40, 0, 612, 614, 3, 84, 42, 0, 613, 612, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 616, 5, 47, 0, 0, 616, 618, 3, 76, 38, 0, 617, 619, 3, 86, 43, 0, 618, 617, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 621, 5, 24, 0, 0, 621, 83, 1, 0, 0, 0, 622, 623, 3, 194, 97, 0, 623, 85, 1, 0, 0, 0, 624, 625, 3, 194, 97, 0, 625, 87, 1, 0, 0, 0, 626, 627, 5, 38, 0, 0, 627, 633, 3, 70, 35, 0, 628, 632, 5, 116, 0, 0, 629, 632, 5, 114, 0, 0, 630, 632, 3, 92, 46, 0, 631, 628, 1, 0, 0, 0, 631, 629, 1, 0, 0, 0, 631, 630, 1, 0, 0, 0, 632, 635, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 638, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 636, 637, 5, 39, 0, 0, 637, 639, 3, 70, 35, 0, 638, 636, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 89, 1, 0, 0, 0, 640, 641, 7, 3, 0, 0, 641, 91, 1, 0, 0, 0, 642, 643, 7, 4, 0, 0, 643, 93, 1, 0, 0, 0, 644, 648, 5, 15, 0, 0, 645, 647, 3, 96, 48, 0, 646, 645, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648, 646, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 651, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651, 652, 5, 17, 0, 0, 652, 95, 1, 0, 0, 0, 653, 669, 3, 100, 50, 0, 654, 669, 3, 102, 51, 0, 655, 669, 3, 106, 53, 0, 656, 669, 3, 112, 56, 0, 657, 669, 3, 94, 47, 0, 658, 669, 3, 114, 57, 0, 659, 669, 3, 118, 59, 0, 660, 669, 3, 120, 60, 0, 661, 669, 3, 122, 61, 0, 662, 669, 3, 124, 62, 0, 663, 669, 3, 126, 63, 0, 664, 669, 3, 128, 64, 0, 665, 669, 3, 108, 54, 0, 666, 669, 3, 110, 55, 0, 667, 669, 3, 130, 65, 0, 668, 653, 1, 0, 0, 0, 668, 654, 1, 0, 0, 0, 668, 655, 1, 0, 0, 0, 668, 656, 1, 0, 0, 0, 668, 657, 1, 0, 0, 0, 668, 658, 1, 0, 0, 0, 668, 659, 1, 0, 0, 0, 668, 660, 1, 0, 0, 0, 668, 661, 1, 0, 0, 0, 668, 662, 1, 0, 0, 0, 668, 663, 1, 0, 0, 0, 668, 664, 1, 0, 0, 0, 668, 665, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 668, 667, 1, 0, 0, 0, 669, 97, 1, 0, 0, 0, 670, 671, 3, 140, 70, 0, 671, 672, 5, 2, 0, 0, 672, 99, 1, 0, 0, 0, 673, 674, 5, 51, 0, 0, 674, 675, 5, 23, 0, 0, 675, 676, 3, 140, 70, 0, 676, 677, 5, 24, 0, 0, 677, 680, 3, 96, 48, 0, 678, 679, 5, 52, 0, 0, 679, 681, 3, 96, 48, 0, 680, 678, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 101, 1, 0, 0, 0, 682, 683, 5, 53, 0, 0, 683, 685, 3, 140, 70, 0, 684, 686, 3, 52, 26, 0, 685, 684, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 689, 3, 94, 47, 0, 688, 690, 3, 104, 52, 0, 689, 688, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 689, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 103, 1, 0, 0, 0, 693, 698, 5, 54, 0, 0, 694, 696, 3, 194, 97, 0, 695, 694, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 699, 3, 62, 31, 0, 698, 695, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, 3, 94, 47, 0, 701, 105, 1, 0, 0, 0, 702, 703, 5, 55, 0, 0, 703, 704, 5, 23, 0, 0, 704, 705, 3, 140, 70, 0, 705, 706, 5, 24, 0, 0, 706, 707, 3, 96, 48, 0, 707, 107, 1, 0, 0, 0, 708, 711, 3, 132, 66, 0, 709, 711, 3, 98, 49, 0, 710, 708, 1, 0, 0, 0, 710, 709, 1, 0, 0, 0, 711, 109, 1, 0, 0, 0, 712, 713, 5, 56, 0, 0, 713, 714, 3, 94, 47, 0, 714, 111, 1, 0, 0, 0, 715, 716, 5, 27, 0, 0, 716, 719, 5, 23, 0, 0, 717, 720, 3, 108, 54, 0, 718, 720, 5, 2, 0, 0, 719, 717, 1, 0, 0, 0, 719, 718, 1, 0, 0, 0, 720, 723, 1, 0, 0, 0, 721, 724, 3, 98, 49, 0, 722, 724, 5, 2, 0, 0, 723, 721, 1, 0, 0, 0, 723, 722, 1, 0, 0, 0, 724, 726, 1, 0, 0, 0, 725, 727, 3, 140, 70, 0, 726, 725, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 5, 24, 0, 0, 729, 730, 3, 96, 48, 0, 730, 113, 1, 0, 0, 0, 731, 733, 5, 57, 0, 0, 732, 734, 5, 129, 0, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 739, 1, 0, 0, 0, 735, 736, 5, 23, 0, 0, 736, 737, 3, 116, 58, 0, 737, 738, 5, 24, 0, 0, 738, 740, 1, 0, 0, 0, 739, 735, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 3, 154, 77, 0, 742, 115, 1, 0, 0, 0, 743, 744, 3, 200, 100, 0, 744, 117, 1, 0, 0, 0, 745, 746, 5, 58, 0, 0, 746, 747, 3, 96, 48, 0, 747, 748, 5, 55, 0, 0, 748, 749, 5, 23, 0, 0, 749, 750, 3, 140, 70, 0, 750, 751, 5, 24, 0, 0, 751, 752, 5, 2, 0, 0, 752, 119, 1, 0, 0, 0, 753, 754, 5, 112, 0, 0, 754, 755, 5, 2, 0, 0, 755, 121, 1, 0, 0, 0, 756, 757, 5, 109, 0, 0, 757, 758, 5, 2, 0, 0, 758, 123, 1, 0, 0, 0, 759, 761, 5, 59, 0, 0, 760, 762, 3, 140, 70, 0, 761, 760, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 5, 2, 0, 0, 764, 125, 1, 0, 0, 0, 765, 766, 5, 60, 0, 0, 766, 767, 5, 2, 0, 0, 767, 127, 1, 0, 0, 0, 768, 769, 5, 61, 0, 0, 769, 770, 3, 152, 76, 0, 770, 771, 5, 2, 0, 0, 771, 129, 1, 0, 0, 0, 772, 773, 5, 62, 0, 0, 773, 774, 3, 152, 76, 0, 774, 775, 5, 2, 0, 0, 775, 131, 1, 0, 0, 0, 776, 777, 5, 63, 0, 0, 777, 784, 3, 136, 68, 0, 778, 784, 3, 74, 37, 0, 779, 780, 5, 23, 0, 0, 780, 781, 3, 134, 67, 0, 781, 782, 5, 24, 0, 0, 782, 784, 1, 0, 0, 0, 783, 776, 1, 0, 0, 0, 783, 778, 1, 0, 0, 0, 783, 779, 1, 0, 0, 0, 784, 787, 1, 0, 0, 0, 785, 786, 5, 11, 0, 0, 786, 788, 3, 140, 70, 0, 787, 785, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 5, 2, 0, 0, 790, 133, 1, 0, 0, 0, 791, 793, 3, 74, 37, 0, 792, 791, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 800, 1, 0, 0, 0, 794, 796, 5, 16, 0, 0, 795, 797, 3, 74, 37, 0, 796, 795, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 799, 1, 0, 0, 0, 798, 794, 1, 0, 0, 0, 799, 802, 1, 0, 0, 0, 800, 798, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 135, 1, 0, 0, 0, 802, 800, 1, 0, 0, 0, 803, 810, 5, 23, 0, 0, 804, 806, 3, 194, 97, 0, 805, 804, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 809, 5, 16, 0, 0, 808, 805, 1, 0, 0, 0, 809, 812, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 814, 1, 0, 0, 0, 812, 810, 1, 0, 0, 0, 813, 815, 3, 194, 97, 0, 814, 813, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 817, 5, 24, 0, 0, 817, 137, 1, 0, 0, 0, 818, 819, 7, 5, 0, 0, 819, 139, 1, 0, 0, 0, 820, 821, 6, 70, -1, 0, 821, 822, 5, 69, 0, 0, 822, 839, 3, 76, 38, 0, 823, 824, 5, 23, 0, 0, 824, 825, 3, 140, 70, 0, 825, 826, 5, 24, 0, 0, 826, 839, 1, 0, 0, 0, 827, 828, 7, 6, 0, 0, 828, 839, 3, 140, 70, 19, 829, 830, 7, 7, 0, 0, 830, 839, 3, 140, 70, 18, 831, 832, 5, 71, 0, 0, 832, 839, 3, 140, 70, 17, 833, 834, 5, 72, 0, 0, 834, 839, 3, 140, 70, 16, 835, 836, 5, 6, 0, 0, 836, 839, 3, 140, 70, 15, 837, 839, 3, 142, 71, 0, 838, 820, 1, 0, 0, 0, 838, 823, 1, 0, 0, 0, 838, 827, 1, 0, 0, 0, 838, 829, 1, 0, 0, 0, 838, 831, 1, 0, 0, 0, 838, 833, 1, 0, 0, 0, 838, 835, 1, 0, 0, 0, 838, 837, 1, 0, 0, 0, 839, 914, 1, 0, 0, 0, 840, 841, 10, 14, 0, 0, 841, 842, 5, 73, 0, 0, 842, 913, 3, 140, 70, 14, 843, 844, 10, 13, 0, 0, 844, 845, 7, 8, 0, 0, 845, 913, 3, 140, 70, 14, 846, 847, 10, 12, 0, 0, 847, 848, 7, 7, 0, 0, 848, 913, 3, 140, 70, 13, 849, 850, 10, 11, 0, 0, 850, 851, 7, 9, 0, 0, 851, 913, 3, 140, 70, 12, 852, 853, 10, 10, 0, 0, 853, 854, 5, 29, 0, 0, 854, 913, 3, 140, 70, 11, 855, 856, 10, 9, 0, 0, 856, 857, 5, 5, 0, 0, 857, 913, 3, 140, 70, 10, 858, 859, 10, 8, 0, 0, 859, 860, 5, 28, 0, 0, 860, 913, 3, 140, 70, 9, 861, 862, 10, 7, 0, 0, 862, 863, 7, 10, 0, 0, 863, 913, 3, 140, 70, 8, 864, 865, 10, 6, 0, 0, 865, 866, 7, 11, 0, 0, 866, 913, 3, 140, 70, 7, 867, 868, 10, 5, 0, 0, 868, 869, 5, 76, 0, 0, 869, 913, 3, 140, 70, 6, 870, 871, 10, 4, 0, 0, 871, 872, 5, 4, 0, 0, 872, 913, 3, 140, 70, 5, 873, 874, 10, 3, 0, 0, 874, 875, 5, 77, 0, 0, 875, 876, 3, 140, 70, 0, 876, 877, 5, 70, 0, 0, 877, 878, 3, 140, 70, 3, 878, 913, 1, 0, 0, 0, 879, 880, 10, 2, 0, 0, 880, 881, 7, 12, 0, 0, 881, 913, 3, 140, 70, 3, 882, 883, 10, 27, 0, 0, 883, 913, 7, 6, 0, 0, 884, 885, 10, 25, 0, 0, 885, 886, 5, 42, 0, 0, 886, 887, 3, 140, 70, 0, 887, 888, 5, 43, 0, 0, 888, 913, 1, 0, 0, 0, 889, 890, 10, 24, 0, 0, 890, 892, 5, 42, 0, 0, 891, 893, 3, 140, 70, 0, 892, 891, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 896, 5, 70, 0, 0, 895, 897, 3, 140, 70, 0, 896, 895, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 913, 5, 43, 0, 0, 899, 900, 10, 23, 0, 0, 900, 901, 5, 45, 0, 0, 901, 913, 3, 194, 97, 0, 902, 903, 10, 22, 0, 0, 903, 904, 5, 15, 0, 0, 904, 905, 3, 146, 73, 0, 905, 906, 5, 17, 0, 0, 906, 913, 1, 0, 0, 0, 907, 908, 10, 21, 0, 0, 908, 909, 5, 23, 0, 0, 909, 910, 3, 150, 75, 0, 910, 911, 5, 24, 0, 0, 911, 913, 1, 0, 0, 0, 912, 840, 1, 0, 0, 0, 912, 843, 1, 0, 0, 0, 912, 846, 1, 0, 0, 0, 912, 849, 1, 0, 0, 0, 912, 852, 1, 0, 0, 0, 912, 855, 1, 0, 0, 0, 912, 858, 1, 0, 0, 0, 912, 861, 1, 0, 0, 0, 912, 864, 1, 0, 0, 0, 912, 867, 1, 0, 0, 0, 912, 870, 1, 0, 0, 0, 912, 873, 1, 0, 0, 0, 912, 879, 1, 0, 0, 0, 912, 882, 1, 0, 0, 0, 912, 884, 1, 0, 0, 0, 912, 889, 1, 0, 0, 0, 912, 899, 1, 0, 0, 0, 912, 902, 1, 0, 0, 0, 912, 907, 1, 0, 0, 0, 913, 916, 1, 0, 0, 0, 914, 912, 1, 0, 0, 0, 914, 915, 1, 0, 0, 0, 915, 141, 1, 0, 0, 0, 916, 914, 1, 0, 0, 0, 917, 927, 5, 102, 0, 0, 918, 927, 3, 192, 96, 0, 919, 927, 3, 196, 98, 0, 920, 927, 3, 200, 100, 0, 921, 927, 3, 194, 97, 0, 922, 927, 5, 122, 0, 0, 923, 927, 5, 117, 0, 0, 924, 927, 3, 190, 95, 0, 925, 927, 3, 76, 38, 0, 926, 917, 1, 0, 0, 0, 926, 918, 1, 0, 0, 0, 926, 919, 1, 0, 0, 0, 926, 920, 1, 0, 0, 0, 926, 921, 1, 0, 0, 0, 926, 922, 1, 0, 0, 0, 926, 923, 1, 0, 0, 0, 926, 924, 1, 0, 0, 0, 926, 925, 1, 0, 0, 0, 927, 143, 1, 0, 0, 0, 928, 933, 3, 140, 70, 0, 929, 930, 5, 16, 0, 0, 930, 932, 3, 140, 70, 0, 931, 929, 1, 0, 0, 0, 932, 935, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 145, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 936, 941, 3, 148, 74, 0, 937, 938, 5, 16, 0, 0, 938, 940, 3, 148, 74, 0, 939, 937, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 945, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 5, 16, 0, 0, 945, 944, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 147, 1, 0, 0, 0, 947, 948, 3, 194, 97, 0, 948, 949, 5, 70, 0, 0, 949, 950, 3, 140, 70, 0, 950, 149, 1, 0, 0, 0, 951, 953, 5, 15, 0, 0, 952, 954, 3, 146, 73, 0, 953, 952, 1, 0, 0, 0, 953, 954, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 960, 5, 17, 0, 0, 956, 958, 3, 144, 72, 0, 957, 956, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 960, 1, 0, 0, 0, 959, 951, 1, 0, 0, 0, 959, 957, 1, 0, 0, 0, 960, 151, 1, 0, 0, 0, 961, 962, 3, 140, 70, 0, 962, 963, 5, 23, 0, 0, 963, 964, 3, 150, 75, 0, 964, 965, 5, 24, 0, 0, 965, 153, 1, 0, 0, 0, 966, 970, 5, 15, 0, 0, 967, 969, 3, 156, 78, 0, 968, 967, 1, 0, 0, 0, 969, 972, 1, 0, 0, 0, 970, 968, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 973, 1, 0, 0, 0, 972, 970, 1, 0, 0, 0, 973, 974, 5, 17, 0, 0, 974, 155, 1, 0, 0, 0, 975, 993, 3, 194, 97, 0, 976, 993, 3, 154, 77, 0, 977, 993, 3, 158, 79, 0, 978, 993, 3, 164, 82, 0, 979, 993, 3, 166, 83, 0, 980, 993, 3, 172, 86, 0, 981, 993, 3, 174, 87, 0, 982, 993, 3, 176, 88, 0, 983, 993, 3, 180, 90, 0, 984, 993, 3, 184, 92, 0, 985, 993, 3, 186, 93, 0, 986, 993, 5, 109, 0, 0, 987, 993, 5, 112, 0, 0, 988, 993, 5, 113, 0, 0, 989, 993, 3, 192, 96, 0, 990, 993, 3, 200, 100, 0, 991, 993, 3, 196, 98, 0, 992, 975, 1, 0, 0, 0, 992, 976, 1, 0, 0, 0, 992, 977, 1, 0, 0, 0, 992, 978, 1, 0, 0, 0, 992, 979, 1, 0, 0, 0, 992, 980, 1, 0, 0, 0, 992, 981, 1, 0, 0, 0, 992, 982, 1, 0, 0, 0, 992, 983, 1, 0, 0, 0, 992, 984, 1, 0, 0, 0, 992, 985, 1, 0, 0, 0, 992, 986, 1, 0, 0, 0, 992, 987, 1, 0, 0, 0, 992, 988, 1, 0, 0, 0, 992, 989, 1, 0, 0, 0, 992, 990, 1, 0, 0, 0, 992, 991, 1, 0, 0, 0, 993, 157, 1, 0, 0, 0, 994, 998, 3, 162, 81, 0, 995, 998, 3, 188, 94, 0, 996, 998, 3, 160, 80, 0, 997, 994, 1, 0, 0, 0, 997, 995, 1, 0, 0, 0, 997, 996, 1, 0, 0, 0, 998, 159, 1, 0, 0, 0, 999, 1000, 3, 194, 97, 0, 1000, 1001, 5, 45, 0, 0, 1001, 1002, 3, 194, 97, 0, 1002, 161, 1, 0, 0, 0, 1003, 1008, 5, 59, 0, 0, 1004, 1008, 5, 44, 0, 0, 1005, 1008, 5, 66, 0, 0, 1006, 1008, 3, 194, 97, 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006, 1, 0, 0, 0, 1008, 1021, 1, 0, 0, 0, 1009, 1011, 5, 23, 0, 0, 1010, 1012, 3, 158, 79, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1017, 1, 0, 0, 0, 1013, 1014, 5, 16, 0, 0, 1014, 1016, 3, 158, 79, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1019, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1020, 1, 0, 0, 0, 1019, 1017, 1, 0, 0, 0, 1020, 1022, 5, 24, 0, 0, 1021, 1009, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 163, 1, 0, 0, 0, 1023, 1024, 5, 88, 0, 0, 1024, 1027, 3, 168, 84, 0, 1025, 1026, 5, 89, 0, 0, 1026, 1028, 3, 158, 79, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 165, 1, 0, 0, 0, 1029, 1030, 3, 168, 84, 0, 1030, 1031, 5, 89, 0, 0, 1031, 1032, 3, 158, 79, 0, 1032, 167, 1, 0, 0, 0, 1033, 1041, 3, 194, 97, 0, 1034, 1041, 3, 160, 80, 0, 1035, 1041, 3, 170, 85, 0, 1036, 1037, 5, 23, 0, 0, 1037, 1038, 3, 170, 85, 0, 1038, 1039, 5, 24, 0, 0, 1039, 1041, 1, 0, 0, 0, 1040, 1033, 1, 0, 0, 0, 1040, 1034, 1, 0, 0, 0, 1040, 1035, 1, 0, 0, 0, 1040, 1036, 1, 0, 0, 0, 1041, 169, 1, 0, 0, 0, 1042, 1047, 3, 194, 97, 0, 1043, 1044, 5, 16, 0, 0, 1044, 1046, 3, 194, 97, 0, 1045, 1043, 1, 0, 0, 0, 1046, 1049, 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, 171, 1, 0, 0, 0, 1049, 1047, 1, 0, 0, 0, 1050, 1051, 3, 158, 79, 0, 1051, 1052, 5, 90, 0, 0, 1052, 1053, 3, 194, 97, 0, 1053, 173, 1, 0, 0, 0, 1054, 1055, 3, 194, 97, 0, 1055, 1056, 5, 70, 0, 0, 1056, 175, 1, 0, 0, 0, 1057, 1058, 5, 91, 0, 0, 1058, 1062, 3, 158, 79, 0, 1059, 1061, 3, 178, 89, 0, 1060, 1059, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 177, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 92, 0, 0, 1066, 1067, 3, 188, 94, 0, 1067, 1068, 3, 154, 77, 0, 1068, 1072, 1, 0, 0, 0, 1069, 1070, 5, 93, 0, 0, 1070, 1072, 3, 154, 77, 0, 1071, 1065, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1072, 179, 1, 0, 0, 0, 1073, 1074, 5, 38, 0, 0, 1074, 1075, 3, 194, 97, 0, 1075, 1077, 5, 23, 0, 0, 1076, 1078, 3, 170, 85, 0, 1077, 1076, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1081, 5, 24, 0, 0, 1080, 1082, 3, 182, 91, 0, 1081, 1080, 1, 0, 0, 0, 1081, 1082, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 3, 154, 77, 0, 1084, 181, 1, 0, 0, 0, 1085, 1086, 5, 94, 0, 0, 1086, 1087, 3, 170, 85, 0, 1087, 183, 1, 0, 0, 0, 1088, 1091, 5, 27, 0, 0, 1089, 1092, 3, 154, 77, 0, 1090, 1092, 3, 158, 79, 0, 1091, 1089, 1, 0, 0, 0, 1091, 1090, 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 1096, 3, 158, 79, 0, 1094, 1097, 3, 154, 77, 0, 1095, 1097, 3, 158, 79, 0, 1096, 1094, 1, 0, 0, 0, 1096, 1095, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1099, 3, 154, 77, 0, 1099, 185, 1, 0, 0, 0, 1100, 1101, 5, 51, 0, 0, 1101, 1102, 3, 158, 79, 0, 1102, 1103, 3, 154, 77, 0, 1103, 187, 1, 0, 0, 0, 1104, 1110, 3, 200, 100, 0, 1105, 1110, 5, 103, 0, 0, 1106, 1110, 5, 104, 0, 0, 1107, 1110, 3, 196, 98, 0, 1108, 1110, 5, 102, 0, 0, 1109, 1104, 1, 0, 0, 0, 1109, 1105, 1, 0, 0, 0, 1109, 1106, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1109, 1108, 1, 0, 0, 0, 1110, 189, 1, 0, 0, 0, 1111, 1113, 5, 23, 0, 0, 1112, 1114, 3, 140, 70, 0, 1113, 1112, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1121, 1, 0, 0, 0, 1115, 1117, 5, 16, 0, 0, 1116, 1118, 3, 140, 70, 0, 1117, 1116, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, 1115, 1, 0, 0, 0, 1120, 1123, 1, 0, 0, 0, 1121, 1119, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1124, 1, 0, 0, 0, 1123, 1121, 1, 0, 0, 0, 1124, 1138, 5, 24, 0, 0, 1125, 1134, 5, 42, 0, 0, 1126, 1131, 3, 140, 70, 0, 1127, 1128, 5, 16, 0, 0, 1128, 1130, 3, 140, 70, 0, 1129, 1127, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1135, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1134, 1126, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1138, 5, 43, 0, 0, 1137, 1111, 1, 0, 0, 0, 1137, 1125, 1, 0, 0, 0, 1138, 191, 1, 0, 0, 0, 1139, 1141, 7, 13, 0, 0, 1140, 1142, 5, 105, 0, 0, 1141, 1140, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 193, 1, 0, 0, 0, 1143, 1144, 7, 14, 0, 0, 1144, 195, 1, 0, 0, 0, 1145, 1147, 5, 106, 0, 0, 1146, 1145, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1146, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 197, 1, 0, 0, 0, 1150, 1162, 5, 96, 0, 0, 1151, 1152, 5, 23, 0, 0, 1152, 1157, 3, 78, 39, 0, 1153, 1154, 5, 16, 0, 0, 1154, 1156, 3, 78, 39, 0, 1155, 1153, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, 1158, 1160, 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1161, 5, 24, 0, 0, 1161, 1163, 1, 0, 0, 0, 1162, 1151, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 199, 1, 0, 0, 0, 1164, 1166, 5, 129, 0, 0, 1165, 1164, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 201, 1, 0, 0, 0, 130, 213, 215, 230, 234, 239, 245, 249, 252, 257, 263, 270, 274, 287, 295, 300, 310, 313, 319, 327, 330, 341, 350, 352, 358, 385, 388, 399, 404, 409, 423, 426, 433, 437, 439, 444, 449, 452, 458, 462, 466, 471, 484, 486, 493, 503, 509, 520, 523, 529, 532, 540, 543, 549, 552, 560, 563, 569, 573, 584, 589, 594, 602, 607, 613, 618, 631, 633, 638, 648, 668, 680, 685, 691, 695, 698, 710, 719, 723, 726, 733, 739, 761, 783, 787, 792, 796, 800, 805, 810, 814, 838, 892, 896, 912, 914, 926, 933, 941, 945, 953, 957, 959, 970, 992, 997, 1007, 1011, 1017, 1021, 1027, 1040, 1047, 1062, 1071, 1077, 1081, 1091, 1096, 1109, 1113, 1117, 1121, 1131, 1134, 1137, 1141, 1148, 1157, 1162, 1167] \ No newline at end of file diff --git a/src/antlr/SolidityLexer.interp b/src/antlr/SolidityLexer.interp index 15e25a0..aa12990 100644 --- a/src/antlr/SolidityLexer.interp +++ b/src/antlr/SolidityLexer.interp @@ -422,4 +422,4 @@ mode names: DEFAULT_MODE atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 135, 1338, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 5, 98, 724, 10, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 732, 10, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 741, 10, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 6, 101, 752, 10, 101, 13, 101, 14, 101, 753, 5, 101, 756, 10, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 6, 102, 768, 10, 102, 13, 102, 14, 102, 769, 5, 102, 772, 10, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 857, 10, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 5, 104, 864, 10, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 5, 105, 875, 10, 105, 3, 106, 3, 106, 5, 106, 879, 10, 106, 3, 106, 3, 106, 5, 106, 883, 10, 106, 3, 106, 3, 106, 5, 106, 887, 10, 106, 3, 106, 5, 106, 890, 10, 106, 3, 107, 3, 107, 5, 107, 894, 10, 107, 3, 107, 7, 107, 897, 10, 107, 12, 107, 14, 107, 900, 11, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 5, 109, 908, 10, 109, 3, 109, 7, 109, 911, 10, 109, 12, 109, 14, 109, 914, 11, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 5, 110, 972, 10, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 5, 111, 980, 10, 111, 3, 111, 3, 111, 3, 111, 5, 111, 985, 10, 111, 3, 111, 5, 111, 988, 10, 111, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 1080, 10, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 7, 134, 1242, 10, 134, 12, 134, 14, 134, 1245, 11, 134, 3, 135, 3, 135, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 5, 137, 1258, 10, 137, 3, 137, 3, 137, 7, 137, 1262, 10, 137, 12, 137, 14, 137, 1265, 11, 137, 3, 137, 3, 137, 3, 137, 7, 137, 1270, 10, 137, 12, 137, 14, 137, 1273, 11, 137, 3, 137, 5, 137, 1276, 10, 137, 3, 138, 3, 138, 3, 138, 5, 138, 1281, 10, 138, 3, 139, 3, 139, 3, 139, 5, 139, 1286, 10, 139, 3, 140, 6, 140, 1289, 10, 140, 13, 140, 14, 140, 1290, 3, 140, 3, 140, 6, 140, 1295, 10, 140, 13, 140, 14, 140, 1296, 3, 140, 3, 140, 6, 140, 1301, 10, 140, 13, 140, 14, 140, 1302, 5, 140, 1305, 10, 140, 3, 141, 6, 141, 1308, 10, 141, 13, 141, 14, 141, 1309, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, 7, 142, 1318, 10, 142, 12, 142, 14, 142, 1321, 11, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 7, 143, 1332, 10, 143, 12, 143, 14, 143, 1335, 11, 143, 3, 143, 3, 143, 3, 1319, 2, 2, 144, 3, 2, 3, 5, 2, 4, 7, 2, 5, 9, 2, 6, 11, 2, 7, 13, 2, 8, 15, 2, 9, 17, 2, 10, 19, 2, 11, 21, 2, 12, 23, 2, 13, 25, 2, 14, 27, 2, 15, 29, 2, 16, 31, 2, 17, 33, 2, 18, 35, 2, 19, 37, 2, 20, 39, 2, 21, 41, 2, 22, 43, 2, 23, 45, 2, 24, 47, 2, 25, 49, 2, 26, 51, 2, 27, 53, 2, 28, 55, 2, 29, 57, 2, 30, 59, 2, 31, 61, 2, 32, 63, 2, 33, 65, 2, 34, 67, 2, 35, 69, 2, 36, 71, 2, 37, 73, 2, 38, 75, 2, 39, 77, 2, 40, 79, 2, 41, 81, 2, 42, 83, 2, 43, 85, 2, 44, 87, 2, 45, 89, 2, 46, 91, 2, 47, 93, 2, 48, 95, 2, 49, 97, 2, 50, 99, 2, 51, 101, 2, 52, 103, 2, 53, 105, 2, 54, 107, 2, 55, 109, 2, 56, 111, 2, 57, 113, 2, 58, 115, 2, 59, 117, 2, 60, 119, 2, 61, 121, 2, 62, 123, 2, 63, 125, 2, 64, 127, 2, 65, 129, 2, 66, 131, 2, 67, 133, 2, 68, 135, 2, 69, 137, 2, 70, 139, 2, 71, 141, 2, 72, 143, 2, 73, 145, 2, 74, 147, 2, 75, 149, 2, 76, 151, 2, 77, 153, 2, 78, 155, 2, 79, 157, 2, 80, 159, 2, 81, 161, 2, 82, 163, 2, 83, 165, 2, 84, 167, 2, 85, 169, 2, 86, 171, 2, 87, 173, 2, 88, 175, 2, 89, 177, 2, 90, 179, 2, 91, 181, 2, 92, 183, 2, 93, 185, 2, 94, 187, 2, 95, 189, 2, 96, 191, 2, 97, 193, 2, 98, 195, 2, 99, 197, 2, 100, 199, 2, 101, 201, 2, 102, 203, 2, 103, 205, 2, 2, 207, 2, 2, 209, 2, 104, 211, 2, 105, 213, 2, 2, 215, 2, 106, 217, 2, 2, 219, 2, 107, 221, 2, 108, 223, 2, 2, 225, 2, 109, 227, 2, 110, 229, 2, 111, 231, 2, 112, 233, 2, 113, 235, 2, 114, 237, 2, 115, 239, 2, 116, 241, 2, 117, 243, 2, 118, 245, 2, 119, 247, 2, 120, 249, 2, 121, 251, 2, 122, 253, 2, 123, 255, 2, 124, 257, 2, 125, 259, 2, 126, 261, 2, 127, 263, 2, 128, 265, 2, 129, 267, 2, 130, 269, 2, 2, 271, 2, 2, 273, 2, 131, 275, 2, 2, 277, 2, 2, 279, 2, 132, 281, 2, 133, 283, 2, 134, 285, 2, 135, 3, 2, 15, 3, 2, 50, 59, 3, 2, 51, 59, 3, 2, 51, 52, 3, 2, 50, 52, 4, 2, 71, 71, 103, 103, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 6, 2, 38, 38, 67, 92, 97, 97, 99, 124, 7, 2, 38, 38, 50, 59, 67, 92, 97, 97, 99, 124, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 6, 2, 12, 12, 15, 15, 41, 41, 94, 94, 5, 2, 11, 12, 14, 15, 34, 34, 4, 2, 12, 12, 15, 15, 2, 1420, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 2, 263, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, 3, 2, 2, 2, 2, 273, 3, 2, 2, 2, 2, 279, 3, 2, 2, 2, 2, 281, 3, 2, 2, 2, 2, 283, 3, 2, 2, 2, 2, 285, 3, 2, 2, 2, 3, 287, 3, 2, 2, 2, 5, 294, 3, 2, 2, 2, 7, 296, 3, 2, 2, 2, 9, 298, 3, 2, 2, 2, 11, 301, 3, 2, 2, 2, 13, 303, 3, 2, 2, 2, 15, 305, 3, 2, 2, 2, 17, 308, 3, 2, 2, 2, 19, 310, 3, 2, 2, 2, 21, 312, 3, 2, 2, 2, 23, 315, 3, 2, 2, 2, 25, 317, 3, 2, 2, 2, 27, 320, 3, 2, 2, 2, 29, 327, 3, 2, 2, 2, 31, 332, 3, 2, 2, 2, 33, 334, 3, 2, 2, 2, 35, 336, 3, 2, 2, 2, 37, 338, 3, 2, 2, 2, 39, 347, 3, 2, 2, 2, 41, 356, 3, 2, 2, 2, 43, 366, 3, 2, 2, 2, 45, 374, 3, 2, 2, 2, 47, 377, 3, 2, 2, 2, 49, 379, 3, 2, 2, 2, 51, 381, 3, 2, 2, 2, 53, 387, 3, 2, 2, 2, 55, 393, 3, 2, 2, 2, 57, 397, 3, 2, 2, 2, 59, 399, 3, 2, 2, 2, 61, 401, 3, 2, 2, 2, 63, 403, 3, 2, 2, 2, 65, 405, 3, 2, 2, 2, 67, 407, 3, 2, 2, 2, 69, 409, 3, 2, 2, 2, 71, 412, 3, 2, 2, 2, 73, 415, 3, 2, 2, 2, 75, 422, 3, 2, 2, 2, 77, 431, 3, 2, 2, 2, 79, 440, 3, 2, 2, 2, 81, 448, 3, 2, 2, 2, 83, 454, 3, 2, 2, 2, 85, 459, 3, 2, 2, 2, 87, 461, 3, 2, 2, 2, 89, 463, 3, 2, 2, 2, 91, 471, 3, 2, 2, 2, 93, 473, 3, 2, 2, 2, 95, 481, 3, 2, 2, 2, 97, 484, 3, 2, 2, 2, 99, 491, 3, 2, 2, 2, 101, 499, 3, 2, 2, 2, 103, 508, 3, 2, 2, 2, 105, 511, 3, 2, 2, 2, 107, 516, 3, 2, 2, 2, 109, 520, 3, 2, 2, 2, 111, 526, 3, 2, 2, 2, 113, 532, 3, 2, 2, 2, 115, 542, 3, 2, 2, 2, 117, 551, 3, 2, 2, 2, 119, 554, 3, 2, 2, 2, 121, 561, 3, 2, 2, 2, 123, 567, 3, 2, 2, 2, 125, 572, 3, 2, 2, 2, 127, 579, 3, 2, 2, 2, 129, 583, 3, 2, 2, 2, 131, 588, 3, 2, 2, 2, 133, 595, 3, 2, 2, 2, 135, 600, 3, 2, 2, 2, 137, 603, 3, 2, 2, 2, 139, 606, 3, 2, 2, 2, 141, 610, 3, 2, 2, 2, 143, 612, 3, 2, 2, 2, 145, 619, 3, 2, 2, 2, 147, 621, 3, 2, 2, 2, 149, 624, 3, 2, 2, 2, 151, 627, 3, 2, 2, 2, 153, 630, 3, 2, 2, 2, 155, 633, 3, 2, 2, 2, 157, 635, 3, 2, 2, 2, 159, 638, 3, 2, 2, 2, 161, 641, 3, 2, 2, 2, 163, 644, 3, 2, 2, 2, 165, 648, 3, 2, 2, 2, 167, 652, 3, 2, 2, 2, 169, 655, 3, 2, 2, 2, 171, 658, 3, 2, 2, 2, 173, 661, 3, 2, 2, 2, 175, 664, 3, 2, 2, 2, 177, 667, 3, 2, 2, 2, 179, 671, 3, 2, 2, 2, 181, 674, 3, 2, 2, 2, 183, 677, 3, 2, 2, 2, 185, 684, 3, 2, 2, 2, 187, 689, 3, 2, 2, 2, 189, 697, 3, 2, 2, 2, 191, 700, 3, 2, 2, 2, 193, 709, 3, 2, 2, 2, 195, 718, 3, 2, 2, 2, 197, 725, 3, 2, 2, 2, 199, 733, 3, 2, 2, 2, 201, 742, 3, 2, 2, 2, 203, 757, 3, 2, 2, 2, 205, 856, 3, 2, 2, 2, 207, 863, 3, 2, 2, 2, 209, 874, 3, 2, 2, 2, 211, 882, 3, 2, 2, 2, 213, 891, 3, 2, 2, 2, 215, 901, 3, 2, 2, 2, 217, 905, 3, 2, 2, 2, 219, 971, 3, 2, 2, 2, 221, 973, 3, 2, 2, 2, 223, 989, 3, 2, 2, 2, 225, 1079, 3, 2, 2, 2, 227, 1081, 3, 2, 2, 2, 229, 1091, 3, 2, 2, 2, 231, 1097, 3, 2, 2, 2, 233, 1106, 3, 2, 2, 2, 235, 1116, 3, 2, 2, 2, 237, 1125, 3, 2, 2, 2, 239, 1131, 3, 2, 2, 2, 241, 1140, 3, 2, 2, 2, 243, 1148, 3, 2, 2, 2, 245, 1157, 3, 2, 2, 2, 247, 1165, 3, 2, 2, 2, 249, 1173, 3, 2, 2, 2, 251, 1180, 3, 2, 2, 2, 253, 1188, 3, 2, 2, 2, 255, 1193, 3, 2, 2, 2, 257, 1198, 3, 2, 2, 2, 259, 1203, 3, 2, 2, 2, 261, 1210, 3, 2, 2, 2, 263, 1222, 3, 2, 2, 2, 265, 1231, 3, 2, 2, 2, 267, 1239, 3, 2, 2, 2, 269, 1246, 3, 2, 2, 2, 271, 1248, 3, 2, 2, 2, 273, 1257, 3, 2, 2, 2, 275, 1280, 3, 2, 2, 2, 277, 1285, 3, 2, 2, 2, 279, 1288, 3, 2, 2, 2, 281, 1307, 3, 2, 2, 2, 283, 1313, 3, 2, 2, 2, 285, 1327, 3, 2, 2, 2, 287, 288, 7, 114, 2, 2, 288, 289, 7, 116, 2, 2, 289, 290, 7, 99, 2, 2, 290, 291, 7, 105, 2, 2, 291, 292, 7, 111, 2, 2, 292, 293, 7, 99, 2, 2, 293, 4, 3, 2, 2, 2, 294, 295, 7, 61, 2, 2, 295, 6, 3, 2, 2, 2, 296, 297, 7, 44, 2, 2, 297, 8, 3, 2, 2, 2, 298, 299, 7, 126, 2, 2, 299, 300, 7, 126, 2, 2, 300, 10, 3, 2, 2, 2, 301, 302, 7, 96, 2, 2, 302, 12, 3, 2, 2, 2, 303, 304, 7, 128, 2, 2, 304, 14, 3, 2, 2, 2, 305, 306, 7, 64, 2, 2, 306, 307, 7, 63, 2, 2, 307, 16, 3, 2, 2, 2, 308, 309, 7, 64, 2, 2, 309, 18, 3, 2, 2, 2, 310, 311, 7, 62, 2, 2, 311, 20, 3, 2, 2, 2, 312, 313, 7, 62, 2, 2, 313, 314, 7, 63, 2, 2, 314, 22, 3, 2, 2, 2, 315, 316, 7, 63, 2, 2, 316, 24, 3, 2, 2, 2, 317, 318, 7, 99, 2, 2, 318, 319, 7, 117, 2, 2, 319, 26, 3, 2, 2, 2, 320, 321, 7, 107, 2, 2, 321, 322, 7, 111, 2, 2, 322, 323, 7, 114, 2, 2, 323, 324, 7, 113, 2, 2, 324, 325, 7, 116, 2, 2, 325, 326, 7, 118, 2, 2, 326, 28, 3, 2, 2, 2, 327, 328, 7, 104, 2, 2, 328, 329, 7, 116, 2, 2, 329, 330, 7, 113, 2, 2, 330, 331, 7, 111, 2, 2, 331, 30, 3, 2, 2, 2, 332, 333, 7, 125, 2, 2, 333, 32, 3, 2, 2, 2, 334, 335, 7, 46, 2, 2, 335, 34, 3, 2, 2, 2, 336, 337, 7, 127, 2, 2, 337, 36, 3, 2, 2, 2, 338, 339, 7, 99, 2, 2, 339, 340, 7, 100, 2, 2, 340, 341, 7, 117, 2, 2, 341, 342, 7, 118, 2, 2, 342, 343, 7, 116, 2, 2, 343, 344, 7, 99, 2, 2, 344, 345, 7, 101, 2, 2, 345, 346, 7, 118, 2, 2, 346, 38, 3, 2, 2, 2, 347, 348, 7, 101, 2, 2, 348, 349, 7, 113, 2, 2, 349, 350, 7, 112, 2, 2, 350, 351, 7, 118, 2, 2, 351, 352, 7, 116, 2, 2, 352, 353, 7, 99, 2, 2, 353, 354, 7, 101, 2, 2, 354, 355, 7, 118, 2, 2, 355, 40, 3, 2, 2, 2, 356, 357, 7, 107, 2, 2, 357, 358, 7, 112, 2, 2, 358, 359, 7, 118, 2, 2, 359, 360, 7, 103, 2, 2, 360, 361, 7, 116, 2, 2, 361, 362, 7, 104, 2, 2, 362, 363, 7, 99, 2, 2, 363, 364, 7, 101, 2, 2, 364, 365, 7, 103, 2, 2, 365, 42, 3, 2, 2, 2, 366, 367, 7, 110, 2, 2, 367, 368, 7, 107, 2, 2, 368, 369, 7, 100, 2, 2, 369, 370, 7, 116, 2, 2, 370, 371, 7, 99, 2, 2, 371, 372, 7, 116, 2, 2, 372, 373, 7, 123, 2, 2, 373, 44, 3, 2, 2, 2, 374, 375, 7, 107, 2, 2, 375, 376, 7, 117, 2, 2, 376, 46, 3, 2, 2, 2, 377, 378, 7, 42, 2, 2, 378, 48, 3, 2, 2, 2, 379, 380, 7, 43, 2, 2, 380, 50, 3, 2, 2, 2, 381, 382, 7, 103, 2, 2, 382, 383, 7, 116, 2, 2, 383, 384, 7, 116, 2, 2, 384, 385, 7, 113, 2, 2, 385, 386, 7, 116, 2, 2, 386, 52, 3, 2, 2, 2, 387, 388, 7, 119, 2, 2, 388, 389, 7, 117, 2, 2, 389, 390, 7, 107, 2, 2, 390, 391, 7, 112, 2, 2, 391, 392, 7, 105, 2, 2, 392, 54, 3, 2, 2, 2, 393, 394, 7, 104, 2, 2, 394, 395, 7, 113, 2, 2, 395, 396, 7, 116, 2, 2, 396, 56, 3, 2, 2, 2, 397, 398, 7, 126, 2, 2, 398, 58, 3, 2, 2, 2, 399, 400, 7, 40, 2, 2, 400, 60, 3, 2, 2, 2, 401, 402, 7, 45, 2, 2, 402, 62, 3, 2, 2, 2, 403, 404, 7, 47, 2, 2, 404, 64, 3, 2, 2, 2, 405, 406, 7, 49, 2, 2, 406, 66, 3, 2, 2, 2, 407, 408, 7, 39, 2, 2, 408, 68, 3, 2, 2, 2, 409, 410, 7, 63, 2, 2, 410, 411, 7, 63, 2, 2, 411, 70, 3, 2, 2, 2, 412, 413, 7, 35, 2, 2, 413, 414, 7, 63, 2, 2, 414, 72, 3, 2, 2, 2, 415, 416, 7, 117, 2, 2, 416, 417, 7, 118, 2, 2, 417, 418, 7, 116, 2, 2, 418, 419, 7, 119, 2, 2, 419, 420, 7, 101, 2, 2, 420, 421, 7, 118, 2, 2, 421, 74, 3, 2, 2, 2, 422, 423, 7, 111, 2, 2, 423, 424, 7, 113, 2, 2, 424, 425, 7, 102, 2, 2, 425, 426, 7, 107, 2, 2, 426, 427, 7, 104, 2, 2, 427, 428, 7, 107, 2, 2, 428, 429, 7, 103, 2, 2, 429, 430, 7, 116, 2, 2, 430, 76, 3, 2, 2, 2, 431, 432, 7, 104, 2, 2, 432, 433, 7, 119, 2, 2, 433, 434, 7, 112, 2, 2, 434, 435, 7, 101, 2, 2, 435, 436, 7, 118, 2, 2, 436, 437, 7, 107, 2, 2, 437, 438, 7, 113, 2, 2, 438, 439, 7, 112, 2, 2, 439, 78, 3, 2, 2, 2, 440, 441, 7, 116, 2, 2, 441, 442, 7, 103, 2, 2, 442, 443, 7, 118, 2, 2, 443, 444, 7, 119, 2, 2, 444, 445, 7, 116, 2, 2, 445, 446, 7, 112, 2, 2, 446, 447, 7, 117, 2, 2, 447, 80, 3, 2, 2, 2, 448, 449, 7, 103, 2, 2, 449, 450, 7, 120, 2, 2, 450, 451, 7, 103, 2, 2, 451, 452, 7, 112, 2, 2, 452, 453, 7, 118, 2, 2, 453, 82, 3, 2, 2, 2, 454, 455, 7, 103, 2, 2, 455, 456, 7, 112, 2, 2, 456, 457, 7, 119, 2, 2, 457, 458, 7, 111, 2, 2, 458, 84, 3, 2, 2, 2, 459, 460, 7, 93, 2, 2, 460, 86, 3, 2, 2, 2, 461, 462, 7, 95, 2, 2, 462, 88, 3, 2, 2, 2, 463, 464, 7, 99, 2, 2, 464, 465, 7, 102, 2, 2, 465, 466, 7, 102, 2, 2, 466, 467, 7, 116, 2, 2, 467, 468, 7, 103, 2, 2, 468, 469, 7, 117, 2, 2, 469, 470, 7, 117, 2, 2, 470, 90, 3, 2, 2, 2, 471, 472, 7, 48, 2, 2, 472, 92, 3, 2, 2, 2, 473, 474, 7, 111, 2, 2, 474, 475, 7, 99, 2, 2, 475, 476, 7, 114, 2, 2, 476, 477, 7, 114, 2, 2, 477, 478, 7, 107, 2, 2, 478, 479, 7, 112, 2, 2, 479, 480, 7, 105, 2, 2, 480, 94, 3, 2, 2, 2, 481, 482, 7, 63, 2, 2, 482, 483, 7, 64, 2, 2, 483, 96, 3, 2, 2, 2, 484, 485, 7, 111, 2, 2, 485, 486, 7, 103, 2, 2, 486, 487, 7, 111, 2, 2, 487, 488, 7, 113, 2, 2, 488, 489, 7, 116, 2, 2, 489, 490, 7, 123, 2, 2, 490, 98, 3, 2, 2, 2, 491, 492, 7, 117, 2, 2, 492, 493, 7, 118, 2, 2, 493, 494, 7, 113, 2, 2, 494, 495, 7, 116, 2, 2, 495, 496, 7, 99, 2, 2, 496, 497, 7, 105, 2, 2, 497, 498, 7, 103, 2, 2, 498, 100, 3, 2, 2, 2, 499, 500, 7, 101, 2, 2, 500, 501, 7, 99, 2, 2, 501, 502, 7, 110, 2, 2, 502, 503, 7, 110, 2, 2, 503, 504, 7, 102, 2, 2, 504, 505, 7, 99, 2, 2, 505, 506, 7, 118, 2, 2, 506, 507, 7, 99, 2, 2, 507, 102, 3, 2, 2, 2, 508, 509, 7, 107, 2, 2, 509, 510, 7, 104, 2, 2, 510, 104, 3, 2, 2, 2, 511, 512, 7, 103, 2, 2, 512, 513, 7, 110, 2, 2, 513, 514, 7, 117, 2, 2, 514, 515, 7, 103, 2, 2, 515, 106, 3, 2, 2, 2, 516, 517, 7, 118, 2, 2, 517, 518, 7, 116, 2, 2, 518, 519, 7, 123, 2, 2, 519, 108, 3, 2, 2, 2, 520, 521, 7, 101, 2, 2, 521, 522, 7, 99, 2, 2, 522, 523, 7, 118, 2, 2, 523, 524, 7, 101, 2, 2, 524, 525, 7, 106, 2, 2, 525, 110, 3, 2, 2, 2, 526, 527, 7, 121, 2, 2, 527, 528, 7, 106, 2, 2, 528, 529, 7, 107, 2, 2, 529, 530, 7, 110, 2, 2, 530, 531, 7, 103, 2, 2, 531, 112, 3, 2, 2, 2, 532, 533, 7, 119, 2, 2, 533, 534, 7, 112, 2, 2, 534, 535, 7, 101, 2, 2, 535, 536, 7, 106, 2, 2, 536, 537, 7, 103, 2, 2, 537, 538, 7, 101, 2, 2, 538, 539, 7, 109, 2, 2, 539, 540, 7, 103, 2, 2, 540, 541, 7, 102, 2, 2, 541, 114, 3, 2, 2, 2, 542, 543, 7, 99, 2, 2, 543, 544, 7, 117, 2, 2, 544, 545, 7, 117, 2, 2, 545, 546, 7, 103, 2, 2, 546, 547, 7, 111, 2, 2, 547, 548, 7, 100, 2, 2, 548, 549, 7, 110, 2, 2, 549, 550, 7, 123, 2, 2, 550, 116, 3, 2, 2, 2, 551, 552, 7, 102, 2, 2, 552, 553, 7, 113, 2, 2, 553, 118, 3, 2, 2, 2, 554, 555, 7, 116, 2, 2, 555, 556, 7, 103, 2, 2, 556, 557, 7, 118, 2, 2, 557, 558, 7, 119, 2, 2, 558, 559, 7, 116, 2, 2, 559, 560, 7, 112, 2, 2, 560, 120, 3, 2, 2, 2, 561, 562, 7, 118, 2, 2, 562, 563, 7, 106, 2, 2, 563, 564, 7, 116, 2, 2, 564, 565, 7, 113, 2, 2, 565, 566, 7, 121, 2, 2, 566, 122, 3, 2, 2, 2, 567, 568, 7, 103, 2, 2, 568, 569, 7, 111, 2, 2, 569, 570, 7, 107, 2, 2, 570, 571, 7, 118, 2, 2, 571, 124, 3, 2, 2, 2, 572, 573, 7, 116, 2, 2, 573, 574, 7, 103, 2, 2, 574, 575, 7, 120, 2, 2, 575, 576, 7, 103, 2, 2, 576, 577, 7, 116, 2, 2, 577, 578, 7, 118, 2, 2, 578, 126, 3, 2, 2, 2, 579, 580, 7, 120, 2, 2, 580, 581, 7, 99, 2, 2, 581, 582, 7, 116, 2, 2, 582, 128, 3, 2, 2, 2, 583, 584, 7, 100, 2, 2, 584, 585, 7, 113, 2, 2, 585, 586, 7, 113, 2, 2, 586, 587, 7, 110, 2, 2, 587, 130, 3, 2, 2, 2, 588, 589, 7, 117, 2, 2, 589, 590, 7, 118, 2, 2, 590, 591, 7, 116, 2, 2, 591, 592, 7, 107, 2, 2, 592, 593, 7, 112, 2, 2, 593, 594, 7, 105, 2, 2, 594, 132, 3, 2, 2, 2, 595, 596, 7, 100, 2, 2, 596, 597, 7, 123, 2, 2, 597, 598, 7, 118, 2, 2, 598, 599, 7, 103, 2, 2, 599, 134, 3, 2, 2, 2, 600, 601, 7, 45, 2, 2, 601, 602, 7, 45, 2, 2, 602, 136, 3, 2, 2, 2, 603, 604, 7, 47, 2, 2, 604, 605, 7, 47, 2, 2, 605, 138, 3, 2, 2, 2, 606, 607, 7, 112, 2, 2, 607, 608, 7, 103, 2, 2, 608, 609, 7, 121, 2, 2, 609, 140, 3, 2, 2, 2, 610, 611, 7, 60, 2, 2, 611, 142, 3, 2, 2, 2, 612, 613, 7, 102, 2, 2, 613, 614, 7, 103, 2, 2, 614, 615, 7, 110, 2, 2, 615, 616, 7, 103, 2, 2, 616, 617, 7, 118, 2, 2, 617, 618, 7, 103, 2, 2, 618, 144, 3, 2, 2, 2, 619, 620, 7, 35, 2, 2, 620, 146, 3, 2, 2, 2, 621, 622, 7, 44, 2, 2, 622, 623, 7, 44, 2, 2, 623, 148, 3, 2, 2, 2, 624, 625, 7, 62, 2, 2, 625, 626, 7, 62, 2, 2, 626, 150, 3, 2, 2, 2, 627, 628, 7, 64, 2, 2, 628, 629, 7, 64, 2, 2, 629, 152, 3, 2, 2, 2, 630, 631, 7, 40, 2, 2, 631, 632, 7, 40, 2, 2, 632, 154, 3, 2, 2, 2, 633, 634, 7, 65, 2, 2, 634, 156, 3, 2, 2, 2, 635, 636, 7, 126, 2, 2, 636, 637, 7, 63, 2, 2, 637, 158, 3, 2, 2, 2, 638, 639, 7, 96, 2, 2, 639, 640, 7, 63, 2, 2, 640, 160, 3, 2, 2, 2, 641, 642, 7, 40, 2, 2, 642, 643, 7, 63, 2, 2, 643, 162, 3, 2, 2, 2, 644, 645, 7, 62, 2, 2, 645, 646, 7, 62, 2, 2, 646, 647, 7, 63, 2, 2, 647, 164, 3, 2, 2, 2, 648, 649, 7, 64, 2, 2, 649, 650, 7, 64, 2, 2, 650, 651, 7, 63, 2, 2, 651, 166, 3, 2, 2, 2, 652, 653, 7, 45, 2, 2, 653, 654, 7, 63, 2, 2, 654, 168, 3, 2, 2, 2, 655, 656, 7, 47, 2, 2, 656, 657, 7, 63, 2, 2, 657, 170, 3, 2, 2, 2, 658, 659, 7, 44, 2, 2, 659, 660, 7, 63, 2, 2, 660, 172, 3, 2, 2, 2, 661, 662, 7, 49, 2, 2, 662, 663, 7, 63, 2, 2, 663, 174, 3, 2, 2, 2, 664, 665, 7, 39, 2, 2, 665, 666, 7, 63, 2, 2, 666, 176, 3, 2, 2, 2, 667, 668, 7, 110, 2, 2, 668, 669, 7, 103, 2, 2, 669, 670, 7, 118, 2, 2, 670, 178, 3, 2, 2, 2, 671, 672, 7, 60, 2, 2, 672, 673, 7, 63, 2, 2, 673, 180, 3, 2, 2, 2, 674, 675, 7, 63, 2, 2, 675, 676, 7, 60, 2, 2, 676, 182, 3, 2, 2, 2, 677, 678, 7, 117, 2, 2, 678, 679, 7, 121, 2, 2, 679, 680, 7, 107, 2, 2, 680, 681, 7, 118, 2, 2, 681, 682, 7, 101, 2, 2, 682, 683, 7, 106, 2, 2, 683, 184, 3, 2, 2, 2, 684, 685, 7, 101, 2, 2, 685, 686, 7, 99, 2, 2, 686, 687, 7, 117, 2, 2, 687, 688, 7, 103, 2, 2, 688, 186, 3, 2, 2, 2, 689, 690, 7, 102, 2, 2, 690, 691, 7, 103, 2, 2, 691, 692, 7, 104, 2, 2, 692, 693, 7, 99, 2, 2, 693, 694, 7, 119, 2, 2, 694, 695, 7, 110, 2, 2, 695, 696, 7, 118, 2, 2, 696, 188, 3, 2, 2, 2, 697, 698, 7, 47, 2, 2, 698, 699, 7, 64, 2, 2, 699, 190, 3, 2, 2, 2, 700, 701, 7, 101, 2, 2, 701, 702, 7, 99, 2, 2, 702, 703, 7, 110, 2, 2, 703, 704, 7, 110, 2, 2, 704, 705, 7, 100, 2, 2, 705, 706, 7, 99, 2, 2, 706, 707, 7, 101, 2, 2, 707, 708, 7, 109, 2, 2, 708, 192, 3, 2, 2, 2, 709, 710, 7, 113, 2, 2, 710, 711, 7, 120, 2, 2, 711, 712, 7, 103, 2, 2, 712, 713, 7, 116, 2, 2, 713, 714, 7, 116, 2, 2, 714, 715, 7, 107, 2, 2, 715, 716, 7, 102, 2, 2, 716, 717, 7, 103, 2, 2, 717, 194, 3, 2, 2, 2, 718, 719, 7, 107, 2, 2, 719, 720, 7, 112, 2, 2, 720, 721, 7, 118, 2, 2, 721, 723, 3, 2, 2, 2, 722, 724, 5, 205, 103, 2, 723, 722, 3, 2, 2, 2, 723, 724, 3, 2, 2, 2, 724, 196, 3, 2, 2, 2, 725, 726, 7, 119, 2, 2, 726, 727, 7, 107, 2, 2, 727, 728, 7, 112, 2, 2, 728, 729, 7, 118, 2, 2, 729, 731, 3, 2, 2, 2, 730, 732, 5, 205, 103, 2, 731, 730, 3, 2, 2, 2, 731, 732, 3, 2, 2, 2, 732, 198, 3, 2, 2, 2, 733, 734, 7, 100, 2, 2, 734, 735, 7, 123, 2, 2, 735, 736, 7, 118, 2, 2, 736, 737, 7, 103, 2, 2, 737, 738, 7, 117, 2, 2, 738, 740, 3, 2, 2, 2, 739, 741, 5, 207, 104, 2, 740, 739, 3, 2, 2, 2, 740, 741, 3, 2, 2, 2, 741, 200, 3, 2, 2, 2, 742, 743, 7, 104, 2, 2, 743, 744, 7, 107, 2, 2, 744, 745, 7, 122, 2, 2, 745, 746, 7, 103, 2, 2, 746, 747, 7, 102, 2, 2, 747, 755, 3, 2, 2, 2, 748, 749, 5, 205, 103, 2, 749, 751, 7, 122, 2, 2, 750, 752, 9, 2, 2, 2, 751, 750, 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 751, 3, 2, 2, 2, 753, 754, 3, 2, 2, 2, 754, 756, 3, 2, 2, 2, 755, 748, 3, 2, 2, 2, 755, 756, 3, 2, 2, 2, 756, 202, 3, 2, 2, 2, 757, 758, 7, 119, 2, 2, 758, 759, 7, 104, 2, 2, 759, 760, 7, 107, 2, 2, 760, 761, 7, 122, 2, 2, 761, 762, 7, 103, 2, 2, 762, 763, 7, 102, 2, 2, 763, 771, 3, 2, 2, 2, 764, 765, 5, 205, 103, 2, 765, 767, 7, 122, 2, 2, 766, 768, 9, 2, 2, 2, 767, 766, 3, 2, 2, 2, 768, 769, 3, 2, 2, 2, 769, 767, 3, 2, 2, 2, 769, 770, 3, 2, 2, 2, 770, 772, 3, 2, 2, 2, 771, 764, 3, 2, 2, 2, 771, 772, 3, 2, 2, 2, 772, 204, 3, 2, 2, 2, 773, 857, 7, 58, 2, 2, 774, 775, 7, 51, 2, 2, 775, 857, 7, 56, 2, 2, 776, 777, 7, 52, 2, 2, 777, 857, 7, 54, 2, 2, 778, 779, 7, 53, 2, 2, 779, 857, 7, 52, 2, 2, 780, 781, 7, 54, 2, 2, 781, 857, 7, 50, 2, 2, 782, 783, 7, 54, 2, 2, 783, 857, 7, 58, 2, 2, 784, 785, 7, 55, 2, 2, 785, 857, 7, 56, 2, 2, 786, 787, 7, 56, 2, 2, 787, 857, 7, 54, 2, 2, 788, 789, 7, 57, 2, 2, 789, 857, 7, 52, 2, 2, 790, 791, 7, 58, 2, 2, 791, 857, 7, 50, 2, 2, 792, 793, 7, 58, 2, 2, 793, 857, 7, 58, 2, 2, 794, 795, 7, 59, 2, 2, 795, 857, 7, 56, 2, 2, 796, 797, 7, 51, 2, 2, 797, 798, 7, 50, 2, 2, 798, 857, 7, 54, 2, 2, 799, 800, 7, 51, 2, 2, 800, 801, 7, 51, 2, 2, 801, 857, 7, 52, 2, 2, 802, 803, 7, 51, 2, 2, 803, 804, 7, 52, 2, 2, 804, 857, 7, 50, 2, 2, 805, 806, 7, 51, 2, 2, 806, 807, 7, 52, 2, 2, 807, 857, 7, 58, 2, 2, 808, 809, 7, 51, 2, 2, 809, 810, 7, 53, 2, 2, 810, 857, 7, 56, 2, 2, 811, 812, 7, 51, 2, 2, 812, 813, 7, 54, 2, 2, 813, 857, 7, 54, 2, 2, 814, 815, 7, 51, 2, 2, 815, 816, 7, 55, 2, 2, 816, 857, 7, 52, 2, 2, 817, 818, 7, 51, 2, 2, 818, 819, 7, 56, 2, 2, 819, 857, 7, 50, 2, 2, 820, 821, 7, 51, 2, 2, 821, 822, 7, 56, 2, 2, 822, 857, 7, 58, 2, 2, 823, 824, 7, 51, 2, 2, 824, 825, 7, 57, 2, 2, 825, 857, 7, 56, 2, 2, 826, 827, 7, 51, 2, 2, 827, 828, 7, 58, 2, 2, 828, 857, 7, 54, 2, 2, 829, 830, 7, 51, 2, 2, 830, 831, 7, 59, 2, 2, 831, 857, 7, 52, 2, 2, 832, 833, 7, 52, 2, 2, 833, 834, 7, 50, 2, 2, 834, 857, 7, 50, 2, 2, 835, 836, 7, 52, 2, 2, 836, 837, 7, 50, 2, 2, 837, 857, 7, 58, 2, 2, 838, 839, 7, 52, 2, 2, 839, 840, 7, 51, 2, 2, 840, 857, 7, 56, 2, 2, 841, 842, 7, 52, 2, 2, 842, 843, 7, 52, 2, 2, 843, 857, 7, 54, 2, 2, 844, 845, 7, 52, 2, 2, 845, 846, 7, 53, 2, 2, 846, 857, 7, 52, 2, 2, 847, 848, 7, 52, 2, 2, 848, 849, 7, 54, 2, 2, 849, 857, 7, 50, 2, 2, 850, 851, 7, 52, 2, 2, 851, 852, 7, 54, 2, 2, 852, 857, 7, 58, 2, 2, 853, 854, 7, 52, 2, 2, 854, 855, 7, 55, 2, 2, 855, 857, 7, 56, 2, 2, 856, 773, 3, 2, 2, 2, 856, 774, 3, 2, 2, 2, 856, 776, 3, 2, 2, 2, 856, 778, 3, 2, 2, 2, 856, 780, 3, 2, 2, 2, 856, 782, 3, 2, 2, 2, 856, 784, 3, 2, 2, 2, 856, 786, 3, 2, 2, 2, 856, 788, 3, 2, 2, 2, 856, 790, 3, 2, 2, 2, 856, 792, 3, 2, 2, 2, 856, 794, 3, 2, 2, 2, 856, 796, 3, 2, 2, 2, 856, 799, 3, 2, 2, 2, 856, 802, 3, 2, 2, 2, 856, 805, 3, 2, 2, 2, 856, 808, 3, 2, 2, 2, 856, 811, 3, 2, 2, 2, 856, 814, 3, 2, 2, 2, 856, 817, 3, 2, 2, 2, 856, 820, 3, 2, 2, 2, 856, 823, 3, 2, 2, 2, 856, 826, 3, 2, 2, 2, 856, 829, 3, 2, 2, 2, 856, 832, 3, 2, 2, 2, 856, 835, 3, 2, 2, 2, 856, 838, 3, 2, 2, 2, 856, 841, 3, 2, 2, 2, 856, 844, 3, 2, 2, 2, 856, 847, 3, 2, 2, 2, 856, 850, 3, 2, 2, 2, 856, 853, 3, 2, 2, 2, 857, 206, 3, 2, 2, 2, 858, 864, 9, 3, 2, 2, 859, 860, 9, 4, 2, 2, 860, 864, 9, 2, 2, 2, 861, 862, 7, 53, 2, 2, 862, 864, 9, 5, 2, 2, 863, 858, 3, 2, 2, 2, 863, 859, 3, 2, 2, 2, 863, 861, 3, 2, 2, 2, 864, 208, 3, 2, 2, 2, 865, 866, 7, 118, 2, 2, 866, 867, 7, 116, 2, 2, 867, 868, 7, 119, 2, 2, 868, 875, 7, 103, 2, 2, 869, 870, 7, 104, 2, 2, 870, 871, 7, 99, 2, 2, 871, 872, 7, 110, 2, 2, 872, 873, 7, 117, 2, 2, 873, 875, 7, 103, 2, 2, 874, 865, 3, 2, 2, 2, 874, 869, 3, 2, 2, 2, 875, 210, 3, 2, 2, 2, 876, 883, 5, 213, 107, 2, 877, 879, 5, 213, 107, 2, 878, 877, 3, 2, 2, 2, 878, 879, 3, 2, 2, 2, 879, 880, 3, 2, 2, 2, 880, 881, 7, 48, 2, 2, 881, 883, 5, 213, 107, 2, 882, 876, 3, 2, 2, 2, 882, 878, 3, 2, 2, 2, 883, 889, 3, 2, 2, 2, 884, 886, 9, 6, 2, 2, 885, 887, 7, 47, 2, 2, 886, 885, 3, 2, 2, 2, 886, 887, 3, 2, 2, 2, 887, 888, 3, 2, 2, 2, 888, 890, 5, 213, 107, 2, 889, 884, 3, 2, 2, 2, 889, 890, 3, 2, 2, 2, 890, 212, 3, 2, 2, 2, 891, 898, 9, 2, 2, 2, 892, 894, 7, 97, 2, 2, 893, 892, 3, 2, 2, 2, 893, 894, 3, 2, 2, 2, 894, 895, 3, 2, 2, 2, 895, 897, 9, 2, 2, 2, 896, 893, 3, 2, 2, 2, 897, 900, 3, 2, 2, 2, 898, 896, 3, 2, 2, 2, 898, 899, 3, 2, 2, 2, 899, 214, 3, 2, 2, 2, 900, 898, 3, 2, 2, 2, 901, 902, 7, 50, 2, 2, 902, 903, 9, 7, 2, 2, 903, 904, 5, 217, 109, 2, 904, 216, 3, 2, 2, 2, 905, 912, 5, 223, 112, 2, 906, 908, 7, 97, 2, 2, 907, 906, 3, 2, 2, 2, 907, 908, 3, 2, 2, 2, 908, 909, 3, 2, 2, 2, 909, 911, 5, 223, 112, 2, 910, 907, 3, 2, 2, 2, 911, 914, 3, 2, 2, 2, 912, 910, 3, 2, 2, 2, 912, 913, 3, 2, 2, 2, 913, 218, 3, 2, 2, 2, 914, 912, 3, 2, 2, 2, 915, 916, 7, 121, 2, 2, 916, 917, 7, 103, 2, 2, 917, 972, 7, 107, 2, 2, 918, 919, 7, 105, 2, 2, 919, 920, 7, 121, 2, 2, 920, 921, 7, 103, 2, 2, 921, 972, 7, 107, 2, 2, 922, 923, 7, 117, 2, 2, 923, 924, 7, 124, 2, 2, 924, 925, 7, 99, 2, 2, 925, 926, 7, 100, 2, 2, 926, 972, 7, 113, 2, 2, 927, 928, 7, 104, 2, 2, 928, 929, 7, 107, 2, 2, 929, 930, 7, 112, 2, 2, 930, 931, 7, 112, 2, 2, 931, 932, 7, 103, 2, 2, 932, 972, 7, 123, 2, 2, 933, 934, 7, 103, 2, 2, 934, 935, 7, 118, 2, 2, 935, 936, 7, 106, 2, 2, 936, 937, 7, 103, 2, 2, 937, 972, 7, 116, 2, 2, 938, 939, 7, 117, 2, 2, 939, 940, 7, 103, 2, 2, 940, 941, 7, 101, 2, 2, 941, 942, 7, 113, 2, 2, 942, 943, 7, 112, 2, 2, 943, 944, 7, 102, 2, 2, 944, 972, 7, 117, 2, 2, 945, 946, 7, 111, 2, 2, 946, 947, 7, 107, 2, 2, 947, 948, 7, 112, 2, 2, 948, 949, 7, 119, 2, 2, 949, 950, 7, 118, 2, 2, 950, 951, 7, 103, 2, 2, 951, 972, 7, 117, 2, 2, 952, 953, 7, 106, 2, 2, 953, 954, 7, 113, 2, 2, 954, 955, 7, 119, 2, 2, 955, 956, 7, 116, 2, 2, 956, 972, 7, 117, 2, 2, 957, 958, 7, 102, 2, 2, 958, 959, 7, 99, 2, 2, 959, 960, 7, 123, 2, 2, 960, 972, 7, 117, 2, 2, 961, 962, 7, 121, 2, 2, 962, 963, 7, 103, 2, 2, 963, 964, 7, 103, 2, 2, 964, 965, 7, 109, 2, 2, 965, 972, 7, 117, 2, 2, 966, 967, 7, 123, 2, 2, 967, 968, 7, 103, 2, 2, 968, 969, 7, 99, 2, 2, 969, 970, 7, 116, 2, 2, 970, 972, 7, 117, 2, 2, 971, 915, 3, 2, 2, 2, 971, 918, 3, 2, 2, 2, 971, 922, 3, 2, 2, 2, 971, 927, 3, 2, 2, 2, 971, 933, 3, 2, 2, 2, 971, 938, 3, 2, 2, 2, 971, 945, 3, 2, 2, 2, 971, 952, 3, 2, 2, 2, 971, 957, 3, 2, 2, 2, 971, 961, 3, 2, 2, 2, 971, 966, 3, 2, 2, 2, 972, 220, 3, 2, 2, 2, 973, 974, 7, 106, 2, 2, 974, 975, 7, 103, 2, 2, 975, 976, 7, 122, 2, 2, 976, 987, 3, 2, 2, 2, 977, 979, 7, 36, 2, 2, 978, 980, 5, 217, 109, 2, 979, 978, 3, 2, 2, 2, 979, 980, 3, 2, 2, 2, 980, 981, 3, 2, 2, 2, 981, 988, 7, 36, 2, 2, 982, 984, 7, 41, 2, 2, 983, 985, 5, 217, 109, 2, 984, 983, 3, 2, 2, 2, 984, 985, 3, 2, 2, 2, 985, 986, 3, 2, 2, 2, 986, 988, 7, 41, 2, 2, 987, 977, 3, 2, 2, 2, 987, 982, 3, 2, 2, 2, 988, 222, 3, 2, 2, 2, 989, 990, 9, 8, 2, 2, 990, 224, 3, 2, 2, 2, 991, 992, 7, 99, 2, 2, 992, 993, 7, 100, 2, 2, 993, 994, 7, 117, 2, 2, 994, 995, 7, 118, 2, 2, 995, 996, 7, 116, 2, 2, 996, 997, 7, 99, 2, 2, 997, 998, 7, 101, 2, 2, 998, 1080, 7, 118, 2, 2, 999, 1000, 7, 99, 2, 2, 1000, 1001, 7, 104, 2, 2, 1001, 1002, 7, 118, 2, 2, 1002, 1003, 7, 103, 2, 2, 1003, 1080, 7, 116, 2, 2, 1004, 1005, 7, 101, 2, 2, 1005, 1006, 7, 99, 2, 2, 1006, 1007, 7, 117, 2, 2, 1007, 1080, 7, 103, 2, 2, 1008, 1009, 7, 101, 2, 2, 1009, 1010, 7, 99, 2, 2, 1010, 1011, 7, 118, 2, 2, 1011, 1012, 7, 101, 2, 2, 1012, 1080, 7, 106, 2, 2, 1013, 1014, 7, 102, 2, 2, 1014, 1015, 7, 103, 2, 2, 1015, 1016, 7, 104, 2, 2, 1016, 1017, 7, 99, 2, 2, 1017, 1018, 7, 119, 2, 2, 1018, 1019, 7, 110, 2, 2, 1019, 1080, 7, 118, 2, 2, 1020, 1021, 7, 104, 2, 2, 1021, 1022, 7, 107, 2, 2, 1022, 1023, 7, 112, 2, 2, 1023, 1024, 7, 99, 2, 2, 1024, 1080, 7, 110, 2, 2, 1025, 1026, 7, 107, 2, 2, 1026, 1080, 7, 112, 2, 2, 1027, 1028, 7, 107, 2, 2, 1028, 1029, 7, 112, 2, 2, 1029, 1030, 7, 110, 2, 2, 1030, 1031, 7, 107, 2, 2, 1031, 1032, 7, 112, 2, 2, 1032, 1080, 7, 103, 2, 2, 1033, 1034, 7, 110, 2, 2, 1034, 1035, 7, 103, 2, 2, 1035, 1080, 7, 118, 2, 2, 1036, 1037, 7, 111, 2, 2, 1037, 1038, 7, 99, 2, 2, 1038, 1039, 7, 118, 2, 2, 1039, 1040, 7, 101, 2, 2, 1040, 1080, 7, 106, 2, 2, 1041, 1042, 7, 112, 2, 2, 1042, 1043, 7, 119, 2, 2, 1043, 1044, 7, 110, 2, 2, 1044, 1080, 7, 110, 2, 2, 1045, 1046, 7, 113, 2, 2, 1046, 1080, 7, 104, 2, 2, 1047, 1048, 7, 116, 2, 2, 1048, 1049, 7, 103, 2, 2, 1049, 1050, 7, 110, 2, 2, 1050, 1051, 7, 113, 2, 2, 1051, 1052, 7, 101, 2, 2, 1052, 1053, 7, 99, 2, 2, 1053, 1054, 7, 118, 2, 2, 1054, 1055, 7, 99, 2, 2, 1055, 1056, 7, 100, 2, 2, 1056, 1057, 7, 110, 2, 2, 1057, 1080, 7, 103, 2, 2, 1058, 1059, 7, 117, 2, 2, 1059, 1060, 7, 118, 2, 2, 1060, 1061, 7, 99, 2, 2, 1061, 1062, 7, 118, 2, 2, 1062, 1063, 7, 107, 2, 2, 1063, 1080, 7, 101, 2, 2, 1064, 1065, 7, 117, 2, 2, 1065, 1066, 7, 121, 2, 2, 1066, 1067, 7, 107, 2, 2, 1067, 1068, 7, 118, 2, 2, 1068, 1069, 7, 101, 2, 2, 1069, 1080, 7, 106, 2, 2, 1070, 1071, 7, 118, 2, 2, 1071, 1072, 7, 116, 2, 2, 1072, 1080, 7, 123, 2, 2, 1073, 1074, 7, 118, 2, 2, 1074, 1075, 7, 123, 2, 2, 1075, 1076, 7, 114, 2, 2, 1076, 1077, 7, 103, 2, 2, 1077, 1078, 7, 113, 2, 2, 1078, 1080, 7, 104, 2, 2, 1079, 991, 3, 2, 2, 2, 1079, 999, 3, 2, 2, 2, 1079, 1004, 3, 2, 2, 2, 1079, 1008, 3, 2, 2, 2, 1079, 1013, 3, 2, 2, 2, 1079, 1020, 3, 2, 2, 2, 1079, 1025, 3, 2, 2, 2, 1079, 1027, 3, 2, 2, 2, 1079, 1033, 3, 2, 2, 2, 1079, 1036, 3, 2, 2, 2, 1079, 1041, 3, 2, 2, 2, 1079, 1045, 3, 2, 2, 2, 1079, 1047, 3, 2, 2, 2, 1079, 1058, 3, 2, 2, 2, 1079, 1064, 3, 2, 2, 2, 1079, 1070, 3, 2, 2, 2, 1079, 1073, 3, 2, 2, 2, 1080, 226, 3, 2, 2, 2, 1081, 1082, 7, 99, 2, 2, 1082, 1083, 7, 112, 2, 2, 1083, 1084, 7, 113, 2, 2, 1084, 1085, 7, 112, 2, 2, 1085, 1086, 7, 123, 2, 2, 1086, 1087, 7, 111, 2, 2, 1087, 1088, 7, 113, 2, 2, 1088, 1089, 7, 119, 2, 2, 1089, 1090, 7, 117, 2, 2, 1090, 228, 3, 2, 2, 2, 1091, 1092, 7, 100, 2, 2, 1092, 1093, 7, 116, 2, 2, 1093, 1094, 7, 103, 2, 2, 1094, 1095, 7, 99, 2, 2, 1095, 1096, 7, 109, 2, 2, 1096, 230, 3, 2, 2, 2, 1097, 1098, 7, 101, 2, 2, 1098, 1099, 7, 113, 2, 2, 1099, 1100, 7, 112, 2, 2, 1100, 1101, 7, 117, 2, 2, 1101, 1102, 7, 118, 2, 2, 1102, 1103, 7, 99, 2, 2, 1103, 1104, 7, 112, 2, 2, 1104, 1105, 7, 118, 2, 2, 1105, 232, 3, 2, 2, 2, 1106, 1107, 7, 107, 2, 2, 1107, 1108, 7, 111, 2, 2, 1108, 1109, 7, 111, 2, 2, 1109, 1110, 7, 119, 2, 2, 1110, 1111, 7, 118, 2, 2, 1111, 1112, 7, 99, 2, 2, 1112, 1113, 7, 100, 2, 2, 1113, 1114, 7, 110, 2, 2, 1114, 1115, 7, 103, 2, 2, 1115, 234, 3, 2, 2, 2, 1116, 1117, 7, 101, 2, 2, 1117, 1118, 7, 113, 2, 2, 1118, 1119, 7, 112, 2, 2, 1119, 1120, 7, 118, 2, 2, 1120, 1121, 7, 107, 2, 2, 1121, 1122, 7, 112, 2, 2, 1122, 1123, 7, 119, 2, 2, 1123, 1124, 7, 103, 2, 2, 1124, 236, 3, 2, 2, 2, 1125, 1126, 7, 110, 2, 2, 1126, 1127, 7, 103, 2, 2, 1127, 1128, 7, 99, 2, 2, 1128, 1129, 7, 120, 2, 2, 1129, 1130, 7, 103, 2, 2, 1130, 238, 3, 2, 2, 2, 1131, 1132, 7, 103, 2, 2, 1132, 1133, 7, 122, 2, 2, 1133, 1134, 7, 118, 2, 2, 1134, 1135, 7, 103, 2, 2, 1135, 1136, 7, 116, 2, 2, 1136, 1137, 7, 112, 2, 2, 1137, 1138, 7, 99, 2, 2, 1138, 1139, 7, 110, 2, 2, 1139, 240, 3, 2, 2, 2, 1140, 1141, 7, 107, 2, 2, 1141, 1142, 7, 112, 2, 2, 1142, 1143, 7, 102, 2, 2, 1143, 1144, 7, 103, 2, 2, 1144, 1145, 7, 122, 2, 2, 1145, 1146, 7, 103, 2, 2, 1146, 1147, 7, 102, 2, 2, 1147, 242, 3, 2, 2, 2, 1148, 1149, 7, 107, 2, 2, 1149, 1150, 7, 112, 2, 2, 1150, 1151, 7, 118, 2, 2, 1151, 1152, 7, 103, 2, 2, 1152, 1153, 7, 116, 2, 2, 1153, 1154, 7, 112, 2, 2, 1154, 1155, 7, 99, 2, 2, 1155, 1156, 7, 110, 2, 2, 1156, 244, 3, 2, 2, 2, 1157, 1158, 7, 114, 2, 2, 1158, 1159, 7, 99, 2, 2, 1159, 1160, 7, 123, 2, 2, 1160, 1161, 7, 99, 2, 2, 1161, 1162, 7, 100, 2, 2, 1162, 1163, 7, 110, 2, 2, 1163, 1164, 7, 103, 2, 2, 1164, 246, 3, 2, 2, 2, 1165, 1166, 7, 114, 2, 2, 1166, 1167, 7, 116, 2, 2, 1167, 1168, 7, 107, 2, 2, 1168, 1169, 7, 120, 2, 2, 1169, 1170, 7, 99, 2, 2, 1170, 1171, 7, 118, 2, 2, 1171, 1172, 7, 103, 2, 2, 1172, 248, 3, 2, 2, 2, 1173, 1174, 7, 114, 2, 2, 1174, 1175, 7, 119, 2, 2, 1175, 1176, 7, 100, 2, 2, 1176, 1177, 7, 110, 2, 2, 1177, 1178, 7, 107, 2, 2, 1178, 1179, 7, 101, 2, 2, 1179, 250, 3, 2, 2, 2, 1180, 1181, 7, 120, 2, 2, 1181, 1182, 7, 107, 2, 2, 1182, 1183, 7, 116, 2, 2, 1183, 1184, 7, 118, 2, 2, 1184, 1185, 7, 119, 2, 2, 1185, 1186, 7, 99, 2, 2, 1186, 1187, 7, 110, 2, 2, 1187, 252, 3, 2, 2, 2, 1188, 1189, 7, 114, 2, 2, 1189, 1190, 7, 119, 2, 2, 1190, 1191, 7, 116, 2, 2, 1191, 1192, 7, 103, 2, 2, 1192, 254, 3, 2, 2, 2, 1193, 1194, 7, 118, 2, 2, 1194, 1195, 7, 123, 2, 2, 1195, 1196, 7, 114, 2, 2, 1196, 1197, 7, 103, 2, 2, 1197, 256, 3, 2, 2, 2, 1198, 1199, 7, 120, 2, 2, 1199, 1200, 7, 107, 2, 2, 1200, 1201, 7, 103, 2, 2, 1201, 1202, 7, 121, 2, 2, 1202, 258, 3, 2, 2, 2, 1203, 1204, 7, 105, 2, 2, 1204, 1205, 7, 110, 2, 2, 1205, 1206, 7, 113, 2, 2, 1206, 1207, 7, 100, 2, 2, 1207, 1208, 7, 99, 2, 2, 1208, 1209, 7, 110, 2, 2, 1209, 260, 3, 2, 2, 2, 1210, 1211, 7, 101, 2, 2, 1211, 1212, 7, 113, 2, 2, 1212, 1213, 7, 112, 2, 2, 1213, 1214, 7, 117, 2, 2, 1214, 1215, 7, 118, 2, 2, 1215, 1216, 7, 116, 2, 2, 1216, 1217, 7, 119, 2, 2, 1217, 1218, 7, 101, 2, 2, 1218, 1219, 7, 118, 2, 2, 1219, 1220, 7, 113, 2, 2, 1220, 1221, 7, 116, 2, 2, 1221, 262, 3, 2, 2, 2, 1222, 1223, 7, 104, 2, 2, 1223, 1224, 7, 99, 2, 2, 1224, 1225, 7, 110, 2, 2, 1225, 1226, 7, 110, 2, 2, 1226, 1227, 7, 100, 2, 2, 1227, 1228, 7, 99, 2, 2, 1228, 1229, 7, 101, 2, 2, 1229, 1230, 7, 109, 2, 2, 1230, 264, 3, 2, 2, 2, 1231, 1232, 7, 116, 2, 2, 1232, 1233, 7, 103, 2, 2, 1233, 1234, 7, 101, 2, 2, 1234, 1235, 7, 103, 2, 2, 1235, 1236, 7, 107, 2, 2, 1236, 1237, 7, 120, 2, 2, 1237, 1238, 7, 103, 2, 2, 1238, 266, 3, 2, 2, 2, 1239, 1243, 5, 269, 135, 2, 1240, 1242, 5, 271, 136, 2, 1241, 1240, 3, 2, 2, 2, 1242, 1245, 3, 2, 2, 2, 1243, 1241, 3, 2, 2, 2, 1243, 1244, 3, 2, 2, 2, 1244, 268, 3, 2, 2, 2, 1245, 1243, 3, 2, 2, 2, 1246, 1247, 9, 9, 2, 2, 1247, 270, 3, 2, 2, 2, 1248, 1249, 9, 10, 2, 2, 1249, 272, 3, 2, 2, 2, 1250, 1251, 7, 119, 2, 2, 1251, 1252, 7, 112, 2, 2, 1252, 1253, 7, 107, 2, 2, 1253, 1254, 7, 101, 2, 2, 1254, 1255, 7, 113, 2, 2, 1255, 1256, 7, 102, 2, 2, 1256, 1258, 7, 103, 2, 2, 1257, 1250, 3, 2, 2, 2, 1257, 1258, 3, 2, 2, 2, 1258, 1275, 3, 2, 2, 2, 1259, 1263, 7, 36, 2, 2, 1260, 1262, 5, 275, 138, 2, 1261, 1260, 3, 2, 2, 2, 1262, 1265, 3, 2, 2, 2, 1263, 1261, 3, 2, 2, 2, 1263, 1264, 3, 2, 2, 2, 1264, 1266, 3, 2, 2, 2, 1265, 1263, 3, 2, 2, 2, 1266, 1276, 7, 36, 2, 2, 1267, 1271, 7, 41, 2, 2, 1268, 1270, 5, 277, 139, 2, 1269, 1268, 3, 2, 2, 2, 1270, 1273, 3, 2, 2, 2, 1271, 1269, 3, 2, 2, 2, 1271, 1272, 3, 2, 2, 2, 1272, 1274, 3, 2, 2, 2, 1273, 1271, 3, 2, 2, 2, 1274, 1276, 7, 41, 2, 2, 1275, 1259, 3, 2, 2, 2, 1275, 1267, 3, 2, 2, 2, 1276, 274, 3, 2, 2, 2, 1277, 1281, 10, 11, 2, 2, 1278, 1279, 7, 94, 2, 2, 1279, 1281, 11, 2, 2, 2, 1280, 1277, 3, 2, 2, 2, 1280, 1278, 3, 2, 2, 2, 1281, 276, 3, 2, 2, 2, 1282, 1286, 10, 12, 2, 2, 1283, 1284, 7, 94, 2, 2, 1284, 1286, 11, 2, 2, 2, 1285, 1282, 3, 2, 2, 2, 1285, 1283, 3, 2, 2, 2, 1286, 278, 3, 2, 2, 2, 1287, 1289, 9, 2, 2, 2, 1288, 1287, 3, 2, 2, 2, 1289, 1290, 3, 2, 2, 2, 1290, 1288, 3, 2, 2, 2, 1290, 1291, 3, 2, 2, 2, 1291, 1292, 3, 2, 2, 2, 1292, 1294, 7, 48, 2, 2, 1293, 1295, 9, 2, 2, 2, 1294, 1293, 3, 2, 2, 2, 1295, 1296, 3, 2, 2, 2, 1296, 1294, 3, 2, 2, 2, 1296, 1297, 3, 2, 2, 2, 1297, 1304, 3, 2, 2, 2, 1298, 1300, 7, 48, 2, 2, 1299, 1301, 9, 2, 2, 2, 1300, 1299, 3, 2, 2, 2, 1301, 1302, 3, 2, 2, 2, 1302, 1300, 3, 2, 2, 2, 1302, 1303, 3, 2, 2, 2, 1303, 1305, 3, 2, 2, 2, 1304, 1298, 3, 2, 2, 2, 1304, 1305, 3, 2, 2, 2, 1305, 280, 3, 2, 2, 2, 1306, 1308, 9, 13, 2, 2, 1307, 1306, 3, 2, 2, 2, 1308, 1309, 3, 2, 2, 2, 1309, 1307, 3, 2, 2, 2, 1309, 1310, 3, 2, 2, 2, 1310, 1311, 3, 2, 2, 2, 1311, 1312, 8, 141, 2, 2, 1312, 282, 3, 2, 2, 2, 1313, 1314, 7, 49, 2, 2, 1314, 1315, 7, 44, 2, 2, 1315, 1319, 3, 2, 2, 2, 1316, 1318, 11, 2, 2, 2, 1317, 1316, 3, 2, 2, 2, 1318, 1321, 3, 2, 2, 2, 1319, 1320, 3, 2, 2, 2, 1319, 1317, 3, 2, 2, 2, 1320, 1322, 3, 2, 2, 2, 1321, 1319, 3, 2, 2, 2, 1322, 1323, 7, 44, 2, 2, 1323, 1324, 7, 49, 2, 2, 1324, 1325, 3, 2, 2, 2, 1325, 1326, 8, 142, 3, 2, 1326, 284, 3, 2, 2, 2, 1327, 1328, 7, 49, 2, 2, 1328, 1329, 7, 49, 2, 2, 1329, 1333, 3, 2, 2, 2, 1330, 1332, 10, 14, 2, 2, 1331, 1330, 3, 2, 2, 2, 1332, 1335, 3, 2, 2, 2, 1333, 1331, 3, 2, 2, 2, 1333, 1334, 3, 2, 2, 2, 1334, 1336, 3, 2, 2, 2, 1335, 1333, 3, 2, 2, 2, 1336, 1337, 8, 143, 3, 2, 1337, 286, 3, 2, 2, 2, 40, 2, 723, 731, 740, 753, 755, 769, 771, 856, 863, 874, 878, 882, 886, 889, 893, 898, 907, 912, 971, 979, 984, 987, 1079, 1243, 1257, 1263, 1271, 1275, 1280, 1285, 1290, 1296, 1302, 1304, 1309, 1319, 1333, 4, 8, 2, 2, 2, 3, 2] \ No newline at end of file +[4, 0, 133, 1336, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 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, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 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, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 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, 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, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 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, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 722, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 730, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 739, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 4, 99, 750, 8, 99, 11, 99, 12, 99, 751, 3, 99, 754, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 4, 100, 766, 8, 100, 11, 100, 12, 100, 767, 3, 100, 770, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 855, 8, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 862, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 873, 8, 103, 1, 104, 1, 104, 3, 104, 877, 8, 104, 1, 104, 1, 104, 3, 104, 881, 8, 104, 1, 104, 1, 104, 3, 104, 885, 8, 104, 1, 104, 3, 104, 888, 8, 104, 1, 105, 1, 105, 3, 105, 892, 8, 105, 1, 105, 5, 105, 895, 8, 105, 10, 105, 12, 105, 898, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 3, 107, 906, 8, 107, 1, 107, 5, 107, 909, 8, 107, 10, 107, 12, 107, 912, 9, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 970, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 978, 8, 109, 1, 109, 1, 109, 1, 109, 3, 109, 983, 8, 109, 1, 109, 3, 109, 986, 8, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1078, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 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, 118, 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, 120, 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, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 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, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 5, 132, 1240, 8, 132, 10, 132, 12, 132, 1243, 9, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 1256, 8, 135, 1, 135, 1, 135, 5, 135, 1260, 8, 135, 10, 135, 12, 135, 1263, 9, 135, 1, 135, 1, 135, 1, 135, 5, 135, 1268, 8, 135, 10, 135, 12, 135, 1271, 9, 135, 1, 135, 3, 135, 1274, 8, 135, 1, 136, 1, 136, 1, 136, 3, 136, 1279, 8, 136, 1, 137, 1, 137, 1, 137, 3, 137, 1284, 8, 137, 1, 138, 4, 138, 1287, 8, 138, 11, 138, 12, 138, 1288, 1, 138, 1, 138, 4, 138, 1293, 8, 138, 11, 138, 12, 138, 1294, 1, 138, 1, 138, 4, 138, 1299, 8, 138, 11, 138, 12, 138, 1300, 3, 138, 1303, 8, 138, 1, 139, 4, 139, 1306, 8, 139, 11, 139, 12, 139, 1307, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 1316, 8, 140, 10, 140, 12, 140, 1319, 9, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 1330, 8, 141, 10, 141, 12, 141, 1333, 9, 141, 1, 141, 1, 141, 1, 1317, 0, 142, 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, 0, 205, 0, 207, 102, 209, 103, 211, 0, 213, 104, 215, 0, 217, 105, 219, 106, 221, 0, 223, 107, 225, 108, 227, 109, 229, 110, 231, 111, 233, 112, 235, 113, 237, 114, 239, 115, 241, 116, 243, 117, 245, 118, 247, 119, 249, 120, 251, 121, 253, 122, 255, 123, 257, 124, 259, 125, 261, 126, 263, 127, 265, 128, 267, 0, 269, 0, 271, 129, 273, 0, 275, 0, 277, 130, 279, 131, 281, 132, 283, 133, 1, 0, 13, 1, 0, 48, 57, 1, 0, 49, 57, 1, 0, 49, 50, 1, 0, 48, 50, 2, 0, 69, 69, 101, 101, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1418, 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, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 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, 271, 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, 1, 285, 1, 0, 0, 0, 3, 292, 1, 0, 0, 0, 5, 294, 1, 0, 0, 0, 7, 296, 1, 0, 0, 0, 9, 299, 1, 0, 0, 0, 11, 301, 1, 0, 0, 0, 13, 303, 1, 0, 0, 0, 15, 306, 1, 0, 0, 0, 17, 308, 1, 0, 0, 0, 19, 310, 1, 0, 0, 0, 21, 313, 1, 0, 0, 0, 23, 315, 1, 0, 0, 0, 25, 318, 1, 0, 0, 0, 27, 325, 1, 0, 0, 0, 29, 330, 1, 0, 0, 0, 31, 332, 1, 0, 0, 0, 33, 334, 1, 0, 0, 0, 35, 336, 1, 0, 0, 0, 37, 345, 1, 0, 0, 0, 39, 354, 1, 0, 0, 0, 41, 364, 1, 0, 0, 0, 43, 372, 1, 0, 0, 0, 45, 375, 1, 0, 0, 0, 47, 377, 1, 0, 0, 0, 49, 379, 1, 0, 0, 0, 51, 385, 1, 0, 0, 0, 53, 391, 1, 0, 0, 0, 55, 395, 1, 0, 0, 0, 57, 397, 1, 0, 0, 0, 59, 399, 1, 0, 0, 0, 61, 401, 1, 0, 0, 0, 63, 403, 1, 0, 0, 0, 65, 405, 1, 0, 0, 0, 67, 407, 1, 0, 0, 0, 69, 410, 1, 0, 0, 0, 71, 413, 1, 0, 0, 0, 73, 420, 1, 0, 0, 0, 75, 429, 1, 0, 0, 0, 77, 438, 1, 0, 0, 0, 79, 446, 1, 0, 0, 0, 81, 452, 1, 0, 0, 0, 83, 457, 1, 0, 0, 0, 85, 459, 1, 0, 0, 0, 87, 461, 1, 0, 0, 0, 89, 469, 1, 0, 0, 0, 91, 471, 1, 0, 0, 0, 93, 479, 1, 0, 0, 0, 95, 482, 1, 0, 0, 0, 97, 489, 1, 0, 0, 0, 99, 497, 1, 0, 0, 0, 101, 506, 1, 0, 0, 0, 103, 509, 1, 0, 0, 0, 105, 514, 1, 0, 0, 0, 107, 518, 1, 0, 0, 0, 109, 524, 1, 0, 0, 0, 111, 530, 1, 0, 0, 0, 113, 540, 1, 0, 0, 0, 115, 549, 1, 0, 0, 0, 117, 552, 1, 0, 0, 0, 119, 559, 1, 0, 0, 0, 121, 565, 1, 0, 0, 0, 123, 570, 1, 0, 0, 0, 125, 577, 1, 0, 0, 0, 127, 581, 1, 0, 0, 0, 129, 586, 1, 0, 0, 0, 131, 593, 1, 0, 0, 0, 133, 598, 1, 0, 0, 0, 135, 601, 1, 0, 0, 0, 137, 604, 1, 0, 0, 0, 139, 608, 1, 0, 0, 0, 141, 610, 1, 0, 0, 0, 143, 617, 1, 0, 0, 0, 145, 619, 1, 0, 0, 0, 147, 622, 1, 0, 0, 0, 149, 625, 1, 0, 0, 0, 151, 628, 1, 0, 0, 0, 153, 631, 1, 0, 0, 0, 155, 633, 1, 0, 0, 0, 157, 636, 1, 0, 0, 0, 159, 639, 1, 0, 0, 0, 161, 642, 1, 0, 0, 0, 163, 646, 1, 0, 0, 0, 165, 650, 1, 0, 0, 0, 167, 653, 1, 0, 0, 0, 169, 656, 1, 0, 0, 0, 171, 659, 1, 0, 0, 0, 173, 662, 1, 0, 0, 0, 175, 665, 1, 0, 0, 0, 177, 669, 1, 0, 0, 0, 179, 672, 1, 0, 0, 0, 181, 675, 1, 0, 0, 0, 183, 682, 1, 0, 0, 0, 185, 687, 1, 0, 0, 0, 187, 695, 1, 0, 0, 0, 189, 698, 1, 0, 0, 0, 191, 707, 1, 0, 0, 0, 193, 716, 1, 0, 0, 0, 195, 723, 1, 0, 0, 0, 197, 731, 1, 0, 0, 0, 199, 740, 1, 0, 0, 0, 201, 755, 1, 0, 0, 0, 203, 854, 1, 0, 0, 0, 205, 861, 1, 0, 0, 0, 207, 872, 1, 0, 0, 0, 209, 880, 1, 0, 0, 0, 211, 889, 1, 0, 0, 0, 213, 899, 1, 0, 0, 0, 215, 903, 1, 0, 0, 0, 217, 969, 1, 0, 0, 0, 219, 971, 1, 0, 0, 0, 221, 987, 1, 0, 0, 0, 223, 1077, 1, 0, 0, 0, 225, 1079, 1, 0, 0, 0, 227, 1089, 1, 0, 0, 0, 229, 1095, 1, 0, 0, 0, 231, 1104, 1, 0, 0, 0, 233, 1114, 1, 0, 0, 0, 235, 1123, 1, 0, 0, 0, 237, 1129, 1, 0, 0, 0, 239, 1138, 1, 0, 0, 0, 241, 1146, 1, 0, 0, 0, 243, 1155, 1, 0, 0, 0, 245, 1163, 1, 0, 0, 0, 247, 1171, 1, 0, 0, 0, 249, 1178, 1, 0, 0, 0, 251, 1186, 1, 0, 0, 0, 253, 1191, 1, 0, 0, 0, 255, 1196, 1, 0, 0, 0, 257, 1201, 1, 0, 0, 0, 259, 1208, 1, 0, 0, 0, 261, 1220, 1, 0, 0, 0, 263, 1229, 1, 0, 0, 0, 265, 1237, 1, 0, 0, 0, 267, 1244, 1, 0, 0, 0, 269, 1246, 1, 0, 0, 0, 271, 1255, 1, 0, 0, 0, 273, 1278, 1, 0, 0, 0, 275, 1283, 1, 0, 0, 0, 277, 1286, 1, 0, 0, 0, 279, 1305, 1, 0, 0, 0, 281, 1311, 1, 0, 0, 0, 283, 1325, 1, 0, 0, 0, 285, 286, 5, 112, 0, 0, 286, 287, 5, 114, 0, 0, 287, 288, 5, 97, 0, 0, 288, 289, 5, 103, 0, 0, 289, 290, 5, 109, 0, 0, 290, 291, 5, 97, 0, 0, 291, 2, 1, 0, 0, 0, 292, 293, 5, 59, 0, 0, 293, 4, 1, 0, 0, 0, 294, 295, 5, 42, 0, 0, 295, 6, 1, 0, 0, 0, 296, 297, 5, 124, 0, 0, 297, 298, 5, 124, 0, 0, 298, 8, 1, 0, 0, 0, 299, 300, 5, 94, 0, 0, 300, 10, 1, 0, 0, 0, 301, 302, 5, 126, 0, 0, 302, 12, 1, 0, 0, 0, 303, 304, 5, 62, 0, 0, 304, 305, 5, 61, 0, 0, 305, 14, 1, 0, 0, 0, 306, 307, 5, 62, 0, 0, 307, 16, 1, 0, 0, 0, 308, 309, 5, 60, 0, 0, 309, 18, 1, 0, 0, 0, 310, 311, 5, 60, 0, 0, 311, 312, 5, 61, 0, 0, 312, 20, 1, 0, 0, 0, 313, 314, 5, 61, 0, 0, 314, 22, 1, 0, 0, 0, 315, 316, 5, 97, 0, 0, 316, 317, 5, 115, 0, 0, 317, 24, 1, 0, 0, 0, 318, 319, 5, 105, 0, 0, 319, 320, 5, 109, 0, 0, 320, 321, 5, 112, 0, 0, 321, 322, 5, 111, 0, 0, 322, 323, 5, 114, 0, 0, 323, 324, 5, 116, 0, 0, 324, 26, 1, 0, 0, 0, 325, 326, 5, 102, 0, 0, 326, 327, 5, 114, 0, 0, 327, 328, 5, 111, 0, 0, 328, 329, 5, 109, 0, 0, 329, 28, 1, 0, 0, 0, 330, 331, 5, 123, 0, 0, 331, 30, 1, 0, 0, 0, 332, 333, 5, 44, 0, 0, 333, 32, 1, 0, 0, 0, 334, 335, 5, 125, 0, 0, 335, 34, 1, 0, 0, 0, 336, 337, 5, 97, 0, 0, 337, 338, 5, 98, 0, 0, 338, 339, 5, 115, 0, 0, 339, 340, 5, 116, 0, 0, 340, 341, 5, 114, 0, 0, 341, 342, 5, 97, 0, 0, 342, 343, 5, 99, 0, 0, 343, 344, 5, 116, 0, 0, 344, 36, 1, 0, 0, 0, 345, 346, 5, 99, 0, 0, 346, 347, 5, 111, 0, 0, 347, 348, 5, 110, 0, 0, 348, 349, 5, 116, 0, 0, 349, 350, 5, 114, 0, 0, 350, 351, 5, 97, 0, 0, 351, 352, 5, 99, 0, 0, 352, 353, 5, 116, 0, 0, 353, 38, 1, 0, 0, 0, 354, 355, 5, 105, 0, 0, 355, 356, 5, 110, 0, 0, 356, 357, 5, 116, 0, 0, 357, 358, 5, 101, 0, 0, 358, 359, 5, 114, 0, 0, 359, 360, 5, 102, 0, 0, 360, 361, 5, 97, 0, 0, 361, 362, 5, 99, 0, 0, 362, 363, 5, 101, 0, 0, 363, 40, 1, 0, 0, 0, 364, 365, 5, 108, 0, 0, 365, 366, 5, 105, 0, 0, 366, 367, 5, 98, 0, 0, 367, 368, 5, 114, 0, 0, 368, 369, 5, 97, 0, 0, 369, 370, 5, 114, 0, 0, 370, 371, 5, 121, 0, 0, 371, 42, 1, 0, 0, 0, 372, 373, 5, 105, 0, 0, 373, 374, 5, 115, 0, 0, 374, 44, 1, 0, 0, 0, 375, 376, 5, 40, 0, 0, 376, 46, 1, 0, 0, 0, 377, 378, 5, 41, 0, 0, 378, 48, 1, 0, 0, 0, 379, 380, 5, 101, 0, 0, 380, 381, 5, 114, 0, 0, 381, 382, 5, 114, 0, 0, 382, 383, 5, 111, 0, 0, 383, 384, 5, 114, 0, 0, 384, 50, 1, 0, 0, 0, 385, 386, 5, 117, 0, 0, 386, 387, 5, 115, 0, 0, 387, 388, 5, 105, 0, 0, 388, 389, 5, 110, 0, 0, 389, 390, 5, 103, 0, 0, 390, 52, 1, 0, 0, 0, 391, 392, 5, 102, 0, 0, 392, 393, 5, 111, 0, 0, 393, 394, 5, 114, 0, 0, 394, 54, 1, 0, 0, 0, 395, 396, 5, 124, 0, 0, 396, 56, 1, 0, 0, 0, 397, 398, 5, 38, 0, 0, 398, 58, 1, 0, 0, 0, 399, 400, 5, 43, 0, 0, 400, 60, 1, 0, 0, 0, 401, 402, 5, 45, 0, 0, 402, 62, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 64, 1, 0, 0, 0, 405, 406, 5, 37, 0, 0, 406, 66, 1, 0, 0, 0, 407, 408, 5, 61, 0, 0, 408, 409, 5, 61, 0, 0, 409, 68, 1, 0, 0, 0, 410, 411, 5, 33, 0, 0, 411, 412, 5, 61, 0, 0, 412, 70, 1, 0, 0, 0, 413, 414, 5, 115, 0, 0, 414, 415, 5, 116, 0, 0, 415, 416, 5, 114, 0, 0, 416, 417, 5, 117, 0, 0, 417, 418, 5, 99, 0, 0, 418, 419, 5, 116, 0, 0, 419, 72, 1, 0, 0, 0, 420, 421, 5, 109, 0, 0, 421, 422, 5, 111, 0, 0, 422, 423, 5, 100, 0, 0, 423, 424, 5, 105, 0, 0, 424, 425, 5, 102, 0, 0, 425, 426, 5, 105, 0, 0, 426, 427, 5, 101, 0, 0, 427, 428, 5, 114, 0, 0, 428, 74, 1, 0, 0, 0, 429, 430, 5, 102, 0, 0, 430, 431, 5, 117, 0, 0, 431, 432, 5, 110, 0, 0, 432, 433, 5, 99, 0, 0, 433, 434, 5, 116, 0, 0, 434, 435, 5, 105, 0, 0, 435, 436, 5, 111, 0, 0, 436, 437, 5, 110, 0, 0, 437, 76, 1, 0, 0, 0, 438, 439, 5, 114, 0, 0, 439, 440, 5, 101, 0, 0, 440, 441, 5, 116, 0, 0, 441, 442, 5, 117, 0, 0, 442, 443, 5, 114, 0, 0, 443, 444, 5, 110, 0, 0, 444, 445, 5, 115, 0, 0, 445, 78, 1, 0, 0, 0, 446, 447, 5, 101, 0, 0, 447, 448, 5, 118, 0, 0, 448, 449, 5, 101, 0, 0, 449, 450, 5, 110, 0, 0, 450, 451, 5, 116, 0, 0, 451, 80, 1, 0, 0, 0, 452, 453, 5, 101, 0, 0, 453, 454, 5, 110, 0, 0, 454, 455, 5, 117, 0, 0, 455, 456, 5, 109, 0, 0, 456, 82, 1, 0, 0, 0, 457, 458, 5, 91, 0, 0, 458, 84, 1, 0, 0, 0, 459, 460, 5, 93, 0, 0, 460, 86, 1, 0, 0, 0, 461, 462, 5, 97, 0, 0, 462, 463, 5, 100, 0, 0, 463, 464, 5, 100, 0, 0, 464, 465, 5, 114, 0, 0, 465, 466, 5, 101, 0, 0, 466, 467, 5, 115, 0, 0, 467, 468, 5, 115, 0, 0, 468, 88, 1, 0, 0, 0, 469, 470, 5, 46, 0, 0, 470, 90, 1, 0, 0, 0, 471, 472, 5, 109, 0, 0, 472, 473, 5, 97, 0, 0, 473, 474, 5, 112, 0, 0, 474, 475, 5, 112, 0, 0, 475, 476, 5, 105, 0, 0, 476, 477, 5, 110, 0, 0, 477, 478, 5, 103, 0, 0, 478, 92, 1, 0, 0, 0, 479, 480, 5, 61, 0, 0, 480, 481, 5, 62, 0, 0, 481, 94, 1, 0, 0, 0, 482, 483, 5, 109, 0, 0, 483, 484, 5, 101, 0, 0, 484, 485, 5, 109, 0, 0, 485, 486, 5, 111, 0, 0, 486, 487, 5, 114, 0, 0, 487, 488, 5, 121, 0, 0, 488, 96, 1, 0, 0, 0, 489, 490, 5, 115, 0, 0, 490, 491, 5, 116, 0, 0, 491, 492, 5, 111, 0, 0, 492, 493, 5, 114, 0, 0, 493, 494, 5, 97, 0, 0, 494, 495, 5, 103, 0, 0, 495, 496, 5, 101, 0, 0, 496, 98, 1, 0, 0, 0, 497, 498, 5, 99, 0, 0, 498, 499, 5, 97, 0, 0, 499, 500, 5, 108, 0, 0, 500, 501, 5, 108, 0, 0, 501, 502, 5, 100, 0, 0, 502, 503, 5, 97, 0, 0, 503, 504, 5, 116, 0, 0, 504, 505, 5, 97, 0, 0, 505, 100, 1, 0, 0, 0, 506, 507, 5, 105, 0, 0, 507, 508, 5, 102, 0, 0, 508, 102, 1, 0, 0, 0, 509, 510, 5, 101, 0, 0, 510, 511, 5, 108, 0, 0, 511, 512, 5, 115, 0, 0, 512, 513, 5, 101, 0, 0, 513, 104, 1, 0, 0, 0, 514, 515, 5, 116, 0, 0, 515, 516, 5, 114, 0, 0, 516, 517, 5, 121, 0, 0, 517, 106, 1, 0, 0, 0, 518, 519, 5, 99, 0, 0, 519, 520, 5, 97, 0, 0, 520, 521, 5, 116, 0, 0, 521, 522, 5, 99, 0, 0, 522, 523, 5, 104, 0, 0, 523, 108, 1, 0, 0, 0, 524, 525, 5, 119, 0, 0, 525, 526, 5, 104, 0, 0, 526, 527, 5, 105, 0, 0, 527, 528, 5, 108, 0, 0, 528, 529, 5, 101, 0, 0, 529, 110, 1, 0, 0, 0, 530, 531, 5, 117, 0, 0, 531, 532, 5, 110, 0, 0, 532, 533, 5, 99, 0, 0, 533, 534, 5, 104, 0, 0, 534, 535, 5, 101, 0, 0, 535, 536, 5, 99, 0, 0, 536, 537, 5, 107, 0, 0, 537, 538, 5, 101, 0, 0, 538, 539, 5, 100, 0, 0, 539, 112, 1, 0, 0, 0, 540, 541, 5, 97, 0, 0, 541, 542, 5, 115, 0, 0, 542, 543, 5, 115, 0, 0, 543, 544, 5, 101, 0, 0, 544, 545, 5, 109, 0, 0, 545, 546, 5, 98, 0, 0, 546, 547, 5, 108, 0, 0, 547, 548, 5, 121, 0, 0, 548, 114, 1, 0, 0, 0, 549, 550, 5, 100, 0, 0, 550, 551, 5, 111, 0, 0, 551, 116, 1, 0, 0, 0, 552, 553, 5, 114, 0, 0, 553, 554, 5, 101, 0, 0, 554, 555, 5, 116, 0, 0, 555, 556, 5, 117, 0, 0, 556, 557, 5, 114, 0, 0, 557, 558, 5, 110, 0, 0, 558, 118, 1, 0, 0, 0, 559, 560, 5, 116, 0, 0, 560, 561, 5, 104, 0, 0, 561, 562, 5, 114, 0, 0, 562, 563, 5, 111, 0, 0, 563, 564, 5, 119, 0, 0, 564, 120, 1, 0, 0, 0, 565, 566, 5, 101, 0, 0, 566, 567, 5, 109, 0, 0, 567, 568, 5, 105, 0, 0, 568, 569, 5, 116, 0, 0, 569, 122, 1, 0, 0, 0, 570, 571, 5, 114, 0, 0, 571, 572, 5, 101, 0, 0, 572, 573, 5, 118, 0, 0, 573, 574, 5, 101, 0, 0, 574, 575, 5, 114, 0, 0, 575, 576, 5, 116, 0, 0, 576, 124, 1, 0, 0, 0, 577, 578, 5, 118, 0, 0, 578, 579, 5, 97, 0, 0, 579, 580, 5, 114, 0, 0, 580, 126, 1, 0, 0, 0, 581, 582, 5, 98, 0, 0, 582, 583, 5, 111, 0, 0, 583, 584, 5, 111, 0, 0, 584, 585, 5, 108, 0, 0, 585, 128, 1, 0, 0, 0, 586, 587, 5, 115, 0, 0, 587, 588, 5, 116, 0, 0, 588, 589, 5, 114, 0, 0, 589, 590, 5, 105, 0, 0, 590, 591, 5, 110, 0, 0, 591, 592, 5, 103, 0, 0, 592, 130, 1, 0, 0, 0, 593, 594, 5, 98, 0, 0, 594, 595, 5, 121, 0, 0, 595, 596, 5, 116, 0, 0, 596, 597, 5, 101, 0, 0, 597, 132, 1, 0, 0, 0, 598, 599, 5, 43, 0, 0, 599, 600, 5, 43, 0, 0, 600, 134, 1, 0, 0, 0, 601, 602, 5, 45, 0, 0, 602, 603, 5, 45, 0, 0, 603, 136, 1, 0, 0, 0, 604, 605, 5, 110, 0, 0, 605, 606, 5, 101, 0, 0, 606, 607, 5, 119, 0, 0, 607, 138, 1, 0, 0, 0, 608, 609, 5, 58, 0, 0, 609, 140, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 612, 5, 101, 0, 0, 612, 613, 5, 108, 0, 0, 613, 614, 5, 101, 0, 0, 614, 615, 5, 116, 0, 0, 615, 616, 5, 101, 0, 0, 616, 142, 1, 0, 0, 0, 617, 618, 5, 33, 0, 0, 618, 144, 1, 0, 0, 0, 619, 620, 5, 42, 0, 0, 620, 621, 5, 42, 0, 0, 621, 146, 1, 0, 0, 0, 622, 623, 5, 60, 0, 0, 623, 624, 5, 60, 0, 0, 624, 148, 1, 0, 0, 0, 625, 626, 5, 62, 0, 0, 626, 627, 5, 62, 0, 0, 627, 150, 1, 0, 0, 0, 628, 629, 5, 38, 0, 0, 629, 630, 5, 38, 0, 0, 630, 152, 1, 0, 0, 0, 631, 632, 5, 63, 0, 0, 632, 154, 1, 0, 0, 0, 633, 634, 5, 124, 0, 0, 634, 635, 5, 61, 0, 0, 635, 156, 1, 0, 0, 0, 636, 637, 5, 94, 0, 0, 637, 638, 5, 61, 0, 0, 638, 158, 1, 0, 0, 0, 639, 640, 5, 38, 0, 0, 640, 641, 5, 61, 0, 0, 641, 160, 1, 0, 0, 0, 642, 643, 5, 60, 0, 0, 643, 644, 5, 60, 0, 0, 644, 645, 5, 61, 0, 0, 645, 162, 1, 0, 0, 0, 646, 647, 5, 62, 0, 0, 647, 648, 5, 62, 0, 0, 648, 649, 5, 61, 0, 0, 649, 164, 1, 0, 0, 0, 650, 651, 5, 43, 0, 0, 651, 652, 5, 61, 0, 0, 652, 166, 1, 0, 0, 0, 653, 654, 5, 45, 0, 0, 654, 655, 5, 61, 0, 0, 655, 168, 1, 0, 0, 0, 656, 657, 5, 42, 0, 0, 657, 658, 5, 61, 0, 0, 658, 170, 1, 0, 0, 0, 659, 660, 5, 47, 0, 0, 660, 661, 5, 61, 0, 0, 661, 172, 1, 0, 0, 0, 662, 663, 5, 37, 0, 0, 663, 664, 5, 61, 0, 0, 664, 174, 1, 0, 0, 0, 665, 666, 5, 108, 0, 0, 666, 667, 5, 101, 0, 0, 667, 668, 5, 116, 0, 0, 668, 176, 1, 0, 0, 0, 669, 670, 5, 58, 0, 0, 670, 671, 5, 61, 0, 0, 671, 178, 1, 0, 0, 0, 672, 673, 5, 61, 0, 0, 673, 674, 5, 58, 0, 0, 674, 180, 1, 0, 0, 0, 675, 676, 5, 115, 0, 0, 676, 677, 5, 119, 0, 0, 677, 678, 5, 105, 0, 0, 678, 679, 5, 116, 0, 0, 679, 680, 5, 99, 0, 0, 680, 681, 5, 104, 0, 0, 681, 182, 1, 0, 0, 0, 682, 683, 5, 99, 0, 0, 683, 684, 5, 97, 0, 0, 684, 685, 5, 115, 0, 0, 685, 686, 5, 101, 0, 0, 686, 184, 1, 0, 0, 0, 687, 688, 5, 100, 0, 0, 688, 689, 5, 101, 0, 0, 689, 690, 5, 102, 0, 0, 690, 691, 5, 97, 0, 0, 691, 692, 5, 117, 0, 0, 692, 693, 5, 108, 0, 0, 693, 694, 5, 116, 0, 0, 694, 186, 1, 0, 0, 0, 695, 696, 5, 45, 0, 0, 696, 697, 5, 62, 0, 0, 697, 188, 1, 0, 0, 0, 698, 699, 5, 99, 0, 0, 699, 700, 5, 97, 0, 0, 700, 701, 5, 108, 0, 0, 701, 702, 5, 108, 0, 0, 702, 703, 5, 98, 0, 0, 703, 704, 5, 97, 0, 0, 704, 705, 5, 99, 0, 0, 705, 706, 5, 107, 0, 0, 706, 190, 1, 0, 0, 0, 707, 708, 5, 111, 0, 0, 708, 709, 5, 118, 0, 0, 709, 710, 5, 101, 0, 0, 710, 711, 5, 114, 0, 0, 711, 712, 5, 114, 0, 0, 712, 713, 5, 105, 0, 0, 713, 714, 5, 100, 0, 0, 714, 715, 5, 101, 0, 0, 715, 192, 1, 0, 0, 0, 716, 717, 5, 105, 0, 0, 717, 718, 5, 110, 0, 0, 718, 719, 5, 116, 0, 0, 719, 721, 1, 0, 0, 0, 720, 722, 3, 203, 101, 0, 721, 720, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 194, 1, 0, 0, 0, 723, 724, 5, 117, 0, 0, 724, 725, 5, 105, 0, 0, 725, 726, 5, 110, 0, 0, 726, 727, 5, 116, 0, 0, 727, 729, 1, 0, 0, 0, 728, 730, 3, 203, 101, 0, 729, 728, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 196, 1, 0, 0, 0, 731, 732, 5, 98, 0, 0, 732, 733, 5, 121, 0, 0, 733, 734, 5, 116, 0, 0, 734, 735, 5, 101, 0, 0, 735, 736, 5, 115, 0, 0, 736, 738, 1, 0, 0, 0, 737, 739, 3, 205, 102, 0, 738, 737, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 198, 1, 0, 0, 0, 740, 741, 5, 102, 0, 0, 741, 742, 5, 105, 0, 0, 742, 743, 5, 120, 0, 0, 743, 744, 5, 101, 0, 0, 744, 745, 5, 100, 0, 0, 745, 753, 1, 0, 0, 0, 746, 747, 3, 203, 101, 0, 747, 749, 5, 120, 0, 0, 748, 750, 7, 0, 0, 0, 749, 748, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 754, 1, 0, 0, 0, 753, 746, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 200, 1, 0, 0, 0, 755, 756, 5, 117, 0, 0, 756, 757, 5, 102, 0, 0, 757, 758, 5, 105, 0, 0, 758, 759, 5, 120, 0, 0, 759, 760, 5, 101, 0, 0, 760, 761, 5, 100, 0, 0, 761, 769, 1, 0, 0, 0, 762, 763, 3, 203, 101, 0, 763, 765, 5, 120, 0, 0, 764, 766, 7, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 770, 1, 0, 0, 0, 769, 762, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 202, 1, 0, 0, 0, 771, 855, 5, 56, 0, 0, 772, 773, 5, 49, 0, 0, 773, 855, 5, 54, 0, 0, 774, 775, 5, 50, 0, 0, 775, 855, 5, 52, 0, 0, 776, 777, 5, 51, 0, 0, 777, 855, 5, 50, 0, 0, 778, 779, 5, 52, 0, 0, 779, 855, 5, 48, 0, 0, 780, 781, 5, 52, 0, 0, 781, 855, 5, 56, 0, 0, 782, 783, 5, 53, 0, 0, 783, 855, 5, 54, 0, 0, 784, 785, 5, 54, 0, 0, 785, 855, 5, 52, 0, 0, 786, 787, 5, 55, 0, 0, 787, 855, 5, 50, 0, 0, 788, 789, 5, 56, 0, 0, 789, 855, 5, 48, 0, 0, 790, 791, 5, 56, 0, 0, 791, 855, 5, 56, 0, 0, 792, 793, 5, 57, 0, 0, 793, 855, 5, 54, 0, 0, 794, 795, 5, 49, 0, 0, 795, 796, 5, 48, 0, 0, 796, 855, 5, 52, 0, 0, 797, 798, 5, 49, 0, 0, 798, 799, 5, 49, 0, 0, 799, 855, 5, 50, 0, 0, 800, 801, 5, 49, 0, 0, 801, 802, 5, 50, 0, 0, 802, 855, 5, 48, 0, 0, 803, 804, 5, 49, 0, 0, 804, 805, 5, 50, 0, 0, 805, 855, 5, 56, 0, 0, 806, 807, 5, 49, 0, 0, 807, 808, 5, 51, 0, 0, 808, 855, 5, 54, 0, 0, 809, 810, 5, 49, 0, 0, 810, 811, 5, 52, 0, 0, 811, 855, 5, 52, 0, 0, 812, 813, 5, 49, 0, 0, 813, 814, 5, 53, 0, 0, 814, 855, 5, 50, 0, 0, 815, 816, 5, 49, 0, 0, 816, 817, 5, 54, 0, 0, 817, 855, 5, 48, 0, 0, 818, 819, 5, 49, 0, 0, 819, 820, 5, 54, 0, 0, 820, 855, 5, 56, 0, 0, 821, 822, 5, 49, 0, 0, 822, 823, 5, 55, 0, 0, 823, 855, 5, 54, 0, 0, 824, 825, 5, 49, 0, 0, 825, 826, 5, 56, 0, 0, 826, 855, 5, 52, 0, 0, 827, 828, 5, 49, 0, 0, 828, 829, 5, 57, 0, 0, 829, 855, 5, 50, 0, 0, 830, 831, 5, 50, 0, 0, 831, 832, 5, 48, 0, 0, 832, 855, 5, 48, 0, 0, 833, 834, 5, 50, 0, 0, 834, 835, 5, 48, 0, 0, 835, 855, 5, 56, 0, 0, 836, 837, 5, 50, 0, 0, 837, 838, 5, 49, 0, 0, 838, 855, 5, 54, 0, 0, 839, 840, 5, 50, 0, 0, 840, 841, 5, 50, 0, 0, 841, 855, 5, 52, 0, 0, 842, 843, 5, 50, 0, 0, 843, 844, 5, 51, 0, 0, 844, 855, 5, 50, 0, 0, 845, 846, 5, 50, 0, 0, 846, 847, 5, 52, 0, 0, 847, 855, 5, 48, 0, 0, 848, 849, 5, 50, 0, 0, 849, 850, 5, 52, 0, 0, 850, 855, 5, 56, 0, 0, 851, 852, 5, 50, 0, 0, 852, 853, 5, 53, 0, 0, 853, 855, 5, 54, 0, 0, 854, 771, 1, 0, 0, 0, 854, 772, 1, 0, 0, 0, 854, 774, 1, 0, 0, 0, 854, 776, 1, 0, 0, 0, 854, 778, 1, 0, 0, 0, 854, 780, 1, 0, 0, 0, 854, 782, 1, 0, 0, 0, 854, 784, 1, 0, 0, 0, 854, 786, 1, 0, 0, 0, 854, 788, 1, 0, 0, 0, 854, 790, 1, 0, 0, 0, 854, 792, 1, 0, 0, 0, 854, 794, 1, 0, 0, 0, 854, 797, 1, 0, 0, 0, 854, 800, 1, 0, 0, 0, 854, 803, 1, 0, 0, 0, 854, 806, 1, 0, 0, 0, 854, 809, 1, 0, 0, 0, 854, 812, 1, 0, 0, 0, 854, 815, 1, 0, 0, 0, 854, 818, 1, 0, 0, 0, 854, 821, 1, 0, 0, 0, 854, 824, 1, 0, 0, 0, 854, 827, 1, 0, 0, 0, 854, 830, 1, 0, 0, 0, 854, 833, 1, 0, 0, 0, 854, 836, 1, 0, 0, 0, 854, 839, 1, 0, 0, 0, 854, 842, 1, 0, 0, 0, 854, 845, 1, 0, 0, 0, 854, 848, 1, 0, 0, 0, 854, 851, 1, 0, 0, 0, 855, 204, 1, 0, 0, 0, 856, 862, 7, 1, 0, 0, 857, 858, 7, 2, 0, 0, 858, 862, 7, 0, 0, 0, 859, 860, 5, 51, 0, 0, 860, 862, 7, 3, 0, 0, 861, 856, 1, 0, 0, 0, 861, 857, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0, 862, 206, 1, 0, 0, 0, 863, 864, 5, 116, 0, 0, 864, 865, 5, 114, 0, 0, 865, 866, 5, 117, 0, 0, 866, 873, 5, 101, 0, 0, 867, 868, 5, 102, 0, 0, 868, 869, 5, 97, 0, 0, 869, 870, 5, 108, 0, 0, 870, 871, 5, 115, 0, 0, 871, 873, 5, 101, 0, 0, 872, 863, 1, 0, 0, 0, 872, 867, 1, 0, 0, 0, 873, 208, 1, 0, 0, 0, 874, 881, 3, 211, 105, 0, 875, 877, 3, 211, 105, 0, 876, 875, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 879, 5, 46, 0, 0, 879, 881, 3, 211, 105, 0, 880, 874, 1, 0, 0, 0, 880, 876, 1, 0, 0, 0, 881, 887, 1, 0, 0, 0, 882, 884, 7, 4, 0, 0, 883, 885, 5, 45, 0, 0, 884, 883, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 886, 1, 0, 0, 0, 886, 888, 3, 211, 105, 0, 887, 882, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 210, 1, 0, 0, 0, 889, 896, 7, 0, 0, 0, 890, 892, 5, 95, 0, 0, 891, 890, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 895, 7, 0, 0, 0, 894, 891, 1, 0, 0, 0, 895, 898, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 212, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 900, 5, 48, 0, 0, 900, 901, 7, 5, 0, 0, 901, 902, 3, 215, 107, 0, 902, 214, 1, 0, 0, 0, 903, 910, 3, 221, 110, 0, 904, 906, 5, 95, 0, 0, 905, 904, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 909, 3, 221, 110, 0, 908, 905, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 216, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, 914, 5, 119, 0, 0, 914, 915, 5, 101, 0, 0, 915, 970, 5, 105, 0, 0, 916, 917, 5, 103, 0, 0, 917, 918, 5, 119, 0, 0, 918, 919, 5, 101, 0, 0, 919, 970, 5, 105, 0, 0, 920, 921, 5, 115, 0, 0, 921, 922, 5, 122, 0, 0, 922, 923, 5, 97, 0, 0, 923, 924, 5, 98, 0, 0, 924, 970, 5, 111, 0, 0, 925, 926, 5, 102, 0, 0, 926, 927, 5, 105, 0, 0, 927, 928, 5, 110, 0, 0, 928, 929, 5, 110, 0, 0, 929, 930, 5, 101, 0, 0, 930, 970, 5, 121, 0, 0, 931, 932, 5, 101, 0, 0, 932, 933, 5, 116, 0, 0, 933, 934, 5, 104, 0, 0, 934, 935, 5, 101, 0, 0, 935, 970, 5, 114, 0, 0, 936, 937, 5, 115, 0, 0, 937, 938, 5, 101, 0, 0, 938, 939, 5, 99, 0, 0, 939, 940, 5, 111, 0, 0, 940, 941, 5, 110, 0, 0, 941, 942, 5, 100, 0, 0, 942, 970, 5, 115, 0, 0, 943, 944, 5, 109, 0, 0, 944, 945, 5, 105, 0, 0, 945, 946, 5, 110, 0, 0, 946, 947, 5, 117, 0, 0, 947, 948, 5, 116, 0, 0, 948, 949, 5, 101, 0, 0, 949, 970, 5, 115, 0, 0, 950, 951, 5, 104, 0, 0, 951, 952, 5, 111, 0, 0, 952, 953, 5, 117, 0, 0, 953, 954, 5, 114, 0, 0, 954, 970, 5, 115, 0, 0, 955, 956, 5, 100, 0, 0, 956, 957, 5, 97, 0, 0, 957, 958, 5, 121, 0, 0, 958, 970, 5, 115, 0, 0, 959, 960, 5, 119, 0, 0, 960, 961, 5, 101, 0, 0, 961, 962, 5, 101, 0, 0, 962, 963, 5, 107, 0, 0, 963, 970, 5, 115, 0, 0, 964, 965, 5, 121, 0, 0, 965, 966, 5, 101, 0, 0, 966, 967, 5, 97, 0, 0, 967, 968, 5, 114, 0, 0, 968, 970, 5, 115, 0, 0, 969, 913, 1, 0, 0, 0, 969, 916, 1, 0, 0, 0, 969, 920, 1, 0, 0, 0, 969, 925, 1, 0, 0, 0, 969, 931, 1, 0, 0, 0, 969, 936, 1, 0, 0, 0, 969, 943, 1, 0, 0, 0, 969, 950, 1, 0, 0, 0, 969, 955, 1, 0, 0, 0, 969, 959, 1, 0, 0, 0, 969, 964, 1, 0, 0, 0, 970, 218, 1, 0, 0, 0, 971, 972, 5, 104, 0, 0, 972, 973, 5, 101, 0, 0, 973, 974, 5, 120, 0, 0, 974, 985, 1, 0, 0, 0, 975, 977, 5, 34, 0, 0, 976, 978, 3, 215, 107, 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 986, 5, 34, 0, 0, 980, 982, 5, 39, 0, 0, 981, 983, 3, 215, 107, 0, 982, 981, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 984, 1, 0, 0, 0, 984, 986, 5, 39, 0, 0, 985, 975, 1, 0, 0, 0, 985, 980, 1, 0, 0, 0, 986, 220, 1, 0, 0, 0, 987, 988, 7, 6, 0, 0, 988, 222, 1, 0, 0, 0, 989, 990, 5, 97, 0, 0, 990, 991, 5, 98, 0, 0, 991, 992, 5, 115, 0, 0, 992, 993, 5, 116, 0, 0, 993, 994, 5, 114, 0, 0, 994, 995, 5, 97, 0, 0, 995, 996, 5, 99, 0, 0, 996, 1078, 5, 116, 0, 0, 997, 998, 5, 97, 0, 0, 998, 999, 5, 102, 0, 0, 999, 1000, 5, 116, 0, 0, 1000, 1001, 5, 101, 0, 0, 1001, 1078, 5, 114, 0, 0, 1002, 1003, 5, 99, 0, 0, 1003, 1004, 5, 97, 0, 0, 1004, 1005, 5, 115, 0, 0, 1005, 1078, 5, 101, 0, 0, 1006, 1007, 5, 99, 0, 0, 1007, 1008, 5, 97, 0, 0, 1008, 1009, 5, 116, 0, 0, 1009, 1010, 5, 99, 0, 0, 1010, 1078, 5, 104, 0, 0, 1011, 1012, 5, 100, 0, 0, 1012, 1013, 5, 101, 0, 0, 1013, 1014, 5, 102, 0, 0, 1014, 1015, 5, 97, 0, 0, 1015, 1016, 5, 117, 0, 0, 1016, 1017, 5, 108, 0, 0, 1017, 1078, 5, 116, 0, 0, 1018, 1019, 5, 102, 0, 0, 1019, 1020, 5, 105, 0, 0, 1020, 1021, 5, 110, 0, 0, 1021, 1022, 5, 97, 0, 0, 1022, 1078, 5, 108, 0, 0, 1023, 1024, 5, 105, 0, 0, 1024, 1078, 5, 110, 0, 0, 1025, 1026, 5, 105, 0, 0, 1026, 1027, 5, 110, 0, 0, 1027, 1028, 5, 108, 0, 0, 1028, 1029, 5, 105, 0, 0, 1029, 1030, 5, 110, 0, 0, 1030, 1078, 5, 101, 0, 0, 1031, 1032, 5, 108, 0, 0, 1032, 1033, 5, 101, 0, 0, 1033, 1078, 5, 116, 0, 0, 1034, 1035, 5, 109, 0, 0, 1035, 1036, 5, 97, 0, 0, 1036, 1037, 5, 116, 0, 0, 1037, 1038, 5, 99, 0, 0, 1038, 1078, 5, 104, 0, 0, 1039, 1040, 5, 110, 0, 0, 1040, 1041, 5, 117, 0, 0, 1041, 1042, 5, 108, 0, 0, 1042, 1078, 5, 108, 0, 0, 1043, 1044, 5, 111, 0, 0, 1044, 1078, 5, 102, 0, 0, 1045, 1046, 5, 114, 0, 0, 1046, 1047, 5, 101, 0, 0, 1047, 1048, 5, 108, 0, 0, 1048, 1049, 5, 111, 0, 0, 1049, 1050, 5, 99, 0, 0, 1050, 1051, 5, 97, 0, 0, 1051, 1052, 5, 116, 0, 0, 1052, 1053, 5, 97, 0, 0, 1053, 1054, 5, 98, 0, 0, 1054, 1055, 5, 108, 0, 0, 1055, 1078, 5, 101, 0, 0, 1056, 1057, 5, 115, 0, 0, 1057, 1058, 5, 116, 0, 0, 1058, 1059, 5, 97, 0, 0, 1059, 1060, 5, 116, 0, 0, 1060, 1061, 5, 105, 0, 0, 1061, 1078, 5, 99, 0, 0, 1062, 1063, 5, 115, 0, 0, 1063, 1064, 5, 119, 0, 0, 1064, 1065, 5, 105, 0, 0, 1065, 1066, 5, 116, 0, 0, 1066, 1067, 5, 99, 0, 0, 1067, 1078, 5, 104, 0, 0, 1068, 1069, 5, 116, 0, 0, 1069, 1070, 5, 114, 0, 0, 1070, 1078, 5, 121, 0, 0, 1071, 1072, 5, 116, 0, 0, 1072, 1073, 5, 121, 0, 0, 1073, 1074, 5, 112, 0, 0, 1074, 1075, 5, 101, 0, 0, 1075, 1076, 5, 111, 0, 0, 1076, 1078, 5, 102, 0, 0, 1077, 989, 1, 0, 0, 0, 1077, 997, 1, 0, 0, 0, 1077, 1002, 1, 0, 0, 0, 1077, 1006, 1, 0, 0, 0, 1077, 1011, 1, 0, 0, 0, 1077, 1018, 1, 0, 0, 0, 1077, 1023, 1, 0, 0, 0, 1077, 1025, 1, 0, 0, 0, 1077, 1031, 1, 0, 0, 0, 1077, 1034, 1, 0, 0, 0, 1077, 1039, 1, 0, 0, 0, 1077, 1043, 1, 0, 0, 0, 1077, 1045, 1, 0, 0, 0, 1077, 1056, 1, 0, 0, 0, 1077, 1062, 1, 0, 0, 0, 1077, 1068, 1, 0, 0, 0, 1077, 1071, 1, 0, 0, 0, 1078, 224, 1, 0, 0, 0, 1079, 1080, 5, 97, 0, 0, 1080, 1081, 5, 110, 0, 0, 1081, 1082, 5, 111, 0, 0, 1082, 1083, 5, 110, 0, 0, 1083, 1084, 5, 121, 0, 0, 1084, 1085, 5, 109, 0, 0, 1085, 1086, 5, 111, 0, 0, 1086, 1087, 5, 117, 0, 0, 1087, 1088, 5, 115, 0, 0, 1088, 226, 1, 0, 0, 0, 1089, 1090, 5, 98, 0, 0, 1090, 1091, 5, 114, 0, 0, 1091, 1092, 5, 101, 0, 0, 1092, 1093, 5, 97, 0, 0, 1093, 1094, 5, 107, 0, 0, 1094, 228, 1, 0, 0, 0, 1095, 1096, 5, 99, 0, 0, 1096, 1097, 5, 111, 0, 0, 1097, 1098, 5, 110, 0, 0, 1098, 1099, 5, 115, 0, 0, 1099, 1100, 5, 116, 0, 0, 1100, 1101, 5, 97, 0, 0, 1101, 1102, 5, 110, 0, 0, 1102, 1103, 5, 116, 0, 0, 1103, 230, 1, 0, 0, 0, 1104, 1105, 5, 105, 0, 0, 1105, 1106, 5, 109, 0, 0, 1106, 1107, 5, 109, 0, 0, 1107, 1108, 5, 117, 0, 0, 1108, 1109, 5, 116, 0, 0, 1109, 1110, 5, 97, 0, 0, 1110, 1111, 5, 98, 0, 0, 1111, 1112, 5, 108, 0, 0, 1112, 1113, 5, 101, 0, 0, 1113, 232, 1, 0, 0, 0, 1114, 1115, 5, 99, 0, 0, 1115, 1116, 5, 111, 0, 0, 1116, 1117, 5, 110, 0, 0, 1117, 1118, 5, 116, 0, 0, 1118, 1119, 5, 105, 0, 0, 1119, 1120, 5, 110, 0, 0, 1120, 1121, 5, 117, 0, 0, 1121, 1122, 5, 101, 0, 0, 1122, 234, 1, 0, 0, 0, 1123, 1124, 5, 108, 0, 0, 1124, 1125, 5, 101, 0, 0, 1125, 1126, 5, 97, 0, 0, 1126, 1127, 5, 118, 0, 0, 1127, 1128, 5, 101, 0, 0, 1128, 236, 1, 0, 0, 0, 1129, 1130, 5, 101, 0, 0, 1130, 1131, 5, 120, 0, 0, 1131, 1132, 5, 116, 0, 0, 1132, 1133, 5, 101, 0, 0, 1133, 1134, 5, 114, 0, 0, 1134, 1135, 5, 110, 0, 0, 1135, 1136, 5, 97, 0, 0, 1136, 1137, 5, 108, 0, 0, 1137, 238, 1, 0, 0, 0, 1138, 1139, 5, 105, 0, 0, 1139, 1140, 5, 110, 0, 0, 1140, 1141, 5, 100, 0, 0, 1141, 1142, 5, 101, 0, 0, 1142, 1143, 5, 120, 0, 0, 1143, 1144, 5, 101, 0, 0, 1144, 1145, 5, 100, 0, 0, 1145, 240, 1, 0, 0, 0, 1146, 1147, 5, 105, 0, 0, 1147, 1148, 5, 110, 0, 0, 1148, 1149, 5, 116, 0, 0, 1149, 1150, 5, 101, 0, 0, 1150, 1151, 5, 114, 0, 0, 1151, 1152, 5, 110, 0, 0, 1152, 1153, 5, 97, 0, 0, 1153, 1154, 5, 108, 0, 0, 1154, 242, 1, 0, 0, 0, 1155, 1156, 5, 112, 0, 0, 1156, 1157, 5, 97, 0, 0, 1157, 1158, 5, 121, 0, 0, 1158, 1159, 5, 97, 0, 0, 1159, 1160, 5, 98, 0, 0, 1160, 1161, 5, 108, 0, 0, 1161, 1162, 5, 101, 0, 0, 1162, 244, 1, 0, 0, 0, 1163, 1164, 5, 112, 0, 0, 1164, 1165, 5, 114, 0, 0, 1165, 1166, 5, 105, 0, 0, 1166, 1167, 5, 118, 0, 0, 1167, 1168, 5, 97, 0, 0, 1168, 1169, 5, 116, 0, 0, 1169, 1170, 5, 101, 0, 0, 1170, 246, 1, 0, 0, 0, 1171, 1172, 5, 112, 0, 0, 1172, 1173, 5, 117, 0, 0, 1173, 1174, 5, 98, 0, 0, 1174, 1175, 5, 108, 0, 0, 1175, 1176, 5, 105, 0, 0, 1176, 1177, 5, 99, 0, 0, 1177, 248, 1, 0, 0, 0, 1178, 1179, 5, 118, 0, 0, 1179, 1180, 5, 105, 0, 0, 1180, 1181, 5, 114, 0, 0, 1181, 1182, 5, 116, 0, 0, 1182, 1183, 5, 117, 0, 0, 1183, 1184, 5, 97, 0, 0, 1184, 1185, 5, 108, 0, 0, 1185, 250, 1, 0, 0, 0, 1186, 1187, 5, 112, 0, 0, 1187, 1188, 5, 117, 0, 0, 1188, 1189, 5, 114, 0, 0, 1189, 1190, 5, 101, 0, 0, 1190, 252, 1, 0, 0, 0, 1191, 1192, 5, 116, 0, 0, 1192, 1193, 5, 121, 0, 0, 1193, 1194, 5, 112, 0, 0, 1194, 1195, 5, 101, 0, 0, 1195, 254, 1, 0, 0, 0, 1196, 1197, 5, 118, 0, 0, 1197, 1198, 5, 105, 0, 0, 1198, 1199, 5, 101, 0, 0, 1199, 1200, 5, 119, 0, 0, 1200, 256, 1, 0, 0, 0, 1201, 1202, 5, 103, 0, 0, 1202, 1203, 5, 108, 0, 0, 1203, 1204, 5, 111, 0, 0, 1204, 1205, 5, 98, 0, 0, 1205, 1206, 5, 97, 0, 0, 1206, 1207, 5, 108, 0, 0, 1207, 258, 1, 0, 0, 0, 1208, 1209, 5, 99, 0, 0, 1209, 1210, 5, 111, 0, 0, 1210, 1211, 5, 110, 0, 0, 1211, 1212, 5, 115, 0, 0, 1212, 1213, 5, 116, 0, 0, 1213, 1214, 5, 114, 0, 0, 1214, 1215, 5, 117, 0, 0, 1215, 1216, 5, 99, 0, 0, 1216, 1217, 5, 116, 0, 0, 1217, 1218, 5, 111, 0, 0, 1218, 1219, 5, 114, 0, 0, 1219, 260, 1, 0, 0, 0, 1220, 1221, 5, 102, 0, 0, 1221, 1222, 5, 97, 0, 0, 1222, 1223, 5, 108, 0, 0, 1223, 1224, 5, 108, 0, 0, 1224, 1225, 5, 98, 0, 0, 1225, 1226, 5, 97, 0, 0, 1226, 1227, 5, 99, 0, 0, 1227, 1228, 5, 107, 0, 0, 1228, 262, 1, 0, 0, 0, 1229, 1230, 5, 114, 0, 0, 1230, 1231, 5, 101, 0, 0, 1231, 1232, 5, 99, 0, 0, 1232, 1233, 5, 101, 0, 0, 1233, 1234, 5, 105, 0, 0, 1234, 1235, 5, 118, 0, 0, 1235, 1236, 5, 101, 0, 0, 1236, 264, 1, 0, 0, 0, 1237, 1241, 3, 267, 133, 0, 1238, 1240, 3, 269, 134, 0, 1239, 1238, 1, 0, 0, 0, 1240, 1243, 1, 0, 0, 0, 1241, 1239, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 266, 1, 0, 0, 0, 1243, 1241, 1, 0, 0, 0, 1244, 1245, 7, 7, 0, 0, 1245, 268, 1, 0, 0, 0, 1246, 1247, 7, 8, 0, 0, 1247, 270, 1, 0, 0, 0, 1248, 1249, 5, 117, 0, 0, 1249, 1250, 5, 110, 0, 0, 1250, 1251, 5, 105, 0, 0, 1251, 1252, 5, 99, 0, 0, 1252, 1253, 5, 111, 0, 0, 1253, 1254, 5, 100, 0, 0, 1254, 1256, 5, 101, 0, 0, 1255, 1248, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1273, 1, 0, 0, 0, 1257, 1261, 5, 34, 0, 0, 1258, 1260, 3, 273, 136, 0, 1259, 1258, 1, 0, 0, 0, 1260, 1263, 1, 0, 0, 0, 1261, 1259, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1264, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1264, 1274, 5, 34, 0, 0, 1265, 1269, 5, 39, 0, 0, 1266, 1268, 3, 275, 137, 0, 1267, 1266, 1, 0, 0, 0, 1268, 1271, 1, 0, 0, 0, 1269, 1267, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1269, 1, 0, 0, 0, 1272, 1274, 5, 39, 0, 0, 1273, 1257, 1, 0, 0, 0, 1273, 1265, 1, 0, 0, 0, 1274, 272, 1, 0, 0, 0, 1275, 1279, 8, 9, 0, 0, 1276, 1277, 5, 92, 0, 0, 1277, 1279, 9, 0, 0, 0, 1278, 1275, 1, 0, 0, 0, 1278, 1276, 1, 0, 0, 0, 1279, 274, 1, 0, 0, 0, 1280, 1284, 8, 10, 0, 0, 1281, 1282, 5, 92, 0, 0, 1282, 1284, 9, 0, 0, 0, 1283, 1280, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1284, 276, 1, 0, 0, 0, 1285, 1287, 7, 0, 0, 0, 1286, 1285, 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, 1292, 5, 46, 0, 0, 1291, 1293, 7, 0, 0, 0, 1292, 1291, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1302, 1, 0, 0, 0, 1296, 1298, 5, 46, 0, 0, 1297, 1299, 7, 0, 0, 0, 1298, 1297, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1298, 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1303, 1, 0, 0, 0, 1302, 1296, 1, 0, 0, 0, 1302, 1303, 1, 0, 0, 0, 1303, 278, 1, 0, 0, 0, 1304, 1306, 7, 11, 0, 0, 1305, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1305, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 6, 139, 0, 0, 1310, 280, 1, 0, 0, 0, 1311, 1312, 5, 47, 0, 0, 1312, 1313, 5, 42, 0, 0, 1313, 1317, 1, 0, 0, 0, 1314, 1316, 9, 0, 0, 0, 1315, 1314, 1, 0, 0, 0, 1316, 1319, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, 0, 1318, 1320, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1320, 1321, 5, 42, 0, 0, 1321, 1322, 5, 47, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1324, 6, 140, 1, 0, 1324, 282, 1, 0, 0, 0, 1325, 1326, 5, 47, 0, 0, 1326, 1327, 5, 47, 0, 0, 1327, 1331, 1, 0, 0, 0, 1328, 1330, 8, 12, 0, 0, 1329, 1328, 1, 0, 0, 0, 1330, 1333, 1, 0, 0, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1334, 1, 0, 0, 0, 1333, 1331, 1, 0, 0, 0, 1334, 1335, 6, 141, 1, 0, 1335, 284, 1, 0, 0, 0, 38, 0, 721, 729, 738, 751, 753, 767, 769, 854, 861, 872, 876, 880, 884, 887, 891, 896, 905, 910, 969, 977, 982, 985, 1077, 1241, 1255, 1261, 1269, 1273, 1278, 1283, 1288, 1294, 1300, 1302, 1307, 1317, 1331, 2, 6, 0, 0, 0, 1, 0] \ No newline at end of file diff --git a/src/antlr/SolidityLexer.ts b/src/antlr/SolidityLexer.ts index aceedbb..eedaf07 100644 --- a/src/antlr/SolidityLexer.ts +++ b/src/antlr/SolidityLexer.ts @@ -1,21 +1,17 @@ -// Generated from antlr/Solidity.g4 by ANTLR 4.9.0-SNAPSHOT - - -import { ATN } from "antlr4ts/atn/ATN"; -import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; -import { CharStream } from "antlr4ts/CharStream"; -import { Lexer } from "antlr4ts/Lexer"; -import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator"; -import { NotNull } from "antlr4ts/Decorators"; -import { Override } from "antlr4ts/Decorators"; -import { RuleContext } from "antlr4ts/RuleContext"; -import { Vocabulary } from "antlr4ts/Vocabulary"; -import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; - -import * as Utils from "antlr4ts/misc/Utils"; - - -export class SolidityLexer extends Lexer { +// Generated from antlr/Solidity.g4 by ANTLR 4.13.1 +// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols +import { + ATN, + ATNDeserializer, + CharStream, + DecisionState, DFA, + Lexer, + LexerATNSimulator, + RuleContext, + PredictionContextCache, + Token +} from "antlr4"; +export default class SolidityLexer extends Lexer { public static readonly T__0 = 1; public static readonly T__1 = 2; public static readonly T__2 = 3; @@ -149,16 +145,169 @@ export class SolidityLexer extends Lexer { public static readonly WS = 131; public static readonly COMMENT = 132; public static readonly LINE_COMMENT = 133; + public static readonly EOF = Token.EOF; - // tslint:disable:no-trailing-whitespace - public static readonly channelNames: string[] = [ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", - ]; - - // tslint:disable:no-trailing-whitespace - public static readonly modeNames: string[] = [ - "DEFAULT_MODE", - ]; + public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; + public static readonly literalNames: (string | null)[] = [ null, "'pragma'", + "';'", "'*'", + "'||'", "'^'", + "'~'", "'>='", + "'>'", "'<'", + "'<='", "'='", + "'as'", "'import'", + "'from'", "'{'", + "','", "'}'", + "'abstract'", + "'contract'", + "'interface'", + "'library'", + "'is'", "'('", + "')'", "'error'", + "'using'", "'for'", + "'|'", "'&'", + "'+'", "'-'", + "'/'", "'%'", + "'=='", "'!='", + "'struct'", + "'modifier'", + "'function'", + "'returns'", + "'event'", "'enum'", + "'['", "']'", + "'address'", + "'.'", "'mapping'", + "'=>'", "'memory'", + "'storage'", + "'calldata'", + "'if'", "'else'", + "'try'", "'catch'", + "'while'", "'unchecked'", + "'assembly'", + "'do'", "'return'", + "'throw'", "'emit'", + "'revert'", + "'var'", "'bool'", + "'string'", + "'byte'", "'++'", + "'--'", "'new'", + "':'", "'delete'", + "'!'", "'**'", + "'<<'", "'>>'", + "'&&'", "'?'", + "'|='", "'^='", + "'&='", "'<<='", + "'>>='", "'+='", + "'-='", "'*='", + "'/='", "'%='", + "'let'", "':='", + "'=:'", "'switch'", + "'case'", "'default'", + "'->'", "'callback'", + "'override'", + null, null, + null, null, + null, null, + null, null, + null, null, + null, "'anonymous'", + "'break'", "'constant'", + "'immutable'", + "'continue'", + "'leave'", "'external'", + "'indexed'", + "'internal'", + "'payable'", + "'private'", + "'public'", + "'virtual'", + "'pure'", "'type'", + "'view'", "'global'", + "'constructor'", + "'fallback'", + "'receive'" ]; + public static readonly symbolicNames: (string | 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, 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, "Int", + "Uint", "Byte", + "Fixed", "Ufixed", + "BooleanLiteral", + "DecimalNumber", + "HexNumber", + "NumberUnit", + "HexLiteralFragment", + "ReservedKeyword", + "AnonymousKeyword", + "BreakKeyword", + "ConstantKeyword", + "ImmutableKeyword", + "ContinueKeyword", + "LeaveKeyword", + "ExternalKeyword", + "IndexedKeyword", + "InternalKeyword", + "PayableKeyword", + "PrivateKeyword", + "PublicKeyword", + "VirtualKeyword", + "PureKeyword", + "TypeKeyword", + "ViewKeyword", + "GlobalKeyword", + "ConstructorKeyword", + "FallbackKeyword", + "ReceiveKeyword", + "Identifier", + "StringLiteralFragment", + "VersionLiteral", + "WS", "COMMENT", + "LINE_COMMENT" ]; + public static readonly modeNames: string[] = [ "DEFAULT_MODE", ]; public static readonly ruleNames: string[] = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", @@ -185,744 +334,496 @@ export class SolidityLexer extends Lexer { "SingleQuotedStringCharacter", "VersionLiteral", "WS", "COMMENT", "LINE_COMMENT", ]; - private static readonly _LITERAL_NAMES: Array = [ - undefined, "'pragma'", "';'", "'*'", "'||'", "'^'", "'~'", "'>='", "'>'", - "'<'", "'<='", "'='", "'as'", "'import'", "'from'", "'{'", "','", "'}'", - "'abstract'", "'contract'", "'interface'", "'library'", "'is'", "'('", - "')'", "'error'", "'using'", "'for'", "'|'", "'&'", "'+'", "'-'", "'/'", - "'%'", "'=='", "'!='", "'struct'", "'modifier'", "'function'", "'returns'", - "'event'", "'enum'", "'['", "']'", "'address'", "'.'", "'mapping'", "'=>'", - "'memory'", "'storage'", "'calldata'", "'if'", "'else'", "'try'", "'catch'", - "'while'", "'unchecked'", "'assembly'", "'do'", "'return'", "'throw'", - "'emit'", "'revert'", "'var'", "'bool'", "'string'", "'byte'", "'++'", - "'--'", "'new'", "':'", "'delete'", "'!'", "'**'", "'<<'", "'>>'", "'&&'", - "'?'", "'|='", "'^='", "'&='", "'<<='", "'>>='", "'+='", "'-='", "'*='", - "'/='", "'%='", "'let'", "':='", "'=:'", "'switch'", "'case'", "'default'", - "'->'", "'callback'", "'override'", undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - "'anonymous'", "'break'", "'constant'", "'immutable'", "'continue'", "'leave'", - "'external'", "'indexed'", "'internal'", "'payable'", "'private'", "'public'", - "'virtual'", "'pure'", "'type'", "'view'", "'global'", "'constructor'", - "'fallback'", "'receive'", - ]; - private static readonly _SYMBOLIC_NAMES: Array = [ - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, "Int", - "Uint", "Byte", "Fixed", "Ufixed", "BooleanLiteral", "DecimalNumber", - "HexNumber", "NumberUnit", "HexLiteralFragment", "ReservedKeyword", "AnonymousKeyword", - "BreakKeyword", "ConstantKeyword", "ImmutableKeyword", "ContinueKeyword", - "LeaveKeyword", "ExternalKeyword", "IndexedKeyword", "InternalKeyword", - "PayableKeyword", "PrivateKeyword", "PublicKeyword", "VirtualKeyword", - "PureKeyword", "TypeKeyword", "ViewKeyword", "GlobalKeyword", "ConstructorKeyword", - "FallbackKeyword", "ReceiveKeyword", "Identifier", "StringLiteralFragment", - "VersionLiteral", "WS", "COMMENT", "LINE_COMMENT", - ]; - public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(SolidityLexer._LITERAL_NAMES, SolidityLexer._SYMBOLIC_NAMES, []); - - // @Override - // @NotNull - public get vocabulary(): Vocabulary { - return SolidityLexer.VOCABULARY; - } - // tslint:enable:no-trailing-whitespace - constructor(input: CharStream) { super(input); - this._interp = new LexerATNSimulator(SolidityLexer._ATN, this); + this._interp = new LexerATNSimulator(this, SolidityLexer._ATN, SolidityLexer.DecisionsToDFA, new PredictionContextCache()); } - // @Override public get grammarFileName(): string { return "Solidity.g4"; } - // @Override + public get literalNames(): (string | null)[] { return SolidityLexer.literalNames; } + public get symbolicNames(): (string | null)[] { return SolidityLexer.symbolicNames; } public get ruleNames(): string[] { return SolidityLexer.ruleNames; } - // @Override - public get serializedATN(): string { return SolidityLexer._serializedATN; } + public get serializedATN(): number[] { return SolidityLexer._serializedATN; } - // @Override public get channelNames(): string[] { return SolidityLexer.channelNames; } - // @Override public get modeNames(): string[] { return SolidityLexer.modeNames; } - private static readonly _serializedATNSegments: number = 3; - private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02\x87\u053A\b\x01" + - "\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" + - "\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" + - "\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" + - "\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t" + - "\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t" + - "\x1C\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t" + - "\"\x04#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04" + - "+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" + - "4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" + - "=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" + - "F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" + - "O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04" + - "X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" + - "`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x04g\tg\x04h\th\x04" + - "i\ti\x04j\tj\x04k\tk\x04l\tl\x04m\tm\x04n\tn\x04o\to\x04p\tp\x04q\tq\x04" + - "r\tr\x04s\ts\x04t\tt\x04u\tu\x04v\tv\x04w\tw\x04x\tx\x04y\ty\x04z\tz\x04" + - "{\t{\x04|\t|\x04}\t}\x04~\t~\x04\x7F\t\x7F\x04\x80\t\x80\x04\x81\t\x81" + - "\x04\x82\t\x82\x04\x83\t\x83\x04\x84\t\x84\x04\x85\t\x85\x04\x86\t\x86" + - "\x04\x87\t\x87\x04\x88\t\x88\x04\x89\t\x89\x04\x8A\t\x8A\x04\x8B\t\x8B" + - "\x04\x8C\t\x8C\x04\x8D\t\x8D\x04\x8E\t\x8E\x04\x8F\t\x8F\x03\x02\x03\x02" + - "\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03\x04" + - "\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03" + - "\b\x03\t\x03\t\x03\n\x03\n\x03\v\x03\v\x03\v\x03\f\x03\f\x03\r\x03\r\x03" + - "\r\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0F\x03" + - "\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x11\x03\x11\x03\x12\x03" + - "\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03" + - "\x13\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03" + - "\x14\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03" + - "\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03" + - "\x16\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x19\x03\x19\x03\x1A\x03" + - "\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03" + - "\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1E\x03" + - "\x1E\x03\x1F\x03\x1F\x03 \x03 \x03!\x03!\x03\"\x03\"\x03#\x03#\x03#\x03" + - "$\x03$\x03$\x03%\x03%\x03%\x03%\x03%\x03%\x03%\x03&\x03&\x03&\x03&\x03" + - "&\x03&\x03&\x03&\x03&\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'" + - "\x03\'\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03)\x03)\x03)\x03)\x03" + - ")\x03)\x03*\x03*\x03*\x03*\x03*\x03+\x03+\x03,\x03,\x03-\x03-\x03-\x03" + - "-\x03-\x03-\x03-\x03-\x03.\x03.\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + - "/\x030\x030\x030\x031\x031\x031\x031\x031\x031\x031\x032\x032\x032\x03" + - "2\x032\x032\x032\x032\x033\x033\x033\x033\x033\x033\x033\x033\x033\x03" + - "4\x034\x034\x035\x035\x035\x035\x035\x036\x036\x036\x036\x037\x037\x03" + - "7\x037\x037\x037\x038\x038\x038\x038\x038\x038\x039\x039\x039\x039\x03" + - "9\x039\x039\x039\x039\x039\x03:\x03:\x03:\x03:\x03:\x03:\x03:\x03:\x03" + - ":\x03;\x03;\x03;\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03=\x03=\x03=\x03" + - "=\x03=\x03=\x03>\x03>\x03>\x03>\x03>\x03?\x03?\x03?\x03?\x03?\x03?\x03" + - "?\x03@\x03@\x03@\x03@\x03A\x03A\x03A\x03A\x03A\x03B\x03B\x03B\x03B\x03" + - "B\x03B\x03B\x03C\x03C\x03C\x03C\x03C\x03D\x03D\x03D\x03E\x03E\x03E\x03" + - "F\x03F\x03F\x03F\x03G\x03G\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03I\x03" + - "I\x03J\x03J\x03J\x03K\x03K\x03K\x03L\x03L\x03L\x03M\x03M\x03M\x03N\x03" + - "N\x03O\x03O\x03O\x03P\x03P\x03P\x03Q\x03Q\x03Q\x03R\x03R\x03R\x03R\x03" + - "S\x03S\x03S\x03S\x03T\x03T\x03T\x03U\x03U\x03U\x03V\x03V\x03V\x03W\x03" + - "W\x03W\x03X\x03X\x03X\x03Y\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x03[\x03[\x03" + - "[\x03\\\x03\\\x03\\\x03\\\x03\\\x03\\\x03\\\x03]\x03]\x03]\x03]\x03]\x03" + - "^\x03^\x03^\x03^\x03^\x03^\x03^\x03^\x03_\x03_\x03_\x03`\x03`\x03`\x03" + - "`\x03`\x03`\x03`\x03`\x03`\x03a\x03a\x03a\x03a\x03a\x03a\x03a\x03a\x03" + - "a\x03b\x03b\x03b\x03b\x03b\x05b\u02D4\nb\x03c\x03c\x03c\x03c\x03c\x03" + - "c\x05c\u02DC\nc\x03d\x03d\x03d\x03d\x03d\x03d\x03d\x05d\u02E5\nd\x03e" + - "\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x06e\u02F0\ne\re\x0Ee\u02F1\x05" + - "e\u02F4\ne\x03f\x03f\x03f\x03f\x03f\x03f\x03f\x03f\x03f\x03f\x06f\u0300" + - "\nf\rf\x0Ef\u0301\x05f\u0304\nf\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03" + - "g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03" + - "g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03" + - "g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03" + - "g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03" + - "g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03g\x03" + - "g\x03g\x03g\x03g\x03g\x03g\x05g\u0359\ng\x03h\x03h\x03h\x03h\x03h\x05" + - "h\u0360\nh\x03i\x03i\x03i\x03i\x03i\x03i\x03i\x03i\x03i\x05i\u036B\ni" + - "\x03j\x03j\x05j\u036F\nj\x03j\x03j\x05j\u0373\nj\x03j\x03j\x05j\u0377" + - "\nj\x03j\x05j\u037A\nj\x03k\x03k\x05k\u037E\nk\x03k\x07k\u0381\nk\fk\x0E" + - "k\u0384\vk\x03l\x03l\x03l\x03l\x03m\x03m\x05m\u038C\nm\x03m\x07m\u038F" + - "\nm\fm\x0Em\u0392\vm\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03" + - "n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03" + - "n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03" + - "n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03n\x03" + - "n\x03n\x03n\x03n\x03n\x05n\u03CC\nn\x03o\x03o\x03o\x03o\x03o\x03o\x05" + - "o\u03D4\no\x03o\x03o\x03o\x05o\u03D9\no\x03o\x05o\u03DC\no\x03p\x03p\x03" + - "q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03" + - "q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03" + - "q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03" + - "q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03" + - "q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03" + - "q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03" + - "q\x03q\x03q\x03q\x05q\u0438\nq\x03r\x03r\x03r\x03r\x03r\x03r\x03r\x03" + - "r\x03r\x03r\x03s\x03s\x03s\x03s\x03s\x03s\x03t\x03t\x03t\x03t\x03t\x03" + - "t\x03t\x03t\x03t\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x03" + - "v\x03v\x03v\x03v\x03v\x03v\x03v\x03v\x03v\x03w\x03w\x03w\x03w\x03w\x03" + - "w\x03x\x03x\x03x\x03x\x03x\x03x\x03x\x03x\x03x\x03y\x03y\x03y\x03y\x03" + - "y\x03y\x03y\x03y\x03z\x03z\x03z\x03z\x03z\x03z\x03z\x03z\x03z\x03{\x03" + - "{\x03{\x03{\x03{\x03{\x03{\x03{\x03|\x03|\x03|\x03|\x03|\x03|\x03|\x03" + - "|\x03}\x03}\x03}\x03}\x03}\x03}\x03}\x03~\x03~\x03~\x03~\x03~\x03~\x03" + - "~\x03~\x03\x7F\x03\x7F\x03\x7F\x03\x7F\x03\x7F\x03\x80\x03\x80\x03\x80" + - "\x03\x80\x03\x80\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x82\x03\x82" + - "\x03\x82\x03\x82\x03\x82\x03\x82\x03\x82\x03\x83\x03\x83\x03\x83\x03\x83" + - "\x03\x83\x03\x83\x03\x83\x03\x83\x03\x83\x03\x83\x03\x83\x03\x83\x03\x84" + - "\x03\x84\x03\x84\x03\x84\x03\x84\x03\x84\x03\x84\x03\x84\x03\x84\x03\x85" + - "\x03\x85\x03\x85\x03\x85\x03\x85\x03\x85\x03\x85\x03\x85\x03\x86\x03\x86" + - "\x07\x86\u04DA\n\x86\f\x86\x0E\x86\u04DD\v\x86\x03\x87\x03\x87\x03\x88" + - "\x03\x88\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x05\x89" + - "\u04EA\n\x89\x03\x89\x03\x89\x07\x89\u04EE\n\x89\f\x89\x0E\x89\u04F1\v" + - "\x89\x03\x89\x03\x89\x03\x89\x07\x89\u04F6\n\x89\f\x89\x0E\x89\u04F9\v" + - "\x89\x03\x89\x05\x89\u04FC\n\x89\x03\x8A\x03\x8A\x03\x8A\x05\x8A\u0501" + - "\n\x8A\x03\x8B\x03\x8B\x03\x8B\x05\x8B\u0506\n\x8B\x03\x8C\x06\x8C\u0509" + - "\n\x8C\r\x8C\x0E\x8C\u050A\x03\x8C\x03\x8C\x06\x8C\u050F\n\x8C\r\x8C\x0E" + - "\x8C\u0510\x03\x8C\x03\x8C\x06\x8C\u0515\n\x8C\r\x8C\x0E\x8C\u0516\x05" + - "\x8C\u0519\n\x8C\x03\x8D\x06\x8D\u051C\n\x8D\r\x8D\x0E\x8D\u051D\x03\x8D" + - "\x03\x8D\x03\x8E\x03\x8E\x03\x8E\x03\x8E\x07\x8E\u0526\n\x8E\f\x8E\x0E" + - "\x8E\u0529\v\x8E\x03\x8E\x03\x8E\x03\x8E\x03\x8E\x03\x8E\x03\x8F\x03\x8F" + - "\x03\x8F\x03\x8F\x07\x8F\u0534\n\x8F\f\x8F\x0E\x8F\u0537\v\x8F\x03\x8F" + - "\x03\x8F\x03\u0527\x02\x02\x90\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02" + - "\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02" + - "\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12#\x02\x13%" + - "\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191\x02\x1A3\x02\x1B" + - "5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C\x02#E\x02$G\x02" + - "%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02.[\x02/]\x020_" + - "\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x029q\x02:s\x02;u\x02" + - "{\x02?}\x02@\x7F\x02A\x81\x02B\x83\x02C\x85\x02D\x87\x02" + - "E\x89\x02F\x8B\x02G\x8D\x02H\x8F\x02I\x91\x02J\x93\x02K\x95\x02L\x97\x02" + - "M\x99\x02N\x9B\x02O\x9D\x02P\x9F\x02Q\xA1\x02R\xA3\x02S\xA5\x02T\xA7\x02" + - "U\xA9\x02V\xAB\x02W\xAD\x02X\xAF\x02Y\xB1\x02Z\xB3\x02[\xB5\x02\\\xB7" + - "\x02]\xB9\x02^\xBB\x02_\xBD\x02`\xBF\x02a\xC1\x02b\xC3\x02c\xC5\x02d\xC7" + - "\x02e\xC9\x02f\xCB\x02g\xCD\x02\x02\xCF\x02\x02\xD1\x02h\xD3\x02i\xD5" + - "\x02\x02\xD7\x02j\xD9\x02\x02\xDB\x02k\xDD\x02l\xDF\x02\x02\xE1\x02m\xE3" + - "\x02n\xE5\x02o\xE7\x02p\xE9\x02q\xEB\x02r\xED\x02s\xEF\x02t\xF1\x02u\xF3" + - "\x02v\xF5\x02w\xF7\x02x\xF9\x02y\xFB\x02z\xFD\x02{\xFF\x02|\u0101\x02" + - "}\u0103\x02~\u0105\x02\x7F\u0107\x02\x80\u0109\x02\x81\u010B\x02\x82\u010D" + - "\x02\x02\u010F\x02\x02\u0111\x02\x83\u0113\x02\x02\u0115\x02\x02\u0117" + - "\x02\x84\u0119\x02\x85\u011B\x02\x86\u011D\x02\x87\x03\x02\x0F\x03\x02" + - "2;\x03\x023;\x03\x0234\x03\x0224\x04\x02GGgg\x04\x02ZZzz\x05\x022;CHc" + - "h\x06\x02&&C\\aac|\x07\x02&&2;C\\aac|\x06\x02\f\f\x0F\x0F$$^^\x06\x02" + - "\f\f\x0F\x0F))^^\x05\x02\v\f\x0E\x0F\"\"\x04\x02\f\f\x0F\x0F\x02\u058C" + - "\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02" + - "\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02" + - "\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02" + - "\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02" + - "\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02" + - "!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03" + - "\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03\x02\x02" + - "\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02\x023\x03\x02\x02\x02\x02" + - "5\x03\x02\x02\x02\x027\x03\x02\x02\x02\x029\x03\x02\x02\x02\x02;\x03\x02" + - "\x02\x02\x02=\x03\x02\x02\x02\x02?\x03\x02\x02\x02\x02A\x03\x02\x02\x02" + - "\x02C\x03\x02\x02\x02\x02E\x03\x02\x02\x02\x02G\x03\x02\x02\x02\x02I\x03" + - "\x02\x02\x02\x02K\x03\x02\x02\x02\x02M\x03\x02\x02\x02\x02O\x03\x02\x02" + - "\x02\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02\x02\x02U\x03\x02\x02\x02\x02" + - "W\x03\x02\x02\x02\x02Y\x03\x02\x02\x02\x02[\x03\x02\x02\x02\x02]\x03\x02" + - "\x02\x02\x02_\x03\x02\x02\x02\x02a\x03\x02\x02\x02\x02c\x03\x02\x02\x02" + - "\x02e\x03\x02\x02\x02\x02g\x03\x02\x02\x02\x02i\x03\x02\x02\x02\x02k\x03" + - "\x02\x02\x02\x02m\x03\x02\x02\x02\x02o\x03\x02\x02\x02\x02q\x03\x02\x02" + - "\x02\x02s\x03\x02\x02\x02\x02u\x03\x02\x02\x02\x02w\x03\x02\x02\x02\x02" + - "y\x03\x02\x02\x02\x02{\x03\x02\x02\x02\x02}\x03\x02\x02\x02\x02\x7F\x03" + - "\x02\x02\x02\x02\x81\x03\x02\x02\x02\x02\x83\x03\x02\x02\x02\x02\x85\x03" + - "\x02\x02\x02\x02\x87\x03\x02\x02\x02\x02\x89\x03\x02\x02\x02\x02\x8B\x03" + - "\x02\x02\x02\x02\x8D\x03\x02\x02\x02\x02\x8F\x03\x02\x02\x02\x02\x91\x03" + - "\x02\x02\x02\x02\x93\x03\x02\x02\x02\x02\x95\x03\x02\x02\x02\x02\x97\x03" + - "\x02\x02\x02\x02\x99\x03\x02\x02\x02\x02\x9B\x03\x02\x02\x02\x02\x9D\x03" + - "\x02\x02\x02\x02\x9F\x03\x02\x02\x02\x02\xA1\x03\x02\x02\x02\x02\xA3\x03" + - "\x02\x02\x02\x02\xA5\x03\x02\x02\x02\x02\xA7\x03\x02\x02\x02\x02\xA9\x03" + - "\x02\x02\x02\x02\xAB\x03\x02\x02\x02\x02\xAD\x03\x02\x02\x02\x02\xAF\x03" + - "\x02\x02\x02\x02\xB1\x03\x02\x02\x02\x02\xB3\x03\x02\x02\x02\x02\xB5\x03" + - "\x02\x02\x02\x02\xB7\x03\x02\x02\x02\x02\xB9\x03\x02\x02\x02\x02\xBB\x03" + - "\x02\x02\x02\x02\xBD\x03\x02\x02\x02\x02\xBF\x03\x02\x02\x02\x02\xC1\x03" + - "\x02\x02\x02\x02\xC3\x03\x02\x02\x02\x02\xC5\x03\x02\x02\x02\x02\xC7\x03" + - "\x02\x02\x02\x02\xC9\x03\x02\x02\x02\x02\xCB\x03\x02\x02\x02\x02\xD1\x03" + - "\x02\x02\x02\x02\xD3\x03\x02\x02\x02\x02\xD7\x03\x02\x02\x02\x02\xDB\x03" + - "\x02\x02\x02\x02\xDD\x03\x02\x02\x02\x02\xE1\x03\x02\x02\x02\x02\xE3\x03" + - "\x02\x02\x02\x02\xE5\x03\x02\x02\x02\x02\xE7\x03\x02\x02\x02\x02\xE9\x03" + - "\x02\x02\x02\x02\xEB\x03\x02\x02\x02\x02\xED\x03\x02\x02\x02\x02\xEF\x03" + - "\x02\x02\x02\x02\xF1\x03\x02\x02\x02\x02\xF3\x03\x02\x02\x02\x02\xF5\x03" + - "\x02\x02\x02\x02\xF7\x03\x02\x02\x02\x02\xF9\x03\x02\x02\x02\x02\xFB\x03" + - "\x02\x02\x02\x02\xFD\x03\x02\x02\x02\x02\xFF\x03\x02\x02\x02\x02\u0101" + - "\x03\x02\x02\x02\x02\u0103\x03\x02\x02\x02\x02\u0105\x03\x02\x02\x02\x02" + - "\u0107\x03\x02\x02\x02\x02\u0109\x03\x02\x02\x02\x02\u010B\x03\x02\x02" + - "\x02\x02\u0111\x03\x02\x02\x02\x02\u0117\x03\x02\x02\x02\x02\u0119\x03" + - "\x02\x02\x02\x02\u011B\x03\x02\x02\x02\x02\u011D\x03\x02\x02\x02\x03\u011F" + - "\x03\x02\x02\x02\x05\u0126\x03\x02\x02\x02\x07\u0128\x03\x02\x02\x02\t" + - "\u012A\x03\x02\x02\x02\v\u012D\x03\x02\x02\x02\r\u012F\x03\x02\x02\x02" + - "\x0F\u0131\x03\x02\x02\x02\x11\u0134\x03\x02\x02\x02\x13\u0136\x03\x02" + - "\x02\x02\x15\u0138\x03\x02\x02\x02\x17\u013B\x03\x02\x02\x02\x19\u013D" + - "\x03\x02\x02\x02\x1B\u0140\x03\x02\x02\x02\x1D\u0147\x03\x02\x02\x02\x1F" + - "\u014C\x03\x02\x02\x02!\u014E\x03\x02\x02\x02#\u0150\x03\x02\x02\x02%" + - "\u0152\x03\x02\x02\x02\'\u015B\x03\x02\x02\x02)\u0164\x03\x02\x02\x02" + - "+\u016E\x03\x02\x02\x02-\u0176\x03\x02\x02\x02/\u0179\x03\x02\x02\x02" + - "1\u017B\x03\x02\x02\x023\u017D\x03\x02\x02\x025\u0183\x03\x02\x02\x02" + - "7\u0189\x03\x02\x02\x029\u018D\x03\x02\x02\x02;\u018F\x03\x02\x02\x02" + - "=\u0191\x03\x02\x02\x02?\u0193\x03\x02\x02\x02A\u0195\x03\x02\x02\x02" + - "C\u0197\x03\x02\x02\x02E\u0199\x03\x02\x02\x02G\u019C\x03\x02\x02\x02" + - "I\u019F\x03\x02\x02\x02K\u01A6\x03\x02\x02\x02M\u01AF\x03\x02\x02\x02" + - "O\u01B8\x03\x02\x02\x02Q\u01C0\x03\x02\x02\x02S\u01C6\x03\x02\x02\x02" + - "U\u01CB\x03\x02\x02\x02W\u01CD\x03\x02\x02\x02Y\u01CF\x03\x02\x02\x02" + - "[\u01D7\x03\x02\x02\x02]\u01D9\x03\x02\x02\x02_\u01E1\x03\x02\x02\x02" + - "a\u01E4\x03\x02\x02\x02c\u01EB\x03\x02\x02\x02e\u01F3\x03\x02\x02\x02" + - "g\u01FC\x03\x02\x02\x02i\u01FF\x03\x02\x02\x02k\u0204\x03\x02\x02\x02" + - "m\u0208\x03\x02\x02\x02o\u020E\x03\x02\x02\x02q\u0214\x03\x02\x02\x02" + - "s\u021E\x03\x02\x02\x02u\u0227\x03\x02\x02\x02w\u022A\x03\x02\x02\x02" + - "y\u0231\x03\x02\x02\x02{\u0237\x03\x02\x02\x02}\u023C\x03\x02\x02\x02" + - "\x7F\u0243\x03\x02\x02\x02\x81\u0247\x03\x02\x02\x02\x83\u024C\x03\x02" + - "\x02\x02\x85\u0253\x03\x02\x02\x02\x87\u0258\x03\x02\x02\x02\x89\u025B" + - "\x03\x02\x02\x02\x8B\u025E\x03\x02\x02\x02\x8D\u0262\x03\x02\x02\x02\x8F" + - "\u0264\x03\x02\x02\x02\x91\u026B\x03\x02\x02\x02\x93\u026D\x03\x02\x02" + - "\x02\x95\u0270\x03\x02\x02\x02\x97\u0273\x03\x02\x02\x02\x99\u0276\x03" + - "\x02\x02\x02\x9B\u0279\x03\x02\x02\x02\x9D\u027B\x03\x02\x02\x02\x9F\u027E" + - "\x03\x02\x02\x02\xA1\u0281\x03\x02\x02\x02\xA3\u0284\x03\x02\x02\x02\xA5" + - "\u0288\x03\x02\x02\x02\xA7\u028C\x03\x02\x02\x02\xA9\u028F\x03\x02\x02" + - "\x02\xAB\u0292\x03\x02\x02\x02\xAD\u0295\x03\x02\x02\x02\xAF\u0298\x03" + - "\x02\x02\x02\xB1\u029B\x03\x02\x02\x02\xB3\u029F\x03\x02\x02\x02\xB5\u02A2" + - "\x03\x02\x02\x02\xB7\u02A5\x03\x02\x02\x02\xB9\u02AC\x03\x02\x02\x02\xBB" + - "\u02B1\x03\x02\x02\x02\xBD\u02B9\x03\x02\x02\x02\xBF\u02BC\x03\x02\x02" + - "\x02\xC1\u02C5\x03\x02\x02\x02\xC3\u02CE\x03\x02\x02\x02\xC5\u02D5\x03" + - "\x02\x02\x02\xC7\u02DD\x03\x02\x02\x02\xC9\u02E6\x03\x02\x02\x02\xCB\u02F5" + - "\x03\x02\x02\x02\xCD\u0358\x03\x02\x02\x02\xCF\u035F\x03\x02\x02\x02\xD1" + - "\u036A\x03\x02\x02\x02\xD3\u0372\x03\x02\x02\x02\xD5\u037B\x03\x02\x02" + - "\x02\xD7\u0385\x03\x02\x02\x02\xD9\u0389\x03\x02\x02\x02\xDB\u03CB\x03" + - "\x02\x02\x02\xDD\u03CD\x03\x02\x02\x02\xDF\u03DD\x03\x02\x02\x02\xE1\u0437" + - "\x03\x02\x02\x02\xE3\u0439\x03\x02\x02\x02\xE5\u0443\x03\x02\x02\x02\xE7" + - "\u0449\x03\x02\x02\x02\xE9\u0452\x03\x02\x02\x02\xEB\u045C\x03\x02\x02" + - "\x02\xED\u0465\x03\x02\x02\x02\xEF\u046B\x03\x02\x02\x02\xF1\u0474\x03" + - "\x02\x02\x02\xF3\u047C\x03\x02\x02\x02\xF5\u0485\x03\x02\x02\x02\xF7\u048D" + - "\x03\x02\x02\x02\xF9\u0495\x03\x02\x02\x02\xFB\u049C\x03\x02\x02\x02\xFD" + - "\u04A4\x03\x02\x02\x02\xFF\u04A9\x03\x02\x02\x02\u0101\u04AE\x03\x02\x02" + - "\x02\u0103\u04B3\x03\x02\x02\x02\u0105\u04BA\x03\x02\x02\x02\u0107\u04C6" + - "\x03\x02\x02\x02\u0109\u04CF\x03\x02\x02\x02\u010B\u04D7\x03\x02\x02\x02" + - "\u010D\u04DE\x03\x02\x02\x02\u010F\u04E0\x03\x02\x02\x02\u0111\u04E9\x03" + - "\x02\x02\x02\u0113\u0500\x03\x02\x02\x02\u0115\u0505\x03\x02\x02\x02\u0117" + - "\u0508\x03\x02\x02\x02\u0119\u051B\x03\x02\x02\x02\u011B\u0521\x03\x02" + - "\x02\x02\u011D\u052F\x03\x02\x02\x02\u011F\u0120\x07r\x02\x02\u0120\u0121" + - "\x07t\x02\x02\u0121\u0122\x07c\x02\x02\u0122\u0123\x07i\x02\x02\u0123" + - "\u0124\x07o\x02\x02\u0124\u0125\x07c\x02\x02\u0125\x04\x03\x02\x02\x02" + - "\u0126\u0127\x07=\x02\x02\u0127\x06\x03\x02\x02\x02\u0128\u0129\x07,\x02" + - "\x02\u0129\b\x03\x02\x02\x02\u012A\u012B\x07~\x02\x02\u012B\u012C\x07" + - "~\x02\x02\u012C\n\x03\x02\x02\x02\u012D\u012E\x07`"; - private static readonly _serializedATNSegment1: string = - "\x02\x02\u012E\f\x03\x02\x02\x02\u012F\u0130\x07\x80\x02\x02\u0130\x0E" + - "\x03\x02\x02\x02\u0131\u0132\x07@\x02\x02\u0132\u0133\x07?\x02\x02\u0133" + - "\x10\x03\x02\x02\x02\u0134\u0135\x07@\x02\x02\u0135\x12\x03\x02\x02\x02" + - "\u0136\u0137\x07>\x02\x02\u0137\x14\x03\x02\x02\x02\u0138\u0139\x07>\x02" + - "\x02\u0139\u013A\x07?\x02\x02\u013A\x16\x03\x02\x02\x02\u013B\u013C\x07" + - "?\x02\x02\u013C\x18\x03\x02\x02\x02\u013D\u013E\x07c\x02\x02\u013E\u013F" + - "\x07u\x02\x02\u013F\x1A\x03\x02\x02\x02\u0140\u0141\x07k\x02\x02\u0141" + - "\u0142\x07o\x02\x02\u0142\u0143\x07r\x02\x02\u0143\u0144\x07q\x02\x02" + - "\u0144\u0145\x07t\x02\x02\u0145\u0146\x07v\x02\x02\u0146\x1C\x03\x02\x02" + - "\x02\u0147\u0148\x07h\x02\x02\u0148\u0149\x07t\x02\x02\u0149\u014A\x07" + - "q\x02\x02\u014A\u014B\x07o\x02\x02\u014B\x1E\x03\x02\x02\x02\u014C\u014D" + - "\x07}\x02\x02\u014D \x03\x02\x02\x02\u014E\u014F\x07.\x02\x02\u014F\"" + - "\x03\x02\x02\x02\u0150\u0151\x07\x7F\x02\x02\u0151$\x03\x02\x02\x02\u0152" + - "\u0153\x07c\x02\x02\u0153\u0154\x07d\x02\x02\u0154\u0155\x07u\x02\x02" + - "\u0155\u0156\x07v\x02\x02\u0156\u0157\x07t\x02\x02\u0157\u0158\x07c\x02" + - "\x02\u0158\u0159\x07e\x02\x02\u0159\u015A\x07v\x02\x02\u015A&\x03\x02" + - "\x02\x02\u015B\u015C\x07e\x02\x02\u015C\u015D\x07q\x02\x02\u015D\u015E" + - "\x07p\x02\x02\u015E\u015F\x07v\x02\x02\u015F\u0160\x07t\x02\x02\u0160" + - "\u0161\x07c\x02\x02\u0161\u0162\x07e\x02\x02\u0162\u0163\x07v\x02\x02" + - "\u0163(\x03\x02\x02\x02\u0164\u0165\x07k\x02\x02\u0165\u0166\x07p\x02" + - "\x02\u0166\u0167\x07v\x02\x02\u0167\u0168\x07g\x02\x02\u0168\u0169\x07" + - "t\x02\x02\u0169\u016A\x07h\x02\x02\u016A\u016B\x07c\x02\x02\u016B\u016C" + - "\x07e\x02\x02\u016C\u016D\x07g\x02\x02\u016D*\x03\x02\x02\x02\u016E\u016F" + - "\x07n\x02\x02\u016F\u0170\x07k\x02\x02\u0170\u0171\x07d\x02\x02\u0171" + - "\u0172\x07t\x02\x02\u0172\u0173\x07c\x02\x02\u0173\u0174\x07t\x02\x02" + - "\u0174\u0175\x07{\x02\x02\u0175,\x03\x02\x02\x02\u0176\u0177\x07k\x02" + - "\x02\u0177\u0178\x07u\x02\x02\u0178.\x03\x02\x02\x02\u0179\u017A\x07*" + - "\x02\x02\u017A0\x03\x02\x02\x02\u017B\u017C\x07+\x02\x02\u017C2\x03\x02" + - "\x02\x02\u017D\u017E\x07g\x02\x02\u017E\u017F\x07t\x02\x02\u017F\u0180" + - "\x07t\x02\x02\u0180\u0181\x07q\x02\x02\u0181\u0182\x07t\x02\x02\u0182" + - "4\x03\x02\x02\x02\u0183\u0184\x07w\x02\x02\u0184\u0185\x07u\x02\x02\u0185" + - "\u0186\x07k\x02\x02\u0186\u0187\x07p\x02\x02\u0187\u0188\x07i\x02\x02" + - "\u01886\x03\x02\x02\x02\u0189\u018A\x07h\x02\x02\u018A\u018B\x07q\x02" + - "\x02\u018B\u018C\x07t\x02\x02\u018C8\x03\x02\x02\x02\u018D\u018E\x07~" + - "\x02\x02\u018E:\x03\x02\x02\x02\u018F\u0190\x07(\x02\x02\u0190<\x03\x02" + - "\x02\x02\u0191\u0192\x07-\x02\x02\u0192>\x03\x02\x02\x02\u0193\u0194\x07" + - "/\x02\x02\u0194@\x03\x02\x02\x02\u0195\u0196\x071\x02\x02\u0196B\x03\x02" + - "\x02\x02\u0197\u0198\x07\'\x02\x02\u0198D\x03\x02\x02\x02\u0199\u019A" + - "\x07?\x02\x02\u019A\u019B\x07?\x02\x02\u019BF\x03\x02\x02\x02\u019C\u019D" + - "\x07#\x02\x02\u019D\u019E\x07?\x02\x02\u019EH\x03\x02\x02\x02\u019F\u01A0" + - "\x07u\x02\x02\u01A0\u01A1\x07v\x02\x02\u01A1\u01A2\x07t\x02\x02\u01A2" + - "\u01A3\x07w\x02\x02\u01A3\u01A4\x07e\x02\x02\u01A4\u01A5\x07v\x02\x02" + - "\u01A5J\x03\x02\x02\x02\u01A6\u01A7\x07o\x02\x02\u01A7\u01A8\x07q\x02" + - "\x02\u01A8\u01A9\x07f\x02\x02\u01A9\u01AA\x07k\x02\x02\u01AA\u01AB\x07" + - "h\x02\x02\u01AB\u01AC\x07k\x02\x02\u01AC\u01AD\x07g\x02\x02\u01AD\u01AE" + - "\x07t\x02\x02\u01AEL\x03\x02\x02\x02\u01AF\u01B0\x07h\x02\x02\u01B0\u01B1" + - "\x07w\x02\x02\u01B1\u01B2\x07p\x02\x02\u01B2\u01B3\x07e\x02\x02\u01B3" + - "\u01B4\x07v\x02\x02\u01B4\u01B5\x07k\x02\x02\u01B5\u01B6\x07q\x02\x02" + - "\u01B6\u01B7\x07p\x02\x02\u01B7N\x03\x02\x02\x02\u01B8\u01B9\x07t\x02" + - "\x02\u01B9\u01BA\x07g\x02\x02\u01BA\u01BB\x07v\x02\x02\u01BB\u01BC\x07" + - "w\x02\x02\u01BC\u01BD\x07t\x02\x02\u01BD\u01BE\x07p\x02\x02\u01BE\u01BF" + - "\x07u\x02\x02\u01BFP\x03\x02\x02\x02\u01C0\u01C1\x07g\x02\x02\u01C1\u01C2" + - "\x07x\x02\x02\u01C2\u01C3\x07g\x02\x02\u01C3\u01C4\x07p\x02\x02\u01C4" + - "\u01C5\x07v\x02\x02\u01C5R\x03\x02\x02\x02\u01C6\u01C7\x07g\x02\x02\u01C7" + - "\u01C8\x07p\x02\x02\u01C8\u01C9\x07w\x02\x02\u01C9\u01CA\x07o\x02\x02" + - "\u01CAT\x03\x02\x02\x02\u01CB\u01CC\x07]\x02\x02\u01CCV\x03\x02\x02\x02" + - "\u01CD\u01CE\x07_\x02\x02\u01CEX\x03\x02\x02\x02\u01CF\u01D0\x07c\x02" + - "\x02\u01D0\u01D1\x07f\x02\x02\u01D1\u01D2\x07f\x02\x02\u01D2\u01D3\x07" + - "t\x02\x02\u01D3\u01D4\x07g\x02\x02\u01D4\u01D5\x07u\x02\x02\u01D5\u01D6" + - "\x07u\x02\x02\u01D6Z\x03\x02\x02\x02\u01D7\u01D8\x070\x02\x02\u01D8\\" + - "\x03\x02\x02\x02\u01D9\u01DA\x07o\x02\x02\u01DA\u01DB\x07c\x02\x02\u01DB" + - "\u01DC\x07r\x02\x02\u01DC\u01DD\x07r\x02\x02\u01DD\u01DE\x07k\x02\x02" + - "\u01DE\u01DF\x07p\x02\x02\u01DF\u01E0\x07i\x02\x02\u01E0^\x03\x02\x02" + - "\x02\u01E1\u01E2\x07?\x02\x02\u01E2\u01E3\x07@\x02\x02\u01E3`\x03\x02" + - "\x02\x02\u01E4\u01E5\x07o\x02\x02\u01E5\u01E6\x07g\x02\x02\u01E6\u01E7" + - "\x07o\x02\x02\u01E7\u01E8\x07q\x02\x02\u01E8\u01E9\x07t\x02\x02\u01E9" + - "\u01EA\x07{\x02\x02\u01EAb\x03\x02\x02\x02\u01EB\u01EC\x07u\x02\x02\u01EC" + - "\u01ED\x07v\x02\x02\u01ED\u01EE\x07q\x02\x02\u01EE\u01EF\x07t\x02\x02" + - "\u01EF\u01F0\x07c\x02\x02\u01F0\u01F1\x07i\x02\x02\u01F1\u01F2\x07g\x02" + - "\x02\u01F2d\x03\x02\x02\x02\u01F3\u01F4\x07e\x02\x02\u01F4\u01F5\x07c" + - "\x02\x02\u01F5\u01F6\x07n\x02\x02\u01F6\u01F7\x07n\x02\x02\u01F7\u01F8" + - "\x07f\x02\x02\u01F8\u01F9\x07c\x02\x02\u01F9\u01FA\x07v\x02\x02\u01FA" + - "\u01FB\x07c\x02\x02\u01FBf\x03\x02\x02\x02\u01FC\u01FD\x07k\x02\x02\u01FD" + - "\u01FE\x07h\x02\x02\u01FEh\x03\x02\x02\x02\u01FF\u0200\x07g\x02\x02\u0200" + - "\u0201\x07n\x02\x02\u0201\u0202\x07u\x02\x02\u0202\u0203\x07g\x02\x02" + - "\u0203j\x03\x02\x02\x02\u0204\u0205\x07v\x02\x02\u0205\u0206\x07t\x02" + - "\x02\u0206\u0207\x07{\x02\x02\u0207l\x03\x02\x02\x02\u0208\u0209\x07e" + - "\x02\x02\u0209\u020A\x07c\x02\x02\u020A\u020B\x07v\x02\x02\u020B\u020C" + - "\x07e\x02\x02\u020C\u020D\x07j\x02\x02\u020Dn\x03\x02\x02\x02\u020E\u020F" + - "\x07y\x02\x02\u020F\u0210\x07j\x02\x02\u0210\u0211\x07k\x02\x02\u0211" + - "\u0212\x07n\x02\x02\u0212\u0213\x07g\x02\x02\u0213p\x03\x02\x02\x02\u0214" + - "\u0215\x07w\x02\x02\u0215\u0216\x07p\x02\x02\u0216\u0217\x07e\x02\x02" + - "\u0217\u0218\x07j\x02\x02\u0218\u0219\x07g\x02\x02\u0219\u021A\x07e\x02" + - "\x02\u021A\u021B\x07m\x02\x02\u021B\u021C\x07g\x02\x02\u021C\u021D\x07" + - "f\x02\x02\u021Dr\x03\x02\x02\x02\u021E\u021F\x07c\x02\x02\u021F\u0220" + - "\x07u\x02\x02\u0220\u0221\x07u\x02\x02\u0221\u0222\x07g\x02\x02\u0222" + - "\u0223\x07o\x02\x02\u0223\u0224\x07d\x02\x02\u0224\u0225\x07n\x02\x02" + - "\u0225\u0226\x07{\x02\x02\u0226t\x03\x02\x02\x02\u0227\u0228\x07f\x02" + - "\x02\u0228\u0229\x07q\x02\x02\u0229v\x03\x02\x02\x02\u022A\u022B\x07t" + - "\x02\x02\u022B\u022C\x07g\x02\x02\u022C\u022D\x07v\x02\x02\u022D\u022E" + - "\x07w\x02\x02\u022E\u022F\x07t\x02\x02\u022F\u0230\x07p\x02\x02\u0230" + - "x\x03\x02\x02\x02\u0231\u0232\x07v\x02\x02\u0232\u0233\x07j\x02\x02\u0233" + - "\u0234\x07t\x02\x02\u0234\u0235\x07q\x02\x02\u0235\u0236\x07y\x02\x02" + - "\u0236z\x03\x02\x02\x02\u0237\u0238\x07g\x02\x02\u0238\u0239\x07o\x02" + - "\x02\u0239\u023A\x07k\x02\x02\u023A\u023B\x07v\x02\x02\u023B|\x03\x02" + - "\x02\x02\u023C\u023D\x07t\x02\x02\u023D\u023E\x07g\x02\x02\u023E\u023F" + - "\x07x\x02\x02\u023F\u0240\x07g\x02\x02\u0240\u0241\x07t\x02\x02\u0241" + - "\u0242\x07v\x02\x02\u0242~\x03\x02\x02\x02\u0243\u0244\x07x\x02\x02\u0244" + - "\u0245\x07c\x02\x02\u0245\u0246\x07t\x02\x02\u0246\x80\x03\x02\x02\x02" + - "\u0247\u0248\x07d\x02\x02\u0248\u0249\x07q\x02\x02\u0249\u024A\x07q\x02" + - "\x02\u024A\u024B\x07n\x02\x02\u024B\x82\x03\x02\x02\x02\u024C\u024D\x07" + - "u\x02\x02\u024D\u024E\x07v\x02\x02\u024E\u024F\x07t\x02\x02\u024F\u0250" + - "\x07k\x02\x02\u0250\u0251\x07p\x02\x02\u0251\u0252\x07i\x02\x02\u0252" + - "\x84\x03\x02\x02\x02\u0253\u0254\x07d\x02\x02\u0254\u0255\x07{\x02\x02" + - "\u0255\u0256\x07v\x02\x02\u0256\u0257\x07g\x02\x02\u0257\x86\x03\x02\x02" + - "\x02\u0258\u0259\x07-\x02\x02\u0259\u025A\x07-\x02\x02\u025A\x88\x03\x02" + - "\x02\x02\u025B\u025C\x07/\x02\x02\u025C\u025D\x07/\x02\x02\u025D\x8A\x03" + - "\x02\x02\x02\u025E\u025F\x07p\x02\x02\u025F\u0260\x07g\x02\x02\u0260\u0261" + - "\x07y\x02\x02\u0261\x8C\x03\x02\x02\x02\u0262\u0263\x07<\x02\x02\u0263" + - "\x8E\x03\x02\x02\x02\u0264\u0265\x07f\x02\x02\u0265\u0266\x07g\x02\x02" + - "\u0266\u0267\x07n\x02\x02\u0267\u0268\x07g\x02\x02\u0268\u0269\x07v\x02" + - "\x02\u0269\u026A\x07g\x02\x02\u026A\x90\x03\x02\x02\x02\u026B\u026C\x07" + - "#\x02\x02\u026C\x92\x03\x02\x02\x02\u026D\u026E\x07,\x02\x02\u026E\u026F" + - "\x07,\x02\x02\u026F\x94\x03\x02\x02\x02\u0270\u0271\x07>\x02\x02\u0271" + - "\u0272\x07>\x02\x02\u0272\x96\x03\x02\x02\x02\u0273\u0274\x07@\x02\x02" + - "\u0274\u0275\x07@\x02\x02\u0275\x98\x03\x02\x02\x02\u0276\u0277\x07(\x02" + - "\x02\u0277\u0278\x07(\x02\x02\u0278\x9A\x03\x02\x02\x02\u0279\u027A\x07" + - "A\x02\x02\u027A\x9C\x03\x02\x02\x02\u027B\u027C\x07~\x02\x02\u027C\u027D" + - "\x07?\x02\x02\u027D\x9E\x03\x02\x02\x02\u027E\u027F\x07`\x02\x02\u027F" + - "\u0280\x07?\x02\x02\u0280\xA0\x03\x02\x02\x02\u0281\u0282\x07(\x02\x02" + - "\u0282\u0283\x07?\x02\x02\u0283\xA2\x03\x02\x02\x02\u0284\u0285\x07>\x02" + - "\x02\u0285\u0286\x07>\x02\x02\u0286\u0287\x07?\x02\x02\u0287\xA4\x03\x02" + - "\x02\x02\u0288\u0289\x07@\x02\x02\u0289\u028A\x07@\x02\x02\u028A\u028B" + - "\x07?\x02\x02\u028B\xA6\x03\x02\x02\x02\u028C\u028D\x07-\x02\x02\u028D" + - "\u028E\x07?\x02\x02\u028E\xA8\x03\x02\x02\x02\u028F\u0290\x07/\x02\x02" + - "\u0290\u0291\x07?\x02\x02\u0291\xAA\x03\x02\x02\x02\u0292\u0293\x07,\x02" + - "\x02\u0293\u0294\x07?\x02\x02\u0294\xAC\x03\x02\x02\x02\u0295\u0296\x07" + - "1\x02\x02\u0296\u0297\x07?\x02\x02\u0297\xAE\x03\x02\x02\x02\u0298\u0299" + - "\x07\'\x02\x02\u0299\u029A\x07?\x02\x02\u029A\xB0\x03\x02\x02\x02\u029B" + - "\u029C\x07n\x02\x02\u029C\u029D\x07g\x02\x02\u029D\u029E\x07v\x02\x02" + - "\u029E\xB2\x03\x02\x02\x02\u029F\u02A0\x07<\x02\x02\u02A0\u02A1\x07?\x02" + - "\x02\u02A1\xB4\x03\x02\x02\x02\u02A2\u02A3\x07?\x02\x02\u02A3\u02A4\x07" + - "<\x02\x02\u02A4\xB6\x03\x02\x02\x02\u02A5\u02A6\x07u\x02\x02\u02A6\u02A7" + - "\x07y\x02\x02\u02A7\u02A8\x07k\x02\x02\u02A8\u02A9\x07v\x02\x02\u02A9" + - "\u02AA\x07e\x02\x02\u02AA\u02AB\x07j\x02\x02\u02AB\xB8\x03\x02\x02\x02" + - "\u02AC\u02AD\x07e\x02\x02\u02AD\u02AE\x07c\x02\x02\u02AE\u02AF\x07u\x02" + - "\x02\u02AF\u02B0\x07g\x02\x02\u02B0\xBA\x03\x02\x02\x02\u02B1\u02B2\x07" + - "f\x02\x02\u02B2\u02B3\x07g\x02\x02\u02B3\u02B4\x07h\x02\x02\u02B4\u02B5" + - "\x07c\x02\x02\u02B5\u02B6\x07w\x02\x02\u02B6\u02B7\x07n\x02\x02\u02B7" + - "\u02B8\x07v\x02\x02\u02B8\xBC\x03\x02\x02\x02\u02B9\u02BA\x07/\x02\x02" + - "\u02BA\u02BB\x07@\x02\x02\u02BB\xBE\x03\x02\x02\x02\u02BC\u02BD\x07e\x02" + - "\x02\u02BD\u02BE\x07c\x02\x02\u02BE\u02BF\x07n\x02\x02\u02BF\u02C0\x07" + - "n\x02\x02\u02C0\u02C1\x07d\x02\x02\u02C1\u02C2\x07c\x02\x02\u02C2\u02C3" + - "\x07e\x02\x02\u02C3\u02C4\x07m\x02\x02\u02C4\xC0\x03\x02\x02\x02\u02C5" + - "\u02C6\x07q\x02\x02\u02C6\u02C7\x07x\x02\x02\u02C7\u02C8\x07g\x02\x02" + - "\u02C8\u02C9\x07t\x02\x02\u02C9\u02CA\x07t\x02\x02\u02CA\u02CB\x07k\x02" + - "\x02\u02CB\u02CC\x07f\x02\x02\u02CC\u02CD\x07g\x02\x02\u02CD\xC2\x03\x02" + - "\x02\x02\u02CE\u02CF\x07k\x02\x02\u02CF\u02D0\x07p\x02\x02\u02D0\u02D1" + - "\x07v\x02\x02\u02D1\u02D3\x03\x02\x02\x02\u02D2\u02D4\x05\xCDg\x02\u02D3" + - "\u02D2\x03\x02\x02\x02\u02D3\u02D4\x03\x02\x02\x02\u02D4\xC4\x03\x02\x02" + - "\x02\u02D5\u02D6\x07w\x02\x02\u02D6\u02D7\x07k\x02\x02\u02D7\u02D8\x07" + - "p\x02\x02\u02D8\u02D9\x07v\x02\x02\u02D9\u02DB\x03\x02\x02\x02\u02DA\u02DC" + - "\x05\xCDg\x02\u02DB\u02DA\x03\x02\x02\x02\u02DB\u02DC\x03\x02\x02\x02" + - "\u02DC\xC6\x03\x02\x02\x02\u02DD\u02DE\x07d\x02\x02\u02DE\u02DF\x07{\x02" + - "\x02\u02DF\u02E0\x07v\x02\x02\u02E0\u02E1\x07g\x02\x02\u02E1\u02E2\x07" + - "u\x02\x02\u02E2\u02E4\x03\x02\x02\x02\u02E3\u02E5\x05\xCFh\x02\u02E4\u02E3" + - "\x03\x02\x02\x02\u02E4\u02E5\x03\x02\x02\x02\u02E5\xC8\x03\x02\x02\x02" + - "\u02E6\u02E7\x07h\x02\x02\u02E7\u02E8\x07k\x02\x02\u02E8\u02E9\x07z\x02" + - "\x02\u02E9\u02EA\x07g\x02\x02\u02EA\u02EB\x07f\x02\x02\u02EB\u02F3\x03" + - "\x02\x02\x02\u02EC\u02ED\x05\xCDg\x02\u02ED\u02EF\x07z\x02\x02\u02EE\u02F0" + - "\t\x02\x02\x02\u02EF\u02EE\x03\x02\x02\x02\u02F0\u02F1\x03\x02\x02\x02" + - "\u02F1\u02EF\x03\x02\x02\x02\u02F1\u02F2\x03\x02\x02\x02\u02F2\u02F4\x03" + - "\x02\x02\x02\u02F3\u02EC\x03\x02\x02\x02\u02F3\u02F4\x03\x02\x02\x02\u02F4" + - "\xCA\x03\x02\x02\x02\u02F5\u02F6\x07w\x02\x02\u02F6\u02F7\x07h\x02\x02" + - "\u02F7\u02F8\x07k\x02\x02\u02F8\u02F9\x07z\x02\x02\u02F9\u02FA\x07g\x02" + - "\x02\u02FA\u02FB\x07f\x02\x02\u02FB\u0303\x03\x02\x02\x02\u02FC\u02FD" + - "\x05\xCDg\x02\u02FD\u02FF\x07z\x02\x02\u02FE\u0300\t\x02\x02\x02\u02FF" + - "\u02FE\x03\x02\x02\x02\u0300\u0301\x03\x02\x02\x02\u0301\u02FF\x03\x02" + - "\x02\x02\u0301\u0302\x03\x02\x02\x02\u0302\u0304\x03\x02\x02\x02\u0303" + - "\u02FC\x03\x02\x02\x02\u0303\u0304\x03\x02\x02\x02\u0304\xCC\x03\x02\x02" + - "\x02\u0305\u0359\x07:\x02\x02\u0306\u0307\x073\x02\x02\u0307\u0359\x07" + - "8\x02\x02\u0308\u0309\x074\x02\x02\u0309\u0359\x076\x02\x02\u030A\u030B" + - "\x075\x02\x02\u030B\u0359\x074\x02\x02\u030C\u030D\x076\x02\x02\u030D" + - "\u0359\x072\x02\x02\u030E\u030F\x076\x02\x02\u030F\u0359\x07:\x02\x02" + - "\u0310\u0311\x077\x02\x02\u0311\u0359\x078\x02\x02\u0312\u0313\x078\x02" + - "\x02\u0313\u0359\x076\x02\x02\u0314\u0315\x079\x02\x02\u0315\u0359\x07" + - "4\x02\x02\u0316\u0317\x07:\x02\x02\u0317\u0359\x072\x02\x02\u0318\u0319" + - "\x07:\x02\x02\u0319\u0359\x07:\x02\x02\u031A\u031B\x07;\x02\x02\u031B" + - "\u0359\x078\x02\x02\u031C\u031D\x073\x02\x02\u031D\u031E\x072\x02\x02" + - "\u031E\u0359\x076\x02\x02\u031F\u0320\x073\x02\x02\u0320\u0321\x073\x02" + - "\x02\u0321\u0359\x074\x02\x02\u0322\u0323\x073\x02\x02\u0323\u0324\x07" + - "4\x02\x02\u0324\u0359\x072\x02\x02\u0325\u0326\x073\x02\x02\u0326\u0327" + - "\x074\x02\x02\u0327\u0359\x07:\x02\x02\u0328\u0329\x073\x02\x02\u0329" + - "\u032A\x075\x02\x02\u032A\u0359\x078\x02\x02\u032B\u032C\x073\x02\x02" + - "\u032C\u032D\x076\x02\x02\u032D\u0359\x076\x02\x02\u032E\u032F\x073\x02" + - "\x02\u032F\u0330\x077\x02\x02\u0330\u0359\x074\x02\x02\u0331\u0332\x07" + - "3\x02\x02\u0332\u0333\x078\x02\x02\u0333\u0359\x072\x02\x02\u0334\u0335" + - "\x073\x02\x02\u0335\u0336\x078\x02\x02\u0336\u0359\x07:\x02\x02\u0337" + - "\u0338\x073\x02\x02\u0338\u0339\x079\x02\x02\u0339\u0359\x078\x02\x02" + - "\u033A\u033B\x073\x02\x02\u033B\u033C\x07:\x02\x02\u033C\u0359\x076\x02" + - "\x02\u033D\u033E\x073\x02\x02\u033E\u033F\x07;\x02\x02\u033F\u0359\x07" + - "4\x02\x02\u0340\u0341\x074\x02\x02\u0341\u0342\x072\x02\x02\u0342\u0359" + - "\x072\x02\x02\u0343\u0344\x074\x02\x02\u0344\u0345\x072\x02\x02\u0345" + - "\u0359\x07:\x02\x02\u0346\u0347\x074\x02\x02\u0347\u0348\x073\x02\x02" + - "\u0348\u0359\x078\x02\x02\u0349\u034A\x074\x02\x02\u034A\u034B\x074\x02" + - "\x02\u034B\u0359\x076\x02\x02\u034C\u034D\x074\x02\x02\u034D\u034E\x07" + - "5\x02\x02\u034E\u0359\x074\x02\x02\u034F\u0350\x074\x02\x02\u0350\u0351" + - "\x076\x02\x02\u0351\u0359\x072\x02\x02\u0352\u0353\x074\x02\x02\u0353" + - "\u0354\x076\x02\x02\u0354\u0359\x07:\x02\x02\u0355\u0356\x074\x02\x02" + - "\u0356\u0357\x077\x02\x02\u0357\u0359\x078\x02\x02\u0358\u0305\x03\x02" + - "\x02\x02\u0358\u0306\x03\x02\x02\x02\u0358\u0308\x03\x02\x02\x02\u0358" + - "\u030A\x03\x02\x02\x02\u0358\u030C\x03\x02\x02\x02\u0358\u030E\x03\x02" + - "\x02\x02\u0358\u0310\x03\x02\x02\x02\u0358\u0312\x03\x02\x02\x02\u0358" + - "\u0314\x03\x02\x02\x02\u0358\u0316\x03\x02\x02\x02\u0358\u0318\x03\x02" + - "\x02\x02\u0358\u031A\x03\x02\x02\x02\u0358\u031C\x03\x02\x02\x02\u0358" + - "\u031F\x03\x02\x02\x02\u0358\u0322\x03\x02\x02\x02\u0358\u0325\x03\x02" + - "\x02\x02\u0358\u0328\x03\x02\x02\x02\u0358\u032B\x03\x02\x02\x02\u0358" + - "\u032E\x03\x02\x02\x02\u0358\u0331\x03\x02\x02\x02\u0358\u0334\x03\x02" + - "\x02\x02\u0358\u0337\x03\x02\x02\x02\u0358\u033A\x03\x02\x02\x02\u0358" + - "\u033D\x03\x02\x02\x02\u0358\u0340\x03\x02\x02\x02\u0358\u0343\x03\x02" + - "\x02\x02\u0358\u0346\x03\x02\x02\x02\u0358\u0349\x03\x02\x02\x02\u0358" + - "\u034C\x03\x02\x02\x02\u0358\u034F\x03\x02\x02\x02\u0358\u0352\x03\x02" + - "\x02\x02\u0358\u0355\x03\x02\x02\x02\u0359\xCE\x03\x02\x02\x02\u035A\u0360" + - "\t\x03\x02\x02\u035B\u035C\t\x04\x02\x02\u035C\u0360\t\x02\x02\x02\u035D" + - "\u035E\x075\x02\x02\u035E\u0360\t\x05\x02\x02\u035F\u035A\x03\x02\x02" + - "\x02\u035F\u035B\x03\x02\x02\x02\u035F\u035D\x03\x02\x02\x02\u0360\xD0" + - "\x03\x02\x02\x02\u0361\u0362\x07v\x02\x02\u0362\u0363\x07t\x02\x02\u0363" + - "\u0364\x07w\x02\x02\u0364\u036B\x07g\x02\x02\u0365\u0366\x07h\x02\x02" + - "\u0366\u0367\x07c\x02\x02\u0367\u0368\x07n\x02\x02\u0368\u0369\x07u\x02" + - "\x02\u0369\u036B\x07g\x02\x02\u036A\u0361\x03\x02\x02\x02\u036A\u0365" + - "\x03\x02\x02\x02\u036B\xD2\x03\x02\x02\x02\u036C\u0373\x05\xD5k\x02\u036D" + - "\u036F\x05\xD5k\x02\u036E\u036D\x03\x02\x02\x02\u036E\u036F\x03\x02\x02" + - "\x02\u036F\u0370\x03\x02\x02\x02\u0370\u0371\x070\x02\x02\u0371\u0373" + - "\x05\xD5k\x02\u0372\u036C\x03\x02\x02\x02\u0372\u036E\x03\x02\x02\x02" + - "\u0373\u0379\x03\x02\x02\x02\u0374\u0376\t\x06\x02\x02\u0375\u0377\x07" + - "/\x02\x02\u0376\u0375\x03\x02\x02\x02\u0376\u0377\x03\x02\x02\x02\u0377" + - "\u0378\x03\x02\x02\x02\u0378\u037A\x05\xD5k\x02\u0379\u0374\x03\x02\x02" + - "\x02\u0379\u037A\x03\x02\x02\x02\u037A\xD4\x03\x02\x02\x02\u037B\u0382" + - "\t\x02\x02\x02\u037C\u037E\x07a\x02\x02\u037D\u037C\x03\x02\x02\x02\u037D" + - "\u037E\x03\x02\x02\x02\u037E\u037F\x03\x02\x02\x02\u037F\u0381\t\x02\x02" + - "\x02\u0380\u037D\x03\x02\x02\x02\u0381\u0384\x03\x02\x02\x02\u0382\u0380" + - "\x03\x02\x02\x02\u0382\u0383\x03\x02\x02\x02\u0383\xD6\x03\x02\x02\x02" + - "\u0384\u0382\x03\x02\x02\x02\u0385\u0386\x072\x02\x02\u0386\u0387\t\x07" + - "\x02\x02\u0387\u0388\x05\xD9m\x02\u0388\xD8\x03\x02\x02\x02\u0389\u0390" + - "\x05\xDFp\x02\u038A\u038C\x07a\x02\x02\u038B\u038A\x03\x02\x02\x02\u038B" + - "\u038C\x03\x02\x02\x02\u038C\u038D\x03\x02\x02\x02\u038D\u038F\x05\xDF" + - "p\x02\u038E\u038B\x03\x02\x02\x02\u038F\u0392\x03\x02\x02\x02\u0390\u038E" + - "\x03\x02\x02\x02\u0390\u0391\x03\x02\x02\x02\u0391\xDA\x03\x02\x02\x02" + - "\u0392\u0390\x03\x02\x02\x02\u0393\u0394\x07y\x02\x02\u0394\u0395\x07" + - "g\x02\x02\u0395\u03CC\x07k\x02\x02\u0396\u0397\x07i\x02\x02\u0397\u0398" + - "\x07y\x02\x02\u0398\u0399\x07g\x02\x02\u0399\u03CC\x07k\x02\x02\u039A" + - "\u039B\x07u\x02\x02\u039B\u039C\x07|\x02\x02\u039C\u039D\x07c\x02\x02" + - "\u039D\u039E\x07d\x02\x02\u039E\u03CC\x07q\x02\x02\u039F\u03A0\x07h\x02" + - "\x02\u03A0\u03A1\x07k\x02\x02\u03A1\u03A2\x07p\x02\x02\u03A2\u03A3\x07" + - "p\x02\x02\u03A3\u03A4\x07g\x02\x02\u03A4\u03CC\x07{\x02\x02\u03A5\u03A6" + - "\x07g\x02\x02\u03A6\u03A7\x07v\x02\x02\u03A7\u03A8\x07j\x02\x02\u03A8" + - "\u03A9\x07g\x02\x02\u03A9\u03CC\x07t\x02\x02\u03AA\u03AB\x07u\x02\x02" + - "\u03AB\u03AC\x07g\x02\x02\u03AC\u03AD\x07e\x02\x02\u03AD\u03AE\x07q\x02" + - "\x02\u03AE\u03AF\x07p\x02\x02\u03AF\u03B0\x07f\x02\x02\u03B0\u03CC\x07" + - "u\x02\x02\u03B1\u03B2\x07o\x02\x02\u03B2\u03B3\x07k\x02\x02\u03B3\u03B4" + - "\x07p\x02\x02\u03B4\u03B5\x07w\x02\x02\u03B5\u03B6\x07v\x02\x02\u03B6" + - "\u03B7\x07g\x02\x02\u03B7\u03CC\x07u\x02\x02\u03B8\u03B9\x07j\x02\x02" + - "\u03B9\u03BA\x07q\x02\x02\u03BA\u03BB\x07w\x02\x02\u03BB\u03BC\x07t\x02" + - "\x02\u03BC\u03CC\x07u\x02\x02\u03BD\u03BE\x07f\x02\x02\u03BE\u03BF\x07" + - "c\x02\x02\u03BF\u03C0\x07{\x02\x02\u03C0\u03CC\x07u\x02\x02\u03C1\u03C2" + - "\x07y\x02\x02\u03C2\u03C3\x07g\x02\x02\u03C3\u03C4\x07g\x02\x02\u03C4" + - "\u03C5\x07m\x02\x02\u03C5\u03CC\x07u\x02\x02\u03C6\u03C7\x07{\x02\x02" + - "\u03C7\u03C8\x07g\x02\x02\u03C8\u03C9\x07c\x02\x02\u03C9\u03CA\x07t\x02" + - "\x02\u03CA\u03CC\x07u\x02\x02\u03CB\u0393\x03\x02\x02\x02\u03CB\u0396" + - "\x03\x02\x02\x02\u03CB\u039A\x03\x02\x02\x02\u03CB\u039F\x03\x02\x02\x02" + - "\u03CB\u03A5\x03\x02\x02\x02\u03CB\u03AA\x03\x02\x02\x02\u03CB\u03B1\x03" + - "\x02\x02\x02\u03CB\u03B8\x03\x02\x02\x02\u03CB\u03BD\x03\x02\x02\x02\u03CB" + - "\u03C1\x03\x02\x02\x02\u03CB\u03C6\x03\x02\x02\x02\u03CC\xDC\x03\x02\x02" + - "\x02\u03CD\u03CE\x07j\x02\x02\u03CE\u03CF\x07g\x02\x02\u03CF\u03D0\x07" + - "z\x02\x02\u03D0\u03DB\x03\x02\x02\x02\u03D1\u03D3\x07$\x02\x02\u03D2\u03D4" + - "\x05\xD9m\x02\u03D3\u03D2\x03\x02\x02\x02\u03D3\u03D4\x03\x02\x02\x02" + - "\u03D4\u03D5\x03\x02\x02\x02\u03D5\u03DC\x07$\x02\x02\u03D6\u03D8\x07" + - ")\x02\x02\u03D7\u03D9\x05\xD9m\x02\u03D8\u03D7\x03\x02\x02\x02\u03D8\u03D9" + - "\x03\x02\x02\x02\u03D9\u03DA\x03\x02\x02\x02\u03DA\u03DC\x07)\x02\x02" + - "\u03DB\u03D1\x03\x02\x02\x02\u03DB\u03D6\x03\x02\x02\x02\u03DC\xDE\x03" + - "\x02\x02\x02\u03DD\u03DE\t\b\x02\x02\u03DE\xE0\x03\x02\x02\x02\u03DF\u03E0" + - "\x07c\x02\x02\u03E0\u03E1\x07d\x02\x02\u03E1\u03E2\x07u\x02\x02\u03E2" + - "\u03E3\x07v\x02\x02\u03E3\u03E4\x07t\x02\x02\u03E4\u03E5\x07c\x02\x02" + - "\u03E5\u03E6\x07e\x02\x02\u03E6\u0438\x07v\x02\x02\u03E7\u03E8\x07c\x02" + - "\x02\u03E8\u03E9\x07h\x02\x02\u03E9\u03EA\x07v\x02\x02\u03EA\u03EB\x07" + - "g\x02\x02\u03EB\u0438\x07t\x02\x02\u03EC\u03ED\x07e\x02\x02\u03ED\u03EE" + - "\x07c\x02\x02\u03EE\u03EF\x07u\x02\x02\u03EF\u0438\x07g\x02\x02\u03F0" + - "\u03F1\x07e\x02\x02\u03F1\u03F2\x07c\x02\x02\u03F2\u03F3\x07v\x02\x02" + - "\u03F3\u03F4\x07e\x02\x02\u03F4\u0438\x07j\x02\x02\u03F5\u03F6\x07f\x02" + - "\x02\u03F6\u03F7\x07g\x02\x02\u03F7\u03F8\x07h\x02\x02\u03F8\u03F9\x07" + - "c\x02\x02\u03F9\u03FA\x07w\x02\x02\u03FA\u03FB\x07n\x02\x02\u03FB\u0438" + - "\x07v\x02\x02\u03FC\u03FD\x07h\x02\x02\u03FD\u03FE\x07k\x02\x02\u03FE" + - "\u03FF\x07p\x02\x02\u03FF\u0400\x07c\x02\x02\u0400\u0438\x07n\x02\x02" + - "\u0401\u0402\x07k\x02\x02\u0402\u0438\x07p\x02\x02\u0403\u0404\x07k\x02" + - "\x02\u0404\u0405\x07p\x02\x02\u0405\u0406\x07n\x02\x02\u0406\u0407\x07" + - "k\x02\x02\u0407\u0408\x07p\x02\x02\u0408\u0438\x07g\x02\x02\u0409\u040A" + - "\x07n\x02\x02\u040A\u040B\x07g\x02\x02\u040B\u0438\x07v\x02\x02\u040C" + - "\u040D\x07o\x02\x02\u040D\u040E\x07c\x02\x02\u040E\u040F\x07v\x02\x02" + - "\u040F\u0410\x07e\x02\x02\u0410\u0438\x07j\x02\x02\u0411\u0412\x07p\x02" + - "\x02\u0412\u0413\x07w\x02\x02\u0413\u0414\x07n\x02\x02\u0414\u0438\x07" + - "n\x02\x02\u0415\u0416\x07q\x02\x02\u0416\u0438\x07h\x02\x02\u0417\u0418" + - "\x07t\x02\x02\u0418\u0419\x07g\x02\x02\u0419\u041A\x07n\x02\x02\u041A" + - "\u041B\x07q\x02\x02\u041B\u041C\x07e\x02\x02\u041C\u041D\x07c\x02\x02" + - "\u041D\u041E\x07v\x02\x02\u041E\u041F\x07c\x02\x02\u041F\u0420\x07d\x02" + - "\x02\u0420\u0421\x07n\x02\x02\u0421\u0438\x07g\x02\x02\u0422\u0423\x07" + - "u\x02\x02\u0423\u0424\x07v\x02\x02\u0424\u0425\x07c\x02\x02\u0425\u0426" + - "\x07v\x02\x02\u0426\u0427\x07k\x02\x02\u0427\u0438\x07e\x02\x02\u0428" + - "\u0429\x07u\x02\x02\u0429\u042A\x07y\x02\x02\u042A\u042B\x07k\x02\x02" + - "\u042B\u042C\x07v\x02\x02\u042C\u042D\x07e\x02\x02\u042D\u0438\x07j\x02" + - "\x02\u042E\u042F\x07v\x02\x02\u042F\u0430\x07t\x02\x02\u0430\u0438\x07" + - "{\x02\x02"; - private static readonly _serializedATNSegment2: string = - "\u0431\u0432\x07v\x02\x02\u0432\u0433\x07{\x02\x02\u0433\u0434\x07r\x02" + - "\x02\u0434\u0435\x07g\x02\x02\u0435\u0436\x07q\x02\x02\u0436\u0438\x07" + - "h\x02\x02\u0437\u03DF\x03\x02\x02\x02\u0437\u03E7\x03\x02\x02\x02\u0437" + - "\u03EC\x03\x02\x02\x02\u0437\u03F0\x03\x02\x02\x02\u0437\u03F5\x03\x02" + - "\x02\x02\u0437\u03FC\x03\x02\x02\x02\u0437\u0401\x03\x02\x02\x02\u0437" + - "\u0403\x03\x02\x02\x02\u0437\u0409\x03\x02\x02\x02\u0437\u040C\x03\x02" + - "\x02\x02\u0437\u0411\x03\x02\x02\x02\u0437\u0415\x03\x02\x02\x02\u0437" + - "\u0417\x03\x02\x02\x02\u0437\u0422\x03\x02\x02\x02\u0437\u0428\x03\x02" + - "\x02\x02\u0437\u042E\x03\x02\x02\x02\u0437\u0431\x03\x02\x02\x02\u0438" + - "\xE2\x03\x02\x02\x02\u0439\u043A\x07c\x02\x02\u043A\u043B\x07p\x02\x02" + - "\u043B\u043C\x07q\x02\x02\u043C\u043D\x07p\x02\x02\u043D\u043E\x07{\x02" + - "\x02\u043E\u043F\x07o\x02\x02\u043F\u0440\x07q\x02\x02\u0440\u0441\x07" + - "w\x02\x02\u0441\u0442\x07u\x02\x02\u0442\xE4\x03\x02\x02\x02\u0443\u0444" + - "\x07d\x02\x02\u0444\u0445\x07t\x02\x02\u0445\u0446\x07g\x02\x02\u0446" + - "\u0447\x07c\x02\x02\u0447\u0448\x07m\x02\x02\u0448\xE6\x03\x02\x02\x02" + - "\u0449\u044A\x07e\x02\x02\u044A\u044B\x07q\x02\x02\u044B\u044C\x07p\x02" + - "\x02\u044C\u044D\x07u\x02\x02\u044D\u044E\x07v\x02\x02\u044E\u044F\x07" + - "c\x02\x02\u044F\u0450\x07p\x02\x02\u0450\u0451\x07v\x02\x02\u0451\xE8" + - "\x03\x02\x02\x02\u0452\u0453\x07k\x02\x02\u0453\u0454\x07o\x02\x02\u0454" + - "\u0455\x07o\x02\x02\u0455\u0456\x07w\x02\x02\u0456\u0457\x07v\x02\x02" + - "\u0457\u0458\x07c\x02\x02\u0458\u0459\x07d\x02\x02\u0459\u045A\x07n\x02" + - "\x02\u045A\u045B\x07g\x02\x02\u045B\xEA\x03\x02\x02\x02\u045C\u045D\x07" + - "e\x02\x02\u045D\u045E\x07q\x02\x02\u045E\u045F\x07p\x02\x02\u045F\u0460" + - "\x07v\x02\x02\u0460\u0461\x07k\x02\x02\u0461\u0462\x07p\x02\x02\u0462" + - "\u0463\x07w\x02\x02\u0463\u0464\x07g\x02\x02\u0464\xEC\x03\x02\x02\x02" + - "\u0465\u0466\x07n\x02\x02\u0466\u0467\x07g\x02\x02\u0467\u0468\x07c\x02" + - "\x02\u0468\u0469\x07x\x02\x02\u0469\u046A\x07g\x02\x02\u046A\xEE\x03\x02" + - "\x02\x02\u046B\u046C\x07g\x02\x02\u046C\u046D\x07z\x02\x02\u046D\u046E" + - "\x07v\x02\x02\u046E\u046F\x07g\x02\x02\u046F\u0470\x07t\x02\x02\u0470" + - "\u0471\x07p\x02\x02\u0471\u0472\x07c\x02\x02\u0472\u0473\x07n\x02\x02" + - "\u0473\xF0\x03\x02\x02\x02\u0474\u0475\x07k\x02\x02\u0475\u0476\x07p\x02" + - "\x02\u0476\u0477\x07f\x02\x02\u0477\u0478\x07g\x02\x02\u0478\u0479\x07" + - "z\x02\x02\u0479\u047A\x07g\x02\x02\u047A\u047B\x07f\x02\x02\u047B\xF2" + - "\x03\x02\x02\x02\u047C\u047D\x07k\x02\x02\u047D\u047E\x07p\x02\x02\u047E" + - "\u047F\x07v\x02\x02\u047F\u0480\x07g\x02\x02\u0480\u0481\x07t\x02\x02" + - "\u0481\u0482\x07p\x02\x02\u0482\u0483\x07c\x02\x02\u0483\u0484\x07n\x02" + - "\x02\u0484\xF4\x03\x02\x02\x02\u0485\u0486\x07r\x02\x02\u0486\u0487\x07" + - "c\x02\x02\u0487\u0488\x07{\x02\x02\u0488\u0489\x07c\x02\x02\u0489\u048A" + - "\x07d\x02\x02\u048A\u048B\x07n\x02\x02\u048B\u048C\x07g\x02\x02\u048C" + - "\xF6\x03\x02\x02\x02\u048D\u048E\x07r\x02\x02\u048E\u048F\x07t\x02\x02" + - "\u048F\u0490\x07k\x02\x02\u0490\u0491\x07x\x02\x02\u0491\u0492\x07c\x02" + - "\x02\u0492\u0493\x07v\x02\x02\u0493\u0494\x07g\x02\x02\u0494\xF8\x03\x02" + - "\x02\x02\u0495\u0496\x07r\x02\x02\u0496\u0497\x07w\x02\x02\u0497\u0498" + - "\x07d\x02\x02\u0498\u0499\x07n\x02\x02\u0499\u049A\x07k\x02\x02\u049A" + - "\u049B\x07e\x02\x02\u049B\xFA\x03\x02\x02\x02\u049C\u049D\x07x\x02\x02" + - "\u049D\u049E\x07k\x02\x02\u049E\u049F\x07t\x02\x02\u049F\u04A0\x07v\x02" + - "\x02\u04A0\u04A1\x07w\x02\x02\u04A1\u04A2\x07c\x02\x02\u04A2\u04A3\x07" + - "n\x02\x02\u04A3\xFC\x03\x02\x02\x02\u04A4\u04A5\x07r\x02\x02\u04A5\u04A6" + - "\x07w\x02\x02\u04A6\u04A7\x07t\x02\x02\u04A7\u04A8\x07g\x02\x02\u04A8" + - "\xFE\x03\x02\x02\x02\u04A9\u04AA\x07v\x02\x02\u04AA\u04AB\x07{\x02\x02" + - "\u04AB\u04AC\x07r\x02\x02\u04AC\u04AD\x07g\x02\x02\u04AD\u0100\x03\x02" + - "\x02\x02\u04AE\u04AF\x07x\x02\x02\u04AF\u04B0\x07k\x02\x02\u04B0\u04B1" + - "\x07g\x02\x02\u04B1\u04B2\x07y\x02\x02\u04B2\u0102\x03\x02\x02\x02\u04B3" + - "\u04B4\x07i\x02\x02\u04B4\u04B5\x07n\x02\x02\u04B5\u04B6\x07q\x02\x02" + - "\u04B6\u04B7\x07d\x02\x02\u04B7\u04B8\x07c\x02\x02\u04B8\u04B9\x07n\x02" + - "\x02\u04B9\u0104\x03\x02\x02\x02\u04BA\u04BB\x07e\x02\x02\u04BB\u04BC" + - "\x07q\x02\x02\u04BC\u04BD\x07p\x02\x02\u04BD\u04BE\x07u\x02\x02\u04BE" + - "\u04BF\x07v\x02\x02\u04BF\u04C0\x07t\x02\x02\u04C0\u04C1\x07w\x02\x02" + - "\u04C1\u04C2\x07e\x02\x02\u04C2\u04C3\x07v\x02\x02\u04C3\u04C4\x07q\x02" + - "\x02\u04C4\u04C5\x07t\x02\x02\u04C5\u0106\x03\x02\x02\x02\u04C6\u04C7" + - "\x07h\x02\x02\u04C7\u04C8\x07c\x02\x02\u04C8\u04C9\x07n\x02\x02\u04C9" + - "\u04CA\x07n\x02\x02\u04CA\u04CB\x07d\x02\x02\u04CB\u04CC\x07c\x02\x02" + - "\u04CC\u04CD\x07e\x02\x02\u04CD\u04CE\x07m\x02\x02\u04CE\u0108\x03\x02" + - "\x02\x02\u04CF\u04D0\x07t\x02\x02\u04D0\u04D1\x07g\x02\x02\u04D1\u04D2" + - "\x07e\x02\x02\u04D2\u04D3\x07g\x02\x02\u04D3\u04D4\x07k\x02\x02\u04D4" + - "\u04D5\x07x\x02\x02\u04D5\u04D6\x07g\x02\x02\u04D6\u010A\x03\x02\x02\x02" + - "\u04D7\u04DB\x05\u010D\x87\x02\u04D8\u04DA\x05\u010F\x88\x02\u04D9\u04D8" + - "\x03\x02\x02\x02\u04DA\u04DD\x03\x02\x02\x02\u04DB\u04D9\x03\x02\x02\x02" + - "\u04DB\u04DC\x03\x02\x02\x02\u04DC\u010C\x03\x02\x02\x02\u04DD\u04DB\x03" + - "\x02\x02\x02\u04DE\u04DF\t\t\x02\x02\u04DF\u010E\x03\x02\x02\x02\u04E0" + - "\u04E1\t\n\x02\x02\u04E1\u0110\x03\x02\x02\x02\u04E2\u04E3\x07w\x02\x02" + - "\u04E3\u04E4\x07p\x02\x02\u04E4\u04E5\x07k\x02\x02\u04E5\u04E6\x07e\x02" + - "\x02\u04E6\u04E7\x07q\x02\x02\u04E7\u04E8\x07f\x02\x02\u04E8\u04EA\x07" + - "g\x02\x02\u04E9\u04E2\x03\x02\x02\x02\u04E9\u04EA\x03\x02\x02\x02\u04EA" + - "\u04FB\x03\x02\x02\x02\u04EB\u04EF\x07$\x02\x02\u04EC\u04EE\x05\u0113" + - "\x8A\x02\u04ED\u04EC\x03\x02\x02\x02\u04EE\u04F1\x03\x02\x02\x02\u04EF" + - "\u04ED\x03\x02\x02\x02\u04EF\u04F0\x03\x02\x02\x02\u04F0\u04F2\x03\x02" + - "\x02\x02\u04F1\u04EF\x03\x02\x02\x02\u04F2\u04FC\x07$\x02\x02\u04F3\u04F7" + - "\x07)\x02\x02\u04F4\u04F6\x05\u0115\x8B\x02\u04F5\u04F4\x03\x02\x02\x02" + - "\u04F6\u04F9\x03\x02\x02\x02\u04F7\u04F5\x03\x02\x02\x02\u04F7\u04F8\x03" + - "\x02\x02\x02\u04F8\u04FA\x03\x02\x02\x02\u04F9\u04F7\x03\x02\x02\x02\u04FA" + - "\u04FC\x07)\x02\x02\u04FB\u04EB\x03\x02\x02\x02\u04FB\u04F3\x03\x02\x02" + - "\x02\u04FC\u0112\x03\x02\x02\x02\u04FD\u0501\n\v\x02\x02\u04FE\u04FF\x07" + - "^\x02\x02\u04FF\u0501\v\x02\x02\x02\u0500\u04FD\x03\x02\x02\x02\u0500" + - "\u04FE\x03\x02\x02\x02\u0501\u0114\x03\x02\x02\x02\u0502\u0506\n\f\x02" + - "\x02\u0503\u0504\x07^\x02\x02\u0504\u0506\v\x02\x02\x02\u0505\u0502\x03" + - "\x02\x02\x02\u0505\u0503\x03\x02\x02\x02\u0506\u0116\x03\x02\x02\x02\u0507" + - "\u0509\t\x02\x02\x02\u0508\u0507\x03\x02\x02\x02\u0509\u050A\x03\x02\x02" + - "\x02\u050A\u0508\x03\x02\x02\x02\u050A\u050B\x03\x02\x02\x02\u050B\u050C" + - "\x03\x02\x02\x02\u050C\u050E\x070\x02\x02\u050D\u050F\t\x02\x02\x02\u050E" + - "\u050D\x03\x02\x02\x02\u050F\u0510\x03\x02\x02\x02\u0510\u050E\x03\x02" + - "\x02\x02\u0510\u0511\x03\x02\x02\x02\u0511\u0518\x03\x02\x02\x02\u0512" + - "\u0514\x070\x02\x02\u0513\u0515\t\x02\x02\x02\u0514\u0513\x03\x02\x02" + - "\x02\u0515\u0516\x03\x02\x02\x02\u0516\u0514\x03\x02\x02\x02\u0516\u0517" + - "\x03\x02\x02\x02\u0517\u0519\x03\x02\x02\x02\u0518\u0512\x03\x02\x02\x02" + - "\u0518\u0519\x03\x02\x02\x02\u0519\u0118\x03\x02\x02\x02\u051A\u051C\t" + - "\r\x02\x02\u051B\u051A\x03\x02\x02\x02\u051C\u051D\x03\x02\x02\x02\u051D" + - "\u051B\x03\x02\x02\x02\u051D\u051E\x03\x02\x02\x02\u051E\u051F\x03\x02" + - "\x02\x02\u051F\u0520\b\x8D\x02\x02\u0520\u011A\x03\x02\x02\x02\u0521\u0522" + - "\x071\x02\x02\u0522\u0523\x07,\x02\x02\u0523\u0527\x03\x02\x02\x02\u0524" + - "\u0526\v\x02\x02\x02\u0525\u0524\x03\x02\x02\x02\u0526\u0529\x03\x02\x02" + - "\x02\u0527\u0528\x03\x02\x02\x02\u0527\u0525\x03\x02\x02\x02\u0528\u052A" + - "\x03\x02\x02\x02\u0529\u0527\x03\x02\x02\x02\u052A\u052B\x07,\x02\x02" + - "\u052B\u052C\x071\x02\x02\u052C\u052D\x03\x02\x02\x02\u052D\u052E\b\x8E" + - "\x03\x02\u052E\u011C\x03\x02\x02\x02\u052F\u0530\x071\x02\x02\u0530\u0531" + - "\x071\x02\x02\u0531\u0535\x03\x02\x02\x02\u0532\u0534\n\x0E\x02\x02\u0533" + - "\u0532\x03\x02\x02\x02\u0534\u0537\x03\x02\x02\x02\u0535\u0533\x03\x02" + - "\x02\x02\u0535\u0536\x03\x02\x02\x02\u0536\u0538\x03\x02\x02\x02\u0537" + - "\u0535\x03\x02\x02\x02\u0538\u0539\b\x8F\x03\x02\u0539\u011E\x03\x02\x02" + - "\x02(\x02\u02D3\u02DB\u02E4\u02F1\u02F3\u0301\u0303\u0358\u035F\u036A" + - "\u036E\u0372\u0376\u0379\u037D\u0382\u038B\u0390\u03CB\u03D3\u03D8\u03DB" + - "\u0437\u04DB\u04E9\u04EF\u04F7\u04FB\u0500\u0505\u050A\u0510\u0516\u0518" + - "\u051D\u0527\u0535\x04\b\x02\x02\x02\x03\x02"; - public static readonly _serializedATN: string = Utils.join( - [ - SolidityLexer._serializedATNSegment0, - SolidityLexer._serializedATNSegment1, - SolidityLexer._serializedATNSegment2, - ], - "", - ); - public static __ATN: ATN; + public static readonly _serializedATN: number[] = [4,0,133,1336,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,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1, + 1,2,1,2,1,3,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9, + 1,9,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1, + 13,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,17,1,17, + 1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1, + 24,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,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,33,1,34,1,34,1,34,1, + 35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36, + 1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1, + 38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40, + 1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,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,47,1,47,1,47,1,47, + 1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1, + 49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52, + 1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1, + 54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56, + 1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,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,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,63,1,63,1,63,1,63,1,63,1,64,1, + 64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,67, + 1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1, + 70,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,73,1,74,1,74,1,74,1,75,1,75,1,75, + 1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1, + 80,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,83,1,84,1,84,1,84,1,85, + 1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,89,1,89,1, + 89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92, + 1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,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,95,1,96,1,96, + 1,96,1,96,1,96,3,96,722,8,96,1,97,1,97,1,97,1,97,1,97,1,97,3,97,730,8,97, + 1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,739,8,98,1,99,1,99,1,99,1,99,1, + 99,1,99,1,99,1,99,1,99,4,99,750,8,99,11,99,12,99,751,3,99,754,8,99,1,100, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,4,100,766,8,100,11, + 100,12,100,767,3,100,770,8,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,101,3,101,855,8,101,1,102,1,102,1,102,1,102,1,102,3, + 102,862,8,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,3,103, + 873,8,103,1,104,1,104,3,104,877,8,104,1,104,1,104,3,104,881,8,104,1,104, + 1,104,3,104,885,8,104,1,104,3,104,888,8,104,1,105,1,105,3,105,892,8,105, + 1,105,5,105,895,8,105,10,105,12,105,898,9,105,1,106,1,106,1,106,1,106,1, + 107,1,107,3,107,906,8,107,1,107,5,107,909,8,107,10,107,12,107,912,9,107, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108,970,8,108,1,109,1, + 109,1,109,1,109,1,109,1,109,3,109,978,8,109,1,109,1,109,1,109,3,109,983, + 8,109,1,109,3,109,986,8,109,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1, + 111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,3,111,1078, + 8,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113, + 1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114, + 1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115, + 1,116,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,118,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,120,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,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, + 1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,127,1,127, + 1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129, + 1,129,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,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,132,1,132,5,132,1240,8,132,10,132,12,132,1243,9,132, + 1,133,1,133,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135, + 1256,8,135,1,135,1,135,5,135,1260,8,135,10,135,12,135,1263,9,135,1,135, + 1,135,1,135,5,135,1268,8,135,10,135,12,135,1271,9,135,1,135,3,135,1274, + 8,135,1,136,1,136,1,136,3,136,1279,8,136,1,137,1,137,1,137,3,137,1284,8, + 137,1,138,4,138,1287,8,138,11,138,12,138,1288,1,138,1,138,4,138,1293,8, + 138,11,138,12,138,1294,1,138,1,138,4,138,1299,8,138,11,138,12,138,1300, + 3,138,1303,8,138,1,139,4,139,1306,8,139,11,139,12,139,1307,1,139,1,139, + 1,140,1,140,1,140,1,140,5,140,1316,8,140,10,140,12,140,1319,9,140,1,140, + 1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,5,141,1330,8,141,10,141, + 12,141,1333,9,141,1,141,1,141,1,1317,0,142,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,0,205,0,207,102,209,103,211,0,213, + 104,215,0,217,105,219,106,221,0,223,107,225,108,227,109,229,110,231,111, + 233,112,235,113,237,114,239,115,241,116,243,117,245,118,247,119,249,120, + 251,121,253,122,255,123,257,124,259,125,261,126,263,127,265,128,267,0,269, + 0,271,129,273,0,275,0,277,130,279,131,281,132,283,133,1,0,13,1,0,48,57, + 1,0,49,57,1,0,49,50,1,0,48,50,2,0,69,69,101,101,2,0,88,88,120,120,3,0,48, + 57,65,70,97,102,4,0,36,36,65,90,95,95,97,122,5,0,36,36,48,57,65,90,95,95, + 97,122,4,0,10,10,13,13,34,34,92,92,4,0,10,10,13,13,39,39,92,92,3,0,9,10, + 12,13,32,32,2,0,10,10,13,13,1418,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,207,1,0,0,0,0,209,1,0,0,0,0,213,1,0,0,0,0,217, + 1,0,0,0,0,219,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,271,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,1,285,1,0,0,0,3,292,1,0,0,0,5,294, + 1,0,0,0,7,296,1,0,0,0,9,299,1,0,0,0,11,301,1,0,0,0,13,303,1,0,0,0,15,306, + 1,0,0,0,17,308,1,0,0,0,19,310,1,0,0,0,21,313,1,0,0,0,23,315,1,0,0,0,25, + 318,1,0,0,0,27,325,1,0,0,0,29,330,1,0,0,0,31,332,1,0,0,0,33,334,1,0,0,0, + 35,336,1,0,0,0,37,345,1,0,0,0,39,354,1,0,0,0,41,364,1,0,0,0,43,372,1,0, + 0,0,45,375,1,0,0,0,47,377,1,0,0,0,49,379,1,0,0,0,51,385,1,0,0,0,53,391, + 1,0,0,0,55,395,1,0,0,0,57,397,1,0,0,0,59,399,1,0,0,0,61,401,1,0,0,0,63, + 403,1,0,0,0,65,405,1,0,0,0,67,407,1,0,0,0,69,410,1,0,0,0,71,413,1,0,0,0, + 73,420,1,0,0,0,75,429,1,0,0,0,77,438,1,0,0,0,79,446,1,0,0,0,81,452,1,0, + 0,0,83,457,1,0,0,0,85,459,1,0,0,0,87,461,1,0,0,0,89,469,1,0,0,0,91,471, + 1,0,0,0,93,479,1,0,0,0,95,482,1,0,0,0,97,489,1,0,0,0,99,497,1,0,0,0,101, + 506,1,0,0,0,103,509,1,0,0,0,105,514,1,0,0,0,107,518,1,0,0,0,109,524,1,0, + 0,0,111,530,1,0,0,0,113,540,1,0,0,0,115,549,1,0,0,0,117,552,1,0,0,0,119, + 559,1,0,0,0,121,565,1,0,0,0,123,570,1,0,0,0,125,577,1,0,0,0,127,581,1,0, + 0,0,129,586,1,0,0,0,131,593,1,0,0,0,133,598,1,0,0,0,135,601,1,0,0,0,137, + 604,1,0,0,0,139,608,1,0,0,0,141,610,1,0,0,0,143,617,1,0,0,0,145,619,1,0, + 0,0,147,622,1,0,0,0,149,625,1,0,0,0,151,628,1,0,0,0,153,631,1,0,0,0,155, + 633,1,0,0,0,157,636,1,0,0,0,159,639,1,0,0,0,161,642,1,0,0,0,163,646,1,0, + 0,0,165,650,1,0,0,0,167,653,1,0,0,0,169,656,1,0,0,0,171,659,1,0,0,0,173, + 662,1,0,0,0,175,665,1,0,0,0,177,669,1,0,0,0,179,672,1,0,0,0,181,675,1,0, + 0,0,183,682,1,0,0,0,185,687,1,0,0,0,187,695,1,0,0,0,189,698,1,0,0,0,191, + 707,1,0,0,0,193,716,1,0,0,0,195,723,1,0,0,0,197,731,1,0,0,0,199,740,1,0, + 0,0,201,755,1,0,0,0,203,854,1,0,0,0,205,861,1,0,0,0,207,872,1,0,0,0,209, + 880,1,0,0,0,211,889,1,0,0,0,213,899,1,0,0,0,215,903,1,0,0,0,217,969,1,0, + 0,0,219,971,1,0,0,0,221,987,1,0,0,0,223,1077,1,0,0,0,225,1079,1,0,0,0,227, + 1089,1,0,0,0,229,1095,1,0,0,0,231,1104,1,0,0,0,233,1114,1,0,0,0,235,1123, + 1,0,0,0,237,1129,1,0,0,0,239,1138,1,0,0,0,241,1146,1,0,0,0,243,1155,1,0, + 0,0,245,1163,1,0,0,0,247,1171,1,0,0,0,249,1178,1,0,0,0,251,1186,1,0,0,0, + 253,1191,1,0,0,0,255,1196,1,0,0,0,257,1201,1,0,0,0,259,1208,1,0,0,0,261, + 1220,1,0,0,0,263,1229,1,0,0,0,265,1237,1,0,0,0,267,1244,1,0,0,0,269,1246, + 1,0,0,0,271,1255,1,0,0,0,273,1278,1,0,0,0,275,1283,1,0,0,0,277,1286,1,0, + 0,0,279,1305,1,0,0,0,281,1311,1,0,0,0,283,1325,1,0,0,0,285,286,5,112,0, + 0,286,287,5,114,0,0,287,288,5,97,0,0,288,289,5,103,0,0,289,290,5,109,0, + 0,290,291,5,97,0,0,291,2,1,0,0,0,292,293,5,59,0,0,293,4,1,0,0,0,294,295, + 5,42,0,0,295,6,1,0,0,0,296,297,5,124,0,0,297,298,5,124,0,0,298,8,1,0,0, + 0,299,300,5,94,0,0,300,10,1,0,0,0,301,302,5,126,0,0,302,12,1,0,0,0,303, + 304,5,62,0,0,304,305,5,61,0,0,305,14,1,0,0,0,306,307,5,62,0,0,307,16,1, + 0,0,0,308,309,5,60,0,0,309,18,1,0,0,0,310,311,5,60,0,0,311,312,5,61,0,0, + 312,20,1,0,0,0,313,314,5,61,0,0,314,22,1,0,0,0,315,316,5,97,0,0,316,317, + 5,115,0,0,317,24,1,0,0,0,318,319,5,105,0,0,319,320,5,109,0,0,320,321,5, + 112,0,0,321,322,5,111,0,0,322,323,5,114,0,0,323,324,5,116,0,0,324,26,1, + 0,0,0,325,326,5,102,0,0,326,327,5,114,0,0,327,328,5,111,0,0,328,329,5,109, + 0,0,329,28,1,0,0,0,330,331,5,123,0,0,331,30,1,0,0,0,332,333,5,44,0,0,333, + 32,1,0,0,0,334,335,5,125,0,0,335,34,1,0,0,0,336,337,5,97,0,0,337,338,5, + 98,0,0,338,339,5,115,0,0,339,340,5,116,0,0,340,341,5,114,0,0,341,342,5, + 97,0,0,342,343,5,99,0,0,343,344,5,116,0,0,344,36,1,0,0,0,345,346,5,99,0, + 0,346,347,5,111,0,0,347,348,5,110,0,0,348,349,5,116,0,0,349,350,5,114,0, + 0,350,351,5,97,0,0,351,352,5,99,0,0,352,353,5,116,0,0,353,38,1,0,0,0,354, + 355,5,105,0,0,355,356,5,110,0,0,356,357,5,116,0,0,357,358,5,101,0,0,358, + 359,5,114,0,0,359,360,5,102,0,0,360,361,5,97,0,0,361,362,5,99,0,0,362,363, + 5,101,0,0,363,40,1,0,0,0,364,365,5,108,0,0,365,366,5,105,0,0,366,367,5, + 98,0,0,367,368,5,114,0,0,368,369,5,97,0,0,369,370,5,114,0,0,370,371,5,121, + 0,0,371,42,1,0,0,0,372,373,5,105,0,0,373,374,5,115,0,0,374,44,1,0,0,0,375, + 376,5,40,0,0,376,46,1,0,0,0,377,378,5,41,0,0,378,48,1,0,0,0,379,380,5,101, + 0,0,380,381,5,114,0,0,381,382,5,114,0,0,382,383,5,111,0,0,383,384,5,114, + 0,0,384,50,1,0,0,0,385,386,5,117,0,0,386,387,5,115,0,0,387,388,5,105,0, + 0,388,389,5,110,0,0,389,390,5,103,0,0,390,52,1,0,0,0,391,392,5,102,0,0, + 392,393,5,111,0,0,393,394,5,114,0,0,394,54,1,0,0,0,395,396,5,124,0,0,396, + 56,1,0,0,0,397,398,5,38,0,0,398,58,1,0,0,0,399,400,5,43,0,0,400,60,1,0, + 0,0,401,402,5,45,0,0,402,62,1,0,0,0,403,404,5,47,0,0,404,64,1,0,0,0,405, + 406,5,37,0,0,406,66,1,0,0,0,407,408,5,61,0,0,408,409,5,61,0,0,409,68,1, + 0,0,0,410,411,5,33,0,0,411,412,5,61,0,0,412,70,1,0,0,0,413,414,5,115,0, + 0,414,415,5,116,0,0,415,416,5,114,0,0,416,417,5,117,0,0,417,418,5,99,0, + 0,418,419,5,116,0,0,419,72,1,0,0,0,420,421,5,109,0,0,421,422,5,111,0,0, + 422,423,5,100,0,0,423,424,5,105,0,0,424,425,5,102,0,0,425,426,5,105,0,0, + 426,427,5,101,0,0,427,428,5,114,0,0,428,74,1,0,0,0,429,430,5,102,0,0,430, + 431,5,117,0,0,431,432,5,110,0,0,432,433,5,99,0,0,433,434,5,116,0,0,434, + 435,5,105,0,0,435,436,5,111,0,0,436,437,5,110,0,0,437,76,1,0,0,0,438,439, + 5,114,0,0,439,440,5,101,0,0,440,441,5,116,0,0,441,442,5,117,0,0,442,443, + 5,114,0,0,443,444,5,110,0,0,444,445,5,115,0,0,445,78,1,0,0,0,446,447,5, + 101,0,0,447,448,5,118,0,0,448,449,5,101,0,0,449,450,5,110,0,0,450,451,5, + 116,0,0,451,80,1,0,0,0,452,453,5,101,0,0,453,454,5,110,0,0,454,455,5,117, + 0,0,455,456,5,109,0,0,456,82,1,0,0,0,457,458,5,91,0,0,458,84,1,0,0,0,459, + 460,5,93,0,0,460,86,1,0,0,0,461,462,5,97,0,0,462,463,5,100,0,0,463,464, + 5,100,0,0,464,465,5,114,0,0,465,466,5,101,0,0,466,467,5,115,0,0,467,468, + 5,115,0,0,468,88,1,0,0,0,469,470,5,46,0,0,470,90,1,0,0,0,471,472,5,109, + 0,0,472,473,5,97,0,0,473,474,5,112,0,0,474,475,5,112,0,0,475,476,5,105, + 0,0,476,477,5,110,0,0,477,478,5,103,0,0,478,92,1,0,0,0,479,480,5,61,0,0, + 480,481,5,62,0,0,481,94,1,0,0,0,482,483,5,109,0,0,483,484,5,101,0,0,484, + 485,5,109,0,0,485,486,5,111,0,0,486,487,5,114,0,0,487,488,5,121,0,0,488, + 96,1,0,0,0,489,490,5,115,0,0,490,491,5,116,0,0,491,492,5,111,0,0,492,493, + 5,114,0,0,493,494,5,97,0,0,494,495,5,103,0,0,495,496,5,101,0,0,496,98,1, + 0,0,0,497,498,5,99,0,0,498,499,5,97,0,0,499,500,5,108,0,0,500,501,5,108, + 0,0,501,502,5,100,0,0,502,503,5,97,0,0,503,504,5,116,0,0,504,505,5,97,0, + 0,505,100,1,0,0,0,506,507,5,105,0,0,507,508,5,102,0,0,508,102,1,0,0,0,509, + 510,5,101,0,0,510,511,5,108,0,0,511,512,5,115,0,0,512,513,5,101,0,0,513, + 104,1,0,0,0,514,515,5,116,0,0,515,516,5,114,0,0,516,517,5,121,0,0,517,106, + 1,0,0,0,518,519,5,99,0,0,519,520,5,97,0,0,520,521,5,116,0,0,521,522,5,99, + 0,0,522,523,5,104,0,0,523,108,1,0,0,0,524,525,5,119,0,0,525,526,5,104,0, + 0,526,527,5,105,0,0,527,528,5,108,0,0,528,529,5,101,0,0,529,110,1,0,0,0, + 530,531,5,117,0,0,531,532,5,110,0,0,532,533,5,99,0,0,533,534,5,104,0,0, + 534,535,5,101,0,0,535,536,5,99,0,0,536,537,5,107,0,0,537,538,5,101,0,0, + 538,539,5,100,0,0,539,112,1,0,0,0,540,541,5,97,0,0,541,542,5,115,0,0,542, + 543,5,115,0,0,543,544,5,101,0,0,544,545,5,109,0,0,545,546,5,98,0,0,546, + 547,5,108,0,0,547,548,5,121,0,0,548,114,1,0,0,0,549,550,5,100,0,0,550,551, + 5,111,0,0,551,116,1,0,0,0,552,553,5,114,0,0,553,554,5,101,0,0,554,555,5, + 116,0,0,555,556,5,117,0,0,556,557,5,114,0,0,557,558,5,110,0,0,558,118,1, + 0,0,0,559,560,5,116,0,0,560,561,5,104,0,0,561,562,5,114,0,0,562,563,5,111, + 0,0,563,564,5,119,0,0,564,120,1,0,0,0,565,566,5,101,0,0,566,567,5,109,0, + 0,567,568,5,105,0,0,568,569,5,116,0,0,569,122,1,0,0,0,570,571,5,114,0,0, + 571,572,5,101,0,0,572,573,5,118,0,0,573,574,5,101,0,0,574,575,5,114,0,0, + 575,576,5,116,0,0,576,124,1,0,0,0,577,578,5,118,0,0,578,579,5,97,0,0,579, + 580,5,114,0,0,580,126,1,0,0,0,581,582,5,98,0,0,582,583,5,111,0,0,583,584, + 5,111,0,0,584,585,5,108,0,0,585,128,1,0,0,0,586,587,5,115,0,0,587,588,5, + 116,0,0,588,589,5,114,0,0,589,590,5,105,0,0,590,591,5,110,0,0,591,592,5, + 103,0,0,592,130,1,0,0,0,593,594,5,98,0,0,594,595,5,121,0,0,595,596,5,116, + 0,0,596,597,5,101,0,0,597,132,1,0,0,0,598,599,5,43,0,0,599,600,5,43,0,0, + 600,134,1,0,0,0,601,602,5,45,0,0,602,603,5,45,0,0,603,136,1,0,0,0,604,605, + 5,110,0,0,605,606,5,101,0,0,606,607,5,119,0,0,607,138,1,0,0,0,608,609,5, + 58,0,0,609,140,1,0,0,0,610,611,5,100,0,0,611,612,5,101,0,0,612,613,5,108, + 0,0,613,614,5,101,0,0,614,615,5,116,0,0,615,616,5,101,0,0,616,142,1,0,0, + 0,617,618,5,33,0,0,618,144,1,0,0,0,619,620,5,42,0,0,620,621,5,42,0,0,621, + 146,1,0,0,0,622,623,5,60,0,0,623,624,5,60,0,0,624,148,1,0,0,0,625,626,5, + 62,0,0,626,627,5,62,0,0,627,150,1,0,0,0,628,629,5,38,0,0,629,630,5,38,0, + 0,630,152,1,0,0,0,631,632,5,63,0,0,632,154,1,0,0,0,633,634,5,124,0,0,634, + 635,5,61,0,0,635,156,1,0,0,0,636,637,5,94,0,0,637,638,5,61,0,0,638,158, + 1,0,0,0,639,640,5,38,0,0,640,641,5,61,0,0,641,160,1,0,0,0,642,643,5,60, + 0,0,643,644,5,60,0,0,644,645,5,61,0,0,645,162,1,0,0,0,646,647,5,62,0,0, + 647,648,5,62,0,0,648,649,5,61,0,0,649,164,1,0,0,0,650,651,5,43,0,0,651, + 652,5,61,0,0,652,166,1,0,0,0,653,654,5,45,0,0,654,655,5,61,0,0,655,168, + 1,0,0,0,656,657,5,42,0,0,657,658,5,61,0,0,658,170,1,0,0,0,659,660,5,47, + 0,0,660,661,5,61,0,0,661,172,1,0,0,0,662,663,5,37,0,0,663,664,5,61,0,0, + 664,174,1,0,0,0,665,666,5,108,0,0,666,667,5,101,0,0,667,668,5,116,0,0,668, + 176,1,0,0,0,669,670,5,58,0,0,670,671,5,61,0,0,671,178,1,0,0,0,672,673,5, + 61,0,0,673,674,5,58,0,0,674,180,1,0,0,0,675,676,5,115,0,0,676,677,5,119, + 0,0,677,678,5,105,0,0,678,679,5,116,0,0,679,680,5,99,0,0,680,681,5,104, + 0,0,681,182,1,0,0,0,682,683,5,99,0,0,683,684,5,97,0,0,684,685,5,115,0,0, + 685,686,5,101,0,0,686,184,1,0,0,0,687,688,5,100,0,0,688,689,5,101,0,0,689, + 690,5,102,0,0,690,691,5,97,0,0,691,692,5,117,0,0,692,693,5,108,0,0,693, + 694,5,116,0,0,694,186,1,0,0,0,695,696,5,45,0,0,696,697,5,62,0,0,697,188, + 1,0,0,0,698,699,5,99,0,0,699,700,5,97,0,0,700,701,5,108,0,0,701,702,5,108, + 0,0,702,703,5,98,0,0,703,704,5,97,0,0,704,705,5,99,0,0,705,706,5,107,0, + 0,706,190,1,0,0,0,707,708,5,111,0,0,708,709,5,118,0,0,709,710,5,101,0,0, + 710,711,5,114,0,0,711,712,5,114,0,0,712,713,5,105,0,0,713,714,5,100,0,0, + 714,715,5,101,0,0,715,192,1,0,0,0,716,717,5,105,0,0,717,718,5,110,0,0,718, + 719,5,116,0,0,719,721,1,0,0,0,720,722,3,203,101,0,721,720,1,0,0,0,721,722, + 1,0,0,0,722,194,1,0,0,0,723,724,5,117,0,0,724,725,5,105,0,0,725,726,5,110, + 0,0,726,727,5,116,0,0,727,729,1,0,0,0,728,730,3,203,101,0,729,728,1,0,0, + 0,729,730,1,0,0,0,730,196,1,0,0,0,731,732,5,98,0,0,732,733,5,121,0,0,733, + 734,5,116,0,0,734,735,5,101,0,0,735,736,5,115,0,0,736,738,1,0,0,0,737,739, + 3,205,102,0,738,737,1,0,0,0,738,739,1,0,0,0,739,198,1,0,0,0,740,741,5,102, + 0,0,741,742,5,105,0,0,742,743,5,120,0,0,743,744,5,101,0,0,744,745,5,100, + 0,0,745,753,1,0,0,0,746,747,3,203,101,0,747,749,5,120,0,0,748,750,7,0,0, + 0,749,748,1,0,0,0,750,751,1,0,0,0,751,749,1,0,0,0,751,752,1,0,0,0,752,754, + 1,0,0,0,753,746,1,0,0,0,753,754,1,0,0,0,754,200,1,0,0,0,755,756,5,117,0, + 0,756,757,5,102,0,0,757,758,5,105,0,0,758,759,5,120,0,0,759,760,5,101,0, + 0,760,761,5,100,0,0,761,769,1,0,0,0,762,763,3,203,101,0,763,765,5,120,0, + 0,764,766,7,0,0,0,765,764,1,0,0,0,766,767,1,0,0,0,767,765,1,0,0,0,767,768, + 1,0,0,0,768,770,1,0,0,0,769,762,1,0,0,0,769,770,1,0,0,0,770,202,1,0,0,0, + 771,855,5,56,0,0,772,773,5,49,0,0,773,855,5,54,0,0,774,775,5,50,0,0,775, + 855,5,52,0,0,776,777,5,51,0,0,777,855,5,50,0,0,778,779,5,52,0,0,779,855, + 5,48,0,0,780,781,5,52,0,0,781,855,5,56,0,0,782,783,5,53,0,0,783,855,5,54, + 0,0,784,785,5,54,0,0,785,855,5,52,0,0,786,787,5,55,0,0,787,855,5,50,0,0, + 788,789,5,56,0,0,789,855,5,48,0,0,790,791,5,56,0,0,791,855,5,56,0,0,792, + 793,5,57,0,0,793,855,5,54,0,0,794,795,5,49,0,0,795,796,5,48,0,0,796,855, + 5,52,0,0,797,798,5,49,0,0,798,799,5,49,0,0,799,855,5,50,0,0,800,801,5,49, + 0,0,801,802,5,50,0,0,802,855,5,48,0,0,803,804,5,49,0,0,804,805,5,50,0,0, + 805,855,5,56,0,0,806,807,5,49,0,0,807,808,5,51,0,0,808,855,5,54,0,0,809, + 810,5,49,0,0,810,811,5,52,0,0,811,855,5,52,0,0,812,813,5,49,0,0,813,814, + 5,53,0,0,814,855,5,50,0,0,815,816,5,49,0,0,816,817,5,54,0,0,817,855,5,48, + 0,0,818,819,5,49,0,0,819,820,5,54,0,0,820,855,5,56,0,0,821,822,5,49,0,0, + 822,823,5,55,0,0,823,855,5,54,0,0,824,825,5,49,0,0,825,826,5,56,0,0,826, + 855,5,52,0,0,827,828,5,49,0,0,828,829,5,57,0,0,829,855,5,50,0,0,830,831, + 5,50,0,0,831,832,5,48,0,0,832,855,5,48,0,0,833,834,5,50,0,0,834,835,5,48, + 0,0,835,855,5,56,0,0,836,837,5,50,0,0,837,838,5,49,0,0,838,855,5,54,0,0, + 839,840,5,50,0,0,840,841,5,50,0,0,841,855,5,52,0,0,842,843,5,50,0,0,843, + 844,5,51,0,0,844,855,5,50,0,0,845,846,5,50,0,0,846,847,5,52,0,0,847,855, + 5,48,0,0,848,849,5,50,0,0,849,850,5,52,0,0,850,855,5,56,0,0,851,852,5,50, + 0,0,852,853,5,53,0,0,853,855,5,54,0,0,854,771,1,0,0,0,854,772,1,0,0,0,854, + 774,1,0,0,0,854,776,1,0,0,0,854,778,1,0,0,0,854,780,1,0,0,0,854,782,1,0, + 0,0,854,784,1,0,0,0,854,786,1,0,0,0,854,788,1,0,0,0,854,790,1,0,0,0,854, + 792,1,0,0,0,854,794,1,0,0,0,854,797,1,0,0,0,854,800,1,0,0,0,854,803,1,0, + 0,0,854,806,1,0,0,0,854,809,1,0,0,0,854,812,1,0,0,0,854,815,1,0,0,0,854, + 818,1,0,0,0,854,821,1,0,0,0,854,824,1,0,0,0,854,827,1,0,0,0,854,830,1,0, + 0,0,854,833,1,0,0,0,854,836,1,0,0,0,854,839,1,0,0,0,854,842,1,0,0,0,854, + 845,1,0,0,0,854,848,1,0,0,0,854,851,1,0,0,0,855,204,1,0,0,0,856,862,7,1, + 0,0,857,858,7,2,0,0,858,862,7,0,0,0,859,860,5,51,0,0,860,862,7,3,0,0,861, + 856,1,0,0,0,861,857,1,0,0,0,861,859,1,0,0,0,862,206,1,0,0,0,863,864,5,116, + 0,0,864,865,5,114,0,0,865,866,5,117,0,0,866,873,5,101,0,0,867,868,5,102, + 0,0,868,869,5,97,0,0,869,870,5,108,0,0,870,871,5,115,0,0,871,873,5,101, + 0,0,872,863,1,0,0,0,872,867,1,0,0,0,873,208,1,0,0,0,874,881,3,211,105,0, + 875,877,3,211,105,0,876,875,1,0,0,0,876,877,1,0,0,0,877,878,1,0,0,0,878, + 879,5,46,0,0,879,881,3,211,105,0,880,874,1,0,0,0,880,876,1,0,0,0,881,887, + 1,0,0,0,882,884,7,4,0,0,883,885,5,45,0,0,884,883,1,0,0,0,884,885,1,0,0, + 0,885,886,1,0,0,0,886,888,3,211,105,0,887,882,1,0,0,0,887,888,1,0,0,0,888, + 210,1,0,0,0,889,896,7,0,0,0,890,892,5,95,0,0,891,890,1,0,0,0,891,892,1, + 0,0,0,892,893,1,0,0,0,893,895,7,0,0,0,894,891,1,0,0,0,895,898,1,0,0,0,896, + 894,1,0,0,0,896,897,1,0,0,0,897,212,1,0,0,0,898,896,1,0,0,0,899,900,5,48, + 0,0,900,901,7,5,0,0,901,902,3,215,107,0,902,214,1,0,0,0,903,910,3,221,110, + 0,904,906,5,95,0,0,905,904,1,0,0,0,905,906,1,0,0,0,906,907,1,0,0,0,907, + 909,3,221,110,0,908,905,1,0,0,0,909,912,1,0,0,0,910,908,1,0,0,0,910,911, + 1,0,0,0,911,216,1,0,0,0,912,910,1,0,0,0,913,914,5,119,0,0,914,915,5,101, + 0,0,915,970,5,105,0,0,916,917,5,103,0,0,917,918,5,119,0,0,918,919,5,101, + 0,0,919,970,5,105,0,0,920,921,5,115,0,0,921,922,5,122,0,0,922,923,5,97, + 0,0,923,924,5,98,0,0,924,970,5,111,0,0,925,926,5,102,0,0,926,927,5,105, + 0,0,927,928,5,110,0,0,928,929,5,110,0,0,929,930,5,101,0,0,930,970,5,121, + 0,0,931,932,5,101,0,0,932,933,5,116,0,0,933,934,5,104,0,0,934,935,5,101, + 0,0,935,970,5,114,0,0,936,937,5,115,0,0,937,938,5,101,0,0,938,939,5,99, + 0,0,939,940,5,111,0,0,940,941,5,110,0,0,941,942,5,100,0,0,942,970,5,115, + 0,0,943,944,5,109,0,0,944,945,5,105,0,0,945,946,5,110,0,0,946,947,5,117, + 0,0,947,948,5,116,0,0,948,949,5,101,0,0,949,970,5,115,0,0,950,951,5,104, + 0,0,951,952,5,111,0,0,952,953,5,117,0,0,953,954,5,114,0,0,954,970,5,115, + 0,0,955,956,5,100,0,0,956,957,5,97,0,0,957,958,5,121,0,0,958,970,5,115, + 0,0,959,960,5,119,0,0,960,961,5,101,0,0,961,962,5,101,0,0,962,963,5,107, + 0,0,963,970,5,115,0,0,964,965,5,121,0,0,965,966,5,101,0,0,966,967,5,97, + 0,0,967,968,5,114,0,0,968,970,5,115,0,0,969,913,1,0,0,0,969,916,1,0,0,0, + 969,920,1,0,0,0,969,925,1,0,0,0,969,931,1,0,0,0,969,936,1,0,0,0,969,943, + 1,0,0,0,969,950,1,0,0,0,969,955,1,0,0,0,969,959,1,0,0,0,969,964,1,0,0,0, + 970,218,1,0,0,0,971,972,5,104,0,0,972,973,5,101,0,0,973,974,5,120,0,0,974, + 985,1,0,0,0,975,977,5,34,0,0,976,978,3,215,107,0,977,976,1,0,0,0,977,978, + 1,0,0,0,978,979,1,0,0,0,979,986,5,34,0,0,980,982,5,39,0,0,981,983,3,215, + 107,0,982,981,1,0,0,0,982,983,1,0,0,0,983,984,1,0,0,0,984,986,5,39,0,0, + 985,975,1,0,0,0,985,980,1,0,0,0,986,220,1,0,0,0,987,988,7,6,0,0,988,222, + 1,0,0,0,989,990,5,97,0,0,990,991,5,98,0,0,991,992,5,115,0,0,992,993,5,116, + 0,0,993,994,5,114,0,0,994,995,5,97,0,0,995,996,5,99,0,0,996,1078,5,116, + 0,0,997,998,5,97,0,0,998,999,5,102,0,0,999,1000,5,116,0,0,1000,1001,5,101, + 0,0,1001,1078,5,114,0,0,1002,1003,5,99,0,0,1003,1004,5,97,0,0,1004,1005, + 5,115,0,0,1005,1078,5,101,0,0,1006,1007,5,99,0,0,1007,1008,5,97,0,0,1008, + 1009,5,116,0,0,1009,1010,5,99,0,0,1010,1078,5,104,0,0,1011,1012,5,100,0, + 0,1012,1013,5,101,0,0,1013,1014,5,102,0,0,1014,1015,5,97,0,0,1015,1016, + 5,117,0,0,1016,1017,5,108,0,0,1017,1078,5,116,0,0,1018,1019,5,102,0,0,1019, + 1020,5,105,0,0,1020,1021,5,110,0,0,1021,1022,5,97,0,0,1022,1078,5,108,0, + 0,1023,1024,5,105,0,0,1024,1078,5,110,0,0,1025,1026,5,105,0,0,1026,1027, + 5,110,0,0,1027,1028,5,108,0,0,1028,1029,5,105,0,0,1029,1030,5,110,0,0,1030, + 1078,5,101,0,0,1031,1032,5,108,0,0,1032,1033,5,101,0,0,1033,1078,5,116, + 0,0,1034,1035,5,109,0,0,1035,1036,5,97,0,0,1036,1037,5,116,0,0,1037,1038, + 5,99,0,0,1038,1078,5,104,0,0,1039,1040,5,110,0,0,1040,1041,5,117,0,0,1041, + 1042,5,108,0,0,1042,1078,5,108,0,0,1043,1044,5,111,0,0,1044,1078,5,102, + 0,0,1045,1046,5,114,0,0,1046,1047,5,101,0,0,1047,1048,5,108,0,0,1048,1049, + 5,111,0,0,1049,1050,5,99,0,0,1050,1051,5,97,0,0,1051,1052,5,116,0,0,1052, + 1053,5,97,0,0,1053,1054,5,98,0,0,1054,1055,5,108,0,0,1055,1078,5,101,0, + 0,1056,1057,5,115,0,0,1057,1058,5,116,0,0,1058,1059,5,97,0,0,1059,1060, + 5,116,0,0,1060,1061,5,105,0,0,1061,1078,5,99,0,0,1062,1063,5,115,0,0,1063, + 1064,5,119,0,0,1064,1065,5,105,0,0,1065,1066,5,116,0,0,1066,1067,5,99,0, + 0,1067,1078,5,104,0,0,1068,1069,5,116,0,0,1069,1070,5,114,0,0,1070,1078, + 5,121,0,0,1071,1072,5,116,0,0,1072,1073,5,121,0,0,1073,1074,5,112,0,0,1074, + 1075,5,101,0,0,1075,1076,5,111,0,0,1076,1078,5,102,0,0,1077,989,1,0,0,0, + 1077,997,1,0,0,0,1077,1002,1,0,0,0,1077,1006,1,0,0,0,1077,1011,1,0,0,0, + 1077,1018,1,0,0,0,1077,1023,1,0,0,0,1077,1025,1,0,0,0,1077,1031,1,0,0,0, + 1077,1034,1,0,0,0,1077,1039,1,0,0,0,1077,1043,1,0,0,0,1077,1045,1,0,0,0, + 1077,1056,1,0,0,0,1077,1062,1,0,0,0,1077,1068,1,0,0,0,1077,1071,1,0,0,0, + 1078,224,1,0,0,0,1079,1080,5,97,0,0,1080,1081,5,110,0,0,1081,1082,5,111, + 0,0,1082,1083,5,110,0,0,1083,1084,5,121,0,0,1084,1085,5,109,0,0,1085,1086, + 5,111,0,0,1086,1087,5,117,0,0,1087,1088,5,115,0,0,1088,226,1,0,0,0,1089, + 1090,5,98,0,0,1090,1091,5,114,0,0,1091,1092,5,101,0,0,1092,1093,5,97,0, + 0,1093,1094,5,107,0,0,1094,228,1,0,0,0,1095,1096,5,99,0,0,1096,1097,5,111, + 0,0,1097,1098,5,110,0,0,1098,1099,5,115,0,0,1099,1100,5,116,0,0,1100,1101, + 5,97,0,0,1101,1102,5,110,0,0,1102,1103,5,116,0,0,1103,230,1,0,0,0,1104, + 1105,5,105,0,0,1105,1106,5,109,0,0,1106,1107,5,109,0,0,1107,1108,5,117, + 0,0,1108,1109,5,116,0,0,1109,1110,5,97,0,0,1110,1111,5,98,0,0,1111,1112, + 5,108,0,0,1112,1113,5,101,0,0,1113,232,1,0,0,0,1114,1115,5,99,0,0,1115, + 1116,5,111,0,0,1116,1117,5,110,0,0,1117,1118,5,116,0,0,1118,1119,5,105, + 0,0,1119,1120,5,110,0,0,1120,1121,5,117,0,0,1121,1122,5,101,0,0,1122,234, + 1,0,0,0,1123,1124,5,108,0,0,1124,1125,5,101,0,0,1125,1126,5,97,0,0,1126, + 1127,5,118,0,0,1127,1128,5,101,0,0,1128,236,1,0,0,0,1129,1130,5,101,0,0, + 1130,1131,5,120,0,0,1131,1132,5,116,0,0,1132,1133,5,101,0,0,1133,1134,5, + 114,0,0,1134,1135,5,110,0,0,1135,1136,5,97,0,0,1136,1137,5,108,0,0,1137, + 238,1,0,0,0,1138,1139,5,105,0,0,1139,1140,5,110,0,0,1140,1141,5,100,0,0, + 1141,1142,5,101,0,0,1142,1143,5,120,0,0,1143,1144,5,101,0,0,1144,1145,5, + 100,0,0,1145,240,1,0,0,0,1146,1147,5,105,0,0,1147,1148,5,110,0,0,1148,1149, + 5,116,0,0,1149,1150,5,101,0,0,1150,1151,5,114,0,0,1151,1152,5,110,0,0,1152, + 1153,5,97,0,0,1153,1154,5,108,0,0,1154,242,1,0,0,0,1155,1156,5,112,0,0, + 1156,1157,5,97,0,0,1157,1158,5,121,0,0,1158,1159,5,97,0,0,1159,1160,5,98, + 0,0,1160,1161,5,108,0,0,1161,1162,5,101,0,0,1162,244,1,0,0,0,1163,1164, + 5,112,0,0,1164,1165,5,114,0,0,1165,1166,5,105,0,0,1166,1167,5,118,0,0,1167, + 1168,5,97,0,0,1168,1169,5,116,0,0,1169,1170,5,101,0,0,1170,246,1,0,0,0, + 1171,1172,5,112,0,0,1172,1173,5,117,0,0,1173,1174,5,98,0,0,1174,1175,5, + 108,0,0,1175,1176,5,105,0,0,1176,1177,5,99,0,0,1177,248,1,0,0,0,1178,1179, + 5,118,0,0,1179,1180,5,105,0,0,1180,1181,5,114,0,0,1181,1182,5,116,0,0,1182, + 1183,5,117,0,0,1183,1184,5,97,0,0,1184,1185,5,108,0,0,1185,250,1,0,0,0, + 1186,1187,5,112,0,0,1187,1188,5,117,0,0,1188,1189,5,114,0,0,1189,1190,5, + 101,0,0,1190,252,1,0,0,0,1191,1192,5,116,0,0,1192,1193,5,121,0,0,1193,1194, + 5,112,0,0,1194,1195,5,101,0,0,1195,254,1,0,0,0,1196,1197,5,118,0,0,1197, + 1198,5,105,0,0,1198,1199,5,101,0,0,1199,1200,5,119,0,0,1200,256,1,0,0,0, + 1201,1202,5,103,0,0,1202,1203,5,108,0,0,1203,1204,5,111,0,0,1204,1205,5, + 98,0,0,1205,1206,5,97,0,0,1206,1207,5,108,0,0,1207,258,1,0,0,0,1208,1209, + 5,99,0,0,1209,1210,5,111,0,0,1210,1211,5,110,0,0,1211,1212,5,115,0,0,1212, + 1213,5,116,0,0,1213,1214,5,114,0,0,1214,1215,5,117,0,0,1215,1216,5,99,0, + 0,1216,1217,5,116,0,0,1217,1218,5,111,0,0,1218,1219,5,114,0,0,1219,260, + 1,0,0,0,1220,1221,5,102,0,0,1221,1222,5,97,0,0,1222,1223,5,108,0,0,1223, + 1224,5,108,0,0,1224,1225,5,98,0,0,1225,1226,5,97,0,0,1226,1227,5,99,0,0, + 1227,1228,5,107,0,0,1228,262,1,0,0,0,1229,1230,5,114,0,0,1230,1231,5,101, + 0,0,1231,1232,5,99,0,0,1232,1233,5,101,0,0,1233,1234,5,105,0,0,1234,1235, + 5,118,0,0,1235,1236,5,101,0,0,1236,264,1,0,0,0,1237,1241,3,267,133,0,1238, + 1240,3,269,134,0,1239,1238,1,0,0,0,1240,1243,1,0,0,0,1241,1239,1,0,0,0, + 1241,1242,1,0,0,0,1242,266,1,0,0,0,1243,1241,1,0,0,0,1244,1245,7,7,0,0, + 1245,268,1,0,0,0,1246,1247,7,8,0,0,1247,270,1,0,0,0,1248,1249,5,117,0,0, + 1249,1250,5,110,0,0,1250,1251,5,105,0,0,1251,1252,5,99,0,0,1252,1253,5, + 111,0,0,1253,1254,5,100,0,0,1254,1256,5,101,0,0,1255,1248,1,0,0,0,1255, + 1256,1,0,0,0,1256,1273,1,0,0,0,1257,1261,5,34,0,0,1258,1260,3,273,136,0, + 1259,1258,1,0,0,0,1260,1263,1,0,0,0,1261,1259,1,0,0,0,1261,1262,1,0,0,0, + 1262,1264,1,0,0,0,1263,1261,1,0,0,0,1264,1274,5,34,0,0,1265,1269,5,39,0, + 0,1266,1268,3,275,137,0,1267,1266,1,0,0,0,1268,1271,1,0,0,0,1269,1267,1, + 0,0,0,1269,1270,1,0,0,0,1270,1272,1,0,0,0,1271,1269,1,0,0,0,1272,1274,5, + 39,0,0,1273,1257,1,0,0,0,1273,1265,1,0,0,0,1274,272,1,0,0,0,1275,1279,8, + 9,0,0,1276,1277,5,92,0,0,1277,1279,9,0,0,0,1278,1275,1,0,0,0,1278,1276, + 1,0,0,0,1279,274,1,0,0,0,1280,1284,8,10,0,0,1281,1282,5,92,0,0,1282,1284, + 9,0,0,0,1283,1280,1,0,0,0,1283,1281,1,0,0,0,1284,276,1,0,0,0,1285,1287, + 7,0,0,0,1286,1285,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,1292,5,46,0,0,1291,1293,7,0,0,0,1292,1291, + 1,0,0,0,1293,1294,1,0,0,0,1294,1292,1,0,0,0,1294,1295,1,0,0,0,1295,1302, + 1,0,0,0,1296,1298,5,46,0,0,1297,1299,7,0,0,0,1298,1297,1,0,0,0,1299,1300, + 1,0,0,0,1300,1298,1,0,0,0,1300,1301,1,0,0,0,1301,1303,1,0,0,0,1302,1296, + 1,0,0,0,1302,1303,1,0,0,0,1303,278,1,0,0,0,1304,1306,7,11,0,0,1305,1304, + 1,0,0,0,1306,1307,1,0,0,0,1307,1305,1,0,0,0,1307,1308,1,0,0,0,1308,1309, + 1,0,0,0,1309,1310,6,139,0,0,1310,280,1,0,0,0,1311,1312,5,47,0,0,1312,1313, + 5,42,0,0,1313,1317,1,0,0,0,1314,1316,9,0,0,0,1315,1314,1,0,0,0,1316,1319, + 1,0,0,0,1317,1318,1,0,0,0,1317,1315,1,0,0,0,1318,1320,1,0,0,0,1319,1317, + 1,0,0,0,1320,1321,5,42,0,0,1321,1322,5,47,0,0,1322,1323,1,0,0,0,1323,1324, + 6,140,1,0,1324,282,1,0,0,0,1325,1326,5,47,0,0,1326,1327,5,47,0,0,1327,1331, + 1,0,0,0,1328,1330,8,12,0,0,1329,1328,1,0,0,0,1330,1333,1,0,0,0,1331,1329, + 1,0,0,0,1331,1332,1,0,0,0,1332,1334,1,0,0,0,1333,1331,1,0,0,0,1334,1335, + 6,141,1,0,1335,284,1,0,0,0,38,0,721,729,738,751,753,767,769,854,861,872, + 876,880,884,887,891,896,905,910,969,977,982,985,1077,1241,1255,1261,1269, + 1273,1278,1283,1288,1294,1300,1302,1307,1317,1331,2,6,0,0,0,1,0]; + + private static __ATN: ATN; public static get _ATN(): ATN { if (!SolidityLexer.__ATN) { - SolidityLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(SolidityLexer._serializedATN)); + SolidityLexer.__ATN = new ATNDeserializer().deserialize(SolidityLexer._serializedATN); } return SolidityLexer.__ATN; } -} + static DecisionsToDFA = SolidityLexer._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); +} \ No newline at end of file diff --git a/src/antlr/SolidityListener.ts b/src/antlr/SolidityListener.ts index 26c6dcc..d777d4f 100644 --- a/src/antlr/SolidityListener.ts +++ b/src/antlr/SolidityListener.ts @@ -1,7 +1,7 @@ -// Generated from antlr/Solidity.g4 by ANTLR 4.9.0-SNAPSHOT +// Generated from antlr/Solidity.g4 by ANTLR 4.13.1 +import {ParseTreeListener} from "antlr4"; -import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; import { SourceUnitContext } from "./SolidityParser"; import { PragmaDirectiveContext } from "./SolidityParser"; @@ -110,7 +110,7 @@ import { StringLiteralContext } from "./SolidityParser"; * This interface defines a complete listener for a parse tree produced by * `SolidityParser`. */ -export interface SolidityListener extends ParseTreeListener { +export default class SolidityListener extends ParseTreeListener { /** * Enter a parse tree produced by `SolidityParser.sourceUnit`. * @param ctx the parse tree @@ -121,7 +121,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitSourceUnit?: (ctx: SourceUnitContext) => void; - /** * Enter a parse tree produced by `SolidityParser.pragmaDirective`. * @param ctx the parse tree @@ -132,7 +131,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitPragmaDirective?: (ctx: PragmaDirectiveContext) => void; - /** * Enter a parse tree produced by `SolidityParser.pragmaName`. * @param ctx the parse tree @@ -143,7 +141,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitPragmaName?: (ctx: PragmaNameContext) => void; - /** * Enter a parse tree produced by `SolidityParser.pragmaValue`. * @param ctx the parse tree @@ -154,7 +151,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitPragmaValue?: (ctx: PragmaValueContext) => void; - /** * Enter a parse tree produced by `SolidityParser.version`. * @param ctx the parse tree @@ -165,7 +161,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitVersion?: (ctx: VersionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.versionOperator`. * @param ctx the parse tree @@ -176,7 +171,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitVersionOperator?: (ctx: VersionOperatorContext) => void; - /** * Enter a parse tree produced by `SolidityParser.versionConstraint`. * @param ctx the parse tree @@ -187,7 +181,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitVersionConstraint?: (ctx: VersionConstraintContext) => void; - /** * Enter a parse tree produced by `SolidityParser.importDeclaration`. * @param ctx the parse tree @@ -198,7 +191,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitImportDeclaration?: (ctx: ImportDeclarationContext) => void; - /** * Enter a parse tree produced by `SolidityParser.importDirective`. * @param ctx the parse tree @@ -209,7 +201,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitImportDirective?: (ctx: ImportDirectiveContext) => void; - /** * Enter a parse tree produced by `SolidityParser.importPath`. * @param ctx the parse tree @@ -220,7 +211,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitImportPath?: (ctx: ImportPathContext) => void; - /** * Enter a parse tree produced by `SolidityParser.contractDefinition`. * @param ctx the parse tree @@ -231,7 +221,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitContractDefinition?: (ctx: ContractDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.inheritanceSpecifier`. * @param ctx the parse tree @@ -242,7 +231,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitInheritanceSpecifier?: (ctx: InheritanceSpecifierContext) => void; - /** * Enter a parse tree produced by `SolidityParser.contractPart`. * @param ctx the parse tree @@ -253,7 +241,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitContractPart?: (ctx: ContractPartContext) => void; - /** * Enter a parse tree produced by `SolidityParser.stateVariableDeclaration`. * @param ctx the parse tree @@ -264,7 +251,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitStateVariableDeclaration?: (ctx: StateVariableDeclarationContext) => void; - /** * Enter a parse tree produced by `SolidityParser.fileLevelConstant`. * @param ctx the parse tree @@ -275,7 +261,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitFileLevelConstant?: (ctx: FileLevelConstantContext) => void; - /** * Enter a parse tree produced by `SolidityParser.customErrorDefinition`. * @param ctx the parse tree @@ -286,7 +271,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitCustomErrorDefinition?: (ctx: CustomErrorDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.typeDefinition`. * @param ctx the parse tree @@ -297,7 +281,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitTypeDefinition?: (ctx: TypeDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.usingForDeclaration`. * @param ctx the parse tree @@ -308,7 +291,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitUsingForDeclaration?: (ctx: UsingForDeclarationContext) => void; - /** * Enter a parse tree produced by `SolidityParser.usingForObject`. * @param ctx the parse tree @@ -319,7 +301,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitUsingForObject?: (ctx: UsingForObjectContext) => void; - /** * Enter a parse tree produced by `SolidityParser.usingForObjectDirective`. * @param ctx the parse tree @@ -330,7 +311,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitUsingForObjectDirective?: (ctx: UsingForObjectDirectiveContext) => void; - /** * Enter a parse tree produced by `SolidityParser.userDefinableOperators`. * @param ctx the parse tree @@ -341,7 +321,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitUserDefinableOperators?: (ctx: UserDefinableOperatorsContext) => void; - /** * Enter a parse tree produced by `SolidityParser.structDefinition`. * @param ctx the parse tree @@ -352,7 +331,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitStructDefinition?: (ctx: StructDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.modifierDefinition`. * @param ctx the parse tree @@ -363,7 +341,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitModifierDefinition?: (ctx: ModifierDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.modifierInvocation`. * @param ctx the parse tree @@ -374,7 +351,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitModifierInvocation?: (ctx: ModifierInvocationContext) => void; - /** * Enter a parse tree produced by `SolidityParser.functionDefinition`. * @param ctx the parse tree @@ -385,7 +361,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitFunctionDefinition?: (ctx: FunctionDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.functionDescriptor`. * @param ctx the parse tree @@ -396,7 +371,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitFunctionDescriptor?: (ctx: FunctionDescriptorContext) => void; - /** * Enter a parse tree produced by `SolidityParser.returnParameters`. * @param ctx the parse tree @@ -407,7 +381,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitReturnParameters?: (ctx: ReturnParametersContext) => void; - /** * Enter a parse tree produced by `SolidityParser.modifierList`. * @param ctx the parse tree @@ -418,7 +391,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitModifierList?: (ctx: ModifierListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.eventDefinition`. * @param ctx the parse tree @@ -429,7 +401,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitEventDefinition?: (ctx: EventDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.enumValue`. * @param ctx the parse tree @@ -440,7 +411,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitEnumValue?: (ctx: EnumValueContext) => void; - /** * Enter a parse tree produced by `SolidityParser.enumDefinition`. * @param ctx the parse tree @@ -451,7 +421,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitEnumDefinition?: (ctx: EnumDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.parameterList`. * @param ctx the parse tree @@ -462,7 +431,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitParameterList?: (ctx: ParameterListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.parameter`. * @param ctx the parse tree @@ -473,7 +441,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitParameter?: (ctx: ParameterContext) => void; - /** * Enter a parse tree produced by `SolidityParser.eventParameterList`. * @param ctx the parse tree @@ -484,7 +451,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitEventParameterList?: (ctx: EventParameterListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.eventParameter`. * @param ctx the parse tree @@ -495,7 +461,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitEventParameter?: (ctx: EventParameterContext) => void; - /** * Enter a parse tree produced by `SolidityParser.functionTypeParameterList`. * @param ctx the parse tree @@ -506,7 +471,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitFunctionTypeParameterList?: (ctx: FunctionTypeParameterListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.functionTypeParameter`. * @param ctx the parse tree @@ -517,7 +481,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitFunctionTypeParameter?: (ctx: FunctionTypeParameterContext) => void; - /** * Enter a parse tree produced by `SolidityParser.variableDeclaration`. * @param ctx the parse tree @@ -528,7 +491,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitVariableDeclaration?: (ctx: VariableDeclarationContext) => void; - /** * Enter a parse tree produced by `SolidityParser.typeName`. * @param ctx the parse tree @@ -539,7 +501,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitTypeName?: (ctx: TypeNameContext) => void; - /** * Enter a parse tree produced by `SolidityParser.userDefinedTypeName`. * @param ctx the parse tree @@ -550,7 +511,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitUserDefinedTypeName?: (ctx: UserDefinedTypeNameContext) => void; - /** * Enter a parse tree produced by `SolidityParser.mappingKey`. * @param ctx the parse tree @@ -561,7 +521,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitMappingKey?: (ctx: MappingKeyContext) => void; - /** * Enter a parse tree produced by `SolidityParser.mapping`. * @param ctx the parse tree @@ -572,7 +531,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitMapping?: (ctx: MappingContext) => void; - /** * Enter a parse tree produced by `SolidityParser.mappingKeyName`. * @param ctx the parse tree @@ -583,7 +541,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitMappingKeyName?: (ctx: MappingKeyNameContext) => void; - /** * Enter a parse tree produced by `SolidityParser.mappingValueName`. * @param ctx the parse tree @@ -594,7 +551,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitMappingValueName?: (ctx: MappingValueNameContext) => void; - /** * Enter a parse tree produced by `SolidityParser.functionTypeName`. * @param ctx the parse tree @@ -605,7 +561,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitFunctionTypeName?: (ctx: FunctionTypeNameContext) => void; - /** * Enter a parse tree produced by `SolidityParser.storageLocation`. * @param ctx the parse tree @@ -616,7 +571,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitStorageLocation?: (ctx: StorageLocationContext) => void; - /** * Enter a parse tree produced by `SolidityParser.stateMutability`. * @param ctx the parse tree @@ -627,7 +581,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitStateMutability?: (ctx: StateMutabilityContext) => void; - /** * Enter a parse tree produced by `SolidityParser.block`. * @param ctx the parse tree @@ -638,7 +591,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitBlock?: (ctx: BlockContext) => void; - /** * Enter a parse tree produced by `SolidityParser.statement`. * @param ctx the parse tree @@ -649,7 +601,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitStatement?: (ctx: StatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.expressionStatement`. * @param ctx the parse tree @@ -660,7 +611,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitExpressionStatement?: (ctx: ExpressionStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.ifStatement`. * @param ctx the parse tree @@ -671,7 +621,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitIfStatement?: (ctx: IfStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.tryStatement`. * @param ctx the parse tree @@ -682,7 +631,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitTryStatement?: (ctx: TryStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.catchClause`. * @param ctx the parse tree @@ -693,7 +641,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitCatchClause?: (ctx: CatchClauseContext) => void; - /** * Enter a parse tree produced by `SolidityParser.whileStatement`. * @param ctx the parse tree @@ -704,7 +651,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitWhileStatement?: (ctx: WhileStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.simpleStatement`. * @param ctx the parse tree @@ -715,7 +661,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitSimpleStatement?: (ctx: SimpleStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.uncheckedStatement`. * @param ctx the parse tree @@ -726,7 +671,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitUncheckedStatement?: (ctx: UncheckedStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.forStatement`. * @param ctx the parse tree @@ -737,7 +681,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitForStatement?: (ctx: ForStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.inlineAssemblyStatement`. * @param ctx the parse tree @@ -748,7 +691,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitInlineAssemblyStatement?: (ctx: InlineAssemblyStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.inlineAssemblyStatementFlag`. * @param ctx the parse tree @@ -759,7 +701,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitInlineAssemblyStatementFlag?: (ctx: InlineAssemblyStatementFlagContext) => void; - /** * Enter a parse tree produced by `SolidityParser.doWhileStatement`. * @param ctx the parse tree @@ -770,7 +711,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitDoWhileStatement?: (ctx: DoWhileStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.continueStatement`. * @param ctx the parse tree @@ -781,7 +721,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitContinueStatement?: (ctx: ContinueStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.breakStatement`. * @param ctx the parse tree @@ -792,7 +731,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitBreakStatement?: (ctx: BreakStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.returnStatement`. * @param ctx the parse tree @@ -803,7 +741,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitReturnStatement?: (ctx: ReturnStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.throwStatement`. * @param ctx the parse tree @@ -814,7 +751,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitThrowStatement?: (ctx: ThrowStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.emitStatement`. * @param ctx the parse tree @@ -825,7 +761,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitEmitStatement?: (ctx: EmitStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.revertStatement`. * @param ctx the parse tree @@ -836,7 +771,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitRevertStatement?: (ctx: RevertStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.variableDeclarationStatement`. * @param ctx the parse tree @@ -847,7 +781,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitVariableDeclarationStatement?: (ctx: VariableDeclarationStatementContext) => void; - /** * Enter a parse tree produced by `SolidityParser.variableDeclarationList`. * @param ctx the parse tree @@ -858,7 +791,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitVariableDeclarationList?: (ctx: VariableDeclarationListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.identifierList`. * @param ctx the parse tree @@ -869,7 +801,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitIdentifierList?: (ctx: IdentifierListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.elementaryTypeName`. * @param ctx the parse tree @@ -880,7 +811,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitElementaryTypeName?: (ctx: ElementaryTypeNameContext) => void; - /** * Enter a parse tree produced by `SolidityParser.expression`. * @param ctx the parse tree @@ -891,7 +821,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitExpression?: (ctx: ExpressionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.primaryExpression`. * @param ctx the parse tree @@ -902,7 +831,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitPrimaryExpression?: (ctx: PrimaryExpressionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.expressionList`. * @param ctx the parse tree @@ -913,7 +841,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitExpressionList?: (ctx: ExpressionListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.nameValueList`. * @param ctx the parse tree @@ -924,7 +851,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitNameValueList?: (ctx: NameValueListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.nameValue`. * @param ctx the parse tree @@ -935,7 +861,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitNameValue?: (ctx: NameValueContext) => void; - /** * Enter a parse tree produced by `SolidityParser.functionCallArguments`. * @param ctx the parse tree @@ -946,7 +871,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitFunctionCallArguments?: (ctx: FunctionCallArgumentsContext) => void; - /** * Enter a parse tree produced by `SolidityParser.functionCall`. * @param ctx the parse tree @@ -957,7 +881,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitFunctionCall?: (ctx: FunctionCallContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyBlock`. * @param ctx the parse tree @@ -968,7 +891,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyBlock?: (ctx: AssemblyBlockContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyItem`. * @param ctx the parse tree @@ -979,7 +901,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyItem?: (ctx: AssemblyItemContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyExpression`. * @param ctx the parse tree @@ -990,7 +911,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyExpression?: (ctx: AssemblyExpressionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyMember`. * @param ctx the parse tree @@ -1001,7 +921,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyMember?: (ctx: AssemblyMemberContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyCall`. * @param ctx the parse tree @@ -1012,7 +931,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyCall?: (ctx: AssemblyCallContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyLocalDefinition`. * @param ctx the parse tree @@ -1023,7 +941,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyLocalDefinition?: (ctx: AssemblyLocalDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyAssignment`. * @param ctx the parse tree @@ -1034,7 +951,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyAssignment?: (ctx: AssemblyAssignmentContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyIdentifierOrList`. * @param ctx the parse tree @@ -1045,7 +961,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyIdentifierOrList?: (ctx: AssemblyIdentifierOrListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyIdentifierList`. * @param ctx the parse tree @@ -1056,7 +971,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyIdentifierList?: (ctx: AssemblyIdentifierListContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyStackAssignment`. * @param ctx the parse tree @@ -1067,7 +981,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyStackAssignment?: (ctx: AssemblyStackAssignmentContext) => void; - /** * Enter a parse tree produced by `SolidityParser.labelDefinition`. * @param ctx the parse tree @@ -1078,7 +991,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitLabelDefinition?: (ctx: LabelDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblySwitch`. * @param ctx the parse tree @@ -1089,7 +1001,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblySwitch?: (ctx: AssemblySwitchContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyCase`. * @param ctx the parse tree @@ -1100,7 +1011,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyCase?: (ctx: AssemblyCaseContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyFunctionDefinition`. * @param ctx the parse tree @@ -1111,7 +1021,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyFunctionDefinition?: (ctx: AssemblyFunctionDefinitionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyFunctionReturns`. * @param ctx the parse tree @@ -1122,7 +1031,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyFunctionReturns?: (ctx: AssemblyFunctionReturnsContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyFor`. * @param ctx the parse tree @@ -1133,7 +1041,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyFor?: (ctx: AssemblyForContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyIf`. * @param ctx the parse tree @@ -1144,7 +1051,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyIf?: (ctx: AssemblyIfContext) => void; - /** * Enter a parse tree produced by `SolidityParser.assemblyLiteral`. * @param ctx the parse tree @@ -1155,7 +1061,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitAssemblyLiteral?: (ctx: AssemblyLiteralContext) => void; - /** * Enter a parse tree produced by `SolidityParser.tupleExpression`. * @param ctx the parse tree @@ -1166,7 +1071,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitTupleExpression?: (ctx: TupleExpressionContext) => void; - /** * Enter a parse tree produced by `SolidityParser.numberLiteral`. * @param ctx the parse tree @@ -1177,7 +1081,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitNumberLiteral?: (ctx: NumberLiteralContext) => void; - /** * Enter a parse tree produced by `SolidityParser.identifier`. * @param ctx the parse tree @@ -1188,7 +1091,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitIdentifier?: (ctx: IdentifierContext) => void; - /** * Enter a parse tree produced by `SolidityParser.hexLiteral`. * @param ctx the parse tree @@ -1199,7 +1101,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitHexLiteral?: (ctx: HexLiteralContext) => void; - /** * Enter a parse tree produced by `SolidityParser.overrideSpecifier`. * @param ctx the parse tree @@ -1210,7 +1111,6 @@ export interface SolidityListener extends ParseTreeListener { * @param ctx the parse tree */ exitOverrideSpecifier?: (ctx: OverrideSpecifierContext) => void; - /** * Enter a parse tree produced by `SolidityParser.stringLiteral`. * @param ctx the parse tree diff --git a/src/antlr/SolidityParser.ts b/src/antlr/SolidityParser.ts index dd1ee97..594ae1c 100644 --- a/src/antlr/SolidityParser.ts +++ b/src/antlr/SolidityParser.ts @@ -1,33 +1,24 @@ -// Generated from antlr/Solidity.g4 by ANTLR 4.9.0-SNAPSHOT - - -import { ATN } from "antlr4ts/atn/ATN"; -import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; -import { FailedPredicateException } from "antlr4ts/FailedPredicateException"; -import { NotNull } from "antlr4ts/Decorators"; -import { NoViableAltException } from "antlr4ts/NoViableAltException"; -import { Override } from "antlr4ts/Decorators"; -import { Parser } from "antlr4ts/Parser"; -import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; -import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator"; -import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; -import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor"; -import { RecognitionException } from "antlr4ts/RecognitionException"; -import { RuleContext } from "antlr4ts/RuleContext"; -//import { RuleVersion } from "antlr4ts/RuleVersion"; -import { TerminalNode } from "antlr4ts/tree/TerminalNode"; -import { Token } from "antlr4ts/Token"; -import { TokenStream } from "antlr4ts/TokenStream"; -import { Vocabulary } from "antlr4ts/Vocabulary"; -import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; - -import * as Utils from "antlr4ts/misc/Utils"; - -import { SolidityListener } from "./SolidityListener"; -import { SolidityVisitor } from "./SolidityVisitor"; - - -export class SolidityParser extends Parser { +// Generated from antlr/Solidity.g4 by ANTLR 4.13.1 +// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols + +import { + ATN, + ATNDeserializer, DecisionState, DFA, FailedPredicateException, + RecognitionException, NoViableAltException, BailErrorStrategy, + Parser, ParserATNSimulator, + RuleContext, ParserRuleContext, PredictionMode, PredictionContextCache, + TerminalNode, RuleNode, + Token, TokenStream, + Interval, IntervalSet +} from 'antlr4'; +import SolidityListener from "./SolidityListener.js"; +import SolidityVisitor from "./SolidityVisitor.js"; + +// for running tests with parameters, TODO: discuss strategy for typed parameters in CI +// eslint-disable-next-line no-unused-vars +type int = number; + +export default class SolidityParser extends Parser { public static readonly T__0 = 1; public static readonly T__1 = 2; public static readonly T__2 = 3; @@ -161,6 +152,7 @@ export class SolidityParser extends Parser { public static readonly WS = 131; public static readonly COMMENT = 132; public static readonly LINE_COMMENT = 133; + public static readonly EOF = Token.EOF; public static readonly RULE_sourceUnit = 0; public static readonly RULE_pragmaDirective = 1; public static readonly RULE_pragmaName = 2; @@ -262,6 +254,165 @@ export class SolidityParser extends Parser { public static readonly RULE_hexLiteral = 98; public static readonly RULE_overrideSpecifier = 99; public static readonly RULE_stringLiteral = 100; + public static readonly literalNames: (string | null)[] = [ null, "'pragma'", + "';'", "'*'", + "'||'", "'^'", + "'~'", "'>='", + "'>'", "'<'", + "'<='", "'='", + "'as'", "'import'", + "'from'", "'{'", + "','", "'}'", + "'abstract'", + "'contract'", + "'interface'", + "'library'", + "'is'", "'('", + "')'", "'error'", + "'using'", "'for'", + "'|'", "'&'", + "'+'", "'-'", + "'/'", "'%'", + "'=='", "'!='", + "'struct'", + "'modifier'", + "'function'", + "'returns'", + "'event'", "'enum'", + "'['", "']'", + "'address'", + "'.'", "'mapping'", + "'=>'", "'memory'", + "'storage'", + "'calldata'", + "'if'", "'else'", + "'try'", "'catch'", + "'while'", "'unchecked'", + "'assembly'", + "'do'", "'return'", + "'throw'", "'emit'", + "'revert'", + "'var'", "'bool'", + "'string'", + "'byte'", "'++'", + "'--'", "'new'", + "':'", "'delete'", + "'!'", "'**'", + "'<<'", "'>>'", + "'&&'", "'?'", + "'|='", "'^='", + "'&='", "'<<='", + "'>>='", "'+='", + "'-='", "'*='", + "'/='", "'%='", + "'let'", "':='", + "'=:'", "'switch'", + "'case'", "'default'", + "'->'", "'callback'", + "'override'", + null, null, + null, null, + null, null, + null, null, + null, null, + null, "'anonymous'", + "'break'", "'constant'", + "'immutable'", + "'continue'", + "'leave'", "'external'", + "'indexed'", + "'internal'", + "'payable'", + "'private'", + "'public'", + "'virtual'", + "'pure'", "'type'", + "'view'", "'global'", + "'constructor'", + "'fallback'", + "'receive'" ]; + public static readonly symbolicNames: (string | 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, 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, "Int", + "Uint", "Byte", + "Fixed", "Ufixed", + "BooleanLiteral", + "DecimalNumber", + "HexNumber", + "NumberUnit", + "HexLiteralFragment", + "ReservedKeyword", + "AnonymousKeyword", + "BreakKeyword", + "ConstantKeyword", + "ImmutableKeyword", + "ContinueKeyword", + "LeaveKeyword", + "ExternalKeyword", + "IndexedKeyword", + "InternalKeyword", + "PayableKeyword", + "PrivateKeyword", + "PublicKeyword", + "VirtualKeyword", + "PureKeyword", + "TypeKeyword", + "ViewKeyword", + "GlobalKeyword", + "ConstructorKeyword", + "FallbackKeyword", + "ReceiveKeyword", + "Identifier", + "StringLiteralFragment", + "VersionLiteral", + "WS", "COMMENT", + "LINE_COMMENT" ]; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ "sourceUnit", "pragmaDirective", "pragmaName", "pragmaValue", "version", @@ -290,68 +441,11 @@ export class SolidityParser extends Parser { "tupleExpression", "numberLiteral", "identifier", "hexLiteral", "overrideSpecifier", "stringLiteral", ]; - - private static readonly _LITERAL_NAMES: Array = [ - undefined, "'pragma'", "';'", "'*'", "'||'", "'^'", "'~'", "'>='", "'>'", - "'<'", "'<='", "'='", "'as'", "'import'", "'from'", "'{'", "','", "'}'", - "'abstract'", "'contract'", "'interface'", "'library'", "'is'", "'('", - "')'", "'error'", "'using'", "'for'", "'|'", "'&'", "'+'", "'-'", "'/'", - "'%'", "'=='", "'!='", "'struct'", "'modifier'", "'function'", "'returns'", - "'event'", "'enum'", "'['", "']'", "'address'", "'.'", "'mapping'", "'=>'", - "'memory'", "'storage'", "'calldata'", "'if'", "'else'", "'try'", "'catch'", - "'while'", "'unchecked'", "'assembly'", "'do'", "'return'", "'throw'", - "'emit'", "'revert'", "'var'", "'bool'", "'string'", "'byte'", "'++'", - "'--'", "'new'", "':'", "'delete'", "'!'", "'**'", "'<<'", "'>>'", "'&&'", - "'?'", "'|='", "'^='", "'&='", "'<<='", "'>>='", "'+='", "'-='", "'*='", - "'/='", "'%='", "'let'", "':='", "'=:'", "'switch'", "'case'", "'default'", - "'->'", "'callback'", "'override'", undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - "'anonymous'", "'break'", "'constant'", "'immutable'", "'continue'", "'leave'", - "'external'", "'indexed'", "'internal'", "'payable'", "'private'", "'public'", - "'virtual'", "'pure'", "'type'", "'view'", "'global'", "'constructor'", - "'fallback'", "'receive'", - ]; - private static readonly _SYMBOLIC_NAMES: Array = [ - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, "Int", - "Uint", "Byte", "Fixed", "Ufixed", "BooleanLiteral", "DecimalNumber", - "HexNumber", "NumberUnit", "HexLiteralFragment", "ReservedKeyword", "AnonymousKeyword", - "BreakKeyword", "ConstantKeyword", "ImmutableKeyword", "ContinueKeyword", - "LeaveKeyword", "ExternalKeyword", "IndexedKeyword", "InternalKeyword", - "PayableKeyword", "PrivateKeyword", "PublicKeyword", "VirtualKeyword", - "PureKeyword", "TypeKeyword", "ViewKeyword", "GlobalKeyword", "ConstructorKeyword", - "FallbackKeyword", "ReceiveKeyword", "Identifier", "StringLiteralFragment", - "VersionLiteral", "WS", "COMMENT", "LINE_COMMENT", - ]; - public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(SolidityParser._LITERAL_NAMES, SolidityParser._SYMBOLIC_NAMES, []); - - // @Override - // @NotNull - public get vocabulary(): Vocabulary { - return SolidityParser.VOCABULARY; - } - // tslint:enable:no-trailing-whitespace - - // @Override public get grammarFileName(): string { return "Solidity.g4"; } - - // @Override + public get literalNames(): (string | null)[] { return SolidityParser.literalNames; } + public get symbolicNames(): (string | null)[] { return SolidityParser.symbolicNames; } public get ruleNames(): string[] { return SolidityParser.ruleNames; } - - // @Override - public get serializedATN(): string { return SolidityParser._serializedATN; } + public get serializedATN(): number[] { return SolidityParser._serializedATN; } protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException { return new FailedPredicateException(this, predicate, message); @@ -359,94 +453,84 @@ export class SolidityParser extends Parser { constructor(input: TokenStream) { super(input); - this._interp = new ParserATNSimulator(SolidityParser._ATN, this); + this._interp = new ParserATNSimulator(this, SolidityParser._ATN, SolidityParser.DecisionsToDFA, new PredictionContextCache()); } // @RuleVersion(0) public sourceUnit(): SourceUnitContext { - let _localctx: SourceUnitContext = new SourceUnitContext(this._ctx, this.state); - this.enterRule(_localctx, 0, SolidityParser.RULE_sourceUnit); + let localctx: SourceUnitContext = new SourceUnitContext(this, this._ctx, this.state); + this.enterRule(localctx, 0, SolidityParser.RULE_sourceUnit); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 215; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__0) | (1 << SolidityParser.T__12) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__17) | (1 << SolidityParser.T__18) | (1 << SolidityParser.T__19) | (1 << SolidityParser.T__20) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__25))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__39 - 36)) | (1 << (SolidityParser.T__40 - 36)) | (1 << (SolidityParser.T__43 - 36)) | (1 << (SolidityParser.T__45 - 36)) | (1 << (SolidityParser.T__49 - 36)) | (1 << (SolidityParser.T__61 - 36)) | (1 << (SolidityParser.T__62 - 36)) | (1 << (SolidityParser.T__63 - 36)) | (1 << (SolidityParser.T__64 - 36)) | (1 << (SolidityParser.T__65 - 36)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.TypeKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)) | (1 << (SolidityParser.FallbackKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 104620034) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 2080392501) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3896770685) !== 0) || _la===127 || _la===128) { { this.state = 213; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 0, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 0, this._ctx) ) { case 1: { this.state = 202; this.pragmaDirective(); } break; - case 2: { this.state = 203; this.importDirective(); } break; - case 3: { this.state = 204; this.contractDefinition(); } break; - case 4: { this.state = 205; this.enumDefinition(); } break; - case 5: { this.state = 206; this.eventDefinition(); } break; - case 6: { this.state = 207; this.structDefinition(); } break; - case 7: { this.state = 208; this.functionDefinition(); } break; - case 8: { this.state = 209; this.fileLevelConstant(); } break; - case 9: { this.state = 210; this.customErrorDefinition(); } break; - case 10: { this.state = 211; this.typeDefinition(); } break; - case 11: { this.state = 212; @@ -465,7 +549,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -475,14 +559,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public pragmaDirective(): PragmaDirectiveContext { - let _localctx: PragmaDirectiveContext = new PragmaDirectiveContext(this._ctx, this.state); - this.enterRule(_localctx, 2, SolidityParser.RULE_pragmaDirective); + let localctx: PragmaDirectiveContext = new PragmaDirectiveContext(this, this._ctx, this.state); + this.enterRule(localctx, 2, SolidityParser.RULE_pragmaDirective); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 220; this.match(SolidityParser.T__0); @@ -496,7 +580,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -506,14 +590,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public pragmaName(): PragmaNameContext { - let _localctx: PragmaNameContext = new PragmaNameContext(this._ctx, this.state); - this.enterRule(_localctx, 4, SolidityParser.RULE_pragmaName); + let localctx: PragmaNameContext = new PragmaNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 4, SolidityParser.RULE_pragmaName); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 225; this.identifier(); @@ -521,7 +605,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -531,34 +615,32 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public pragmaValue(): PragmaValueContext { - let _localctx: PragmaValueContext = new PragmaValueContext(this._ctx, this.state); - this.enterRule(_localctx, 6, SolidityParser.RULE_pragmaValue); + let localctx: PragmaValueContext = new PragmaValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 6, SolidityParser.RULE_pragmaValue); try { this.state = 230; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 2, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 2, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 227; this.match(SolidityParser.T__2); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 228; this.version(); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 229; this.expression(0); @@ -568,7 +650,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -578,28 +660,28 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public version(): VersionContext { - let _localctx: VersionContext = new VersionContext(this._ctx, this.state); - this.enterRule(_localctx, 8, SolidityParser.RULE_version); + let localctx: VersionContext = new VersionContext(this, this._ctx, this.state); + this.enterRule(localctx, 8, SolidityParser.RULE_version); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 232; this.versionConstraint(); this.state = 239; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__3) | (1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0) || _la === SolidityParser.DecimalNumber || _la === SolidityParser.VersionLiteral) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4080) !== 0) || _la===103 || _la===130) { { { this.state = 234; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__3) { + if (_la===4) { { this.state = 233; this.match(SolidityParser.T__3); @@ -618,7 +700,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -628,33 +710,30 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public versionOperator(): VersionOperatorContext { - let _localctx: VersionOperatorContext = new VersionOperatorContext(this._ctx, this.state); - this.enterRule(_localctx, 10, SolidityParser.RULE_versionOperator); + let localctx: VersionOperatorContext = new VersionOperatorContext(this, this._ctx, this.state); + this.enterRule(localctx, 10, SolidityParser.RULE_versionOperator); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 242; _la = this._input.LA(1); - if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 4064) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -664,24 +743,24 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public versionConstraint(): VersionConstraintContext { - let _localctx: VersionConstraintContext = new VersionConstraintContext(this._ctx, this.state); - this.enterRule(_localctx, 12, SolidityParser.RULE_versionConstraint); + let localctx: VersionConstraintContext = new VersionConstraintContext(this, this._ctx, this.state); + this.enterRule(localctx, 12, SolidityParser.RULE_versionConstraint); let _la: number; try { this.state = 252; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 245; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4064) !== 0)) { { this.state = 244; this.versionOperator(); @@ -692,14 +771,13 @@ export class SolidityParser extends Parser { this.match(SolidityParser.VersionLiteral); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 249; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__10))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4064) !== 0)) { { this.state = 248; this.versionOperator(); @@ -714,7 +792,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -724,22 +802,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public importDeclaration(): ImportDeclarationContext { - let _localctx: ImportDeclarationContext = new ImportDeclarationContext(this._ctx, this.state); - this.enterRule(_localctx, 14, SolidityParser.RULE_importDeclaration); + let localctx: ImportDeclarationContext = new ImportDeclarationContext(this, this._ctx, this.state); + this.enterRule(localctx, 14, SolidityParser.RULE_importDeclaration); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 254; this.identifier(); this.state = 257; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__11) { + if (_la===12) { { this.state = 255; this.match(SolidityParser.T__11); @@ -752,7 +830,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -762,19 +840,19 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public importDirective(): ImportDirectiveContext { - let _localctx: ImportDirectiveContext = new ImportDirectiveContext(this._ctx, this.state); - this.enterRule(_localctx, 16, SolidityParser.RULE_importDirective); + let localctx: ImportDirectiveContext = new ImportDirectiveContext(this, this._ctx, this.state); + this.enterRule(localctx, 16, SolidityParser.RULE_importDirective); let _la: number; try { this.state = 295; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 13, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 13, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 259; this.match(SolidityParser.T__12); @@ -783,7 +861,7 @@ export class SolidityParser extends Parser { this.state = 263; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__11) { + if (_la===12) { { this.state = 261; this.match(SolidityParser.T__11); @@ -796,33 +874,32 @@ export class SolidityParser extends Parser { this.match(SolidityParser.T__1); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 267; this.match(SolidityParser.T__12); this.state = 270; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__2: + case 3: { this.state = 268; this.match(SolidityParser.T__2); } break; - case SolidityParser.T__13: - case SolidityParser.T__24: - case SolidityParser.T__43: - case SolidityParser.T__49: - case SolidityParser.T__61: - case SolidityParser.T__94: - case SolidityParser.LeaveKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.GlobalKeyword: - case SolidityParser.ConstructorKeyword: - case SolidityParser.ReceiveKeyword: - case SolidityParser.Identifier: + case 14: + case 25: + case 44: + case 50: + case 62: + case 95: + case 113: + case 117: + case 124: + case 125: + case 127: + case 128: { this.state = 269; this.identifier(); @@ -834,7 +911,7 @@ export class SolidityParser extends Parser { this.state = 274; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__11) { + if (_la===12) { { this.state = 272; this.match(SolidityParser.T__11); @@ -851,9 +928,8 @@ export class SolidityParser extends Parser { this.match(SolidityParser.T__1); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 280; this.match(SolidityParser.T__12); @@ -864,7 +940,7 @@ export class SolidityParser extends Parser { this.state = 287; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 283; @@ -891,7 +967,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -901,14 +977,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public importPath(): ImportPathContext { - let _localctx: ImportPathContext = new ImportPathContext(this._ctx, this.state); - this.enterRule(_localctx, 18, SolidityParser.RULE_importPath); + let localctx: ImportPathContext = new ImportPathContext(this, this._ctx, this.state); + this.enterRule(localctx, 18, SolidityParser.RULE_importPath); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 297; this.match(SolidityParser.StringLiteralFragment); @@ -916,7 +992,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -926,20 +1002,20 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public contractDefinition(): ContractDefinitionContext { - let _localctx: ContractDefinitionContext = new ContractDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 20, SolidityParser.RULE_contractDefinition); + let localctx: ContractDefinitionContext = new ContractDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 20, SolidityParser.RULE_contractDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 300; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__17) { + if (_la===18) { { this.state = 299; this.match(SolidityParser.T__17); @@ -948,22 +1024,19 @@ export class SolidityParser extends Parser { this.state = 302; _la = this._input.LA(1); - if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__18) | (1 << SolidityParser.T__19) | (1 << SolidityParser.T__20))) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3670016) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 303; this.identifier(); this.state = 313; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__21) { + if (_la===22) { { this.state = 304; this.match(SolidityParser.T__21); @@ -972,7 +1045,7 @@ export class SolidityParser extends Parser { this.state = 310; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 306; @@ -993,7 +1066,7 @@ export class SolidityParser extends Parser { this.state = 319; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__25))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (SolidityParser.T__35 - 36)) | (1 << (SolidityParser.T__36 - 36)) | (1 << (SolidityParser.T__37 - 36)) | (1 << (SolidityParser.T__39 - 36)) | (1 << (SolidityParser.T__40 - 36)) | (1 << (SolidityParser.T__43 - 36)) | (1 << (SolidityParser.T__45 - 36)) | (1 << (SolidityParser.T__49 - 36)) | (1 << (SolidityParser.T__61 - 36)) | (1 << (SolidityParser.T__62 - 36)) | (1 << (SolidityParser.T__63 - 36)) | (1 << (SolidityParser.T__64 - 36)) | (1 << (SolidityParser.T__65 - 36)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.TypeKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)) | (1 << (SolidityParser.FallbackKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 100679680) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 2080392503) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 3896770685) !== 0) || _la===127 || _la===128) { { { this.state = 316; @@ -1010,7 +1083,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1020,29 +1093,29 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public inheritanceSpecifier(): InheritanceSpecifierContext { - let _localctx: InheritanceSpecifierContext = new InheritanceSpecifierContext(this._ctx, this.state); - this.enterRule(_localctx, 22, SolidityParser.RULE_inheritanceSpecifier); + let localctx: InheritanceSpecifierContext = new InheritanceSpecifierContext(this, this._ctx, this.state); + this.enterRule(localctx, 22, SolidityParser.RULE_inheritanceSpecifier); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 324; this.userDefinedTypeName(); this.state = 330; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__22) { + if (_la===23) { { this.state = 325; this.match(SolidityParser.T__22); this.state = 327; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 326; this.expressionList(); @@ -1058,7 +1131,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1068,82 +1141,74 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public contractPart(): ContractPartContext { - let _localctx: ContractPartContext = new ContractPartContext(this._ctx, this.state); - this.enterRule(_localctx, 24, SolidityParser.RULE_contractPart); + let localctx: ContractPartContext = new ContractPartContext(this, this._ctx, this.state); + this.enterRule(localctx, 24, SolidityParser.RULE_contractPart); try { this.state = 341; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 20, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 20, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 332; this.stateVariableDeclaration(); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 333; this.usingForDeclaration(); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 334; this.structDefinition(); } break; - case 4: - this.enterOuterAlt(_localctx, 4); + this.enterOuterAlt(localctx, 4); { this.state = 335; this.modifierDefinition(); } break; - case 5: - this.enterOuterAlt(_localctx, 5); + this.enterOuterAlt(localctx, 5); { this.state = 336; this.functionDefinition(); } break; - case 6: - this.enterOuterAlt(_localctx, 6); + this.enterOuterAlt(localctx, 6); { this.state = 337; this.eventDefinition(); } break; - case 7: - this.enterOuterAlt(_localctx, 7); + this.enterOuterAlt(localctx, 7); { this.state = 338; this.enumDefinition(); } break; - case 8: - this.enterOuterAlt(_localctx, 8); + this.enterOuterAlt(localctx, 8); { this.state = 339; this.customErrorDefinition(); } break; - case 9: - this.enterOuterAlt(_localctx, 9); + this.enterOuterAlt(localctx, 9); { this.state = 340; this.typeDefinition(); @@ -1153,7 +1218,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1163,57 +1228,57 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public stateVariableDeclaration(): StateVariableDeclarationContext { - let _localctx: StateVariableDeclarationContext = new StateVariableDeclarationContext(this._ctx, this.state); - this.enterRule(_localctx, 26, SolidityParser.RULE_stateVariableDeclaration); + let localctx: StateVariableDeclarationContext = new StateVariableDeclarationContext(this, this._ctx, this.state); + this.enterRule(localctx, 26, SolidityParser.RULE_stateVariableDeclaration); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 343; this.typeName(0); this.state = 352; this._errHandler.sync(this); _la = this._input.LA(1); - while (((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (SolidityParser.T__95 - 96)) | (1 << (SolidityParser.ConstantKeyword - 96)) | (1 << (SolidityParser.ImmutableKeyword - 96)) | (1 << (SolidityParser.InternalKeyword - 96)) | (1 << (SolidityParser.PrivateKeyword - 96)) | (1 << (SolidityParser.PublicKeyword - 96)))) !== 0)) { + while (((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 13680641) !== 0)) { { this.state = 350; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.PublicKeyword: + case 119: { this.state = 344; this.match(SolidityParser.PublicKeyword); } break; - case SolidityParser.InternalKeyword: + case 116: { this.state = 345; this.match(SolidityParser.InternalKeyword); } break; - case SolidityParser.PrivateKeyword: + case 118: { this.state = 346; this.match(SolidityParser.PrivateKeyword); } break; - case SolidityParser.ConstantKeyword: + case 110: { this.state = 347; this.match(SolidityParser.ConstantKeyword); } break; - case SolidityParser.ImmutableKeyword: + case 111: { this.state = 348; this.match(SolidityParser.ImmutableKeyword); } break; - case SolidityParser.T__95: + case 96: { this.state = 349; this.overrideSpecifier(); @@ -1232,7 +1297,7 @@ export class SolidityParser extends Parser { this.state = 358; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__10) { + if (_la===11) { { this.state = 356; this.match(SolidityParser.T__10); @@ -1247,7 +1312,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1257,14 +1322,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public fileLevelConstant(): FileLevelConstantContext { - let _localctx: FileLevelConstantContext = new FileLevelConstantContext(this._ctx, this.state); - this.enterRule(_localctx, 28, SolidityParser.RULE_fileLevelConstant); + let localctx: FileLevelConstantContext = new FileLevelConstantContext(this, this._ctx, this.state); + this.enterRule(localctx, 28, SolidityParser.RULE_fileLevelConstant); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 362; this.typeName(0); @@ -1282,7 +1347,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1292,14 +1357,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public customErrorDefinition(): CustomErrorDefinitionContext { - let _localctx: CustomErrorDefinitionContext = new CustomErrorDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 30, SolidityParser.RULE_customErrorDefinition); + let localctx: CustomErrorDefinitionContext = new CustomErrorDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 30, SolidityParser.RULE_customErrorDefinition); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 369; this.match(SolidityParser.T__24); @@ -1313,7 +1378,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1323,14 +1388,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public typeDefinition(): TypeDefinitionContext { - let _localctx: TypeDefinitionContext = new TypeDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 32, SolidityParser.RULE_typeDefinition); + let localctx: TypeDefinitionContext = new TypeDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 32, SolidityParser.RULE_typeDefinition); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 374; this.match(SolidityParser.TypeKeyword); @@ -1346,7 +1411,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1356,15 +1421,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public usingForDeclaration(): UsingForDeclarationContext { - let _localctx: UsingForDeclarationContext = new UsingForDeclarationContext(this._ctx, this.state); - this.enterRule(_localctx, 34, SolidityParser.RULE_usingForDeclaration); + let localctx: UsingForDeclarationContext = new UsingForDeclarationContext(this, this._ctx, this.state); + this.enterRule(localctx, 34, SolidityParser.RULE_usingForDeclaration); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 380; this.match(SolidityParser.T__25); @@ -1375,35 +1440,35 @@ export class SolidityParser extends Parser { this.state = 385; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__2: + case 3: { this.state = 383; this.match(SolidityParser.T__2); } break; - case SolidityParser.T__13: - case SolidityParser.T__24: - case SolidityParser.T__37: - case SolidityParser.T__43: - case SolidityParser.T__45: - case SolidityParser.T__49: - case SolidityParser.T__61: - case SolidityParser.T__62: - case SolidityParser.T__63: - case SolidityParser.T__64: - case SolidityParser.T__65: - case SolidityParser.T__94: - case SolidityParser.Int: - case SolidityParser.Uint: - case SolidityParser.Byte: - case SolidityParser.Fixed: - case SolidityParser.Ufixed: - case SolidityParser.LeaveKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.GlobalKeyword: - case SolidityParser.ConstructorKeyword: - case SolidityParser.ReceiveKeyword: - case SolidityParser.Identifier: + case 14: + case 25: + case 38: + case 44: + case 46: + case 50: + case 62: + case 63: + case 64: + case 65: + case 66: + case 95: + case 97: + case 98: + case 99: + case 100: + case 101: + case 113: + case 117: + case 124: + case 125: + case 127: + case 128: { this.state = 384; this.typeName(0); @@ -1415,7 +1480,7 @@ export class SolidityParser extends Parser { this.state = 388; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.GlobalKeyword) { + if (_la===124) { { this.state = 387; this.match(SolidityParser.GlobalKeyword); @@ -1428,7 +1493,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1438,37 +1503,37 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public usingForObject(): UsingForObjectContext { - let _localctx: UsingForObjectContext = new UsingForObjectContext(this._ctx, this.state); - this.enterRule(_localctx, 36, SolidityParser.RULE_usingForObject); + let localctx: UsingForObjectContext = new UsingForObjectContext(this, this._ctx, this.state); + this.enterRule(localctx, 36, SolidityParser.RULE_usingForObject); let _la: number; try { this.state = 404; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__13: - case SolidityParser.T__24: - case SolidityParser.T__43: - case SolidityParser.T__49: - case SolidityParser.T__61: - case SolidityParser.T__94: - case SolidityParser.LeaveKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.GlobalKeyword: - case SolidityParser.ConstructorKeyword: - case SolidityParser.ReceiveKeyword: - case SolidityParser.Identifier: - this.enterOuterAlt(_localctx, 1); + case 14: + case 25: + case 44: + case 50: + case 62: + case 95: + case 113: + case 117: + case 124: + case 125: + case 127: + case 128: + this.enterOuterAlt(localctx, 1); { this.state = 392; this.userDefinedTypeName(); } break; - case SolidityParser.T__14: - this.enterOuterAlt(_localctx, 2); + case 15: + this.enterOuterAlt(localctx, 2); { this.state = 393; this.match(SolidityParser.T__14); @@ -1477,7 +1542,7 @@ export class SolidityParser extends Parser { this.state = 399; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 395; @@ -1500,7 +1565,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1510,22 +1575,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public usingForObjectDirective(): UsingForObjectDirectiveContext { - let _localctx: UsingForObjectDirectiveContext = new UsingForObjectDirectiveContext(this._ctx, this.state); - this.enterRule(_localctx, 38, SolidityParser.RULE_usingForObjectDirective); + let localctx: UsingForObjectDirectiveContext = new UsingForObjectDirectiveContext(this, this._ctx, this.state); + this.enterRule(localctx, 38, SolidityParser.RULE_usingForObjectDirective); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 406; this.userDefinedTypeName(); this.state = 409; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__11) { + if (_la===12) { { this.state = 407; this.match(SolidityParser.T__11); @@ -1538,7 +1603,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1548,33 +1613,30 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public userDefinableOperators(): UserDefinableOperatorsContext { - let _localctx: UserDefinableOperatorsContext = new UserDefinableOperatorsContext(this._ctx, this.state); - this.enterRule(_localctx, 40, SolidityParser.RULE_userDefinableOperators); + let localctx: UserDefinableOperatorsContext = new UserDefinableOperatorsContext(this, this._ctx, this.state); + this.enterRule(localctx, 40, SolidityParser.RULE_userDefinableOperators); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 411; _la = this._input.LA(1); - if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__2) | (1 << SolidityParser.T__4) | (1 << SolidityParser.T__5) | (1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9) | (1 << SolidityParser.T__27) | (1 << SolidityParser.T__28) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (SolidityParser.T__31 - 32)) | (1 << (SolidityParser.T__32 - 32)) | (1 << (SolidityParser.T__33 - 32)) | (1 << (SolidityParser.T__34 - 32)))) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 4026533864) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 15) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1584,15 +1646,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public structDefinition(): StructDefinitionContext { - let _localctx: StructDefinitionContext = new StructDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 42, SolidityParser.RULE_structDefinition); + let localctx: StructDefinitionContext = new StructDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 42, SolidityParser.RULE_structDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 413; this.match(SolidityParser.T__35); @@ -1603,7 +1665,7 @@ export class SolidityParser extends Parser { this.state = 426; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { { this.state = 416; this.variableDeclaration(); @@ -1612,7 +1674,7 @@ export class SolidityParser extends Parser { this.state = 423; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + while (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { { { this.state = 418; @@ -1634,7 +1696,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1644,15 +1706,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public modifierDefinition(): ModifierDefinitionContext { - let _localctx: ModifierDefinitionContext = new ModifierDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 44, SolidityParser.RULE_modifierDefinition); + let localctx: ModifierDefinitionContext = new ModifierDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 44, SolidityParser.RULE_modifierDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 430; this.match(SolidityParser.T__36); @@ -1661,7 +1723,7 @@ export class SolidityParser extends Parser { this.state = 433; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__22) { + if (_la===23) { { this.state = 432; this.parameterList(); @@ -1671,18 +1733,18 @@ export class SolidityParser extends Parser { this.state = 439; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__95 || _la === SolidityParser.VirtualKeyword) { + while (_la===96 || _la===120) { { this.state = 437; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.VirtualKeyword: + case 120: { this.state = 435; this.match(SolidityParser.VirtualKeyword); } break; - case SolidityParser.T__95: + case 96: { this.state = 436; this.overrideSpecifier(); @@ -1699,13 +1761,13 @@ export class SolidityParser extends Parser { this.state = 444; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__1: + case 2: { this.state = 442; this.match(SolidityParser.T__1); } break; - case SolidityParser.T__14: + case 15: { this.state = 443; this.block(); @@ -1718,7 +1780,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1728,29 +1790,29 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public modifierInvocation(): ModifierInvocationContext { - let _localctx: ModifierInvocationContext = new ModifierInvocationContext(this._ctx, this.state); - this.enterRule(_localctx, 46, SolidityParser.RULE_modifierInvocation); + let localctx: ModifierInvocationContext = new ModifierInvocationContext(this, this._ctx, this.state); + this.enterRule(localctx, 46, SolidityParser.RULE_modifierInvocation); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 446; this.identifier(); this.state = 452; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__22) { + if (_la===23) { { this.state = 447; this.match(SolidityParser.T__22); this.state = 449; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 448; this.expressionList(); @@ -1766,7 +1828,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1776,15 +1838,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionDefinition(): FunctionDefinitionContext { - let _localctx: FunctionDefinitionContext = new FunctionDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 48, SolidityParser.RULE_functionDefinition); + let localctx: FunctionDefinitionContext = new FunctionDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 48, SolidityParser.RULE_functionDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 454; this.functionDescriptor(); @@ -1795,7 +1857,7 @@ export class SolidityParser extends Parser { this.state = 458; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__38) { + if (_la===39) { { this.state = 457; this.returnParameters(); @@ -1805,13 +1867,13 @@ export class SolidityParser extends Parser { this.state = 462; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__1: + case 2: { this.state = 460; this.match(SolidityParser.T__1); } break; - case SolidityParser.T__14: + case 15: { this.state = 461; this.block(); @@ -1824,7 +1886,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1834,26 +1896,26 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionDescriptor(): FunctionDescriptorContext { - let _localctx: FunctionDescriptorContext = new FunctionDescriptorContext(this._ctx, this.state); - this.enterRule(_localctx, 50, SolidityParser.RULE_functionDescriptor); + let localctx: FunctionDescriptorContext = new FunctionDescriptorContext(this, this._ctx, this.state); + this.enterRule(localctx, 50, SolidityParser.RULE_functionDescriptor); let _la: number; try { this.state = 471; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__37: - this.enterOuterAlt(_localctx, 1); + case 38: + this.enterOuterAlt(localctx, 1); { this.state = 464; this.match(SolidityParser.T__37); this.state = 466; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 465; this.identifier(); @@ -1862,22 +1924,22 @@ export class SolidityParser extends Parser { } break; - case SolidityParser.ConstructorKeyword: - this.enterOuterAlt(_localctx, 2); + case 125: + this.enterOuterAlt(localctx, 2); { this.state = 468; this.match(SolidityParser.ConstructorKeyword); } break; - case SolidityParser.FallbackKeyword: - this.enterOuterAlt(_localctx, 3); + case 126: + this.enterOuterAlt(localctx, 3); { this.state = 469; this.match(SolidityParser.FallbackKeyword); } break; - case SolidityParser.ReceiveKeyword: - this.enterOuterAlt(_localctx, 4); + case 127: + this.enterOuterAlt(localctx, 4); { this.state = 470; this.match(SolidityParser.ReceiveKeyword); @@ -1889,7 +1951,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1899,14 +1961,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public returnParameters(): ReturnParametersContext { - let _localctx: ReturnParametersContext = new ReturnParametersContext(this._ctx, this.state); - this.enterRule(_localctx, 52, SolidityParser.RULE_returnParameters); + let localctx: ReturnParametersContext = new ReturnParametersContext(this, this._ctx, this.state); + this.enterRule(localctx, 52, SolidityParser.RULE_returnParameters); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 473; this.match(SolidityParser.T__38); @@ -1916,7 +1978,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1926,73 +1988,66 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public modifierList(): ModifierListContext { - let _localctx: ModifierListContext = new ModifierListContext(this._ctx, this.state); - this.enterRule(_localctx, 54, SolidityParser.RULE_modifierList); + let localctx: ModifierListContext = new ModifierListContext(this, this._ctx, this.state); + this.enterRule(localctx, 54, SolidityParser.RULE_modifierList); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 486; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.T__95 - 95)) | (1 << (SolidityParser.ConstantKeyword - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.ExternalKeyword - 95)) | (1 << (SolidityParser.InternalKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.PrivateKeyword - 95)) | (1 << (SolidityParser.PublicKeyword - 95)) | (1 << (SolidityParser.VirtualKeyword - 95)) | (1 << (SolidityParser.PureKeyword - 95)) | (1 << (SolidityParser.ViewKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + while (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 2011987971) !== 0) || _la===127 || _la===128) { { this.state = 484; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 41, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 41, this._ctx) ) { case 1: { this.state = 476; this.match(SolidityParser.ExternalKeyword); } break; - case 2: { this.state = 477; this.match(SolidityParser.PublicKeyword); } break; - case 3: { this.state = 478; this.match(SolidityParser.InternalKeyword); } break; - case 4: { this.state = 479; this.match(SolidityParser.PrivateKeyword); } break; - case 5: { this.state = 480; this.match(SolidityParser.VirtualKeyword); } break; - case 6: { this.state = 481; this.stateMutability(); } break; - case 7: { this.state = 482; this.modifierInvocation(); } break; - case 8: { this.state = 483; @@ -2009,7 +2064,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2019,15 +2074,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public eventDefinition(): EventDefinitionContext { - let _localctx: EventDefinitionContext = new EventDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 56, SolidityParser.RULE_eventDefinition); + let localctx: EventDefinitionContext = new EventDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 56, SolidityParser.RULE_eventDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 489; this.match(SolidityParser.T__39); @@ -2038,7 +2093,7 @@ export class SolidityParser extends Parser { this.state = 493; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.AnonymousKeyword) { + if (_la===108) { { this.state = 492; this.match(SolidityParser.AnonymousKeyword); @@ -2051,7 +2106,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2061,14 +2116,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public enumValue(): EnumValueContext { - let _localctx: EnumValueContext = new EnumValueContext(this._ctx, this.state); - this.enterRule(_localctx, 58, SolidityParser.RULE_enumValue); + let localctx: EnumValueContext = new EnumValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 58, SolidityParser.RULE_enumValue); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 497; this.identifier(); @@ -2076,7 +2131,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2086,15 +2141,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public enumDefinition(): EnumDefinitionContext { - let _localctx: EnumDefinitionContext = new EnumDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 60, SolidityParser.RULE_enumDefinition); + let localctx: EnumDefinitionContext = new EnumDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 60, SolidityParser.RULE_enumDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 499; this.match(SolidityParser.T__40); @@ -2105,7 +2160,7 @@ export class SolidityParser extends Parser { this.state = 503; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 502; this.enumValue(); @@ -2115,7 +2170,7 @@ export class SolidityParser extends Parser { this.state = 509; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 505; @@ -2134,7 +2189,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2144,29 +2199,29 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public parameterList(): ParameterListContext { - let _localctx: ParameterListContext = new ParameterListContext(this._ctx, this.state); - this.enterRule(_localctx, 62, SolidityParser.RULE_parameterList); + let localctx: ParameterListContext = new ParameterListContext(this, this._ctx, this.state); + this.enterRule(localctx, 62, SolidityParser.RULE_parameterList); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 514; this.match(SolidityParser.T__22); this.state = 523; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { { this.state = 515; this.parameter(); this.state = 520; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 516; @@ -2188,7 +2243,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2198,21 +2253,21 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public parameter(): ParameterContext { - let _localctx: ParameterContext = new ParameterContext(this._ctx, this.state); - this.enterRule(_localctx, 64, SolidityParser.RULE_parameter); + let localctx: ParameterContext = new ParameterContext(this, this._ctx, this.state); + this.enterRule(localctx, 64, SolidityParser.RULE_parameter); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 527; this.typeName(0); this.state = 529; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 48, this._ctx) ) { case 1: { this.state = 528; @@ -2223,7 +2278,7 @@ export class SolidityParser extends Parser { this.state = 532; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 531; this.identifier(); @@ -2234,7 +2289,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2244,29 +2299,29 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public eventParameterList(): EventParameterListContext { - let _localctx: EventParameterListContext = new EventParameterListContext(this._ctx, this.state); - this.enterRule(_localctx, 66, SolidityParser.RULE_eventParameterList); + let localctx: EventParameterListContext = new EventParameterListContext(this, this._ctx, this.state); + this.enterRule(localctx, 66, SolidityParser.RULE_eventParameterList); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 534; this.match(SolidityParser.T__22); this.state = 543; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { { this.state = 535; this.eventParameter(); this.state = 540; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 536; @@ -2288,7 +2343,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2298,22 +2353,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public eventParameter(): EventParameterContext { - let _localctx: EventParameterContext = new EventParameterContext(this._ctx, this.state); - this.enterRule(_localctx, 68, SolidityParser.RULE_eventParameter); + let localctx: EventParameterContext = new EventParameterContext(this, this._ctx, this.state); + this.enterRule(localctx, 68, SolidityParser.RULE_eventParameter); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 547; this.typeName(0); this.state = 549; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.IndexedKeyword) { + if (_la===115) { { this.state = 548; this.match(SolidityParser.IndexedKeyword); @@ -2323,7 +2378,7 @@ export class SolidityParser extends Parser { this.state = 552; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 551; this.identifier(); @@ -2334,7 +2389,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2344,29 +2399,29 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionTypeParameterList(): FunctionTypeParameterListContext { - let _localctx: FunctionTypeParameterListContext = new FunctionTypeParameterListContext(this._ctx, this.state); - this.enterRule(_localctx, 70, SolidityParser.RULE_functionTypeParameterList); + let localctx: FunctionTypeParameterListContext = new FunctionTypeParameterListContext(this, this._ctx, this.state); + this.enterRule(localctx, 70, SolidityParser.RULE_functionTypeParameterList); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 554; this.match(SolidityParser.T__22); this.state = 563; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { { this.state = 555; this.functionTypeParameter(); this.state = 560; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 556; @@ -2388,7 +2443,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2398,22 +2453,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionTypeParameter(): FunctionTypeParameterContext { - let _localctx: FunctionTypeParameterContext = new FunctionTypeParameterContext(this._ctx, this.state); - this.enterRule(_localctx, 72, SolidityParser.RULE_functionTypeParameter); + let localctx: FunctionTypeParameterContext = new FunctionTypeParameterContext(this, this._ctx, this.state); + this.enterRule(localctx, 72, SolidityParser.RULE_functionTypeParameter); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 567; this.typeName(0); this.state = 569; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & ((1 << (SolidityParser.T__47 - 48)) | (1 << (SolidityParser.T__48 - 48)) | (1 << (SolidityParser.T__49 - 48)))) !== 0)) { + if (((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 7) !== 0)) { { this.state = 568; this.storageLocation(); @@ -2424,7 +2479,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2434,20 +2489,20 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public variableDeclaration(): VariableDeclarationContext { - let _localctx: VariableDeclarationContext = new VariableDeclarationContext(this._ctx, this.state); - this.enterRule(_localctx, 74, SolidityParser.RULE_variableDeclaration); + let localctx: VariableDeclarationContext = new VariableDeclarationContext(this, this._ctx, this.state); + this.enterRule(localctx, 74, SolidityParser.RULE_variableDeclaration); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 571; this.typeName(0); this.state = 573; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 57, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 57, this._ctx) ) { case 1: { this.state = 572; @@ -2461,7 +2516,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2471,7 +2526,7 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } public typeName(): TypeNameContext; @@ -2484,46 +2539,42 @@ export class SolidityParser extends Parser { let _parentctx: ParserRuleContext = this._ctx; let _parentState: number = this.state; - let _localctx: TypeNameContext = new TypeNameContext(this._ctx, _parentState); - let _prevctx: TypeNameContext = _localctx; + let localctx: TypeNameContext = new TypeNameContext(this, this._ctx, _parentState); + let _prevctx: TypeNameContext = localctx; let _startState: number = 76; - this.enterRecursionRule(_localctx, 76, SolidityParser.RULE_typeName, _p); + this.enterRecursionRule(localctx, 76, SolidityParser.RULE_typeName, _p); let _la: number; try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 584; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 58, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 58, this._ctx) ) { case 1: { this.state = 578; this.elementaryTypeName(); } break; - case 2: { this.state = 579; this.userDefinedTypeName(); } break; - case 3: { this.state = 580; this.mapping(); } break; - case 4: { this.state = 581; this.functionTypeName(); } break; - case 5: { this.state = 582; @@ -2533,20 +2584,20 @@ export class SolidityParser extends Parser { } break; } - this._ctx._stop = this._input.tryLT(-1); + this._ctx.stop = this._input.LT(-1); this.state = 594; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 60, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 60, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { this.triggerExitRuleEvent(); } - _prevctx = _localctx; + _prevctx = localctx; { { - _localctx = new TypeNameContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_typeName); + localctx = new TypeNameContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_typeName); this.state = 586; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); @@ -2556,7 +2607,7 @@ export class SolidityParser extends Parser { this.state = 589; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 588; this.expression(0); @@ -2570,13 +2621,13 @@ export class SolidityParser extends Parser { } this.state = 596; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 60, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 60, this._ctx); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2586,21 +2637,21 @@ export class SolidityParser extends Parser { finally { this.unrollRecursionContexts(_parentctx); } - return _localctx; + return localctx; } // @RuleVersion(0) public userDefinedTypeName(): UserDefinedTypeNameContext { - let _localctx: UserDefinedTypeNameContext = new UserDefinedTypeNameContext(this._ctx, this.state); - this.enterRule(_localctx, 78, SolidityParser.RULE_userDefinedTypeName); + let localctx: UserDefinedTypeNameContext = new UserDefinedTypeNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 78, SolidityParser.RULE_userDefinedTypeName); try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 597; this.identifier(); this.state = 602; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 61, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 61, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { @@ -2614,13 +2665,13 @@ export class SolidityParser extends Parser { } this.state = 604; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 61, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 61, this._ctx); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2630,26 +2681,25 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public mappingKey(): MappingKeyContext { - let _localctx: MappingKeyContext = new MappingKeyContext(this._ctx, this.state); - this.enterRule(_localctx, 80, SolidityParser.RULE_mappingKey); + let localctx: MappingKeyContext = new MappingKeyContext(this, this._ctx, this.state); + this.enterRule(localctx, 80, SolidityParser.RULE_mappingKey); try { this.state = 607; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 62, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 62, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 605; this.elementaryTypeName(); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 606; this.userDefinedTypeName(); @@ -2659,7 +2709,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2669,15 +2719,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public mapping(): MappingContext { - let _localctx: MappingContext = new MappingContext(this._ctx, this.state); - this.enterRule(_localctx, 82, SolidityParser.RULE_mapping); + let localctx: MappingContext = new MappingContext(this, this._ctx, this.state); + this.enterRule(localctx, 82, SolidityParser.RULE_mapping); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 609; this.match(SolidityParser.T__45); @@ -2688,7 +2738,7 @@ export class SolidityParser extends Parser { this.state = 613; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 612; this.mappingKeyName(); @@ -2702,7 +2752,7 @@ export class SolidityParser extends Parser { this.state = 618; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 617; this.mappingValueName(); @@ -2715,7 +2765,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2725,14 +2775,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public mappingKeyName(): MappingKeyNameContext { - let _localctx: MappingKeyNameContext = new MappingKeyNameContext(this._ctx, this.state); - this.enterRule(_localctx, 84, SolidityParser.RULE_mappingKeyName); + let localctx: MappingKeyNameContext = new MappingKeyNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 84, SolidityParser.RULE_mappingKeyName); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 622; this.identifier(); @@ -2740,7 +2790,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2750,14 +2800,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public mappingValueName(): MappingValueNameContext { - let _localctx: MappingValueNameContext = new MappingValueNameContext(this._ctx, this.state); - this.enterRule(_localctx, 86, SolidityParser.RULE_mappingValueName); + let localctx: MappingValueNameContext = new MappingValueNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 86, SolidityParser.RULE_mappingValueName); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 624; this.identifier(); @@ -2765,7 +2815,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2775,15 +2825,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionTypeName(): FunctionTypeNameContext { - let _localctx: FunctionTypeNameContext = new FunctionTypeNameContext(this._ctx, this.state); - this.enterRule(_localctx, 88, SolidityParser.RULE_functionTypeName); + let localctx: FunctionTypeNameContext = new FunctionTypeNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 88, SolidityParser.RULE_functionTypeName); try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 626; this.match(SolidityParser.T__37); @@ -2791,29 +2841,29 @@ export class SolidityParser extends Parser { this.functionTypeParameterList(); this.state = 633; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 66, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 66, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { this.state = 631; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.InternalKeyword: + case 116: { this.state = 628; this.match(SolidityParser.InternalKeyword); } break; - case SolidityParser.ExternalKeyword: + case 114: { this.state = 629; this.match(SolidityParser.ExternalKeyword); } break; - case SolidityParser.ConstantKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.PureKeyword: - case SolidityParser.ViewKeyword: + case 110: + case 117: + case 121: + case 123: { this.state = 630; this.stateMutability(); @@ -2826,11 +2876,11 @@ export class SolidityParser extends Parser { } this.state = 635; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 66, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 66, this._ctx); } this.state = 638; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 67, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 67, this._ctx) ) { case 1: { this.state = 636; @@ -2844,7 +2894,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2854,33 +2904,30 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public storageLocation(): StorageLocationContext { - let _localctx: StorageLocationContext = new StorageLocationContext(this._ctx, this.state); - this.enterRule(_localctx, 90, SolidityParser.RULE_storageLocation); + let localctx: StorageLocationContext = new StorageLocationContext(this, this._ctx, this.state); + this.enterRule(localctx, 90, SolidityParser.RULE_storageLocation); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 640; _la = this._input.LA(1); - if (!(((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & ((1 << (SolidityParser.T__47 - 48)) | (1 << (SolidityParser.T__48 - 48)) | (1 << (SolidityParser.T__49 - 48)))) !== 0))) { + if(!(((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 7) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2890,33 +2937,30 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public stateMutability(): StateMutabilityContext { - let _localctx: StateMutabilityContext = new StateMutabilityContext(this._ctx, this.state); - this.enterRule(_localctx, 92, SolidityParser.RULE_stateMutability); + let localctx: StateMutabilityContext = new StateMutabilityContext(this, this._ctx, this.state); + this.enterRule(localctx, 92, SolidityParser.RULE_stateMutability); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 642; _la = this._input.LA(1); - if (!(((((_la - 110)) & ~0x1F) === 0 && ((1 << (_la - 110)) & ((1 << (SolidityParser.ConstantKeyword - 110)) | (1 << (SolidityParser.PayableKeyword - 110)) | (1 << (SolidityParser.PureKeyword - 110)) | (1 << (SolidityParser.ViewKeyword - 110)))) !== 0))) { + if(!(((((_la - 110)) & ~0x1F) === 0 && ((1 << (_la - 110)) & 10369) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2926,22 +2970,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public block(): BlockContext { - let _localctx: BlockContext = new BlockContext(this._ctx, this.state); - this.enterRule(_localctx, 94, SolidityParser.RULE_block); + let localctx: BlockContext = new BlockContext(this, this._ctx, this.state); + this.enterRule(localctx, 94, SolidityParser.RULE_block); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 644; this.match(SolidityParser.T__14); this.state = 648; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__14) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__26) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__50 - 38)) | (1 << (SolidityParser.T__52 - 38)) | (1 << (SolidityParser.T__54 - 38)) | (1 << (SolidityParser.T__55 - 38)) | (1 << (SolidityParser.T__56 - 38)) | (1 << (SolidityParser.T__57 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__59 - 38)) | (1 << (SolidityParser.T__60 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.BreakKeyword - 103)) | (1 << (SolidityParser.ContinueKeyword - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3397435456) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4294881617) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124274251) !== 0)) { { { this.state = 645; @@ -2958,7 +3002,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -2968,130 +3012,116 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public statement(): StatementContext { - let _localctx: StatementContext = new StatementContext(this._ctx, this.state); - this.enterRule(_localctx, 96, SolidityParser.RULE_statement); + let localctx: StatementContext = new StatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 96, SolidityParser.RULE_statement); try { this.state = 668; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 69, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 69, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 653; this.ifStatement(); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 654; this.tryStatement(); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 655; this.whileStatement(); } break; - case 4: - this.enterOuterAlt(_localctx, 4); + this.enterOuterAlt(localctx, 4); { this.state = 656; this.forStatement(); } break; - case 5: - this.enterOuterAlt(_localctx, 5); + this.enterOuterAlt(localctx, 5); { this.state = 657; this.block(); } break; - case 6: - this.enterOuterAlt(_localctx, 6); + this.enterOuterAlt(localctx, 6); { this.state = 658; this.inlineAssemblyStatement(); } break; - case 7: - this.enterOuterAlt(_localctx, 7); + this.enterOuterAlt(localctx, 7); { this.state = 659; this.doWhileStatement(); } break; - case 8: - this.enterOuterAlt(_localctx, 8); + this.enterOuterAlt(localctx, 8); { this.state = 660; this.continueStatement(); } break; - case 9: - this.enterOuterAlt(_localctx, 9); + this.enterOuterAlt(localctx, 9); { this.state = 661; this.breakStatement(); } break; - case 10: - this.enterOuterAlt(_localctx, 10); + this.enterOuterAlt(localctx, 10); { this.state = 662; this.returnStatement(); } break; - case 11: - this.enterOuterAlt(_localctx, 11); + this.enterOuterAlt(localctx, 11); { this.state = 663; this.throwStatement(); } break; - case 12: - this.enterOuterAlt(_localctx, 12); + this.enterOuterAlt(localctx, 12); { this.state = 664; this.emitStatement(); } break; - case 13: - this.enterOuterAlt(_localctx, 13); + this.enterOuterAlt(localctx, 13); { this.state = 665; this.simpleStatement(); } break; - case 14: - this.enterOuterAlt(_localctx, 14); + this.enterOuterAlt(localctx, 14); { this.state = 666; this.uncheckedStatement(); } break; - case 15: - this.enterOuterAlt(_localctx, 15); + this.enterOuterAlt(localctx, 15); { this.state = 667; this.revertStatement(); @@ -3101,7 +3131,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3111,14 +3141,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public expressionStatement(): ExpressionStatementContext { - let _localctx: ExpressionStatementContext = new ExpressionStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 98, SolidityParser.RULE_expressionStatement); + let localctx: ExpressionStatementContext = new ExpressionStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 98, SolidityParser.RULE_expressionStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 670; this.expression(0); @@ -3128,7 +3158,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3138,14 +3168,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public ifStatement(): IfStatementContext { - let _localctx: IfStatementContext = new IfStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 100, SolidityParser.RULE_ifStatement); + let localctx: IfStatementContext = new IfStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 100, SolidityParser.RULE_ifStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 673; this.match(SolidityParser.T__50); @@ -3159,7 +3189,7 @@ export class SolidityParser extends Parser { this.statement(); this.state = 680; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 70, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 70, this._ctx) ) { case 1: { this.state = 678; @@ -3173,7 +3203,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3183,15 +3213,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public tryStatement(): TryStatementContext { - let _localctx: TryStatementContext = new TryStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 102, SolidityParser.RULE_tryStatement); + let localctx: TryStatementContext = new TryStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 102, SolidityParser.RULE_tryStatement); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 682; this.match(SolidityParser.T__52); @@ -3200,7 +3230,7 @@ export class SolidityParser extends Parser { this.state = 685; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__38) { + if (_la===39) { { this.state = 684; this.returnParameters(); @@ -3222,12 +3252,12 @@ export class SolidityParser extends Parser { this.state = 691; this._errHandler.sync(this); _la = this._input.LA(1); - } while (_la === SolidityParser.T__53); + } while (_la===54); } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3237,27 +3267,27 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public catchClause(): CatchClauseContext { - let _localctx: CatchClauseContext = new CatchClauseContext(this._ctx, this.state); - this.enterRule(_localctx, 104, SolidityParser.RULE_catchClause); + let localctx: CatchClauseContext = new CatchClauseContext(this, this._ctx, this.state); + this.enterRule(localctx, 104, SolidityParser.RULE_catchClause); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 693; this.match(SolidityParser.T__53); this.state = 698; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24))) !== 0) || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 41959424) !== 0) || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 695; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 694; this.identifier(); @@ -3275,7 +3305,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3285,14 +3315,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public whileStatement(): WhileStatementContext { - let _localctx: WhileStatementContext = new WhileStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 106, SolidityParser.RULE_whileStatement); + let localctx: WhileStatementContext = new WhileStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 106, SolidityParser.RULE_whileStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 702; this.match(SolidityParser.T__54); @@ -3308,7 +3338,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3318,25 +3348,24 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public simpleStatement(): SimpleStatementContext { - let _localctx: SimpleStatementContext = new SimpleStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 108, SolidityParser.RULE_simpleStatement); + let localctx: SimpleStatementContext = new SimpleStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 108, SolidityParser.RULE_simpleStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 710; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 75, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 75, this._ctx) ) { case 1: { this.state = 708; this.variableDeclarationStatement(); } break; - case 2: { this.state = 709; @@ -3348,7 +3377,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3358,14 +3387,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public uncheckedStatement(): UncheckedStatementContext { - let _localctx: UncheckedStatementContext = new UncheckedStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 110, SolidityParser.RULE_uncheckedStatement); + let localctx: UncheckedStatementContext = new UncheckedStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 110, SolidityParser.RULE_uncheckedStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 712; this.match(SolidityParser.T__55); @@ -3375,7 +3404,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3385,15 +3414,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public forStatement(): ForStatementContext { - let _localctx: ForStatementContext = new ForStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 112, SolidityParser.RULE_forStatement); + let localctx: ForStatementContext = new ForStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 112, SolidityParser.RULE_forStatement); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 715; this.match(SolidityParser.T__26); @@ -3402,51 +3431,51 @@ export class SolidityParser extends Parser { this.state = 719; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__5: - case SolidityParser.T__13: - case SolidityParser.T__22: - case SolidityParser.T__24: - case SolidityParser.T__29: - case SolidityParser.T__30: - case SolidityParser.T__37: - case SolidityParser.T__41: - case SolidityParser.T__43: - case SolidityParser.T__45: - case SolidityParser.T__49: - case SolidityParser.T__61: - case SolidityParser.T__62: - case SolidityParser.T__63: - case SolidityParser.T__64: - case SolidityParser.T__65: - case SolidityParser.T__66: - case SolidityParser.T__67: - case SolidityParser.T__68: - case SolidityParser.T__70: - case SolidityParser.T__71: - case SolidityParser.T__94: - case SolidityParser.Int: - case SolidityParser.Uint: - case SolidityParser.Byte: - case SolidityParser.Fixed: - case SolidityParser.Ufixed: - case SolidityParser.BooleanLiteral: - case SolidityParser.DecimalNumber: - case SolidityParser.HexNumber: - case SolidityParser.HexLiteralFragment: - case SolidityParser.LeaveKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.TypeKeyword: - case SolidityParser.GlobalKeyword: - case SolidityParser.ConstructorKeyword: - case SolidityParser.ReceiveKeyword: - case SolidityParser.Identifier: - case SolidityParser.StringLiteralFragment: + case 6: + case 14: + case 23: + case 25: + case 30: + case 31: + case 38: + case 42: + case 44: + case 46: + case 50: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 71: + case 72: + case 95: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 106: + case 113: + case 117: + case 122: + case 124: + case 125: + case 127: + case 128: + case 129: { this.state = 717; this.simpleStatement(); } break; - case SolidityParser.T__1: + case 2: { this.state = 718; this.match(SolidityParser.T__1); @@ -3458,51 +3487,51 @@ export class SolidityParser extends Parser { this.state = 723; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__5: - case SolidityParser.T__13: - case SolidityParser.T__22: - case SolidityParser.T__24: - case SolidityParser.T__29: - case SolidityParser.T__30: - case SolidityParser.T__37: - case SolidityParser.T__41: - case SolidityParser.T__43: - case SolidityParser.T__45: - case SolidityParser.T__49: - case SolidityParser.T__61: - case SolidityParser.T__62: - case SolidityParser.T__63: - case SolidityParser.T__64: - case SolidityParser.T__65: - case SolidityParser.T__66: - case SolidityParser.T__67: - case SolidityParser.T__68: - case SolidityParser.T__70: - case SolidityParser.T__71: - case SolidityParser.T__94: - case SolidityParser.Int: - case SolidityParser.Uint: - case SolidityParser.Byte: - case SolidityParser.Fixed: - case SolidityParser.Ufixed: - case SolidityParser.BooleanLiteral: - case SolidityParser.DecimalNumber: - case SolidityParser.HexNumber: - case SolidityParser.HexLiteralFragment: - case SolidityParser.LeaveKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.TypeKeyword: - case SolidityParser.GlobalKeyword: - case SolidityParser.ConstructorKeyword: - case SolidityParser.ReceiveKeyword: - case SolidityParser.Identifier: - case SolidityParser.StringLiteralFragment: + case 6: + case 14: + case 23: + case 25: + case 30: + case 31: + case 38: + case 42: + case 44: + case 46: + case 50: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 71: + case 72: + case 95: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 106: + case 113: + case 117: + case 122: + case 124: + case 125: + case 127: + case 128: + case 129: { this.state = 721; this.expressionStatement(); } break; - case SolidityParser.T__1: + case 2: { this.state = 722; this.match(SolidityParser.T__1); @@ -3514,7 +3543,7 @@ export class SolidityParser extends Parser { this.state = 726; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 725; this.expression(0); @@ -3529,7 +3558,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3539,22 +3568,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public inlineAssemblyStatement(): InlineAssemblyStatementContext { - let _localctx: InlineAssemblyStatementContext = new InlineAssemblyStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 114, SolidityParser.RULE_inlineAssemblyStatement); + let localctx: InlineAssemblyStatementContext = new InlineAssemblyStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 114, SolidityParser.RULE_inlineAssemblyStatement); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 731; this.match(SolidityParser.T__56); this.state = 733; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.StringLiteralFragment) { + if (_la===129) { { this.state = 732; this.match(SolidityParser.StringLiteralFragment); @@ -3564,7 +3593,7 @@ export class SolidityParser extends Parser { this.state = 739; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__22) { + if (_la===23) { { this.state = 735; this.match(SolidityParser.T__22); @@ -3581,7 +3610,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3591,14 +3620,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public inlineAssemblyStatementFlag(): InlineAssemblyStatementFlagContext { - let _localctx: InlineAssemblyStatementFlagContext = new InlineAssemblyStatementFlagContext(this._ctx, this.state); - this.enterRule(_localctx, 116, SolidityParser.RULE_inlineAssemblyStatementFlag); + let localctx: InlineAssemblyStatementFlagContext = new InlineAssemblyStatementFlagContext(this, this._ctx, this.state); + this.enterRule(localctx, 116, SolidityParser.RULE_inlineAssemblyStatementFlag); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 743; this.stringLiteral(); @@ -3606,7 +3635,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3616,14 +3645,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public doWhileStatement(): DoWhileStatementContext { - let _localctx: DoWhileStatementContext = new DoWhileStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 118, SolidityParser.RULE_doWhileStatement); + let localctx: DoWhileStatementContext = new DoWhileStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 118, SolidityParser.RULE_doWhileStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 745; this.match(SolidityParser.T__57); @@ -3643,7 +3672,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3653,14 +3682,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public continueStatement(): ContinueStatementContext { - let _localctx: ContinueStatementContext = new ContinueStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 120, SolidityParser.RULE_continueStatement); + let localctx: ContinueStatementContext = new ContinueStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 120, SolidityParser.RULE_continueStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 753; this.match(SolidityParser.ContinueKeyword); @@ -3670,7 +3699,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3680,14 +3709,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public breakStatement(): BreakStatementContext { - let _localctx: BreakStatementContext = new BreakStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 122, SolidityParser.RULE_breakStatement); + let localctx: BreakStatementContext = new BreakStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 122, SolidityParser.RULE_breakStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 756; this.match(SolidityParser.BreakKeyword); @@ -3697,7 +3726,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3707,22 +3736,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public returnStatement(): ReturnStatementContext { - let _localctx: ReturnStatementContext = new ReturnStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 124, SolidityParser.RULE_returnStatement); + let localctx: ReturnStatementContext = new ReturnStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 124, SolidityParser.RULE_returnStatement); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 759; this.match(SolidityParser.T__58); this.state = 761; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 760; this.expression(0); @@ -3735,7 +3764,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3745,14 +3774,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public throwStatement(): ThrowStatementContext { - let _localctx: ThrowStatementContext = new ThrowStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 126, SolidityParser.RULE_throwStatement); + let localctx: ThrowStatementContext = new ThrowStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 126, SolidityParser.RULE_throwStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 765; this.match(SolidityParser.T__59); @@ -3762,7 +3791,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3772,14 +3801,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public emitStatement(): EmitStatementContext { - let _localctx: EmitStatementContext = new EmitStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 128, SolidityParser.RULE_emitStatement); + let localctx: EmitStatementContext = new EmitStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 128, SolidityParser.RULE_emitStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 768; this.match(SolidityParser.T__60); @@ -3791,7 +3820,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3801,14 +3830,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public revertStatement(): RevertStatementContext { - let _localctx: RevertStatementContext = new RevertStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 130, SolidityParser.RULE_revertStatement); + let localctx: RevertStatementContext = new RevertStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 130, SolidityParser.RULE_revertStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 772; this.match(SolidityParser.T__61); @@ -3820,7 +3849,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3830,19 +3859,19 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public variableDeclarationStatement(): VariableDeclarationStatementContext { - let _localctx: VariableDeclarationStatementContext = new VariableDeclarationStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 132, SolidityParser.RULE_variableDeclarationStatement); + let localctx: VariableDeclarationStatementContext = new VariableDeclarationStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 132, SolidityParser.RULE_variableDeclarationStatement); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 783; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 82, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 82, this._ctx) ) { case 1: { this.state = 776; @@ -3851,14 +3880,12 @@ export class SolidityParser extends Parser { this.identifierList(); } break; - case 2: { this.state = 778; this.variableDeclaration(); } break; - case 3: { this.state = 779; @@ -3873,7 +3900,7 @@ export class SolidityParser extends Parser { this.state = 787; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__10) { + if (_la===11) { { this.state = 785; this.match(SolidityParser.T__10); @@ -3888,7 +3915,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3898,20 +3925,20 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public variableDeclarationList(): VariableDeclarationListContext { - let _localctx: VariableDeclarationListContext = new VariableDeclarationListContext(this._ctx, this.state); - this.enterRule(_localctx, 134, SolidityParser.RULE_variableDeclarationList); + let localctx: VariableDeclarationListContext = new VariableDeclarationListContext(this, this._ctx, this.state); + this.enterRule(localctx, 134, SolidityParser.RULE_variableDeclarationList); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 792; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { { this.state = 791; this.variableDeclaration(); @@ -3921,7 +3948,7 @@ export class SolidityParser extends Parser { this.state = 800; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 794; @@ -3929,7 +3956,7 @@ export class SolidityParser extends Parser { this.state = 796; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.Int - 95)) | (1 << (SolidityParser.Uint - 95)) | (1 << (SolidityParser.Byte - 95)) | (1 << (SolidityParser.Fixed - 95)) | (1 << (SolidityParser.Ufixed - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 520098113) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069309) !== 0) || _la===127 || _la===128) { { this.state = 795; this.variableDeclaration(); @@ -3946,7 +3973,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -3956,22 +3983,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public identifierList(): IdentifierListContext { - let _localctx: IdentifierListContext = new IdentifierListContext(this._ctx, this.state); - this.enterRule(_localctx, 136, SolidityParser.RULE_identifierList); + let localctx: IdentifierListContext = new IdentifierListContext(this, this._ctx, this.state); + this.enterRule(localctx, 136, SolidityParser.RULE_identifierList); let _la: number; try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 803; this.match(SolidityParser.T__22); this.state = 810; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 88, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 88, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { @@ -3979,7 +4006,7 @@ export class SolidityParser extends Parser { this.state = 805; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 804; this.identifier(); @@ -3993,12 +4020,12 @@ export class SolidityParser extends Parser { } this.state = 812; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 88, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 88, this._ctx); } this.state = 814; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 813; this.identifier(); @@ -4011,7 +4038,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4021,33 +4048,30 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public elementaryTypeName(): ElementaryTypeNameContext { - let _localctx: ElementaryTypeNameContext = new ElementaryTypeNameContext(this._ctx, this.state); - this.enterRule(_localctx, 138, SolidityParser.RULE_elementaryTypeName); + let localctx: ElementaryTypeNameContext = new ElementaryTypeNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 138, SolidityParser.RULE_elementaryTypeName); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 818; _la = this._input.LA(1); - if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__62 - 44)) | (1 << (SolidityParser.T__63 - 44)) | (1 << (SolidityParser.T__64 - 44)) | (1 << (SolidityParser.T__65 - 44)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (SolidityParser.Int - 97)) | (1 << (SolidityParser.Uint - 97)) | (1 << (SolidityParser.Byte - 97)) | (1 << (SolidityParser.Fixed - 97)) | (1 << (SolidityParser.Ufixed - 97)))) !== 0))) { + if(!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 7864321) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 31) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4057,7 +4081,7 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } public expression(): ExpressionContext; @@ -4070,18 +4094,18 @@ export class SolidityParser extends Parser { let _parentctx: ParserRuleContext = this._ctx; let _parentState: number = this.state; - let _localctx: ExpressionContext = new ExpressionContext(this._ctx, _parentState); - let _prevctx: ExpressionContext = _localctx; + let localctx: ExpressionContext = new ExpressionContext(this, this._ctx, _parentState); + let _prevctx: ExpressionContext = localctx; let _startState: number = 140; - this.enterRecursionRule(_localctx, 140, SolidityParser.RULE_expression, _p); + this.enterRecursionRule(localctx, 140, SolidityParser.RULE_expression, _p); let _la: number; try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 838; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 90, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 90, this._ctx) ) { case 1: { this.state = 821; @@ -4090,7 +4114,6 @@ export class SolidityParser extends Parser { this.typeName(0); } break; - case 2: { this.state = 823; @@ -4101,45 +4124,36 @@ export class SolidityParser extends Parser { this.match(SolidityParser.T__23); } break; - case 3: { this.state = 827; _la = this._input.LA(1); - if (!(_la === SolidityParser.T__66 || _la === SolidityParser.T__67)) { + if(!(_la===67 || _la===68)) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 828; this.expression(19); } break; - case 4: { this.state = 829; _la = this._input.LA(1); - if (!(_la === SolidityParser.T__29 || _la === SolidityParser.T__30)) { + if(!(_la===30 || _la===31)) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 830; this.expression(18); } break; - case 5: { this.state = 831; @@ -4148,7 +4162,6 @@ export class SolidityParser extends Parser { this.expression(17); } break; - case 6: { this.state = 833; @@ -4157,7 +4170,6 @@ export class SolidityParser extends Parser { this.expression(16); } break; - case 7: { this.state = 835; @@ -4166,7 +4178,6 @@ export class SolidityParser extends Parser { this.expression(15); } break; - case 8: { this.state = 837; @@ -4174,24 +4185,24 @@ export class SolidityParser extends Parser { } break; } - this._ctx._stop = this._input.tryLT(-1); + this._ctx.stop = this._input.LT(-1); this.state = 914; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 94, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { this.triggerExitRuleEvent(); } - _prevctx = _localctx; + _prevctx = localctx; { this.state = 912; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 93, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 93, this._ctx) ) { case 1: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 840; if (!(this.precpred(this._ctx, 14))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 14)"); @@ -4202,86 +4213,73 @@ export class SolidityParser extends Parser { this.expression(14); } break; - case 2: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 843; if (!(this.precpred(this._ctx, 13))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 13)"); } this.state = 844; _la = this._input.LA(1); - if (!(((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (SolidityParser.T__2 - 3)) | (1 << (SolidityParser.T__31 - 3)) | (1 << (SolidityParser.T__32 - 3)))) !== 0))) { + if(!(((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & 1610612737) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 845; this.expression(14); } break; - case 3: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 846; if (!(this.precpred(this._ctx, 12))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 12)"); } this.state = 847; _la = this._input.LA(1); - if (!(_la === SolidityParser.T__29 || _la === SolidityParser.T__30)) { + if(!(_la===30 || _la===31)) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 848; this.expression(13); } break; - case 4: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 849; if (!(this.precpred(this._ctx, 11))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 11)"); } this.state = 850; _la = this._input.LA(1); - if (!(_la === SolidityParser.T__73 || _la === SolidityParser.T__74)) { + if(!(_la===74 || _la===75)) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 851; this.expression(12); } break; - case 5: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 852; if (!(this.precpred(this._ctx, 10))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 10)"); @@ -4292,11 +4290,10 @@ export class SolidityParser extends Parser { this.expression(11); } break; - case 6: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 855; if (!(this.precpred(this._ctx, 9))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 9)"); @@ -4307,11 +4304,10 @@ export class SolidityParser extends Parser { this.expression(10); } break; - case 7: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 858; if (!(this.precpred(this._ctx, 8))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 8)"); @@ -4322,61 +4318,52 @@ export class SolidityParser extends Parser { this.expression(9); } break; - case 8: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 861; if (!(this.precpred(this._ctx, 7))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 7)"); } this.state = 862; _la = this._input.LA(1); - if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__6) | (1 << SolidityParser.T__7) | (1 << SolidityParser.T__8) | (1 << SolidityParser.T__9))) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1920) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 863; this.expression(8); } break; - case 9: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 864; if (!(this.precpred(this._ctx, 6))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 6)"); } this.state = 865; _la = this._input.LA(1); - if (!(_la === SolidityParser.T__33 || _la === SolidityParser.T__34)) { + if(!(_la===34 || _la===35)) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 866; this.expression(7); } break; - case 10: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 867; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); @@ -4387,11 +4374,10 @@ export class SolidityParser extends Parser { this.expression(6); } break; - case 11: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 870; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); @@ -4402,11 +4388,10 @@ export class SolidityParser extends Parser { this.expression(5); } break; - case 12: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 873; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); @@ -4421,59 +4406,50 @@ export class SolidityParser extends Parser { this.expression(3); } break; - case 13: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 879; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } this.state = 880; _la = this._input.LA(1); - if (!(_la === SolidityParser.T__10 || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & ((1 << (SolidityParser.T__77 - 78)) | (1 << (SolidityParser.T__78 - 78)) | (1 << (SolidityParser.T__79 - 78)) | (1 << (SolidityParser.T__80 - 78)) | (1 << (SolidityParser.T__81 - 78)) | (1 << (SolidityParser.T__82 - 78)) | (1 << (SolidityParser.T__83 - 78)) | (1 << (SolidityParser.T__84 - 78)) | (1 << (SolidityParser.T__85 - 78)) | (1 << (SolidityParser.T__86 - 78)))) !== 0))) { + if(!(_la===11 || ((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 1023) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 881; this.expression(3); } break; - case 14: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 882; if (!(this.precpred(this._ctx, 27))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 27)"); } this.state = 883; _la = this._input.LA(1); - if (!(_la === SolidityParser.T__66 || _la === SolidityParser.T__67)) { + if(!(_la===67 || _la===68)) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } break; - case 15: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 884; if (!(this.precpred(this._ctx, 25))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 25)"); @@ -4486,11 +4462,10 @@ export class SolidityParser extends Parser { this.match(SolidityParser.T__42); } break; - case 16: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 889; if (!(this.precpred(this._ctx, 24))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 24)"); @@ -4500,7 +4475,7 @@ export class SolidityParser extends Parser { this.state = 892; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 891; this.expression(0); @@ -4512,7 +4487,7 @@ export class SolidityParser extends Parser { this.state = 896; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 895; this.expression(0); @@ -4523,11 +4498,10 @@ export class SolidityParser extends Parser { this.match(SolidityParser.T__42); } break; - case 17: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 899; if (!(this.precpred(this._ctx, 23))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 23)"); @@ -4538,11 +4512,10 @@ export class SolidityParser extends Parser { this.identifier(); } break; - case 18: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 902; if (!(this.precpred(this._ctx, 22))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 22)"); @@ -4555,11 +4528,10 @@ export class SolidityParser extends Parser { this.match(SolidityParser.T__16); } break; - case 19: { - _localctx = new ExpressionContext(_parentctx, _parentState); - this.pushNewRecursionContext(_localctx, _startState, SolidityParser.RULE_expression); + localctx = new ExpressionContext(this, _parentctx, _parentState); + this.pushNewRecursionContext(localctx, _startState, SolidityParser.RULE_expression); this.state = 907; if (!(this.precpred(this._ctx, 21))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 21)"); @@ -4577,13 +4549,13 @@ export class SolidityParser extends Parser { } this.state = 916; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 94, this._ctx); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4593,82 +4565,74 @@ export class SolidityParser extends Parser { finally { this.unrollRecursionContexts(_parentctx); } - return _localctx; + return localctx; } // @RuleVersion(0) public primaryExpression(): PrimaryExpressionContext { - let _localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 142, SolidityParser.RULE_primaryExpression); + let localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 142, SolidityParser.RULE_primaryExpression); try { this.state = 926; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 95, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 95, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 917; this.match(SolidityParser.BooleanLiteral); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 918; this.numberLiteral(); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 919; this.hexLiteral(); } break; - case 4: - this.enterOuterAlt(_localctx, 4); + this.enterOuterAlt(localctx, 4); { this.state = 920; this.stringLiteral(); } break; - case 5: - this.enterOuterAlt(_localctx, 5); + this.enterOuterAlt(localctx, 5); { this.state = 921; this.identifier(); } break; - case 6: - this.enterOuterAlt(_localctx, 6); + this.enterOuterAlt(localctx, 6); { this.state = 922; this.match(SolidityParser.TypeKeyword); } break; - case 7: - this.enterOuterAlt(_localctx, 7); + this.enterOuterAlt(localctx, 7); { this.state = 923; this.match(SolidityParser.PayableKeyword); } break; - case 8: - this.enterOuterAlt(_localctx, 8); + this.enterOuterAlt(localctx, 8); { this.state = 924; this.tupleExpression(); } break; - case 9: - this.enterOuterAlt(_localctx, 9); + this.enterOuterAlt(localctx, 9); { this.state = 925; this.typeName(0); @@ -4678,7 +4642,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4688,22 +4652,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public expressionList(): ExpressionListContext { - let _localctx: ExpressionListContext = new ExpressionListContext(this._ctx, this.state); - this.enterRule(_localctx, 144, SolidityParser.RULE_expressionList); + let localctx: ExpressionListContext = new ExpressionListContext(this, this._ctx, this.state); + this.enterRule(localctx, 144, SolidityParser.RULE_expressionList); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 928; this.expression(0); this.state = 933; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 929; @@ -4720,7 +4684,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4730,22 +4694,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public nameValueList(): NameValueListContext { - let _localctx: NameValueListContext = new NameValueListContext(this._ctx, this.state); - this.enterRule(_localctx, 146, SolidityParser.RULE_nameValueList); + let localctx: NameValueListContext = new NameValueListContext(this, this._ctx, this.state); + this.enterRule(localctx, 146, SolidityParser.RULE_nameValueList); let _la: number; try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 936; this.nameValue(); this.state = 941; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 97, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 97, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { @@ -4759,12 +4723,12 @@ export class SolidityParser extends Parser { } this.state = 943; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 97, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 97, this._ctx); } this.state = 945; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__15) { + if (_la===16) { { this.state = 944; this.match(SolidityParser.T__15); @@ -4775,7 +4739,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4785,14 +4749,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public nameValue(): NameValueContext { - let _localctx: NameValueContext = new NameValueContext(this._ctx, this.state); - this.enterRule(_localctx, 148, SolidityParser.RULE_nameValue); + let localctx: NameValueContext = new NameValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 148, SolidityParser.RULE_nameValue); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 947; this.identifier(); @@ -4804,7 +4768,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4814,26 +4778,26 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionCallArguments(): FunctionCallArgumentsContext { - let _localctx: FunctionCallArgumentsContext = new FunctionCallArgumentsContext(this._ctx, this.state); - this.enterRule(_localctx, 150, SolidityParser.RULE_functionCallArguments); + let localctx: FunctionCallArgumentsContext = new FunctionCallArgumentsContext(this, this._ctx, this.state); + this.enterRule(localctx, 150, SolidityParser.RULE_functionCallArguments); let _la: number; try { this.state = 959; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__14: - this.enterOuterAlt(_localctx, 1); + case 15: + this.enterOuterAlt(localctx, 1); { this.state = 951; this.match(SolidityParser.T__14); this.state = 953; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 952; this.nameValueList(); @@ -4844,52 +4808,52 @@ export class SolidityParser extends Parser { this.match(SolidityParser.T__16); } break; - case SolidityParser.T__5: - case SolidityParser.T__13: - case SolidityParser.T__22: - case SolidityParser.T__23: - case SolidityParser.T__24: - case SolidityParser.T__29: - case SolidityParser.T__30: - case SolidityParser.T__37: - case SolidityParser.T__41: - case SolidityParser.T__43: - case SolidityParser.T__45: - case SolidityParser.T__49: - case SolidityParser.T__61: - case SolidityParser.T__62: - case SolidityParser.T__63: - case SolidityParser.T__64: - case SolidityParser.T__65: - case SolidityParser.T__66: - case SolidityParser.T__67: - case SolidityParser.T__68: - case SolidityParser.T__70: - case SolidityParser.T__71: - case SolidityParser.T__94: - case SolidityParser.Int: - case SolidityParser.Uint: - case SolidityParser.Byte: - case SolidityParser.Fixed: - case SolidityParser.Ufixed: - case SolidityParser.BooleanLiteral: - case SolidityParser.DecimalNumber: - case SolidityParser.HexNumber: - case SolidityParser.HexLiteralFragment: - case SolidityParser.LeaveKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.TypeKeyword: - case SolidityParser.GlobalKeyword: - case SolidityParser.ConstructorKeyword: - case SolidityParser.ReceiveKeyword: - case SolidityParser.Identifier: - case SolidityParser.StringLiteralFragment: - this.enterOuterAlt(_localctx, 2); + case 6: + case 14: + case 23: + case 24: + case 25: + case 30: + case 31: + case 38: + case 42: + case 44: + case 46: + case 50: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 71: + case 72: + case 95: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 106: + case 113: + case 117: + case 122: + case 124: + case 125: + case 127: + case 128: + case 129: + this.enterOuterAlt(localctx, 2); { this.state = 957; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 956; this.expressionList(); @@ -4904,7 +4868,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4914,14 +4878,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionCall(): FunctionCallContext { - let _localctx: FunctionCallContext = new FunctionCallContext(this._ctx, this.state); - this.enterRule(_localctx, 152, SolidityParser.RULE_functionCall); + let localctx: FunctionCallContext = new FunctionCallContext(this, this._ctx, this.state); + this.enterRule(localctx, 152, SolidityParser.RULE_functionCall); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 961; this.expression(0); @@ -4935,7 +4899,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4945,22 +4909,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyBlock(): AssemblyBlockContext { - let _localctx: AssemblyBlockContext = new AssemblyBlockContext(this._ctx, this.state); - this.enterRule(_localctx, 154, SolidityParser.RULE_assemblyBlock); + let localctx: AssemblyBlockContext = new AssemblyBlockContext(this, this._ctx, this.state); + this.enterRule(localctx, 154, SolidityParser.RULE_assemblyBlock); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 966; this.match(SolidityParser.T__14); this.state = 970; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__13) | (1 << SolidityParser.T__14) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__26))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__50 - 38)) | (1 << (SolidityParser.T__58 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__65 - 38)))) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & ((1 << (SolidityParser.T__87 - 88)) | (1 << (SolidityParser.T__90 - 88)) | (1 << (SolidityParser.T__94 - 88)) | (1 << (SolidityParser.BooleanLiteral - 88)) | (1 << (SolidityParser.DecimalNumber - 88)) | (1 << (SolidityParser.HexNumber - 88)) | (1 << (SolidityParser.HexLiteralFragment - 88)) | (1 << (SolidityParser.BreakKeyword - 88)) | (1 << (SolidityParser.ContinueKeyword - 88)) | (1 << (SolidityParser.LeaveKeyword - 88)) | (1 << (SolidityParser.PayableKeyword - 88)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (SolidityParser.GlobalKeyword - 124)) | (1 << (SolidityParser.ConstructorKeyword - 124)) | (1 << (SolidityParser.ReceiveKeyword - 124)) | (1 << (SolidityParser.Identifier - 124)) | (1 << (SolidityParser.StringLiteralFragment - 124)))) !== 0)) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 176209920) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 287322177) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 589676681) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & 59) !== 0)) { { { this.state = 967; @@ -4977,7 +4941,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -4987,146 +4951,130 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyItem(): AssemblyItemContext { - let _localctx: AssemblyItemContext = new AssemblyItemContext(this._ctx, this.state); - this.enterRule(_localctx, 156, SolidityParser.RULE_assemblyItem); + let localctx: AssemblyItemContext = new AssemblyItemContext(this, this._ctx, this.state); + this.enterRule(localctx, 156, SolidityParser.RULE_assemblyItem); try { this.state = 992; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 103, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 103, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 975; this.identifier(); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 976; this.assemblyBlock(); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 977; this.assemblyExpression(); } break; - case 4: - this.enterOuterAlt(_localctx, 4); + this.enterOuterAlt(localctx, 4); { this.state = 978; this.assemblyLocalDefinition(); } break; - case 5: - this.enterOuterAlt(_localctx, 5); + this.enterOuterAlt(localctx, 5); { this.state = 979; this.assemblyAssignment(); } break; - case 6: - this.enterOuterAlt(_localctx, 6); + this.enterOuterAlt(localctx, 6); { this.state = 980; this.assemblyStackAssignment(); } break; - case 7: - this.enterOuterAlt(_localctx, 7); + this.enterOuterAlt(localctx, 7); { this.state = 981; this.labelDefinition(); } break; - case 8: - this.enterOuterAlt(_localctx, 8); + this.enterOuterAlt(localctx, 8); { this.state = 982; this.assemblySwitch(); } break; - case 9: - this.enterOuterAlt(_localctx, 9); + this.enterOuterAlt(localctx, 9); { this.state = 983; this.assemblyFunctionDefinition(); } break; - case 10: - this.enterOuterAlt(_localctx, 10); + this.enterOuterAlt(localctx, 10); { this.state = 984; this.assemblyFor(); } break; - case 11: - this.enterOuterAlt(_localctx, 11); + this.enterOuterAlt(localctx, 11); { this.state = 985; this.assemblyIf(); } break; - case 12: - this.enterOuterAlt(_localctx, 12); + this.enterOuterAlt(localctx, 12); { this.state = 986; this.match(SolidityParser.BreakKeyword); } break; - case 13: - this.enterOuterAlt(_localctx, 13); + this.enterOuterAlt(localctx, 13); { this.state = 987; this.match(SolidityParser.ContinueKeyword); } break; - case 14: - this.enterOuterAlt(_localctx, 14); + this.enterOuterAlt(localctx, 14); { this.state = 988; this.match(SolidityParser.LeaveKeyword); } break; - case 15: - this.enterOuterAlt(_localctx, 15); + this.enterOuterAlt(localctx, 15); { this.state = 989; this.numberLiteral(); } break; - case 16: - this.enterOuterAlt(_localctx, 16); + this.enterOuterAlt(localctx, 16); { this.state = 990; this.stringLiteral(); } break; - case 17: - this.enterOuterAlt(_localctx, 17); + this.enterOuterAlt(localctx, 17); { this.state = 991; this.hexLiteral(); @@ -5136,7 +5084,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5146,34 +5094,32 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyExpression(): AssemblyExpressionContext { - let _localctx: AssemblyExpressionContext = new AssemblyExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 158, SolidityParser.RULE_assemblyExpression); + let localctx: AssemblyExpressionContext = new AssemblyExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 158, SolidityParser.RULE_assemblyExpression); try { this.state = 997; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 104, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 104, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 994; this.assemblyCall(); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 995; this.assemblyLiteral(); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 996; this.assemblyMember(); @@ -5183,7 +5129,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5193,14 +5139,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyMember(): AssemblyMemberContext { - let _localctx: AssemblyMemberContext = new AssemblyMemberContext(this._ctx, this.state); - this.enterRule(_localctx, 160, SolidityParser.RULE_assemblyMember); + let localctx: AssemblyMemberContext = new AssemblyMemberContext(this, this._ctx, this.state); + this.enterRule(localctx, 160, SolidityParser.RULE_assemblyMember); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 999; this.identifier(); @@ -5212,7 +5158,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5222,40 +5168,37 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyCall(): AssemblyCallContext { - let _localctx: AssemblyCallContext = new AssemblyCallContext(this._ctx, this.state); - this.enterRule(_localctx, 162, SolidityParser.RULE_assemblyCall); + let localctx: AssemblyCallContext = new AssemblyCallContext(this, this._ctx, this.state); + this.enterRule(localctx, 162, SolidityParser.RULE_assemblyCall); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1007; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 105, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 105, this._ctx) ) { case 1: { this.state = 1003; this.match(SolidityParser.T__58); } break; - case 2: { this.state = 1004; this.match(SolidityParser.T__43); } break; - case 3: { this.state = 1005; this.match(SolidityParser.T__65); } break; - case 4: { this.state = 1006; @@ -5265,7 +5208,7 @@ export class SolidityParser extends Parser { } this.state = 1021; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 108, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 108, this._ctx) ) { case 1: { this.state = 1009; @@ -5273,7 +5216,7 @@ export class SolidityParser extends Parser { this.state = 1011; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__58 - 44)) | (1 << (SolidityParser.T__61 - 44)) | (1 << (SolidityParser.T__65 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.BooleanLiteral - 95)) | (1 << (SolidityParser.DecimalNumber - 95)) | (1 << (SolidityParser.HexNumber - 95)) | (1 << (SolidityParser.HexLiteralFragment - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || ((((_la - 127)) & ~0x1F) === 0 && ((1 << (_la - 127)) & ((1 << (SolidityParser.ReceiveKeyword - 127)) | (1 << (SolidityParser.Identifier - 127)) | (1 << (SolidityParser.StringLiteralFragment - 127)))) !== 0)) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 4489281) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615072129) !== 0) || ((((_la - 127)) & ~0x1F) === 0 && ((1 << (_la - 127)) & 7) !== 0)) { { this.state = 1010; this.assemblyExpression(); @@ -5283,7 +5226,7 @@ export class SolidityParser extends Parser { this.state = 1017; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 1013; @@ -5305,7 +5248,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5315,15 +5258,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyLocalDefinition(): AssemblyLocalDefinitionContext { - let _localctx: AssemblyLocalDefinitionContext = new AssemblyLocalDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 164, SolidityParser.RULE_assemblyLocalDefinition); + let localctx: AssemblyLocalDefinitionContext = new AssemblyLocalDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 164, SolidityParser.RULE_assemblyLocalDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1023; this.match(SolidityParser.T__87); @@ -5332,7 +5275,7 @@ export class SolidityParser extends Parser { this.state = 1027; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__88) { + if (_la===89) { { this.state = 1025; this.match(SolidityParser.T__88); @@ -5345,7 +5288,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5355,14 +5298,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyAssignment(): AssemblyAssignmentContext { - let _localctx: AssemblyAssignmentContext = new AssemblyAssignmentContext(this._ctx, this.state); - this.enterRule(_localctx, 166, SolidityParser.RULE_assemblyAssignment); + let localctx: AssemblyAssignmentContext = new AssemblyAssignmentContext(this, this._ctx, this.state); + this.enterRule(localctx, 166, SolidityParser.RULE_assemblyAssignment); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1029; this.assemblyIdentifierOrList(); @@ -5374,7 +5317,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5384,42 +5327,39 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyIdentifierOrList(): AssemblyIdentifierOrListContext { - let _localctx: AssemblyIdentifierOrListContext = new AssemblyIdentifierOrListContext(this._ctx, this.state); - this.enterRule(_localctx, 168, SolidityParser.RULE_assemblyIdentifierOrList); + let localctx: AssemblyIdentifierOrListContext = new AssemblyIdentifierOrListContext(this, this._ctx, this.state); + this.enterRule(localctx, 168, SolidityParser.RULE_assemblyIdentifierOrList); try { this.state = 1040; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 110, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 110, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1033; this.identifier(); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 1034; this.assemblyMember(); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 1035; this.assemblyIdentifierList(); } break; - case 4: - this.enterOuterAlt(_localctx, 4); + this.enterOuterAlt(localctx, 4); { this.state = 1036; this.match(SolidityParser.T__22); @@ -5433,7 +5373,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5443,22 +5383,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyIdentifierList(): AssemblyIdentifierListContext { - let _localctx: AssemblyIdentifierListContext = new AssemblyIdentifierListContext(this._ctx, this.state); - this.enterRule(_localctx, 170, SolidityParser.RULE_assemblyIdentifierList); + let localctx: AssemblyIdentifierListContext = new AssemblyIdentifierListContext(this, this._ctx, this.state); + this.enterRule(localctx, 170, SolidityParser.RULE_assemblyIdentifierList); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1042; this.identifier(); this.state = 1047; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 1043; @@ -5475,7 +5415,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5485,14 +5425,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyStackAssignment(): AssemblyStackAssignmentContext { - let _localctx: AssemblyStackAssignmentContext = new AssemblyStackAssignmentContext(this._ctx, this.state); - this.enterRule(_localctx, 172, SolidityParser.RULE_assemblyStackAssignment); + let localctx: AssemblyStackAssignmentContext = new AssemblyStackAssignmentContext(this, this._ctx, this.state); + this.enterRule(localctx, 172, SolidityParser.RULE_assemblyStackAssignment); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1050; this.assemblyExpression(); @@ -5504,7 +5444,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5514,14 +5454,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public labelDefinition(): LabelDefinitionContext { - let _localctx: LabelDefinitionContext = new LabelDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 174, SolidityParser.RULE_labelDefinition); + let localctx: LabelDefinitionContext = new LabelDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 174, SolidityParser.RULE_labelDefinition); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1054; this.identifier(); @@ -5531,7 +5471,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5541,15 +5481,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblySwitch(): AssemblySwitchContext { - let _localctx: AssemblySwitchContext = new AssemblySwitchContext(this._ctx, this.state); - this.enterRule(_localctx, 176, SolidityParser.RULE_assemblySwitch); + let localctx: AssemblySwitchContext = new AssemblySwitchContext(this, this._ctx, this.state); + this.enterRule(localctx, 176, SolidityParser.RULE_assemblySwitch); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1057; this.match(SolidityParser.T__90); @@ -5558,7 +5498,7 @@ export class SolidityParser extends Parser { this.state = 1062; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__91 || _la === SolidityParser.T__92) { + while (_la===92 || _la===93) { { { this.state = 1059; @@ -5573,7 +5513,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5583,18 +5523,18 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyCase(): AssemblyCaseContext { - let _localctx: AssemblyCaseContext = new AssemblyCaseContext(this._ctx, this.state); - this.enterRule(_localctx, 178, SolidityParser.RULE_assemblyCase); + let localctx: AssemblyCaseContext = new AssemblyCaseContext(this, this._ctx, this.state); + this.enterRule(localctx, 178, SolidityParser.RULE_assemblyCase); try { this.state = 1071; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__91: - this.enterOuterAlt(_localctx, 1); + case 92: + this.enterOuterAlt(localctx, 1); { this.state = 1065; this.match(SolidityParser.T__91); @@ -5604,8 +5544,8 @@ export class SolidityParser extends Parser { this.assemblyBlock(); } break; - case SolidityParser.T__92: - this.enterOuterAlt(_localctx, 2); + case 93: + this.enterOuterAlt(localctx, 2); { this.state = 1069; this.match(SolidityParser.T__92); @@ -5619,7 +5559,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5629,15 +5569,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyFunctionDefinition(): AssemblyFunctionDefinitionContext { - let _localctx: AssemblyFunctionDefinitionContext = new AssemblyFunctionDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 180, SolidityParser.RULE_assemblyFunctionDefinition); + let localctx: AssemblyFunctionDefinitionContext = new AssemblyFunctionDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 180, SolidityParser.RULE_assemblyFunctionDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1073; this.match(SolidityParser.T__37); @@ -5648,7 +5588,7 @@ export class SolidityParser extends Parser { this.state = 1077; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier) { + if (_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128) { { this.state = 1076; this.assemblyIdentifierList(); @@ -5660,7 +5600,7 @@ export class SolidityParser extends Parser { this.state = 1081; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__93) { + if (_la===94) { { this.state = 1080; this.assemblyFunctionReturns(); @@ -5673,7 +5613,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5683,14 +5623,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyFunctionReturns(): AssemblyFunctionReturnsContext { - let _localctx: AssemblyFunctionReturnsContext = new AssemblyFunctionReturnsContext(this._ctx, this.state); - this.enterRule(_localctx, 182, SolidityParser.RULE_assemblyFunctionReturns); + let localctx: AssemblyFunctionReturnsContext = new AssemblyFunctionReturnsContext(this, this._ctx, this.state); + this.enterRule(localctx, 182, SolidityParser.RULE_assemblyFunctionReturns); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { { this.state = 1085; @@ -5702,7 +5642,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5712,45 +5652,45 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyFor(): AssemblyForContext { - let _localctx: AssemblyForContext = new AssemblyForContext(this._ctx, this.state); - this.enterRule(_localctx, 184, SolidityParser.RULE_assemblyFor); + let localctx: AssemblyForContext = new AssemblyForContext(this, this._ctx, this.state); + this.enterRule(localctx, 184, SolidityParser.RULE_assemblyFor); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1088; this.match(SolidityParser.T__26); this.state = 1091; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__14: + case 15: { this.state = 1089; this.assemblyBlock(); } break; - case SolidityParser.T__13: - case SolidityParser.T__24: - case SolidityParser.T__43: - case SolidityParser.T__49: - case SolidityParser.T__58: - case SolidityParser.T__61: - case SolidityParser.T__65: - case SolidityParser.T__94: - case SolidityParser.BooleanLiteral: - case SolidityParser.DecimalNumber: - case SolidityParser.HexNumber: - case SolidityParser.HexLiteralFragment: - case SolidityParser.LeaveKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.GlobalKeyword: - case SolidityParser.ConstructorKeyword: - case SolidityParser.ReceiveKeyword: - case SolidityParser.Identifier: - case SolidityParser.StringLiteralFragment: + case 14: + case 25: + case 44: + case 50: + case 59: + case 62: + case 66: + case 95: + case 102: + case 103: + case 104: + case 106: + case 113: + case 117: + case 124: + case 125: + case 127: + case 128: + case 129: { this.state = 1090; this.assemblyExpression(); @@ -5764,31 +5704,31 @@ export class SolidityParser extends Parser { this.state = 1096; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__14: + case 15: { this.state = 1094; this.assemblyBlock(); } break; - case SolidityParser.T__13: - case SolidityParser.T__24: - case SolidityParser.T__43: - case SolidityParser.T__49: - case SolidityParser.T__58: - case SolidityParser.T__61: - case SolidityParser.T__65: - case SolidityParser.T__94: - case SolidityParser.BooleanLiteral: - case SolidityParser.DecimalNumber: - case SolidityParser.HexNumber: - case SolidityParser.HexLiteralFragment: - case SolidityParser.LeaveKeyword: - case SolidityParser.PayableKeyword: - case SolidityParser.GlobalKeyword: - case SolidityParser.ConstructorKeyword: - case SolidityParser.ReceiveKeyword: - case SolidityParser.Identifier: - case SolidityParser.StringLiteralFragment: + case 14: + case 25: + case 44: + case 50: + case 59: + case 62: + case 66: + case 95: + case 102: + case 103: + case 104: + case 106: + case 113: + case 117: + case 124: + case 125: + case 127: + case 128: + case 129: { this.state = 1095; this.assemblyExpression(); @@ -5803,7 +5743,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5813,14 +5753,14 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyIf(): AssemblyIfContext { - let _localctx: AssemblyIfContext = new AssemblyIfContext(this._ctx, this.state); - this.enterRule(_localctx, 186, SolidityParser.RULE_assemblyIf); + let localctx: AssemblyIfContext = new AssemblyIfContext(this, this._ctx, this.state); + this.enterRule(localctx, 186, SolidityParser.RULE_assemblyIf); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1100; this.match(SolidityParser.T__50); @@ -5832,7 +5772,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5842,46 +5782,46 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assemblyLiteral(): AssemblyLiteralContext { - let _localctx: AssemblyLiteralContext = new AssemblyLiteralContext(this._ctx, this.state); - this.enterRule(_localctx, 188, SolidityParser.RULE_assemblyLiteral); + let localctx: AssemblyLiteralContext = new AssemblyLiteralContext(this, this._ctx, this.state); + this.enterRule(localctx, 188, SolidityParser.RULE_assemblyLiteral); try { this.state = 1109; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.StringLiteralFragment: - this.enterOuterAlt(_localctx, 1); + case 129: + this.enterOuterAlt(localctx, 1); { this.state = 1104; this.stringLiteral(); } break; - case SolidityParser.DecimalNumber: - this.enterOuterAlt(_localctx, 2); + case 103: + this.enterOuterAlt(localctx, 2); { this.state = 1105; this.match(SolidityParser.DecimalNumber); } break; - case SolidityParser.HexNumber: - this.enterOuterAlt(_localctx, 3); + case 104: + this.enterOuterAlt(localctx, 3); { this.state = 1106; this.match(SolidityParser.HexNumber); } break; - case SolidityParser.HexLiteralFragment: - this.enterOuterAlt(_localctx, 4); + case 106: + this.enterOuterAlt(localctx, 4); { this.state = 1107; this.hexLiteral(); } break; - case SolidityParser.BooleanLiteral: - this.enterOuterAlt(_localctx, 5); + case 102: + this.enterOuterAlt(localctx, 5); { this.state = 1108; this.match(SolidityParser.BooleanLiteral); @@ -5893,7 +5833,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -5903,19 +5843,19 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public tupleExpression(): TupleExpressionContext { - let _localctx: TupleExpressionContext = new TupleExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 190, SolidityParser.RULE_tupleExpression); + let localctx: TupleExpressionContext = new TupleExpressionContext(this, this._ctx, this.state); + this.enterRule(localctx, 190, SolidityParser.RULE_tupleExpression); let _la: number; try { this.state = 1137; this._errHandler.sync(this); switch (this._input.LA(1)) { - case SolidityParser.T__22: - this.enterOuterAlt(_localctx, 1); + case 23: + this.enterOuterAlt(localctx, 1); { this.state = 1111; this.match(SolidityParser.T__22); @@ -5923,7 +5863,7 @@ export class SolidityParser extends Parser { this.state = 1113; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 1112; this.expression(0); @@ -5933,7 +5873,7 @@ export class SolidityParser extends Parser { this.state = 1121; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 1115; @@ -5941,7 +5881,7 @@ export class SolidityParser extends Parser { this.state = 1117; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 1116; this.expression(0); @@ -5959,22 +5899,22 @@ export class SolidityParser extends Parser { this.match(SolidityParser.T__23); } break; - case SolidityParser.T__41: - this.enterOuterAlt(_localctx, 2); + case 42: + this.enterOuterAlt(localctx, 2); { this.state = 1125; this.match(SolidityParser.T__41); this.state = 1134; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << SolidityParser.T__5) | (1 << SolidityParser.T__13) | (1 << SolidityParser.T__22) | (1 << SolidityParser.T__24) | (1 << SolidityParser.T__29) | (1 << SolidityParser.T__30))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (SolidityParser.T__37 - 38)) | (1 << (SolidityParser.T__41 - 38)) | (1 << (SolidityParser.T__43 - 38)) | (1 << (SolidityParser.T__45 - 38)) | (1 << (SolidityParser.T__49 - 38)) | (1 << (SolidityParser.T__61 - 38)) | (1 << (SolidityParser.T__62 - 38)) | (1 << (SolidityParser.T__63 - 38)) | (1 << (SolidityParser.T__64 - 38)) | (1 << (SolidityParser.T__65 - 38)) | (1 << (SolidityParser.T__66 - 38)) | (1 << (SolidityParser.T__67 - 38)) | (1 << (SolidityParser.T__68 - 38)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (SolidityParser.T__70 - 71)) | (1 << (SolidityParser.T__71 - 71)) | (1 << (SolidityParser.T__94 - 71)) | (1 << (SolidityParser.Int - 71)) | (1 << (SolidityParser.Uint - 71)) | (1 << (SolidityParser.Byte - 71)) | (1 << (SolidityParser.Fixed - 71)) | (1 << (SolidityParser.Ufixed - 71)) | (1 << (SolidityParser.BooleanLiteral - 71)))) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & ((1 << (SolidityParser.DecimalNumber - 103)) | (1 << (SolidityParser.HexNumber - 103)) | (1 << (SolidityParser.HexLiteralFragment - 103)) | (1 << (SolidityParser.LeaveKeyword - 103)) | (1 << (SolidityParser.PayableKeyword - 103)) | (1 << (SolidityParser.TypeKeyword - 103)) | (1 << (SolidityParser.GlobalKeyword - 103)) | (1 << (SolidityParser.ConstructorKeyword - 103)) | (1 << (SolidityParser.ReceiveKeyword - 103)) | (1 << (SolidityParser.Identifier - 103)) | (1 << (SolidityParser.StringLiteralFragment - 103)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3263184960) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 4278194513) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 4244635651) !== 0) || ((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 124273675) !== 0)) { { this.state = 1126; this.expression(0); this.state = 1131; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 1127; @@ -6000,7 +5940,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -6010,31 +5950,28 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public numberLiteral(): NumberLiteralContext { - let _localctx: NumberLiteralContext = new NumberLiteralContext(this._ctx, this.state); - this.enterRule(_localctx, 192, SolidityParser.RULE_numberLiteral); + let localctx: NumberLiteralContext = new NumberLiteralContext(this, this._ctx, this.state); + this.enterRule(localctx, 192, SolidityParser.RULE_numberLiteral); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1139; _la = this._input.LA(1); - if (!(_la === SolidityParser.DecimalNumber || _la === SolidityParser.HexNumber)) { + if(!(_la===103 || _la===104)) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 1141; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 125, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 125, this._ctx) ) { case 1: { this.state = 1140; @@ -6046,7 +5983,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -6056,33 +5993,30 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public identifier(): IdentifierContext { - let _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state); - this.enterRule(_localctx, 194, SolidityParser.RULE_identifier); + let localctx: IdentifierContext = new IdentifierContext(this, this._ctx, this.state); + this.enterRule(localctx, 194, SolidityParser.RULE_identifier); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1143; _la = this._input.LA(1); - if (!(_la === SolidityParser.T__13 || _la === SolidityParser.T__24 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & ((1 << (SolidityParser.T__43 - 44)) | (1 << (SolidityParser.T__49 - 44)) | (1 << (SolidityParser.T__61 - 44)))) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (SolidityParser.T__94 - 95)) | (1 << (SolidityParser.LeaveKeyword - 95)) | (1 << (SolidityParser.PayableKeyword - 95)) | (1 << (SolidityParser.GlobalKeyword - 95)) | (1 << (SolidityParser.ConstructorKeyword - 95)))) !== 0) || _la === SolidityParser.ReceiveKeyword || _la === SolidityParser.Identifier)) { + if(!(_la===14 || _la===25 || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 262209) !== 0) || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & 1615069185) !== 0) || _la===127 || _la===128)) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -6092,15 +6026,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public hexLiteral(): HexLiteralContext { - let _localctx: HexLiteralContext = new HexLiteralContext(this._ctx, this.state); - this.enterRule(_localctx, 196, SolidityParser.RULE_hexLiteral); + let localctx: HexLiteralContext = new HexLiteralContext(this, this._ctx, this.state); + this.enterRule(localctx, 196, SolidityParser.RULE_hexLiteral); try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1146; this._errHandler.sync(this); @@ -6120,13 +6054,13 @@ export class SolidityParser extends Parser { } this.state = 1148; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 126, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 126, this._ctx); } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -6136,22 +6070,22 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public overrideSpecifier(): OverrideSpecifierContext { - let _localctx: OverrideSpecifierContext = new OverrideSpecifierContext(this._ctx, this.state); - this.enterRule(_localctx, 198, SolidityParser.RULE_overrideSpecifier); + let localctx: OverrideSpecifierContext = new OverrideSpecifierContext(this, this._ctx, this.state); + this.enterRule(localctx, 198, SolidityParser.RULE_overrideSpecifier); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1150; this.match(SolidityParser.T__95); this.state = 1162; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === SolidityParser.T__22) { + if (_la===23) { { this.state = 1151; this.match(SolidityParser.T__22); @@ -6160,7 +6094,7 @@ export class SolidityParser extends Parser { this.state = 1157; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === SolidityParser.T__15) { + while (_la===16) { { { this.state = 1153; @@ -6182,7 +6116,7 @@ export class SolidityParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -6192,15 +6126,15 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public stringLiteral(): StringLiteralContext { - let _localctx: StringLiteralContext = new StringLiteralContext(this._ctx, this.state); - this.enterRule(_localctx, 200, SolidityParser.RULE_stringLiteral); + let localctx: StringLiteralContext = new StringLiteralContext(this, this._ctx, this.state); + this.enterRule(localctx, 200, SolidityParser.RULE_stringLiteral); try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 1165; this._errHandler.sync(this); @@ -6220,13 +6154,13 @@ export class SolidityParser extends Parser { } this.state = 1167; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 129, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 129, this._ctx); } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -6236,835 +6170,587 @@ export class SolidityParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } - public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { + public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { case 38: - return this.typeName_sempred(_localctx as TypeNameContext, predIndex); - + return this.typeName_sempred(localctx as TypeNameContext, predIndex); case 70: - return this.expression_sempred(_localctx as ExpressionContext, predIndex); + return this.expression_sempred(localctx as ExpressionContext, predIndex); } return true; } - private typeName_sempred(_localctx: TypeNameContext, predIndex: number): boolean { + private typeName_sempred(localctx: TypeNameContext, predIndex: number): boolean { switch (predIndex) { case 0: return this.precpred(this._ctx, 3); } return true; } - private expression_sempred(_localctx: ExpressionContext, predIndex: number): boolean { + private expression_sempred(localctx: ExpressionContext, predIndex: number): boolean { switch (predIndex) { case 1: return this.precpred(this._ctx, 14); - case 2: return this.precpred(this._ctx, 13); - case 3: return this.precpred(this._ctx, 12); - case 4: return this.precpred(this._ctx, 11); - case 5: return this.precpred(this._ctx, 10); - case 6: return this.precpred(this._ctx, 9); - case 7: return this.precpred(this._ctx, 8); - case 8: return this.precpred(this._ctx, 7); - case 9: return this.precpred(this._ctx, 6); - case 10: return this.precpred(this._ctx, 5); - case 11: return this.precpred(this._ctx, 4); - case 12: return this.precpred(this._ctx, 3); - case 13: return this.precpred(this._ctx, 2); - case 14: return this.precpred(this._ctx, 27); - case 15: return this.precpred(this._ctx, 25); - case 16: return this.precpred(this._ctx, 24); - case 17: return this.precpred(this._ctx, 23); - case 18: return this.precpred(this._ctx, 22); - case 19: return this.precpred(this._ctx, 21); } return true; } - private static readonly _serializedATNSegments: number = 3; - private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x87\u0494\x04" + - "\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" + - "\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" + - "\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" + - "\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17" + - "\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C" + - "\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04" + - "#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04+\t" + - "+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" + - "4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" + - "=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" + - "F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" + - "O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04" + - "X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" + - "`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x03\x02\x03\x02\x03" + - "\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x07" + - "\x02\xD8\n\x02\f\x02\x0E\x02\xDB\v\x02\x03\x02\x03\x02\x03\x03\x03\x03" + - "\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x05\x03\x05\x03\x05\x05\x05" + - "\xE9\n\x05\x03\x06\x03\x06\x05\x06\xED\n\x06\x03\x06\x07\x06\xF0\n\x06" + - "\f\x06\x0E\x06\xF3\v\x06\x03\x07\x03\x07\x03\b\x05\b\xF8\n\b\x03\b\x03" + - "\b\x05\b\xFC\n\b\x03\b\x05\b\xFF\n\b\x03\t\x03\t\x03\t\x05\t\u0104\n\t" + - "\x03\n\x03\n\x03\n\x03\n\x05\n\u010A\n\n\x03\n\x03\n\x03\n\x03\n\x03\n" + - "\x05\n\u0111\n\n\x03\n\x03\n\x05\n\u0115\n\n\x03\n\x03\n\x03\n\x03\n\x03" + - "\n\x03\n\x03\n\x03\n\x03\n\x07\n\u0120\n\n\f\n\x0E\n\u0123\v\n\x03\n\x03" + - "\n\x03\n\x03\n\x03\n\x05\n\u012A\n\n\x03\v\x03\v\x03\f\x05\f\u012F\n\f" + - "\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x07\f\u0137\n\f\f\f\x0E\f\u013A\v" + - "\f\x05\f\u013C\n\f\x03\f\x03\f\x07\f\u0140\n\f\f\f\x0E\f\u0143\v\f\x03" + - "\f\x03\f\x03\r\x03\r\x03\r\x05\r\u014A\n\r\x03\r\x05\r\u014D\n\r\x03\x0E" + - "\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x05\x0E" + - "\u0158\n\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x07" + - "\x0F\u0161\n\x0F\f\x0F\x0E\x0F\u0164\v\x0F\x03\x0F\x03\x0F\x03\x0F\x05" + - "\x0F\u0169\n\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10" + - "\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12" + - "\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" + - "\x05\x13\u0184\n\x13\x03\x13\x05\x13\u0187\n\x13\x03\x13\x03\x13\x03\x14" + - "\x03\x14\x03\x14\x03\x14\x03\x14\x07\x14\u0190\n\x14\f\x14\x0E\x14\u0193" + - "\v\x14\x03\x14\x03\x14\x05\x14\u0197\n\x14\x03\x15\x03\x15\x03\x15\x05" + - "\x15\u019C\n\x15\x03\x16\x03\x16\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17" + - "\x03\x17\x03\x17\x03\x17\x07\x17\u01A8\n\x17\f\x17\x0E\x17\u01AB\v\x17" + - "\x05\x17\u01AD\n\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x05\x18\u01B4" + - "\n\x18\x03\x18\x03\x18\x07\x18\u01B8\n\x18\f\x18\x0E\x18\u01BB\v\x18\x03" + - "\x18\x03\x18\x05\x18\u01BF\n\x18\x03\x19\x03\x19\x03\x19\x05\x19\u01C4" + - "\n\x19\x03\x19\x05\x19\u01C7\n\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x05" + - "\x1A\u01CD\n\x1A\x03\x1A\x03\x1A\x05\x1A\u01D1\n\x1A\x03\x1B\x03\x1B\x05" + - "\x1B\u01D5\n\x1B\x03\x1B\x03\x1B\x03\x1B\x05\x1B\u01DA\n\x1B\x03\x1C\x03" + - "\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03" + - "\x1D\x07\x1D\u01E7\n\x1D\f\x1D\x0E\x1D\u01EA\v\x1D\x03\x1E\x03\x1E\x03" + - "\x1E\x03\x1E\x05\x1E\u01F0\n\x1E\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03 " + - "\x03 \x03 \x03 \x05 \u01FA\n \x03 \x03 \x07 \u01FE\n \f \x0E \u0201\v" + - " \x03 \x03 \x03!\x03!\x03!\x03!\x07!\u0209\n!\f!\x0E!\u020C\v!\x05!\u020E" + - "\n!\x03!\x03!\x03\"\x03\"\x05\"\u0214\n\"\x03\"\x05\"\u0217\n\"\x03#\x03" + - "#\x03#\x03#\x07#\u021D\n#\f#\x0E#\u0220\v#\x05#\u0222\n#\x03#\x03#\x03" + - "$\x03$\x05$\u0228\n$\x03$\x05$\u022B\n$\x03%\x03%\x03%\x03%\x07%\u0231" + - "\n%\f%\x0E%\u0234\v%\x05%\u0236\n%\x03%\x03%\x03&\x03&\x05&\u023C\n&\x03" + - "\'\x03\'\x05\'\u0240\n\'\x03\'\x03\'\x03(\x03(\x03(\x03(\x03(\x03(\x03" + - "(\x05(\u024B\n(\x03(\x03(\x03(\x05(\u0250\n(\x03(\x07(\u0253\n(\f(\x0E" + - "(\u0256\v(\x03)\x03)\x03)\x07)\u025B\n)\f)\x0E)\u025E\v)\x03*\x03*\x05" + - "*\u0262\n*\x03+\x03+\x03+\x03+\x05+\u0268\n+\x03+\x03+\x03+\x05+\u026D" + - "\n+\x03+\x03+\x03,\x03,\x03-\x03-\x03.\x03.\x03.\x03.\x03.\x07.\u027A" + - "\n.\f.\x0E.\u027D\v.\x03.\x03.\x05.\u0281\n.\x03/\x03/\x030\x030\x031" + - "\x031\x071\u0289\n1\f1\x0E1\u028C\v1\x031\x031\x032\x032\x032\x032\x03" + - "2\x032\x032\x032\x032\x032\x032\x032\x032\x032\x032\x052\u029F\n2\x03" + - "3\x033\x033\x034\x034\x034\x034\x034\x034\x034\x054\u02AB\n4\x035\x03" + - "5\x035\x055\u02B0\n5\x035\x035\x065\u02B4\n5\r5\x0E5\u02B5\x036\x036\x05" + - "6\u02BA\n6\x036\x056\u02BD\n6\x036\x036\x037\x037\x037\x037\x037\x037" + - "\x038\x038\x058\u02C9\n8\x039\x039\x039\x03:\x03:\x03:\x03:\x05:\u02D2" + - "\n:\x03:\x03:\x05:\u02D6\n:\x03:\x05:\u02D9\n:\x03:\x03:\x03:\x03;\x03" + - ";\x05;\u02E0\n;\x03;\x03;\x03;\x03;\x05;\u02E6\n;\x03;\x03;\x03<\x03<" + - "\x03=\x03=\x03=\x03=\x03=\x03=\x03=\x03=\x03>\x03>\x03>\x03?\x03?\x03" + - "?\x03@\x03@\x05@\u02FC\n@\x03@\x03@\x03A\x03A\x03A\x03B\x03B\x03B\x03" + - "B\x03C\x03C\x03C\x03C\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x05D\u0312\n" + - "D\x03D\x03D\x05D\u0316\nD\x03D\x03D\x03E\x05E\u031B\nE\x03E\x03E\x05E" + - "\u031F\nE\x07E\u0321\nE\fE\x0EE\u0324\vE\x03F\x03F\x05F\u0328\nF\x03F" + - "\x07F\u032B\nF\fF\x0EF\u032E\vF\x03F\x05F\u0331\nF\x03F\x03F\x03G\x03" + - "G\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03" + - "H\x03H\x03H\x03H\x03H\x05H\u0349\nH\x03H\x03H\x03H\x03H\x03H\x03H\x03" + - "H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03" + - "H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03" + - "H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03" + - "H\x03H\x03H\x03H\x05H\u037F\nH\x03H\x03H\x05H\u0383\nH\x03H\x03H\x03H" + - "\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x07H\u0393\nH" + - "\fH\x0EH\u0396\vH\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x05I\u03A1" + - "\nI\x03J\x03J\x03J\x07J\u03A6\nJ\fJ\x0EJ\u03A9\vJ\x03K\x03K\x03K\x07K" + - "\u03AE\nK\fK\x0EK\u03B1\vK\x03K\x05K\u03B4\nK\x03L\x03L\x03L\x03L\x03" + - "M\x03M\x05M\u03BC\nM\x03M\x03M\x05M\u03C0\nM\x05M\u03C2\nM\x03N\x03N\x03" + - "N\x03N\x03N\x03O\x03O\x07O\u03CB\nO\fO\x0EO\u03CE\vO\x03O\x03O\x03P\x03" + - "P\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x03" + - "P\x03P\x05P\u03E3\nP\x03Q\x03Q\x03Q\x05Q\u03E8\nQ\x03R\x03R\x03R\x03R" + - "\x03S\x03S\x03S\x03S\x05S\u03F2\nS\x03S\x03S\x05S\u03F6\nS\x03S\x03S\x07" + - "S\u03FA\nS\fS\x0ES\u03FD\vS\x03S\x05S\u0400\nS\x03T\x03T\x03T\x03T\x05" + - "T\u0406\nT\x03U\x03U\x03U\x03U\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x05" + - "V\u0413\nV\x03W\x03W\x03W\x07W\u0418\nW\fW\x0EW\u041B\vW\x03X\x03X\x03" + - "X\x03X\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x07Z\u0427\nZ\fZ\x0EZ\u042A\vZ\x03" + - "[\x03[\x03[\x03[\x03[\x03[\x05[\u0432\n[\x03\\\x03\\\x03\\\x03\\\x05\\" + - "\u0438\n\\\x03\\\x03\\\x05\\\u043C\n\\\x03\\\x03\\\x03]\x03]\x03]\x03" + - "^\x03^\x03^\x05^\u0446\n^\x03^\x03^\x03^\x05^\u044B\n^\x03^\x03^\x03_" + - "\x03_\x03_\x03_\x03`\x03`\x03`\x03`\x03`\x05`\u0458\n`\x03a\x03a\x05a" + - "\u045C\na\x03a\x03a\x05a\u0460\na\x07a\u0462\na\fa\x0Ea\u0465\va\x03a" + - "\x03a\x03a\x03a\x03a\x07a\u046C\na\fa\x0Ea\u046F\va\x05a\u0471\na\x03" + - "a\x05a\u0474\na\x03b\x03b\x05b\u0478\nb\x03c\x03c\x03d\x06d\u047D\nd\r" + - "d\x0Ed\u047E\x03e\x03e\x03e\x03e\x03e\x07e\u0486\ne\fe\x0Ee\u0489\ve\x03" + - "e\x03e\x05e\u048D\ne\x03f\x06f\u0490\nf\rf\x0Ef\u0491\x03f\x02\x02\x04" + - "N\x8Eg\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02" + - "\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02" + - "(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02" + - "D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02\\\x02^\x02" + - "`\x02b\x02d\x02f\x02h\x02j\x02l\x02n\x02p\x02r\x02t\x02v\x02x\x02z\x02" + - "|\x02~\x02\x80\x02\x82\x02\x84\x02\x86\x02\x88\x02\x8A\x02\x8C\x02\x8E" + - "\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02\x9A\x02\x9C\x02\x9E\x02\xA0" + - "\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\xAC\x02\xAE\x02\xB0\x02\xB2" + - "\x02\xB4\x02\xB6\x02\xB8\x02\xBA\x02\xBC\x02\xBE\x02\xC0\x02\xC2\x02\xC4" + - "\x02\xC6\x02\xC8\x02\xCA\x02\x02\x11\x03\x02\x07\r\x03\x02\x15\x17\x05" + - "\x02\x05\x05\x07\f\x1E%\x03\x0224\x06\x02ppww{{}}\x05\x02..ADcg\x03\x02" + - "EF\x03\x02 !\x04\x02\x05\x05\"#\x03\x02LM\x03\x02\t\f\x03\x02$%\x04\x02" + - "\r\rPY\x03\x02ij\f\x02\x10\x10\x1B\x1B..44@@aassww~\x7F\x81\x82\x02\u0515" + - "\x02\xD9\x03\x02\x02\x02\x04\xDE\x03\x02\x02\x02\x06\xE3\x03\x02\x02\x02" + - "\b\xE8\x03\x02\x02\x02\n\xEA\x03\x02\x02\x02\f\xF4\x03\x02\x02\x02\x0E" + - "\xFE\x03\x02\x02\x02\x10\u0100\x03\x02\x02\x02\x12\u0129\x03\x02\x02\x02" + - "\x14\u012B\x03\x02\x02\x02\x16\u012E\x03\x02\x02\x02\x18\u0146\x03\x02" + - "\x02\x02\x1A\u0157\x03\x02\x02\x02\x1C\u0159\x03\x02\x02\x02\x1E\u016C" + - "\x03\x02\x02\x02 \u0173\x03\x02\x02\x02\"\u0178\x03\x02\x02\x02$\u017E" + - "\x03\x02\x02\x02&\u0196\x03\x02\x02\x02(\u0198\x03\x02\x02\x02*\u019D" + - "\x03\x02\x02\x02,\u019F\x03\x02\x02\x02.\u01B0\x03\x02\x02\x020\u01C0" + - "\x03\x02\x02\x022\u01C8\x03\x02\x02\x024\u01D9\x03\x02\x02\x026\u01DB" + - "\x03\x02\x02\x028\u01E8\x03\x02\x02\x02:\u01EB\x03\x02\x02\x02<\u01F3" + - "\x03\x02\x02\x02>\u01F5\x03\x02\x02\x02@\u0204\x03\x02\x02\x02B\u0211" + - "\x03\x02\x02\x02D\u0218\x03\x02\x02\x02F\u0225\x03\x02\x02\x02H\u022C" + - "\x03\x02\x02\x02J\u0239\x03\x02\x02\x02L\u023D\x03\x02\x02\x02N\u024A" + - "\x03\x02\x02\x02P\u0257\x03\x02\x02\x02R\u0261\x03\x02\x02\x02T\u0263" + - "\x03\x02\x02\x02V\u0270\x03\x02\x02\x02X\u0272\x03\x02\x02\x02Z\u0274" + - "\x03\x02\x02\x02\\\u0282\x03\x02\x02\x02^\u0284\x03\x02\x02\x02`\u0286" + - "\x03\x02\x02\x02b\u029E\x03\x02\x02\x02d\u02A0\x03\x02\x02\x02f\u02A3" + - "\x03\x02\x02\x02h\u02AC\x03\x02\x02\x02j\u02B7\x03\x02\x02\x02l\u02C0" + - "\x03\x02\x02\x02n\u02C8\x03\x02\x02\x02p\u02CA\x03\x02\x02\x02r\u02CD" + - "\x03\x02\x02\x02t\u02DD\x03\x02\x02\x02v\u02E9\x03\x02\x02\x02x\u02EB" + - "\x03\x02\x02\x02z\u02F3\x03\x02\x02\x02|\u02F6\x03\x02\x02\x02~\u02F9" + - "\x03\x02\x02\x02\x80\u02FF\x03\x02\x02\x02\x82\u0302\x03\x02\x02\x02\x84" + - "\u0306\x03\x02\x02\x02\x86\u0311\x03\x02\x02\x02\x88\u031A\x03\x02\x02" + - "\x02\x8A\u0325\x03\x02\x02\x02\x8C\u0334\x03\x02\x02\x02\x8E\u0348\x03" + - "\x02\x02\x02\x90\u03A0\x03\x02\x02\x02\x92\u03A2\x03\x02\x02\x02\x94\u03AA" + - "\x03\x02\x02\x02\x96\u03B5\x03\x02\x02\x02\x98\u03C1\x03\x02\x02\x02\x9A" + - "\u03C3\x03\x02\x02\x02\x9C\u03C8\x03\x02\x02\x02\x9E\u03E2\x03\x02\x02" + - "\x02\xA0\u03E7\x03\x02\x02\x02\xA2\u03E9\x03\x02\x02\x02\xA4\u03F1\x03" + - "\x02\x02\x02\xA6\u0401\x03\x02\x02\x02\xA8\u0407\x03\x02\x02\x02\xAA\u0412" + - "\x03\x02\x02\x02\xAC\u0414\x03\x02\x02\x02\xAE\u041C\x03\x02\x02\x02\xB0" + - "\u0420\x03\x02\x02\x02\xB2\u0423\x03\x02\x02\x02\xB4\u0431\x03\x02\x02" + - "\x02\xB6\u0433\x03\x02\x02\x02\xB8\u043F\x03\x02\x02\x02\xBA\u0442\x03" + - "\x02\x02\x02\xBC\u044E\x03\x02\x02\x02\xBE\u0457\x03\x02\x02\x02\xC0\u0473" + - "\x03\x02\x02\x02\xC2\u0475\x03\x02\x02\x02\xC4\u0479\x03\x02\x02\x02\xC6" + - "\u047C\x03\x02\x02\x02\xC8\u0480\x03\x02\x02\x02\xCA\u048F\x03\x02\x02" + - "\x02\xCC\xD8\x05\x04\x03\x02\xCD\xD8\x05\x12\n\x02\xCE\xD8\x05\x16\f\x02" + - "\xCF\xD8\x05> \x02\xD0\xD8\x05:\x1E\x02\xD1\xD8\x05,\x17\x02\xD2\xD8\x05" + - "2\x1A\x02\xD3\xD8\x05\x1E\x10\x02\xD4\xD8\x05 \x11\x02\xD5\xD8\x05\"\x12" + - "\x02\xD6\xD8\x05$\x13\x02\xD7\xCC\x03\x02\x02\x02\xD7\xCD\x03\x02\x02" + - "\x02\xD7\xCE\x03\x02\x02\x02\xD7\xCF\x03\x02\x02\x02\xD7\xD0\x03\x02\x02" + - "\x02\xD7\xD1\x03\x02\x02\x02\xD7\xD2\x03\x02\x02\x02\xD7\xD3\x03\x02\x02" + - "\x02\xD7\xD4\x03\x02\x02\x02\xD7\xD5\x03\x02\x02\x02\xD7\xD6\x03\x02\x02" + - "\x02\xD8\xDB\x03\x02\x02\x02\xD9\xD7\x03\x02\x02\x02\xD9\xDA\x03\x02\x02" + - "\x02\xDA\xDC\x03\x02\x02\x02\xDB\xD9\x03\x02\x02\x02\xDC\xDD\x07\x02\x02" + - "\x03\xDD\x03\x03\x02\x02\x02\xDE\xDF\x07\x03\x02\x02\xDF\xE0\x05\x06\x04" + - "\x02\xE0\xE1\x05\b\x05\x02\xE1\xE2\x07\x04\x02\x02\xE2\x05\x03\x02\x02" + - "\x02\xE3\xE4\x05\xC4c\x02\xE4\x07\x03\x02\x02\x02\xE5\xE9\x07\x05\x02" + - "\x02\xE6\xE9\x05\n\x06\x02\xE7\xE9\x05\x8EH\x02\xE8\xE5\x03\x02\x02\x02" + - "\xE8\xE6\x03\x02\x02\x02\xE8\xE7\x03\x02\x02\x02\xE9\t\x03\x02\x02\x02" + - "\xEA\xF1\x05\x0E\b\x02\xEB\xED\x07\x06\x02\x02\xEC\xEB\x03\x02\x02\x02" + - "\xEC\xED\x03\x02\x02\x02\xED\xEE\x03\x02\x02\x02\xEE\xF0\x05\x0E\b\x02" + - "\xEF\xEC\x03\x02\x02\x02\xF0\xF3\x03\x02\x02\x02\xF1\xEF\x03\x02\x02\x02" + - "\xF1\xF2\x03\x02\x02\x02\xF2\v\x03\x02\x02\x02\xF3\xF1\x03\x02\x02\x02" + - "\xF4\xF5\t\x02\x02\x02\xF5\r\x03\x02\x02\x02\xF6\xF8\x05\f\x07\x02\xF7" + - "\xF6\x03\x02\x02\x02\xF7\xF8\x03\x02\x02\x02\xF8\xF9\x03\x02\x02\x02\xF9" + - "\xFF\x07\x84\x02\x02\xFA\xFC\x05\f\x07\x02\xFB\xFA\x03\x02\x02\x02\xFB" + - "\xFC\x03\x02\x02\x02\xFC\xFD\x03\x02\x02\x02\xFD\xFF\x07i\x02\x02\xFE" + - "\xF7\x03\x02\x02\x02\xFE\xFB\x03\x02\x02\x02\xFF\x0F\x03\x02\x02\x02\u0100" + - "\u0103\x05\xC4c\x02\u0101\u0102\x07\x0E\x02\x02\u0102\u0104\x05\xC4c\x02" + - "\u0103\u0101\x03\x02\x02\x02\u0103\u0104\x03\x02\x02\x02\u0104\x11\x03" + - "\x02\x02\x02\u0105\u0106\x07\x0F\x02\x02\u0106\u0109\x05\x14\v\x02\u0107" + - "\u0108\x07\x0E\x02\x02\u0108\u010A\x05\xC4c\x02\u0109\u0107\x03\x02\x02" + - "\x02\u0109\u010A\x03\x02\x02\x02\u010A\u010B\x03\x02\x02\x02\u010B\u010C" + - "\x07\x04\x02\x02\u010C\u012A\x03\x02\x02\x02\u010D\u0110\x07\x0F\x02\x02" + - "\u010E\u0111\x07\x05\x02\x02\u010F\u0111\x05\xC4c\x02\u0110\u010E\x03" + - "\x02\x02\x02\u0110\u010F\x03\x02\x02\x02\u0111\u0114\x03\x02\x02\x02\u0112" + - "\u0113\x07\x0E\x02\x02\u0113\u0115\x05\xC4c\x02\u0114\u0112\x03\x02\x02" + - "\x02\u0114\u0115\x03\x02\x02\x02\u0115\u0116\x03\x02\x02\x02\u0116\u0117" + - "\x07\x10\x02\x02\u0117\u0118\x05\x14\v\x02\u0118\u0119\x07\x04\x02\x02" + - "\u0119\u012A\x03\x02\x02\x02\u011A\u011B\x07\x0F\x02\x02\u011B\u011C\x07" + - "\x11\x02\x02\u011C\u0121\x05\x10\t\x02\u011D\u011E\x07\x12\x02\x02\u011E" + - "\u0120\x05\x10\t\x02\u011F\u011D\x03\x02\x02\x02\u0120\u0123\x03\x02\x02" + - "\x02\u0121\u011F\x03\x02\x02\x02\u0121\u0122\x03\x02\x02\x02\u0122\u0124" + - "\x03\x02\x02\x02\u0123\u0121\x03\x02\x02\x02\u0124\u0125\x07\x13\x02\x02" + - "\u0125\u0126\x07\x10\x02\x02\u0126\u0127\x05\x14\v\x02\u0127\u0128\x07" + - "\x04\x02\x02\u0128\u012A\x03\x02\x02\x02\u0129\u0105\x03\x02\x02\x02\u0129" + - "\u010D\x03\x02\x02\x02\u0129\u011A\x03\x02\x02\x02\u012A\x13\x03\x02\x02" + - "\x02\u012B\u012C\x07\x83\x02\x02\u012C\x15\x03\x02\x02\x02\u012D\u012F" + - "\x07\x14\x02\x02\u012E\u012D\x03\x02\x02\x02\u012E\u012F\x03\x02\x02\x02" + - "\u012F\u0130\x03\x02\x02\x02\u0130\u0131\t\x03\x02\x02\u0131\u013B\x05" + - "\xC4c\x02\u0132\u0133\x07\x18\x02\x02\u0133\u0138\x05\x18\r\x02\u0134" + - "\u0135\x07\x12\x02\x02\u0135\u0137\x05\x18\r\x02\u0136\u0134\x03\x02\x02" + - "\x02\u0137\u013A\x03\x02\x02\x02\u0138\u0136\x03\x02\x02\x02\u0138\u0139" + - "\x03\x02\x02\x02\u0139\u013C\x03\x02\x02\x02\u013A\u0138\x03\x02\x02\x02" + - "\u013B\u0132\x03\x02\x02\x02\u013B\u013C\x03\x02\x02\x02\u013C\u013D\x03" + - "\x02\x02\x02\u013D\u0141\x07\x11\x02\x02\u013E\u0140\x05\x1A\x0E\x02\u013F" + - "\u013E\x03\x02\x02\x02\u0140\u0143\x03\x02\x02\x02\u0141\u013F\x03\x02" + - "\x02\x02\u0141\u0142\x03\x02\x02\x02\u0142\u0144\x03\x02\x02\x02\u0143" + - "\u0141\x03\x02\x02\x02\u0144\u0145\x07\x13\x02\x02\u0145\x17\x03\x02\x02" + - "\x02\u0146\u014C\x05P)\x02\u0147\u0149\x07\x19\x02\x02\u0148\u014A\x05" + - "\x92J\x02\u0149\u0148\x03\x02\x02\x02\u0149\u014A\x03\x02\x02\x02\u014A" + - "\u014B\x03\x02\x02\x02\u014B\u014D\x07\x1A\x02\x02\u014C\u0147\x03\x02" + - "\x02\x02\u014C\u014D\x03\x02\x02\x02\u014D\x19\x03\x02\x02\x02\u014E\u0158" + - "\x05\x1C\x0F\x02\u014F\u0158\x05$\x13\x02\u0150\u0158\x05,\x17\x02\u0151" + - "\u0158\x05.\x18\x02\u0152\u0158\x052\x1A\x02\u0153\u0158\x05:\x1E\x02" + - "\u0154\u0158\x05> \x02\u0155\u0158\x05 \x11\x02\u0156\u0158\x05\"\x12" + - "\x02\u0157\u014E\x03\x02\x02\x02\u0157\u014F\x03\x02\x02\x02\u0157\u0150" + - "\x03\x02\x02\x02\u0157\u0151\x03\x02\x02\x02\u0157\u0152\x03\x02\x02\x02" + - "\u0157\u0153\x03\x02\x02\x02\u0157\u0154\x03\x02\x02\x02\u0157\u0155\x03" + - "\x02\x02\x02\u0157\u0156\x03\x02\x02\x02\u0158\x1B\x03\x02\x02\x02\u0159" + - "\u0162\x05N(\x02\u015A\u0161\x07y\x02\x02\u015B\u0161\x07v\x02\x02\u015C" + - "\u0161\x07x\x02\x02\u015D\u0161\x07p\x02\x02\u015E\u0161\x07q\x02\x02" + - "\u015F\u0161\x05\xC8e\x02\u0160\u015A\x03\x02\x02\x02\u0160\u015B\x03" + - "\x02\x02\x02\u0160\u015C\x03\x02\x02\x02\u0160\u015D\x03\x02\x02\x02\u0160" + - "\u015E\x03\x02\x02\x02\u0160\u015F\x03\x02\x02\x02\u0161\u0164\x03\x02" + - "\x02\x02\u0162\u0160\x03\x02\x02\x02\u0162\u0163\x03\x02\x02\x02\u0163" + - "\u0165\x03\x02\x02\x02\u0164\u0162\x03\x02\x02\x02\u0165\u0168\x05\xC4" + - "c\x02\u0166\u0167\x07\r\x02\x02\u0167\u0169\x05\x8EH\x02\u0168\u0166\x03" + - "\x02\x02\x02\u0168\u0169\x03\x02\x02\x02\u0169\u016A\x03\x02\x02\x02\u016A" + - "\u016B\x07\x04\x02\x02\u016B\x1D\x03\x02\x02\x02\u016C\u016D\x05N(\x02" + - "\u016D\u016E\x07p\x02\x02\u016E\u016F\x05\xC4c\x02\u016F\u0170\x07\r\x02" + - "\x02\u0170\u0171\x05\x8EH\x02\u0171\u0172\x07\x04\x02\x02\u0172\x1F\x03" + - "\x02\x02\x02\u0173\u0174\x07\x1B\x02\x02\u0174\u0175\x05\xC4c\x02\u0175" + - "\u0176\x05@!\x02\u0176\u0177\x07\x04\x02\x02\u0177!\x03\x02\x02\x02\u0178" + - "\u0179\x07|\x02\x02\u0179\u017A\x05\xC4c\x02\u017A\u017B\x07\x18\x02\x02" + - "\u017B\u017C\x05\x8CG\x02\u017C\u017D\x07\x04\x02\x02\u017D#\x03\x02\x02" + - "\x02\u017E\u017F\x07\x1C\x02\x02\u017F\u0180\x05&\x14\x02\u0180\u0183" + - "\x07\x1D\x02\x02\u0181\u0184\x07\x05\x02\x02\u0182\u0184\x05N(\x02\u0183" + - "\u0181\x03\x02\x02\x02\u0183\u0182\x03\x02\x02\x02\u0184\u0186\x03\x02" + - "\x02\x02\u0185\u0187\x07~\x02\x02\u0186\u0185\x03\x02\x02\x02\u0186\u0187" + - "\x03\x02\x02\x02\u0187\u0188\x03\x02\x02\x02\u0188\u0189\x07\x04\x02\x02" + - "\u0189%\x03\x02\x02\x02\u018A\u0197\x05P)\x02\u018B\u018C\x07\x11\x02" + - "\x02\u018C\u0191\x05(\x15\x02\u018D\u018E\x07\x12\x02\x02\u018E\u0190" + - "\x05(\x15\x02\u018F\u018D\x03\x02\x02\x02\u0190\u0193\x03\x02\x02\x02" + - "\u0191\u018F\x03\x02\x02\x02\u0191\u0192\x03\x02\x02\x02\u0192\u0194\x03" + - "\x02\x02\x02\u0193\u0191\x03\x02\x02\x02\u0194\u0195\x07\x13\x02\x02\u0195" + - "\u0197\x03\x02\x02\x02\u0196\u018A\x03\x02\x02\x02\u0196\u018B\x03\x02" + - "\x02\x02\u0197\'\x03\x02\x02\x02\u0198\u019B\x05P)\x02\u0199\u019A\x07" + - "\x0E\x02\x02\u019A\u019C\x05*\x16\x02\u019B\u0199\x03\x02\x02\x02\u019B" + - "\u019C\x03\x02\x02\x02\u019C)\x03\x02\x02\x02\u019D\u019E\t\x04\x02\x02" + - "\u019E+\x03\x02\x02\x02\u019F\u01A0\x07&\x02"; - private static readonly _serializedATNSegment1: string = - "\x02\u01A0\u01A1\x05\xC4c\x02\u01A1\u01AC\x07\x11\x02\x02\u01A2\u01A3" + - "\x05L\'\x02\u01A3\u01A9\x07\x04\x02\x02\u01A4\u01A5\x05L\'\x02\u01A5\u01A6" + - "\x07\x04\x02\x02\u01A6\u01A8\x03\x02\x02\x02\u01A7\u01A4\x03\x02\x02\x02" + - "\u01A8\u01AB\x03\x02\x02\x02\u01A9\u01A7\x03\x02\x02\x02\u01A9\u01AA\x03" + - "\x02\x02\x02\u01AA\u01AD\x03\x02\x02\x02\u01AB\u01A9\x03\x02\x02\x02\u01AC" + - "\u01A2\x03\x02\x02\x02\u01AC\u01AD\x03\x02\x02\x02\u01AD\u01AE\x03\x02" + - "\x02\x02\u01AE\u01AF\x07\x13\x02\x02\u01AF-\x03\x02\x02\x02\u01B0\u01B1" + - "\x07\'\x02\x02\u01B1\u01B3\x05\xC4c\x02\u01B2\u01B4\x05@!\x02\u01B3\u01B2" + - "\x03\x02\x02\x02\u01B3\u01B4\x03\x02\x02\x02\u01B4\u01B9\x03\x02\x02\x02" + - "\u01B5\u01B8\x07z\x02\x02\u01B6\u01B8\x05\xC8e\x02\u01B7\u01B5\x03\x02" + - "\x02\x02\u01B7\u01B6\x03\x02\x02\x02\u01B8\u01BB\x03\x02\x02\x02\u01B9" + - "\u01B7\x03\x02\x02\x02\u01B9\u01BA\x03\x02\x02\x02\u01BA\u01BE\x03\x02" + - "\x02\x02\u01BB\u01B9\x03\x02\x02\x02\u01BC\u01BF\x07\x04\x02\x02\u01BD" + - "\u01BF\x05`1\x02\u01BE\u01BC\x03\x02\x02\x02\u01BE\u01BD\x03\x02\x02\x02" + - "\u01BF/\x03\x02\x02\x02\u01C0\u01C6\x05\xC4c\x02\u01C1\u01C3\x07\x19\x02" + - "\x02\u01C2\u01C4\x05\x92J\x02\u01C3\u01C2\x03\x02\x02\x02\u01C3\u01C4" + - "\x03\x02\x02\x02\u01C4\u01C5\x03\x02\x02\x02\u01C5\u01C7\x07\x1A\x02\x02" + - "\u01C6\u01C1\x03\x02\x02\x02\u01C6\u01C7\x03\x02\x02\x02\u01C71\x03\x02" + - "\x02\x02\u01C8\u01C9\x054\x1B\x02\u01C9\u01CA\x05@!\x02\u01CA\u01CC\x05" + - "8\x1D\x02\u01CB\u01CD\x056\x1C\x02\u01CC\u01CB\x03\x02\x02\x02\u01CC\u01CD" + - "\x03\x02\x02\x02\u01CD\u01D0\x03\x02\x02\x02\u01CE\u01D1\x07\x04\x02\x02" + - "\u01CF\u01D1\x05`1\x02\u01D0\u01CE\x03\x02\x02\x02\u01D0\u01CF\x03\x02" + - "\x02\x02\u01D13\x03\x02\x02\x02\u01D2\u01D4\x07(\x02\x02\u01D3\u01D5\x05" + - "\xC4c\x02\u01D4\u01D3\x03\x02\x02\x02\u01D4\u01D5\x03\x02\x02\x02\u01D5" + - "\u01DA\x03\x02\x02\x02\u01D6\u01DA\x07\x7F\x02\x02\u01D7\u01DA\x07\x80" + - "\x02\x02\u01D8\u01DA\x07\x81\x02\x02\u01D9\u01D2\x03\x02\x02\x02\u01D9" + - "\u01D6\x03\x02\x02\x02\u01D9\u01D7\x03\x02\x02\x02\u01D9\u01D8\x03\x02" + - "\x02\x02\u01DA5\x03\x02\x02\x02\u01DB\u01DC\x07)\x02\x02\u01DC\u01DD\x05" + - "@!\x02\u01DD7\x03\x02\x02\x02\u01DE\u01E7\x07t\x02\x02\u01DF\u01E7\x07" + - "y\x02\x02\u01E0\u01E7\x07v\x02\x02\u01E1\u01E7\x07x\x02\x02\u01E2\u01E7" + - "\x07z\x02\x02\u01E3\u01E7\x05^0\x02\u01E4\u01E7\x050\x19\x02\u01E5\u01E7" + - "\x05\xC8e\x02\u01E6\u01DE\x03\x02\x02\x02\u01E6\u01DF\x03\x02\x02\x02" + - "\u01E6\u01E0\x03\x02\x02\x02\u01E6\u01E1\x03\x02\x02\x02\u01E6\u01E2\x03" + - "\x02\x02\x02\u01E6\u01E3\x03\x02\x02\x02\u01E6\u01E4\x03\x02\x02\x02\u01E6" + - "\u01E5\x03\x02\x02\x02\u01E7\u01EA\x03\x02\x02\x02\u01E8\u01E6\x03\x02" + - "\x02\x02\u01E8\u01E9\x03\x02\x02\x02\u01E99\x03\x02\x02\x02\u01EA\u01E8" + - "\x03\x02\x02\x02\u01EB\u01EC\x07*\x02\x02\u01EC\u01ED\x05\xC4c\x02\u01ED" + - "\u01EF\x05D#\x02\u01EE\u01F0\x07n\x02\x02\u01EF\u01EE\x03\x02\x02\x02" + - "\u01EF\u01F0\x03\x02\x02\x02\u01F0\u01F1\x03\x02\x02\x02\u01F1\u01F2\x07" + - "\x04\x02\x02\u01F2;\x03\x02\x02\x02\u01F3\u01F4\x05\xC4c\x02\u01F4=\x03" + - "\x02\x02\x02\u01F5\u01F6\x07+\x02\x02\u01F6\u01F7\x05\xC4c\x02\u01F7\u01F9" + - "\x07\x11\x02\x02\u01F8\u01FA\x05<\x1F\x02\u01F9\u01F8\x03\x02\x02\x02" + - "\u01F9\u01FA\x03\x02\x02\x02\u01FA\u01FF\x03\x02\x02\x02\u01FB\u01FC\x07" + - "\x12\x02\x02\u01FC\u01FE\x05<\x1F\x02\u01FD\u01FB\x03\x02\x02\x02\u01FE" + - "\u0201\x03\x02\x02\x02\u01FF\u01FD\x03\x02\x02\x02\u01FF\u0200\x03\x02" + - "\x02\x02\u0200\u0202\x03\x02\x02\x02\u0201\u01FF\x03\x02\x02\x02\u0202" + - "\u0203\x07\x13\x02\x02\u0203?\x03\x02\x02\x02\u0204\u020D\x07\x19\x02" + - "\x02\u0205\u020A\x05B\"\x02\u0206\u0207\x07\x12\x02\x02\u0207\u0209\x05" + - "B\"\x02\u0208\u0206\x03\x02\x02\x02\u0209\u020C\x03\x02\x02\x02\u020A" + - "\u0208\x03\x02\x02\x02\u020A\u020B\x03\x02\x02\x02\u020B\u020E\x03\x02" + - "\x02\x02\u020C\u020A\x03\x02\x02\x02\u020D\u0205\x03\x02\x02\x02\u020D" + - "\u020E\x03\x02\x02\x02\u020E\u020F\x03\x02\x02\x02\u020F\u0210\x07\x1A" + - "\x02\x02\u0210A\x03\x02\x02\x02\u0211\u0213\x05N(\x02\u0212\u0214\x05" + - "\\/\x02\u0213\u0212\x03\x02\x02\x02\u0213\u0214\x03\x02\x02\x02\u0214" + - "\u0216\x03\x02\x02\x02\u0215\u0217\x05\xC4c\x02\u0216\u0215\x03\x02\x02" + - "\x02\u0216\u0217\x03\x02\x02\x02\u0217C\x03\x02\x02\x02\u0218\u0221\x07" + - "\x19\x02\x02\u0219\u021E\x05F$\x02\u021A\u021B\x07\x12\x02\x02\u021B\u021D" + - "\x05F$\x02\u021C\u021A\x03\x02\x02\x02\u021D\u0220\x03\x02\x02\x02\u021E" + - "\u021C\x03\x02\x02\x02\u021E\u021F\x03\x02\x02\x02\u021F\u0222\x03\x02" + - "\x02\x02\u0220\u021E\x03\x02\x02\x02\u0221\u0219\x03\x02\x02\x02\u0221" + - "\u0222\x03\x02\x02\x02\u0222\u0223\x03\x02\x02\x02\u0223\u0224\x07\x1A" + - "\x02\x02\u0224E\x03\x02\x02\x02\u0225\u0227\x05N(\x02\u0226\u0228\x07" + - "u\x02\x02\u0227\u0226\x03\x02\x02\x02\u0227\u0228\x03\x02\x02\x02\u0228" + - "\u022A\x03\x02\x02\x02\u0229\u022B\x05\xC4c\x02\u022A\u0229\x03\x02\x02" + - "\x02\u022A\u022B\x03\x02\x02\x02\u022BG\x03\x02\x02\x02\u022C\u0235\x07" + - "\x19\x02\x02\u022D\u0232\x05J&\x02\u022E\u022F\x07\x12\x02\x02\u022F\u0231" + - "\x05J&\x02\u0230\u022E\x03\x02\x02\x02\u0231\u0234\x03\x02\x02\x02\u0232" + - "\u0230\x03\x02\x02\x02\u0232\u0233\x03\x02\x02\x02\u0233\u0236\x03\x02" + - "\x02\x02\u0234\u0232\x03\x02\x02\x02\u0235\u022D\x03\x02\x02\x02\u0235" + - "\u0236\x03\x02\x02\x02\u0236\u0237\x03\x02\x02\x02\u0237\u0238\x07\x1A" + - "\x02\x02\u0238I\x03\x02\x02\x02\u0239\u023B\x05N(\x02\u023A\u023C\x05" + - "\\/\x02\u023B\u023A\x03\x02\x02\x02\u023B\u023C\x03\x02\x02\x02\u023C" + - "K\x03\x02\x02\x02\u023D\u023F\x05N(\x02\u023E\u0240\x05\\/\x02\u023F\u023E" + - "\x03\x02\x02\x02\u023F\u0240\x03\x02\x02\x02\u0240\u0241\x03\x02\x02\x02" + - "\u0241\u0242\x05\xC4c\x02\u0242M\x03\x02\x02\x02\u0243\u0244\b(\x01\x02" + - "\u0244\u024B\x05\x8CG\x02\u0245\u024B\x05P)\x02\u0246\u024B\x05T+\x02" + - "\u0247\u024B\x05Z.\x02\u0248\u0249\x07.\x02\x02\u0249\u024B\x07w\x02\x02" + - "\u024A\u0243\x03\x02\x02\x02\u024A\u0245\x03\x02\x02\x02\u024A\u0246\x03" + - "\x02\x02\x02\u024A\u0247\x03\x02\x02\x02\u024A\u0248\x03\x02\x02\x02\u024B" + - "\u0254\x03\x02\x02\x02\u024C\u024D\f\x05\x02\x02\u024D\u024F\x07,\x02" + - "\x02\u024E\u0250\x05\x8EH\x02\u024F\u024E\x03\x02\x02\x02\u024F\u0250" + - "\x03\x02\x02\x02\u0250\u0251\x03\x02\x02\x02\u0251\u0253\x07-\x02\x02" + - "\u0252\u024C\x03\x02\x02\x02\u0253\u0256\x03\x02\x02\x02\u0254\u0252\x03" + - "\x02\x02\x02\u0254\u0255\x03\x02\x02\x02\u0255O\x03\x02\x02\x02\u0256" + - "\u0254\x03\x02\x02\x02\u0257\u025C\x05\xC4c\x02\u0258\u0259\x07/\x02\x02" + - "\u0259\u025B\x05\xC4c\x02\u025A\u0258\x03\x02\x02\x02\u025B\u025E\x03" + - "\x02\x02\x02\u025C\u025A\x03\x02\x02\x02\u025C\u025D\x03\x02\x02\x02\u025D" + - "Q\x03\x02\x02\x02\u025E\u025C\x03\x02\x02\x02\u025F\u0262\x05\x8CG\x02" + - "\u0260\u0262\x05P)\x02\u0261\u025F\x03\x02\x02\x02\u0261\u0260\x03\x02" + - "\x02\x02\u0262S\x03\x02\x02\x02\u0263\u0264\x070\x02\x02\u0264\u0265\x07" + - "\x19\x02\x02\u0265\u0267\x05R*\x02\u0266\u0268\x05V,\x02\u0267\u0266\x03" + - "\x02\x02\x02\u0267\u0268\x03\x02\x02\x02\u0268\u0269\x03\x02\x02\x02\u0269" + - "\u026A\x071\x02\x02\u026A\u026C\x05N(\x02\u026B\u026D\x05X-\x02\u026C" + - "\u026B\x03\x02\x02\x02\u026C\u026D\x03\x02\x02\x02\u026D\u026E\x03\x02" + - "\x02\x02\u026E\u026F\x07\x1A\x02\x02\u026FU\x03\x02\x02\x02\u0270\u0271" + - "\x05\xC4c\x02\u0271W\x03\x02\x02\x02\u0272\u0273\x05\xC4c\x02\u0273Y\x03" + - "\x02\x02\x02\u0274\u0275\x07(\x02\x02\u0275\u027B\x05H%\x02\u0276\u027A" + - "\x07v\x02\x02\u0277\u027A\x07t\x02\x02\u0278\u027A\x05^0\x02\u0279\u0276" + - "\x03\x02\x02\x02\u0279\u0277\x03\x02\x02\x02\u0279\u0278\x03\x02\x02\x02" + - "\u027A\u027D\x03\x02\x02\x02\u027B\u0279\x03\x02\x02\x02\u027B\u027C\x03" + - "\x02\x02\x02\u027C\u0280\x03\x02\x02\x02\u027D\u027B\x03\x02\x02\x02\u027E" + - "\u027F\x07)\x02\x02\u027F\u0281\x05H%\x02\u0280\u027E\x03\x02\x02\x02" + - "\u0280\u0281\x03\x02\x02\x02\u0281[\x03\x02\x02\x02\u0282\u0283\t\x05" + - "\x02\x02\u0283]\x03\x02\x02\x02\u0284\u0285\t\x06\x02\x02\u0285_\x03\x02" + - "\x02\x02\u0286\u028A\x07\x11\x02\x02\u0287\u0289\x05b2\x02\u0288\u0287" + - "\x03\x02\x02\x02\u0289\u028C\x03\x02\x02\x02\u028A\u0288\x03\x02\x02\x02" + - "\u028A\u028B\x03\x02\x02\x02\u028B\u028D\x03\x02\x02\x02\u028C\u028A\x03" + - "\x02\x02\x02\u028D\u028E\x07\x13\x02\x02\u028Ea\x03\x02\x02\x02\u028F" + - "\u029F\x05f4\x02\u0290\u029F\x05h5\x02\u0291\u029F\x05l7\x02\u0292\u029F" + - "\x05r:\x02\u0293\u029F\x05`1\x02\u0294\u029F\x05t;\x02\u0295\u029F\x05" + - "x=\x02\u0296\u029F\x05z>\x02\u0297\u029F\x05|?\x02\u0298\u029F\x05~@\x02" + - "\u0299\u029F\x05\x80A\x02\u029A\u029F\x05\x82B\x02\u029B\u029F\x05n8\x02" + - "\u029C\u029F\x05p9\x02\u029D\u029F\x05\x84C\x02\u029E\u028F\x03\x02\x02" + - "\x02\u029E\u0290\x03\x02\x02\x02\u029E\u0291\x03\x02\x02\x02\u029E\u0292" + - "\x03\x02\x02\x02\u029E\u0293\x03\x02\x02\x02\u029E\u0294\x03\x02\x02\x02" + - "\u029E\u0295\x03\x02\x02\x02\u029E\u0296\x03\x02\x02\x02\u029E\u0297\x03" + - "\x02\x02\x02\u029E\u0298\x03\x02\x02\x02\u029E\u0299\x03\x02\x02\x02\u029E" + - "\u029A\x03\x02\x02\x02\u029E\u029B\x03\x02\x02\x02\u029E\u029C\x03\x02" + - "\x02\x02\u029E\u029D\x03\x02\x02\x02\u029Fc\x03\x02\x02\x02\u02A0\u02A1" + - "\x05\x8EH\x02\u02A1\u02A2\x07\x04\x02\x02\u02A2e\x03\x02\x02\x02\u02A3" + - "\u02A4\x075\x02\x02\u02A4\u02A5\x07\x19\x02\x02\u02A5\u02A6\x05\x8EH\x02" + - "\u02A6\u02A7\x07\x1A\x02\x02\u02A7\u02AA\x05b2\x02\u02A8\u02A9\x076\x02" + - "\x02\u02A9\u02AB\x05b2\x02\u02AA\u02A8\x03\x02\x02\x02\u02AA\u02AB\x03" + - "\x02\x02\x02\u02ABg\x03\x02\x02\x02\u02AC\u02AD\x077\x02\x02\u02AD\u02AF" + - "\x05\x8EH\x02\u02AE\u02B0\x056\x1C\x02\u02AF\u02AE\x03\x02\x02\x02\u02AF" + - "\u02B0\x03\x02\x02\x02\u02B0\u02B1\x03\x02\x02\x02\u02B1\u02B3\x05`1\x02" + - "\u02B2\u02B4\x05j6\x02\u02B3\u02B2\x03\x02\x02\x02\u02B4\u02B5\x03\x02" + - "\x02\x02\u02B5\u02B3\x03\x02\x02\x02\u02B5\u02B6\x03\x02\x02\x02\u02B6" + - "i\x03\x02\x02\x02\u02B7\u02BC\x078\x02\x02\u02B8\u02BA\x05\xC4c\x02\u02B9" + - "\u02B8\x03\x02\x02\x02\u02B9\u02BA\x03\x02\x02\x02\u02BA\u02BB\x03\x02" + - "\x02\x02\u02BB\u02BD\x05@!\x02\u02BC\u02B9\x03\x02\x02\x02\u02BC\u02BD" + - "\x03\x02\x02\x02\u02BD\u02BE\x03\x02\x02\x02\u02BE\u02BF\x05`1\x02\u02BF" + - "k\x03\x02\x02\x02\u02C0\u02C1\x079\x02\x02\u02C1\u02C2\x07\x19\x02\x02" + - "\u02C2\u02C3\x05\x8EH\x02\u02C3\u02C4\x07\x1A\x02\x02\u02C4\u02C5\x05" + - "b2\x02\u02C5m\x03\x02\x02\x02\u02C6\u02C9\x05\x86D\x02\u02C7\u02C9\x05" + - "d3\x02\u02C8\u02C6\x03\x02\x02\x02\u02C8\u02C7\x03\x02\x02\x02\u02C9o" + - "\x03\x02\x02\x02\u02CA\u02CB\x07:\x02\x02\u02CB\u02CC\x05`1\x02\u02CC" + - "q\x03\x02\x02\x02\u02CD\u02CE\x07\x1D\x02\x02\u02CE\u02D1\x07\x19\x02" + - "\x02\u02CF\u02D2\x05n8\x02\u02D0\u02D2\x07\x04\x02\x02\u02D1\u02CF\x03" + - "\x02\x02\x02\u02D1\u02D0\x03\x02\x02\x02\u02D2\u02D5\x03\x02\x02\x02\u02D3" + - "\u02D6\x05d3\x02\u02D4\u02D6\x07\x04\x02\x02\u02D5\u02D3\x03\x02\x02\x02" + - "\u02D5\u02D4\x03\x02\x02\x02\u02D6\u02D8\x03\x02\x02\x02\u02D7\u02D9\x05" + - "\x8EH\x02\u02D8\u02D7\x03\x02\x02\x02\u02D8\u02D9\x03\x02\x02\x02\u02D9" + - "\u02DA\x03\x02\x02\x02\u02DA\u02DB\x07\x1A\x02\x02\u02DB\u02DC\x05b2\x02" + - "\u02DCs\x03\x02\x02\x02\u02DD\u02DF\x07;\x02\x02\u02DE\u02E0\x07\x83\x02" + - "\x02\u02DF\u02DE\x03\x02\x02\x02\u02DF\u02E0\x03\x02\x02\x02\u02E0\u02E5" + - "\x03\x02\x02\x02\u02E1\u02E2\x07\x19\x02\x02\u02E2\u02E3\x05v<\x02\u02E3" + - "\u02E4\x07\x1A\x02\x02\u02E4\u02E6\x03\x02\x02\x02\u02E5\u02E1\x03\x02" + - "\x02\x02\u02E5\u02E6\x03\x02\x02\x02\u02E6\u02E7\x03\x02\x02\x02\u02E7" + - "\u02E8\x05\x9CO\x02\u02E8u\x03\x02\x02\x02\u02E9\u02EA\x05\xCAf\x02\u02EA" + - "w\x03\x02\x02\x02\u02EB\u02EC\x07<\x02\x02\u02EC\u02ED\x05b2\x02\u02ED" + - "\u02EE\x079\x02\x02\u02EE\u02EF\x07\x19\x02\x02\u02EF\u02F0\x05\x8EH\x02" + - "\u02F0\u02F1\x07\x1A\x02\x02\u02F1\u02F2\x07\x04\x02\x02\u02F2y\x03\x02" + - "\x02\x02\u02F3\u02F4\x07r\x02\x02\u02F4\u02F5\x07\x04\x02\x02\u02F5{\x03" + - "\x02\x02\x02\u02F6\u02F7\x07o\x02\x02\u02F7\u02F8\x07\x04\x02\x02\u02F8" + - "}\x03\x02\x02\x02\u02F9\u02FB\x07=\x02\x02\u02FA\u02FC\x05\x8EH\x02\u02FB" + - "\u02FA\x03\x02\x02\x02\u02FB\u02FC\x03\x02\x02\x02\u02FC\u02FD\x03\x02" + - "\x02\x02\u02FD\u02FE\x07\x04\x02\x02\u02FE\x7F\x03\x02\x02\x02\u02FF\u0300" + - "\x07>\x02\x02\u0300\u0301\x07\x04\x02\x02\u0301\x81\x03\x02\x02\x02\u0302" + - "\u0303\x07?\x02\x02\u0303\u0304\x05\x9AN\x02\u0304\u0305\x07\x04\x02\x02" + - "\u0305\x83\x03\x02\x02\x02\u0306\u0307\x07@\x02\x02\u0307\u0308\x05\x9A" + - "N\x02\u0308\u0309\x07\x04\x02\x02\u0309\x85\x03\x02\x02\x02\u030A\u030B" + - "\x07A\x02\x02\u030B\u0312\x05\x8AF\x02\u030C\u0312\x05L\'\x02\u030D\u030E" + - "\x07\x19\x02\x02\u030E\u030F\x05\x88E\x02\u030F\u0310\x07\x1A\x02\x02" + - "\u0310\u0312\x03\x02\x02\x02\u0311\u030A\x03\x02\x02\x02\u0311\u030C\x03" + - "\x02\x02\x02\u0311\u030D\x03\x02\x02\x02\u0312\u0315\x03\x02\x02\x02\u0313" + - "\u0314\x07\r\x02\x02\u0314\u0316\x05\x8EH\x02\u0315\u0313\x03\x02\x02" + - "\x02\u0315\u0316\x03\x02\x02\x02\u0316\u0317\x03\x02\x02\x02\u0317\u0318" + - "\x07\x04\x02\x02\u0318\x87\x03\x02\x02\x02\u0319\u031B\x05L\'\x02\u031A" + - "\u0319\x03\x02\x02\x02\u031A\u031B\x03\x02\x02\x02\u031B\u0322\x03\x02" + - "\x02\x02\u031C\u031E\x07\x12\x02\x02\u031D\u031F\x05L\'\x02\u031E\u031D" + - "\x03\x02\x02\x02\u031E\u031F\x03\x02\x02\x02\u031F\u0321\x03\x02\x02\x02" + - "\u0320\u031C\x03\x02\x02\x02\u0321\u0324\x03\x02\x02\x02\u0322\u0320\x03" + - "\x02\x02\x02\u0322\u0323\x03\x02\x02\x02\u0323\x89\x03\x02\x02\x02\u0324" + - "\u0322\x03\x02\x02\x02\u0325\u032C\x07\x19\x02\x02\u0326\u0328\x05\xC4" + - "c\x02\u0327\u0326\x03\x02\x02\x02\u0327\u0328\x03\x02\x02\x02\u0328\u0329" + - "\x03\x02\x02\x02\u0329\u032B\x07\x12\x02\x02\u032A\u0327\x03\x02\x02\x02" + - "\u032B\u032E\x03\x02\x02\x02\u032C\u032A\x03\x02\x02\x02\u032C\u032D\x03" + - "\x02\x02\x02\u032D\u0330\x03\x02\x02\x02\u032E\u032C\x03\x02\x02\x02\u032F" + - "\u0331\x05\xC4c\x02\u0330\u032F\x03\x02\x02\x02\u0330\u0331\x03\x02\x02" + - "\x02\u0331\u0332\x03\x02\x02\x02\u0332\u0333\x07\x1A\x02\x02\u0333\x8B" + - "\x03\x02\x02\x02\u0334\u0335\t\x07\x02\x02\u0335\x8D\x03\x02\x02\x02\u0336" + - "\u0337\bH\x01\x02\u0337\u0338\x07G\x02\x02\u0338\u0349\x05N(\x02\u0339" + - "\u033A\x07\x19\x02\x02\u033A\u033B\x05\x8EH\x02\u033B\u033C\x07\x1A\x02" + - "\x02\u033C\u0349\x03\x02\x02\x02\u033D\u033E\t\b\x02\x02\u033E\u0349\x05" + - "\x8EH\x15\u033F\u0340\t\t\x02\x02\u0340\u0349\x05\x8EH\x14\u0341\u0342" + - "\x07I\x02\x02\u0342\u0349\x05\x8EH\x13\u0343\u0344\x07J\x02\x02\u0344" + - "\u0349\x05\x8EH\x12\u0345\u0346\x07\b\x02\x02\u0346\u0349\x05\x8EH\x11" + - "\u0347\u0349\x05\x90I\x02\u0348\u0336\x03\x02\x02\x02\u0348\u0339\x03" + - "\x02\x02\x02\u0348\u033D\x03\x02\x02\x02\u0348\u033F\x03\x02\x02\x02\u0348" + - "\u0341\x03\x02\x02\x02\u0348\u0343\x03\x02\x02\x02\u0348\u0345\x03\x02" + - "\x02\x02\u0348\u0347\x03\x02\x02\x02\u0349\u0394\x03\x02\x02\x02\u034A" + - "\u034B\f\x10\x02\x02\u034B\u034C\x07K\x02\x02\u034C\u0393\x05\x8EH\x10" + - "\u034D\u034E\f\x0F\x02\x02\u034E\u034F\t\n\x02\x02\u034F\u0393\x05\x8E" + - "H\x10\u0350\u0351\f\x0E\x02\x02\u0351\u0352\t\t\x02\x02\u0352\u0393\x05" + - "\x8EH\x0F\u0353\u0354\f\r\x02\x02\u0354\u0355\t\v\x02\x02\u0355\u0393" + - "\x05\x8EH\x0E\u0356\u0357\f\f\x02\x02\u0357\u0358\x07\x1F\x02\x02\u0358" + - "\u0393\x05\x8EH\r\u0359\u035A\f\v\x02\x02\u035A\u035B\x07\x07\x02\x02" + - "\u035B\u0393\x05\x8EH\f\u035C\u035D\f\n\x02\x02\u035D\u035E\x07\x1E\x02" + - "\x02\u035E\u0393\x05\x8EH\v\u035F\u0360\f\t\x02\x02\u0360\u0361\t\f\x02" + - "\x02\u0361\u0393\x05\x8EH\n\u0362\u0363\f\b\x02\x02\u0363\u0364\t\r\x02" + - "\x02\u0364\u0393\x05\x8EH\t\u0365\u0366\f\x07\x02\x02\u0366\u0367\x07" + - "N\x02\x02\u0367\u0393\x05\x8EH\b\u0368\u0369\f\x06\x02\x02\u0369\u036A" + - "\x07\x06\x02\x02\u036A\u0393\x05\x8EH\x07\u036B\u036C\f\x05\x02\x02\u036C" + - "\u036D\x07O\x02\x02\u036D\u036E\x05\x8EH\x02\u036E\u036F\x07H\x02\x02" + - "\u036F\u0370\x05\x8EH\x05\u0370\u0393\x03\x02\x02\x02\u0371\u0372\f\x04" + - "\x02\x02\u0372\u0373\t\x0E\x02\x02\u0373\u0393\x05\x8EH\x05\u0374\u0375" + - "\f\x1D\x02\x02\u0375\u0393\t\b\x02\x02\u0376\u0377\f\x1B\x02\x02\u0377" + - "\u0378\x07,\x02\x02\u0378\u0379\x05\x8EH\x02\u0379\u037A\x07-\x02\x02" + - "\u037A\u0393\x03\x02\x02\x02\u037B\u037C\f\x1A\x02\x02\u037C\u037E\x07" + - ",\x02\x02\u037D\u037F\x05\x8EH\x02\u037E\u037D\x03\x02\x02\x02\u037E\u037F" + - "\x03\x02\x02\x02\u037F\u0380\x03\x02\x02\x02\u0380\u0382\x07H\x02\x02" + - "\u0381\u0383\x05\x8EH\x02\u0382\u0381\x03\x02\x02\x02\u0382\u0383\x03" + - "\x02\x02\x02\u0383\u0384\x03\x02\x02\x02\u0384\u0393\x07-\x02\x02\u0385" + - "\u0386\f\x19\x02\x02\u0386\u0387\x07/\x02\x02\u0387\u0393\x05\xC4c\x02" + - "\u0388\u0389\f\x18\x02\x02\u0389\u038A\x07\x11\x02\x02\u038A\u038B\x05" + - "\x94K\x02\u038B\u038C\x07\x13\x02\x02\u038C\u0393\x03\x02\x02\x02\u038D" + - "\u038E\f\x17\x02\x02\u038E\u038F\x07\x19\x02\x02\u038F\u0390\x05\x98M" + - "\x02\u0390\u0391\x07\x1A\x02\x02\u0391\u0393\x03\x02\x02\x02\u0392\u034A" + - "\x03\x02\x02\x02\u0392\u034D\x03\x02\x02\x02\u0392\u0350\x03\x02\x02\x02" + - "\u0392\u0353\x03\x02\x02\x02\u0392\u0356\x03\x02\x02\x02\u0392\u0359\x03" + - "\x02\x02\x02\u0392\u035C\x03\x02\x02\x02\u0392\u035F\x03\x02\x02\x02\u0392" + - "\u0362\x03\x02\x02\x02\u0392\u0365\x03\x02\x02\x02\u0392\u0368\x03\x02" + - "\x02\x02\u0392\u036B\x03\x02\x02\x02\u0392\u0371\x03\x02\x02\x02\u0392" + - "\u0374\x03\x02\x02\x02\u0392\u0376\x03\x02\x02\x02\u0392\u037B\x03\x02" + - "\x02\x02\u0392\u0385\x03\x02\x02\x02\u0392\u0388\x03\x02\x02\x02\u0392" + - "\u038D\x03\x02\x02\x02\u0393\u0396\x03\x02\x02\x02\u0394\u0392\x03\x02" + - "\x02\x02\u0394\u0395\x03\x02\x02\x02\u0395\x8F\x03\x02\x02\x02\u0396\u0394" + - "\x03\x02\x02\x02\u0397\u03A1\x07h\x02\x02\u0398\u03A1\x05\xC2b\x02\u0399" + - "\u03A1\x05\xC6d\x02\u039A\u03A1\x05\xCAf\x02\u039B\u03A1\x05\xC4c\x02" + - "\u039C\u03A1\x07|\x02\x02\u039D\u03A1\x07w\x02\x02\u039E\u03A1\x05\xC0" + - "a\x02\u039F\u03A1\x05N(\x02\u03A0\u0397\x03\x02\x02\x02\u03A0\u0398\x03" + - "\x02\x02\x02\u03A0\u0399\x03\x02\x02\x02\u03A0\u039A\x03\x02\x02\x02\u03A0" + - "\u039B\x03\x02\x02\x02\u03A0\u039C\x03\x02\x02\x02\u03A0\u039D\x03\x02" + - "\x02\x02\u03A0\u039E\x03\x02\x02\x02\u03A0\u039F\x03\x02\x02\x02\u03A1" + - "\x91\x03\x02\x02\x02\u03A2\u03A7\x05\x8EH\x02\u03A3\u03A4\x07\x12\x02" + - "\x02\u03A4\u03A6\x05\x8EH\x02\u03A5\u03A3\x03\x02\x02\x02\u03A6\u03A9" + - "\x03\x02\x02\x02\u03A7\u03A5\x03\x02\x02\x02\u03A7\u03A8\x03\x02\x02\x02" + - "\u03A8\x93\x03\x02\x02\x02\u03A9\u03A7\x03\x02\x02\x02\u03AA\u03AF\x05" + - "\x96L\x02\u03AB\u03AC\x07\x12\x02\x02\u03AC\u03AE\x05\x96L\x02\u03AD\u03AB" + - "\x03\x02\x02\x02\u03AE\u03B1\x03\x02\x02\x02\u03AF\u03AD\x03\x02\x02\x02" + - "\u03AF\u03B0\x03\x02\x02\x02\u03B0\u03B3\x03\x02\x02\x02\u03B1\u03AF\x03" + - "\x02\x02\x02\u03B2\u03B4\x07\x12\x02\x02\u03B3\u03B2\x03\x02\x02\x02\u03B3" + - "\u03B4\x03\x02\x02\x02\u03B4\x95\x03\x02\x02\x02\u03B5\u03B6\x05\xC4c" + - "\x02\u03B6\u03B7\x07H\x02\x02\u03B7\u03B8\x05\x8EH\x02\u03B8\x97\x03\x02" + - "\x02\x02\u03B9\u03BB\x07\x11\x02\x02\u03BA\u03BC\x05\x94K\x02\u03BB\u03BA" + - "\x03\x02\x02\x02\u03BB\u03BC\x03\x02\x02\x02\u03BC\u03BD\x03\x02\x02\x02" + - "\u03BD\u03C2\x07\x13\x02\x02\u03BE\u03C0\x05\x92J\x02\u03BF\u03BE\x03" + - "\x02\x02\x02\u03BF\u03C0\x03\x02\x02\x02\u03C0\u03C2\x03\x02\x02\x02\u03C1" + - "\u03B9\x03\x02\x02\x02\u03C1\u03BF\x03\x02\x02\x02\u03C2\x99\x03\x02\x02" + - "\x02\u03C3\u03C4\x05\x8EH\x02\u03C4\u03C5\x07\x19\x02\x02\u03C5\u03C6" + - "\x05\x98M\x02\u03C6\u03C7\x07\x1A\x02\x02\u03C7\x9B\x03\x02\x02\x02\u03C8" + - "\u03CC\x07\x11\x02\x02\u03C9\u03CB\x05\x9EP\x02\u03CA\u03C9\x03\x02\x02" + - "\x02\u03CB\u03CE\x03\x02\x02\x02\u03CC\u03CA\x03\x02\x02\x02\u03CC\u03CD" + - "\x03\x02\x02\x02\u03CD\u03CF\x03\x02\x02\x02\u03CE\u03CC\x03\x02\x02\x02" + - "\u03CF\u03D0\x07\x13\x02\x02\u03D0\x9D\x03\x02\x02\x02\u03D1\u03E3\x05" + - "\xC4c\x02\u03D2\u03E3\x05\x9CO\x02\u03D3\u03E3\x05\xA0Q\x02\u03D4\u03E3" + - "\x05\xA6T\x02\u03D5\u03E3\x05\xA8U\x02\u03D6\u03E3\x05\xAEX\x02\u03D7" + - "\u03E3\x05\xB0Y\x02\u03D8\u03E3\x05\xB2Z\x02\u03D9\u03E3\x05\xB6\\\x02" + - "\u03DA\u03E3\x05\xBA^\x02\u03DB\u03E3\x05\xBC_\x02\u03DC\u03E3\x07o\x02" + - "\x02\u03DD\u03E3\x07r\x02\x02\u03DE\u03E3\x07s\x02\x02\u03DF\u03E3\x05" + - "\xC2b\x02\u03E0\u03E3\x05\xCAf\x02\u03E1\u03E3\x05\xC6d\x02\u03E2\u03D1" + - "\x03\x02\x02\x02\u03E2\u03D2\x03\x02\x02\x02\u03E2\u03D3\x03\x02\x02\x02" + - "\u03E2\u03D4\x03\x02\x02\x02\u03E2\u03D5\x03\x02\x02\x02\u03E2\u03D6\x03" + - "\x02\x02\x02\u03E2\u03D7\x03\x02\x02\x02\u03E2\u03D8\x03\x02\x02\x02\u03E2" + - "\u03D9\x03\x02\x02\x02\u03E2\u03DA\x03\x02\x02\x02\u03E2\u03DB\x03\x02" + - "\x02\x02\u03E2\u03DC\x03\x02\x02\x02\u03E2\u03DD\x03\x02\x02\x02\u03E2" + - "\u03DE\x03\x02\x02\x02\u03E2\u03DF\x03\x02\x02\x02\u03E2\u03E0\x03\x02" + - "\x02\x02\u03E2\u03E1\x03\x02\x02\x02\u03E3\x9F\x03\x02\x02\x02\u03E4\u03E8" + - "\x05\xA4S\x02\u03E5\u03E8\x05\xBE`\x02\u03E6\u03E8\x05\xA2R\x02\u03E7" + - "\u03E4\x03\x02\x02\x02\u03E7\u03E5\x03\x02\x02\x02\u03E7\u03E6\x03\x02" + - "\x02\x02\u03E8\xA1\x03\x02\x02\x02\u03E9\u03EA\x05\xC4c\x02\u03EA\u03EB" + - "\x07/\x02\x02\u03EB\u03EC\x05\xC4c\x02\u03EC\xA3\x03\x02\x02\x02\u03ED" + - "\u03F2\x07=\x02\x02\u03EE\u03F2\x07.\x02\x02\u03EF\u03F2\x07D\x02\x02" + - "\u03F0\u03F2\x05\xC4c\x02\u03F1\u03ED\x03\x02\x02\x02\u03F1\u03EE\x03" + - "\x02\x02\x02\u03F1\u03EF\x03\x02\x02\x02\u03F1\u03F0\x03\x02\x02\x02\u03F2" + - "\u03FF\x03\x02\x02\x02\u03F3\u03F5\x07\x19\x02\x02\u03F4\u03F6\x05\xA0" + - "Q\x02\u03F5\u03F4\x03\x02\x02\x02\u03F5\u03F6\x03\x02\x02\x02\u03F6\u03FB" + - "\x03\x02\x02\x02\u03F7\u03F8\x07\x12\x02\x02\u03F8\u03FA\x05\xA0Q\x02" + - "\u03F9\u03F7\x03\x02\x02\x02\u03FA\u03FD\x03\x02\x02\x02\u03FB\u03F9\x03" + - "\x02\x02\x02\u03FB\u03FC\x03\x02\x02\x02\u03FC\u03FE\x03\x02\x02\x02\u03FD" + - "\u03FB\x03\x02\x02\x02\u03FE\u0400\x07\x1A\x02\x02\u03FF\u03F3\x03\x02" + - "\x02\x02\u03FF\u0400\x03\x02\x02\x02\u0400\xA5\x03\x02\x02\x02\u0401\u0402" + - "\x07Z\x02\x02\u0402\u0405\x05\xAAV\x02\u0403\u0404\x07[\x02\x02\u0404" + - "\u0406\x05\xA0Q\x02\u0405\u0403\x03\x02\x02\x02\u0405\u0406\x03\x02\x02" + - "\x02\u0406\xA7\x03\x02\x02\x02\u0407\u0408\x05\xAAV\x02\u0408\u0409\x07" + - "[\x02\x02\u0409\u040A\x05\xA0Q\x02\u040A\xA9\x03\x02\x02\x02\u040B\u0413" + - "\x05\xC4c\x02\u040C\u0413\x05\xA2R\x02\u040D\u0413\x05\xACW\x02\u040E" + - "\u040F\x07\x19\x02\x02\u040F\u0410\x05\xACW\x02\u0410\u0411\x07\x1A\x02" + - "\x02\u0411\u0413\x03\x02\x02\x02\u0412\u040B\x03\x02\x02\x02\u0412\u040C" + - "\x03\x02\x02\x02\u0412\u040D\x03\x02\x02\x02\u0412\u040E\x03\x02\x02\x02" + - "\u0413\xAB\x03\x02\x02\x02\u0414\u0419\x05\xC4c\x02\u0415\u0416\x07\x12" + - "\x02\x02\u0416\u0418\x05\xC4c\x02\u0417\u0415\x03\x02\x02\x02\u0418\u041B" + - "\x03\x02\x02\x02\u0419\u0417\x03\x02\x02\x02\u0419\u041A\x03\x02\x02\x02" + - "\u041A\xAD\x03\x02\x02\x02\u041B\u0419\x03\x02\x02\x02\u041C\u041D\x05" + - "\xA0Q\x02\u041D\u041E\x07\\\x02\x02\u041E\u041F\x05\xC4c\x02\u041F\xAF" + - "\x03\x02\x02\x02\u0420\u0421\x05\xC4c\x02\u0421\u0422\x07H\x02\x02\u0422" + - "\xB1\x03\x02\x02\x02\u0423\u0424\x07]\x02\x02\u0424\u0428\x05\xA0Q\x02" + - "\u0425\u0427\x05\xB4[\x02\u0426\u0425\x03\x02\x02\x02\u0427\u042A\x03" + - "\x02\x02\x02\u0428\u0426\x03\x02\x02\x02\u0428\u0429\x03\x02\x02\x02\u0429" + - "\xB3\x03\x02\x02\x02\u042A\u0428\x03\x02\x02\x02\u042B\u042C\x07^\x02" + - "\x02\u042C\u042D\x05\xBE`\x02\u042D\u042E\x05\x9CO\x02\u042E\u0432\x03" + - "\x02\x02\x02\u042F\u0430\x07_\x02\x02\u0430\u0432\x05\x9CO\x02\u0431\u042B" + - "\x03\x02\x02\x02\u0431\u042F\x03\x02\x02\x02\u0432\xB5\x03\x02\x02\x02" + - "\u0433\u0434\x07(\x02\x02\u0434\u0435\x05\xC4c\x02\u0435\u0437\x07\x19" + - "\x02\x02\u0436\u0438\x05\xACW\x02\u0437\u0436\x03\x02\x02\x02\u0437\u0438" + - "\x03\x02\x02\x02\u0438\u0439\x03\x02\x02\x02\u0439\u043B\x07\x1A\x02\x02" + - "\u043A\u043C\x05\xB8]\x02\u043B\u043A\x03\x02\x02\x02\u043B\u043C\x03" + - "\x02\x02\x02\u043C\u043D\x03\x02\x02\x02\u043D\u043E\x05\x9CO\x02\u043E"; - private static readonly _serializedATNSegment2: string = - "\xB7\x03\x02\x02\x02\u043F\u0440\x07`\x02\x02\u0440\u0441\x05\xACW\x02" + - "\u0441\xB9\x03\x02\x02\x02\u0442\u0445\x07\x1D\x02\x02\u0443\u0446\x05" + - "\x9CO\x02\u0444\u0446\x05\xA0Q\x02\u0445\u0443\x03\x02\x02\x02\u0445\u0444" + - "\x03\x02\x02\x02\u0446\u0447\x03\x02\x02\x02\u0447\u044A\x05\xA0Q\x02" + - "\u0448\u044B\x05\x9CO\x02\u0449\u044B\x05\xA0Q\x02\u044A\u0448\x03\x02" + - "\x02\x02\u044A\u0449\x03\x02\x02\x02\u044B\u044C\x03\x02\x02\x02\u044C" + - "\u044D\x05\x9CO\x02\u044D\xBB\x03\x02\x02\x02\u044E\u044F\x075\x02\x02" + - "\u044F\u0450\x05\xA0Q\x02\u0450\u0451\x05\x9CO\x02\u0451\xBD\x03\x02\x02" + - "\x02\u0452\u0458\x05\xCAf\x02\u0453\u0458\x07i\x02\x02\u0454\u0458\x07" + - "j\x02\x02\u0455\u0458\x05\xC6d\x02\u0456\u0458\x07h\x02\x02\u0457\u0452" + - "\x03\x02\x02\x02\u0457\u0453\x03\x02\x02\x02\u0457\u0454\x03\x02\x02\x02" + - "\u0457\u0455\x03\x02\x02\x02\u0457\u0456\x03\x02\x02\x02\u0458\xBF\x03" + - "\x02\x02\x02\u0459\u045B\x07\x19\x02\x02\u045A\u045C\x05\x8EH\x02\u045B" + - "\u045A\x03\x02\x02\x02\u045B\u045C\x03\x02\x02\x02\u045C\u0463\x03\x02" + - "\x02\x02\u045D\u045F\x07\x12\x02\x02\u045E\u0460\x05\x8EH\x02\u045F\u045E" + - "\x03\x02\x02\x02\u045F\u0460\x03\x02\x02\x02\u0460\u0462\x03\x02\x02\x02" + - "\u0461\u045D\x03\x02\x02\x02\u0462\u0465\x03\x02\x02\x02\u0463\u0461\x03" + - "\x02\x02\x02\u0463\u0464\x03\x02\x02\x02\u0464\u0466\x03\x02\x02\x02\u0465" + - "\u0463\x03\x02\x02\x02\u0466\u0474\x07\x1A\x02\x02\u0467\u0470\x07,\x02" + - "\x02\u0468\u046D\x05\x8EH\x02\u0469\u046A\x07\x12\x02\x02\u046A\u046C" + - "\x05\x8EH\x02\u046B\u0469\x03\x02\x02\x02\u046C\u046F\x03\x02\x02\x02" + - "\u046D\u046B\x03\x02\x02\x02\u046D\u046E\x03\x02\x02\x02\u046E\u0471\x03" + - "\x02\x02\x02\u046F\u046D\x03\x02\x02\x02\u0470\u0468\x03\x02\x02\x02\u0470" + - "\u0471\x03\x02\x02\x02\u0471\u0472\x03\x02\x02\x02\u0472\u0474\x07-\x02" + - "\x02\u0473\u0459\x03\x02\x02\x02\u0473\u0467\x03\x02\x02\x02\u0474\xC1" + - "\x03\x02\x02\x02\u0475\u0477\t\x0F\x02\x02\u0476\u0478\x07k\x02\x02\u0477" + - "\u0476\x03\x02\x02\x02\u0477\u0478\x03\x02\x02\x02\u0478\xC3\x03\x02\x02" + - "\x02\u0479\u047A\t\x10\x02\x02\u047A\xC5\x03\x02\x02\x02\u047B\u047D\x07" + - "l\x02\x02\u047C\u047B\x03\x02\x02\x02\u047D\u047E\x03\x02\x02\x02\u047E" + - "\u047C\x03\x02\x02\x02\u047E\u047F\x03\x02\x02\x02\u047F\xC7\x03\x02\x02" + - "\x02\u0480\u048C\x07b\x02\x02\u0481\u0482\x07\x19\x02\x02\u0482\u0487" + - "\x05P)\x02\u0483\u0484\x07\x12\x02\x02\u0484\u0486\x05P)\x02\u0485\u0483" + - "\x03\x02\x02\x02\u0486\u0489\x03\x02\x02\x02\u0487\u0485\x03\x02\x02\x02" + - "\u0487\u0488\x03\x02\x02\x02\u0488\u048A\x03\x02\x02\x02\u0489\u0487\x03" + - "\x02\x02\x02\u048A\u048B\x07\x1A\x02\x02\u048B\u048D\x03\x02\x02\x02\u048C" + - "\u0481\x03\x02\x02\x02\u048C\u048D\x03\x02\x02\x02\u048D\xC9\x03\x02\x02" + - "\x02\u048E\u0490\x07\x83\x02\x02\u048F\u048E\x03\x02\x02\x02\u0490\u0491" + - "\x03\x02\x02\x02\u0491\u048F\x03\x02\x02\x02\u0491\u0492\x03\x02\x02\x02" + - "\u0492\xCB\x03\x02\x02\x02\x84\xD7\xD9\xE8\xEC\xF1\xF7\xFB\xFE\u0103\u0109" + - "\u0110\u0114\u0121\u0129\u012E\u0138\u013B\u0141\u0149\u014C\u0157\u0160" + - "\u0162\u0168\u0183\u0186\u0191\u0196\u019B\u01A9\u01AC\u01B3\u01B7\u01B9" + - "\u01BE\u01C3\u01C6\u01CC\u01D0\u01D4\u01D9\u01E6\u01E8\u01EF\u01F9\u01FF" + - "\u020A\u020D\u0213\u0216\u021E\u0221\u0227\u022A\u0232\u0235\u023B\u023F" + - "\u024A\u024F\u0254\u025C\u0261\u0267\u026C\u0279\u027B\u0280\u028A\u029E" + - "\u02AA\u02AF\u02B5\u02B9\u02BC\u02C8\u02D1\u02D5\u02D8\u02DF\u02E5\u02FB" + - "\u0311\u0315\u031A\u031E\u0322\u0327\u032C\u0330\u0348\u037E\u0382\u0392" + - "\u0394\u03A0\u03A7\u03AF\u03B3\u03BB\u03BF\u03C1\u03CC\u03E2\u03E7\u03F1" + - "\u03F5\u03FB\u03FF\u0405\u0412\u0419\u0428\u0431\u0437\u043B\u0445\u044A" + - "\u0457\u045B\u045F\u0463\u046D\u0470\u0473\u0477\u047E\u0487\u048C\u0491"; - public static readonly _serializedATN: string = Utils.join( - [ - SolidityParser._serializedATNSegment0, - SolidityParser._serializedATNSegment1, - SolidityParser._serializedATNSegment2, - ], - "", - ); - public static __ATN: ATN; + public static readonly _serializedATN: number[] = [4,1,133,1170,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,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,5,0,214,8,0,10,0,12,0,217,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1, + 1,2,1,2,1,3,1,3,1,3,3,3,231,8,3,1,4,1,4,3,4,235,8,4,1,4,5,4,238,8,4,10, + 4,12,4,241,9,4,1,5,1,5,1,6,3,6,246,8,6,1,6,1,6,3,6,250,8,6,1,6,3,6,253, + 8,6,1,7,1,7,1,7,3,7,258,8,7,1,8,1,8,1,8,1,8,3,8,264,8,8,1,8,1,8,1,8,1,8, + 1,8,3,8,271,8,8,1,8,1,8,3,8,275,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 5,8,286,8,8,10,8,12,8,289,9,8,1,8,1,8,1,8,1,8,1,8,3,8,296,8,8,1,9,1,9,1, + 10,3,10,301,8,10,1,10,1,10,1,10,1,10,1,10,1,10,5,10,309,8,10,10,10,12,10, + 312,9,10,3,10,314,8,10,1,10,1,10,5,10,318,8,10,10,10,12,10,321,9,10,1,10, + 1,10,1,11,1,11,1,11,3,11,328,8,11,1,11,3,11,331,8,11,1,12,1,12,1,12,1,12, + 1,12,1,12,1,12,1,12,1,12,3,12,342,8,12,1,13,1,13,1,13,1,13,1,13,1,13,1, + 13,5,13,351,8,13,10,13,12,13,354,9,13,1,13,1,13,1,13,3,13,359,8,13,1,13, + 1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,16,1, + 16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,3,17,386,8,17,1,17,3,17, + 389,8,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,5,18,398,8,18,10,18,12,18,401, + 9,18,1,18,1,18,3,18,405,8,18,1,19,1,19,1,19,3,19,410,8,19,1,20,1,20,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,5,21,422,8,21,10,21,12,21,425,9,21,3, + 21,427,8,21,1,21,1,21,1,22,1,22,1,22,3,22,434,8,22,1,22,1,22,5,22,438,8, + 22,10,22,12,22,441,9,22,1,22,1,22,3,22,445,8,22,1,23,1,23,1,23,3,23,450, + 8,23,1,23,3,23,453,8,23,1,24,1,24,1,24,1,24,3,24,459,8,24,1,24,1,24,3,24, + 463,8,24,1,25,1,25,3,25,467,8,25,1,25,1,25,1,25,3,25,472,8,25,1,26,1,26, + 1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,5,27,485,8,27,10,27,12,27, + 488,9,27,1,28,1,28,1,28,1,28,3,28,494,8,28,1,28,1,28,1,29,1,29,1,30,1,30, + 1,30,1,30,3,30,504,8,30,1,30,1,30,5,30,508,8,30,10,30,12,30,511,9,30,1, + 30,1,30,1,31,1,31,1,31,1,31,5,31,519,8,31,10,31,12,31,522,9,31,3,31,524, + 8,31,1,31,1,31,1,32,1,32,3,32,530,8,32,1,32,3,32,533,8,32,1,33,1,33,1,33, + 1,33,5,33,539,8,33,10,33,12,33,542,9,33,3,33,544,8,33,1,33,1,33,1,34,1, + 34,3,34,550,8,34,1,34,3,34,553,8,34,1,35,1,35,1,35,1,35,5,35,559,8,35,10, + 35,12,35,562,9,35,3,35,564,8,35,1,35,1,35,1,36,1,36,3,36,570,8,36,1,37, + 1,37,3,37,574,8,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,585, + 8,38,1,38,1,38,1,38,3,38,590,8,38,1,38,5,38,593,8,38,10,38,12,38,596,9, + 38,1,39,1,39,1,39,5,39,601,8,39,10,39,12,39,604,9,39,1,40,1,40,3,40,608, + 8,40,1,41,1,41,1,41,1,41,3,41,614,8,41,1,41,1,41,1,41,3,41,619,8,41,1,41, + 1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,44,1,44,1,44,5,44,632,8,44,10,44,12, + 44,635,9,44,1,44,1,44,3,44,639,8,44,1,45,1,45,1,46,1,46,1,47,1,47,5,47, + 647,8,47,10,47,12,47,650,9,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1, + 48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,669,8,48,1,49,1,49,1,49, + 1,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,681,8,50,1,51,1,51,1,51,3,51,686, + 8,51,1,51,1,51,4,51,690,8,51,11,51,12,51,691,1,52,1,52,3,52,696,8,52,1, + 52,3,52,699,8,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,3,54, + 711,8,54,1,55,1,55,1,55,1,56,1,56,1,56,1,56,3,56,720,8,56,1,56,1,56,3,56, + 724,8,56,1,56,3,56,727,8,56,1,56,1,56,1,56,1,57,1,57,3,57,734,8,57,1,57, + 1,57,1,57,1,57,3,57,740,8,57,1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,59,1, + 59,1,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,62,1,62,3,62,762,8,62, + 1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,66,1, + 66,1,66,1,66,1,66,1,66,1,66,3,66,784,8,66,1,66,1,66,3,66,788,8,66,1,66, + 1,66,1,67,3,67,793,8,67,1,67,1,67,3,67,797,8,67,5,67,799,8,67,10,67,12, + 67,802,9,67,1,68,1,68,3,68,806,8,68,1,68,5,68,809,8,68,10,68,12,68,812, + 9,68,1,68,3,68,815,8,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1, + 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,839, + 8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1, + 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1, + 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,893,8,70,1,70,1,70, + 3,70,897,8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1, + 70,1,70,1,70,5,70,913,8,70,10,70,12,70,916,9,70,1,71,1,71,1,71,1,71,1,71, + 1,71,1,71,1,71,1,71,3,71,927,8,71,1,72,1,72,1,72,5,72,932,8,72,10,72,12, + 72,935,9,72,1,73,1,73,1,73,5,73,940,8,73,10,73,12,73,943,9,73,1,73,3,73, + 946,8,73,1,74,1,74,1,74,1,74,1,75,1,75,3,75,954,8,75,1,75,1,75,3,75,958, + 8,75,3,75,960,8,75,1,76,1,76,1,76,1,76,1,76,1,77,1,77,5,77,969,8,77,10, + 77,12,77,972,9,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78, + 1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,3,78,993,8,78,1,79,1,79,1,79,3, + 79,998,8,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,3,81,1008,8,81,1,81, + 1,81,3,81,1012,8,81,1,81,1,81,5,81,1016,8,81,10,81,12,81,1019,9,81,1,81, + 3,81,1022,8,81,1,82,1,82,1,82,1,82,3,82,1028,8,82,1,83,1,83,1,83,1,83,1, + 84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,1041,8,84,1,85,1,85,1,85,5,85,1046, + 8,85,10,85,12,85,1049,9,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88, + 1,88,5,88,1061,8,88,10,88,12,88,1064,9,88,1,89,1,89,1,89,1,89,1,89,1,89, + 3,89,1072,8,89,1,90,1,90,1,90,1,90,3,90,1078,8,90,1,90,1,90,3,90,1082,8, + 90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,3,92,1092,8,92,1,92,1,92,1,92, + 3,92,1097,8,92,1,92,1,92,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,3, + 94,1110,8,94,1,95,1,95,3,95,1114,8,95,1,95,1,95,3,95,1118,8,95,5,95,1120, + 8,95,10,95,12,95,1123,9,95,1,95,1,95,1,95,1,95,1,95,5,95,1130,8,95,10,95, + 12,95,1133,9,95,3,95,1135,8,95,1,95,3,95,1138,8,95,1,96,1,96,3,96,1142, + 8,96,1,97,1,97,1,98,4,98,1147,8,98,11,98,12,98,1148,1,99,1,99,1,99,1,99, + 1,99,5,99,1156,8,99,10,99,12,99,1159,9,99,1,99,1,99,3,99,1163,8,99,1,100, + 4,100,1166,8,100,11,100,12,100,1167,1,100,0,2,76,140,101,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,0,15,1,0,5,11,1,0,19,21,3,0, + 3,3,5,10,28,35,1,0,48,50,4,0,110,110,117,117,121,121,123,123,3,0,44,44, + 63,66,97,101,1,0,67,68,1,0,30,31,2,0,3,3,32,33,1,0,74,75,1,0,7,10,1,0,34, + 35,2,0,11,11,78,87,1,0,103,104,10,0,14,14,25,25,44,44,50,50,62,62,95,95, + 113,113,117,117,124,125,127,128,1299,0,215,1,0,0,0,2,220,1,0,0,0,4,225, + 1,0,0,0,6,230,1,0,0,0,8,232,1,0,0,0,10,242,1,0,0,0,12,252,1,0,0,0,14,254, + 1,0,0,0,16,295,1,0,0,0,18,297,1,0,0,0,20,300,1,0,0,0,22,324,1,0,0,0,24, + 341,1,0,0,0,26,343,1,0,0,0,28,362,1,0,0,0,30,369,1,0,0,0,32,374,1,0,0,0, + 34,380,1,0,0,0,36,404,1,0,0,0,38,406,1,0,0,0,40,411,1,0,0,0,42,413,1,0, + 0,0,44,430,1,0,0,0,46,446,1,0,0,0,48,454,1,0,0,0,50,471,1,0,0,0,52,473, + 1,0,0,0,54,486,1,0,0,0,56,489,1,0,0,0,58,497,1,0,0,0,60,499,1,0,0,0,62, + 514,1,0,0,0,64,527,1,0,0,0,66,534,1,0,0,0,68,547,1,0,0,0,70,554,1,0,0,0, + 72,567,1,0,0,0,74,571,1,0,0,0,76,584,1,0,0,0,78,597,1,0,0,0,80,607,1,0, + 0,0,82,609,1,0,0,0,84,622,1,0,0,0,86,624,1,0,0,0,88,626,1,0,0,0,90,640, + 1,0,0,0,92,642,1,0,0,0,94,644,1,0,0,0,96,668,1,0,0,0,98,670,1,0,0,0,100, + 673,1,0,0,0,102,682,1,0,0,0,104,693,1,0,0,0,106,702,1,0,0,0,108,710,1,0, + 0,0,110,712,1,0,0,0,112,715,1,0,0,0,114,731,1,0,0,0,116,743,1,0,0,0,118, + 745,1,0,0,0,120,753,1,0,0,0,122,756,1,0,0,0,124,759,1,0,0,0,126,765,1,0, + 0,0,128,768,1,0,0,0,130,772,1,0,0,0,132,783,1,0,0,0,134,792,1,0,0,0,136, + 803,1,0,0,0,138,818,1,0,0,0,140,838,1,0,0,0,142,926,1,0,0,0,144,928,1,0, + 0,0,146,936,1,0,0,0,148,947,1,0,0,0,150,959,1,0,0,0,152,961,1,0,0,0,154, + 966,1,0,0,0,156,992,1,0,0,0,158,997,1,0,0,0,160,999,1,0,0,0,162,1007,1, + 0,0,0,164,1023,1,0,0,0,166,1029,1,0,0,0,168,1040,1,0,0,0,170,1042,1,0,0, + 0,172,1050,1,0,0,0,174,1054,1,0,0,0,176,1057,1,0,0,0,178,1071,1,0,0,0,180, + 1073,1,0,0,0,182,1085,1,0,0,0,184,1088,1,0,0,0,186,1100,1,0,0,0,188,1109, + 1,0,0,0,190,1137,1,0,0,0,192,1139,1,0,0,0,194,1143,1,0,0,0,196,1146,1,0, + 0,0,198,1150,1,0,0,0,200,1165,1,0,0,0,202,214,3,2,1,0,203,214,3,16,8,0, + 204,214,3,20,10,0,205,214,3,60,30,0,206,214,3,56,28,0,207,214,3,42,21,0, + 208,214,3,48,24,0,209,214,3,28,14,0,210,214,3,30,15,0,211,214,3,32,16,0, + 212,214,3,34,17,0,213,202,1,0,0,0,213,203,1,0,0,0,213,204,1,0,0,0,213,205, + 1,0,0,0,213,206,1,0,0,0,213,207,1,0,0,0,213,208,1,0,0,0,213,209,1,0,0,0, + 213,210,1,0,0,0,213,211,1,0,0,0,213,212,1,0,0,0,214,217,1,0,0,0,215,213, + 1,0,0,0,215,216,1,0,0,0,216,218,1,0,0,0,217,215,1,0,0,0,218,219,5,0,0,1, + 219,1,1,0,0,0,220,221,5,1,0,0,221,222,3,4,2,0,222,223,3,6,3,0,223,224,5, + 2,0,0,224,3,1,0,0,0,225,226,3,194,97,0,226,5,1,0,0,0,227,231,5,3,0,0,228, + 231,3,8,4,0,229,231,3,140,70,0,230,227,1,0,0,0,230,228,1,0,0,0,230,229, + 1,0,0,0,231,7,1,0,0,0,232,239,3,12,6,0,233,235,5,4,0,0,234,233,1,0,0,0, + 234,235,1,0,0,0,235,236,1,0,0,0,236,238,3,12,6,0,237,234,1,0,0,0,238,241, + 1,0,0,0,239,237,1,0,0,0,239,240,1,0,0,0,240,9,1,0,0,0,241,239,1,0,0,0,242, + 243,7,0,0,0,243,11,1,0,0,0,244,246,3,10,5,0,245,244,1,0,0,0,245,246,1,0, + 0,0,246,247,1,0,0,0,247,253,5,130,0,0,248,250,3,10,5,0,249,248,1,0,0,0, + 249,250,1,0,0,0,250,251,1,0,0,0,251,253,5,103,0,0,252,245,1,0,0,0,252,249, + 1,0,0,0,253,13,1,0,0,0,254,257,3,194,97,0,255,256,5,12,0,0,256,258,3,194, + 97,0,257,255,1,0,0,0,257,258,1,0,0,0,258,15,1,0,0,0,259,260,5,13,0,0,260, + 263,3,18,9,0,261,262,5,12,0,0,262,264,3,194,97,0,263,261,1,0,0,0,263,264, + 1,0,0,0,264,265,1,0,0,0,265,266,5,2,0,0,266,296,1,0,0,0,267,270,5,13,0, + 0,268,271,5,3,0,0,269,271,3,194,97,0,270,268,1,0,0,0,270,269,1,0,0,0,271, + 274,1,0,0,0,272,273,5,12,0,0,273,275,3,194,97,0,274,272,1,0,0,0,274,275, + 1,0,0,0,275,276,1,0,0,0,276,277,5,14,0,0,277,278,3,18,9,0,278,279,5,2,0, + 0,279,296,1,0,0,0,280,281,5,13,0,0,281,282,5,15,0,0,282,287,3,14,7,0,283, + 284,5,16,0,0,284,286,3,14,7,0,285,283,1,0,0,0,286,289,1,0,0,0,287,285,1, + 0,0,0,287,288,1,0,0,0,288,290,1,0,0,0,289,287,1,0,0,0,290,291,5,17,0,0, + 291,292,5,14,0,0,292,293,3,18,9,0,293,294,5,2,0,0,294,296,1,0,0,0,295,259, + 1,0,0,0,295,267,1,0,0,0,295,280,1,0,0,0,296,17,1,0,0,0,297,298,5,129,0, + 0,298,19,1,0,0,0,299,301,5,18,0,0,300,299,1,0,0,0,300,301,1,0,0,0,301,302, + 1,0,0,0,302,303,7,1,0,0,303,313,3,194,97,0,304,305,5,22,0,0,305,310,3,22, + 11,0,306,307,5,16,0,0,307,309,3,22,11,0,308,306,1,0,0,0,309,312,1,0,0,0, + 310,308,1,0,0,0,310,311,1,0,0,0,311,314,1,0,0,0,312,310,1,0,0,0,313,304, + 1,0,0,0,313,314,1,0,0,0,314,315,1,0,0,0,315,319,5,15,0,0,316,318,3,24,12, + 0,317,316,1,0,0,0,318,321,1,0,0,0,319,317,1,0,0,0,319,320,1,0,0,0,320,322, + 1,0,0,0,321,319,1,0,0,0,322,323,5,17,0,0,323,21,1,0,0,0,324,330,3,78,39, + 0,325,327,5,23,0,0,326,328,3,144,72,0,327,326,1,0,0,0,327,328,1,0,0,0,328, + 329,1,0,0,0,329,331,5,24,0,0,330,325,1,0,0,0,330,331,1,0,0,0,331,23,1,0, + 0,0,332,342,3,26,13,0,333,342,3,34,17,0,334,342,3,42,21,0,335,342,3,44, + 22,0,336,342,3,48,24,0,337,342,3,56,28,0,338,342,3,60,30,0,339,342,3,30, + 15,0,340,342,3,32,16,0,341,332,1,0,0,0,341,333,1,0,0,0,341,334,1,0,0,0, + 341,335,1,0,0,0,341,336,1,0,0,0,341,337,1,0,0,0,341,338,1,0,0,0,341,339, + 1,0,0,0,341,340,1,0,0,0,342,25,1,0,0,0,343,352,3,76,38,0,344,351,5,119, + 0,0,345,351,5,116,0,0,346,351,5,118,0,0,347,351,5,110,0,0,348,351,5,111, + 0,0,349,351,3,198,99,0,350,344,1,0,0,0,350,345,1,0,0,0,350,346,1,0,0,0, + 350,347,1,0,0,0,350,348,1,0,0,0,350,349,1,0,0,0,351,354,1,0,0,0,352,350, + 1,0,0,0,352,353,1,0,0,0,353,355,1,0,0,0,354,352,1,0,0,0,355,358,3,194,97, + 0,356,357,5,11,0,0,357,359,3,140,70,0,358,356,1,0,0,0,358,359,1,0,0,0,359, + 360,1,0,0,0,360,361,5,2,0,0,361,27,1,0,0,0,362,363,3,76,38,0,363,364,5, + 110,0,0,364,365,3,194,97,0,365,366,5,11,0,0,366,367,3,140,70,0,367,368, + 5,2,0,0,368,29,1,0,0,0,369,370,5,25,0,0,370,371,3,194,97,0,371,372,3,62, + 31,0,372,373,5,2,0,0,373,31,1,0,0,0,374,375,5,122,0,0,375,376,3,194,97, + 0,376,377,5,22,0,0,377,378,3,138,69,0,378,379,5,2,0,0,379,33,1,0,0,0,380, + 381,5,26,0,0,381,382,3,36,18,0,382,385,5,27,0,0,383,386,5,3,0,0,384,386, + 3,76,38,0,385,383,1,0,0,0,385,384,1,0,0,0,386,388,1,0,0,0,387,389,5,124, + 0,0,388,387,1,0,0,0,388,389,1,0,0,0,389,390,1,0,0,0,390,391,5,2,0,0,391, + 35,1,0,0,0,392,405,3,78,39,0,393,394,5,15,0,0,394,399,3,38,19,0,395,396, + 5,16,0,0,396,398,3,38,19,0,397,395,1,0,0,0,398,401,1,0,0,0,399,397,1,0, + 0,0,399,400,1,0,0,0,400,402,1,0,0,0,401,399,1,0,0,0,402,403,5,17,0,0,403, + 405,1,0,0,0,404,392,1,0,0,0,404,393,1,0,0,0,405,37,1,0,0,0,406,409,3,78, + 39,0,407,408,5,12,0,0,408,410,3,40,20,0,409,407,1,0,0,0,409,410,1,0,0,0, + 410,39,1,0,0,0,411,412,7,2,0,0,412,41,1,0,0,0,413,414,5,36,0,0,414,415, + 3,194,97,0,415,426,5,15,0,0,416,417,3,74,37,0,417,423,5,2,0,0,418,419,3, + 74,37,0,419,420,5,2,0,0,420,422,1,0,0,0,421,418,1,0,0,0,422,425,1,0,0,0, + 423,421,1,0,0,0,423,424,1,0,0,0,424,427,1,0,0,0,425,423,1,0,0,0,426,416, + 1,0,0,0,426,427,1,0,0,0,427,428,1,0,0,0,428,429,5,17,0,0,429,43,1,0,0,0, + 430,431,5,37,0,0,431,433,3,194,97,0,432,434,3,62,31,0,433,432,1,0,0,0,433, + 434,1,0,0,0,434,439,1,0,0,0,435,438,5,120,0,0,436,438,3,198,99,0,437,435, + 1,0,0,0,437,436,1,0,0,0,438,441,1,0,0,0,439,437,1,0,0,0,439,440,1,0,0,0, + 440,444,1,0,0,0,441,439,1,0,0,0,442,445,5,2,0,0,443,445,3,94,47,0,444,442, + 1,0,0,0,444,443,1,0,0,0,445,45,1,0,0,0,446,452,3,194,97,0,447,449,5,23, + 0,0,448,450,3,144,72,0,449,448,1,0,0,0,449,450,1,0,0,0,450,451,1,0,0,0, + 451,453,5,24,0,0,452,447,1,0,0,0,452,453,1,0,0,0,453,47,1,0,0,0,454,455, + 3,50,25,0,455,456,3,62,31,0,456,458,3,54,27,0,457,459,3,52,26,0,458,457, + 1,0,0,0,458,459,1,0,0,0,459,462,1,0,0,0,460,463,5,2,0,0,461,463,3,94,47, + 0,462,460,1,0,0,0,462,461,1,0,0,0,463,49,1,0,0,0,464,466,5,38,0,0,465,467, + 3,194,97,0,466,465,1,0,0,0,466,467,1,0,0,0,467,472,1,0,0,0,468,472,5,125, + 0,0,469,472,5,126,0,0,470,472,5,127,0,0,471,464,1,0,0,0,471,468,1,0,0,0, + 471,469,1,0,0,0,471,470,1,0,0,0,472,51,1,0,0,0,473,474,5,39,0,0,474,475, + 3,62,31,0,475,53,1,0,0,0,476,485,5,114,0,0,477,485,5,119,0,0,478,485,5, + 116,0,0,479,485,5,118,0,0,480,485,5,120,0,0,481,485,3,92,46,0,482,485,3, + 46,23,0,483,485,3,198,99,0,484,476,1,0,0,0,484,477,1,0,0,0,484,478,1,0, + 0,0,484,479,1,0,0,0,484,480,1,0,0,0,484,481,1,0,0,0,484,482,1,0,0,0,484, + 483,1,0,0,0,485,488,1,0,0,0,486,484,1,0,0,0,486,487,1,0,0,0,487,55,1,0, + 0,0,488,486,1,0,0,0,489,490,5,40,0,0,490,491,3,194,97,0,491,493,3,66,33, + 0,492,494,5,108,0,0,493,492,1,0,0,0,493,494,1,0,0,0,494,495,1,0,0,0,495, + 496,5,2,0,0,496,57,1,0,0,0,497,498,3,194,97,0,498,59,1,0,0,0,499,500,5, + 41,0,0,500,501,3,194,97,0,501,503,5,15,0,0,502,504,3,58,29,0,503,502,1, + 0,0,0,503,504,1,0,0,0,504,509,1,0,0,0,505,506,5,16,0,0,506,508,3,58,29, + 0,507,505,1,0,0,0,508,511,1,0,0,0,509,507,1,0,0,0,509,510,1,0,0,0,510,512, + 1,0,0,0,511,509,1,0,0,0,512,513,5,17,0,0,513,61,1,0,0,0,514,523,5,23,0, + 0,515,520,3,64,32,0,516,517,5,16,0,0,517,519,3,64,32,0,518,516,1,0,0,0, + 519,522,1,0,0,0,520,518,1,0,0,0,520,521,1,0,0,0,521,524,1,0,0,0,522,520, + 1,0,0,0,523,515,1,0,0,0,523,524,1,0,0,0,524,525,1,0,0,0,525,526,5,24,0, + 0,526,63,1,0,0,0,527,529,3,76,38,0,528,530,3,90,45,0,529,528,1,0,0,0,529, + 530,1,0,0,0,530,532,1,0,0,0,531,533,3,194,97,0,532,531,1,0,0,0,532,533, + 1,0,0,0,533,65,1,0,0,0,534,543,5,23,0,0,535,540,3,68,34,0,536,537,5,16, + 0,0,537,539,3,68,34,0,538,536,1,0,0,0,539,542,1,0,0,0,540,538,1,0,0,0,540, + 541,1,0,0,0,541,544,1,0,0,0,542,540,1,0,0,0,543,535,1,0,0,0,543,544,1,0, + 0,0,544,545,1,0,0,0,545,546,5,24,0,0,546,67,1,0,0,0,547,549,3,76,38,0,548, + 550,5,115,0,0,549,548,1,0,0,0,549,550,1,0,0,0,550,552,1,0,0,0,551,553,3, + 194,97,0,552,551,1,0,0,0,552,553,1,0,0,0,553,69,1,0,0,0,554,563,5,23,0, + 0,555,560,3,72,36,0,556,557,5,16,0,0,557,559,3,72,36,0,558,556,1,0,0,0, + 559,562,1,0,0,0,560,558,1,0,0,0,560,561,1,0,0,0,561,564,1,0,0,0,562,560, + 1,0,0,0,563,555,1,0,0,0,563,564,1,0,0,0,564,565,1,0,0,0,565,566,5,24,0, + 0,566,71,1,0,0,0,567,569,3,76,38,0,568,570,3,90,45,0,569,568,1,0,0,0,569, + 570,1,0,0,0,570,73,1,0,0,0,571,573,3,76,38,0,572,574,3,90,45,0,573,572, + 1,0,0,0,573,574,1,0,0,0,574,575,1,0,0,0,575,576,3,194,97,0,576,75,1,0,0, + 0,577,578,6,38,-1,0,578,585,3,138,69,0,579,585,3,78,39,0,580,585,3,82,41, + 0,581,585,3,88,44,0,582,583,5,44,0,0,583,585,5,117,0,0,584,577,1,0,0,0, + 584,579,1,0,0,0,584,580,1,0,0,0,584,581,1,0,0,0,584,582,1,0,0,0,585,594, + 1,0,0,0,586,587,10,3,0,0,587,589,5,42,0,0,588,590,3,140,70,0,589,588,1, + 0,0,0,589,590,1,0,0,0,590,591,1,0,0,0,591,593,5,43,0,0,592,586,1,0,0,0, + 593,596,1,0,0,0,594,592,1,0,0,0,594,595,1,0,0,0,595,77,1,0,0,0,596,594, + 1,0,0,0,597,602,3,194,97,0,598,599,5,45,0,0,599,601,3,194,97,0,600,598, + 1,0,0,0,601,604,1,0,0,0,602,600,1,0,0,0,602,603,1,0,0,0,603,79,1,0,0,0, + 604,602,1,0,0,0,605,608,3,138,69,0,606,608,3,78,39,0,607,605,1,0,0,0,607, + 606,1,0,0,0,608,81,1,0,0,0,609,610,5,46,0,0,610,611,5,23,0,0,611,613,3, + 80,40,0,612,614,3,84,42,0,613,612,1,0,0,0,613,614,1,0,0,0,614,615,1,0,0, + 0,615,616,5,47,0,0,616,618,3,76,38,0,617,619,3,86,43,0,618,617,1,0,0,0, + 618,619,1,0,0,0,619,620,1,0,0,0,620,621,5,24,0,0,621,83,1,0,0,0,622,623, + 3,194,97,0,623,85,1,0,0,0,624,625,3,194,97,0,625,87,1,0,0,0,626,627,5,38, + 0,0,627,633,3,70,35,0,628,632,5,116,0,0,629,632,5,114,0,0,630,632,3,92, + 46,0,631,628,1,0,0,0,631,629,1,0,0,0,631,630,1,0,0,0,632,635,1,0,0,0,633, + 631,1,0,0,0,633,634,1,0,0,0,634,638,1,0,0,0,635,633,1,0,0,0,636,637,5,39, + 0,0,637,639,3,70,35,0,638,636,1,0,0,0,638,639,1,0,0,0,639,89,1,0,0,0,640, + 641,7,3,0,0,641,91,1,0,0,0,642,643,7,4,0,0,643,93,1,0,0,0,644,648,5,15, + 0,0,645,647,3,96,48,0,646,645,1,0,0,0,647,650,1,0,0,0,648,646,1,0,0,0,648, + 649,1,0,0,0,649,651,1,0,0,0,650,648,1,0,0,0,651,652,5,17,0,0,652,95,1,0, + 0,0,653,669,3,100,50,0,654,669,3,102,51,0,655,669,3,106,53,0,656,669,3, + 112,56,0,657,669,3,94,47,0,658,669,3,114,57,0,659,669,3,118,59,0,660,669, + 3,120,60,0,661,669,3,122,61,0,662,669,3,124,62,0,663,669,3,126,63,0,664, + 669,3,128,64,0,665,669,3,108,54,0,666,669,3,110,55,0,667,669,3,130,65,0, + 668,653,1,0,0,0,668,654,1,0,0,0,668,655,1,0,0,0,668,656,1,0,0,0,668,657, + 1,0,0,0,668,658,1,0,0,0,668,659,1,0,0,0,668,660,1,0,0,0,668,661,1,0,0,0, + 668,662,1,0,0,0,668,663,1,0,0,0,668,664,1,0,0,0,668,665,1,0,0,0,668,666, + 1,0,0,0,668,667,1,0,0,0,669,97,1,0,0,0,670,671,3,140,70,0,671,672,5,2,0, + 0,672,99,1,0,0,0,673,674,5,51,0,0,674,675,5,23,0,0,675,676,3,140,70,0,676, + 677,5,24,0,0,677,680,3,96,48,0,678,679,5,52,0,0,679,681,3,96,48,0,680,678, + 1,0,0,0,680,681,1,0,0,0,681,101,1,0,0,0,682,683,5,53,0,0,683,685,3,140, + 70,0,684,686,3,52,26,0,685,684,1,0,0,0,685,686,1,0,0,0,686,687,1,0,0,0, + 687,689,3,94,47,0,688,690,3,104,52,0,689,688,1,0,0,0,690,691,1,0,0,0,691, + 689,1,0,0,0,691,692,1,0,0,0,692,103,1,0,0,0,693,698,5,54,0,0,694,696,3, + 194,97,0,695,694,1,0,0,0,695,696,1,0,0,0,696,697,1,0,0,0,697,699,3,62,31, + 0,698,695,1,0,0,0,698,699,1,0,0,0,699,700,1,0,0,0,700,701,3,94,47,0,701, + 105,1,0,0,0,702,703,5,55,0,0,703,704,5,23,0,0,704,705,3,140,70,0,705,706, + 5,24,0,0,706,707,3,96,48,0,707,107,1,0,0,0,708,711,3,132,66,0,709,711,3, + 98,49,0,710,708,1,0,0,0,710,709,1,0,0,0,711,109,1,0,0,0,712,713,5,56,0, + 0,713,714,3,94,47,0,714,111,1,0,0,0,715,716,5,27,0,0,716,719,5,23,0,0,717, + 720,3,108,54,0,718,720,5,2,0,0,719,717,1,0,0,0,719,718,1,0,0,0,720,723, + 1,0,0,0,721,724,3,98,49,0,722,724,5,2,0,0,723,721,1,0,0,0,723,722,1,0,0, + 0,724,726,1,0,0,0,725,727,3,140,70,0,726,725,1,0,0,0,726,727,1,0,0,0,727, + 728,1,0,0,0,728,729,5,24,0,0,729,730,3,96,48,0,730,113,1,0,0,0,731,733, + 5,57,0,0,732,734,5,129,0,0,733,732,1,0,0,0,733,734,1,0,0,0,734,739,1,0, + 0,0,735,736,5,23,0,0,736,737,3,116,58,0,737,738,5,24,0,0,738,740,1,0,0, + 0,739,735,1,0,0,0,739,740,1,0,0,0,740,741,1,0,0,0,741,742,3,154,77,0,742, + 115,1,0,0,0,743,744,3,200,100,0,744,117,1,0,0,0,745,746,5,58,0,0,746,747, + 3,96,48,0,747,748,5,55,0,0,748,749,5,23,0,0,749,750,3,140,70,0,750,751, + 5,24,0,0,751,752,5,2,0,0,752,119,1,0,0,0,753,754,5,112,0,0,754,755,5,2, + 0,0,755,121,1,0,0,0,756,757,5,109,0,0,757,758,5,2,0,0,758,123,1,0,0,0,759, + 761,5,59,0,0,760,762,3,140,70,0,761,760,1,0,0,0,761,762,1,0,0,0,762,763, + 1,0,0,0,763,764,5,2,0,0,764,125,1,0,0,0,765,766,5,60,0,0,766,767,5,2,0, + 0,767,127,1,0,0,0,768,769,5,61,0,0,769,770,3,152,76,0,770,771,5,2,0,0,771, + 129,1,0,0,0,772,773,5,62,0,0,773,774,3,152,76,0,774,775,5,2,0,0,775,131, + 1,0,0,0,776,777,5,63,0,0,777,784,3,136,68,0,778,784,3,74,37,0,779,780,5, + 23,0,0,780,781,3,134,67,0,781,782,5,24,0,0,782,784,1,0,0,0,783,776,1,0, + 0,0,783,778,1,0,0,0,783,779,1,0,0,0,784,787,1,0,0,0,785,786,5,11,0,0,786, + 788,3,140,70,0,787,785,1,0,0,0,787,788,1,0,0,0,788,789,1,0,0,0,789,790, + 5,2,0,0,790,133,1,0,0,0,791,793,3,74,37,0,792,791,1,0,0,0,792,793,1,0,0, + 0,793,800,1,0,0,0,794,796,5,16,0,0,795,797,3,74,37,0,796,795,1,0,0,0,796, + 797,1,0,0,0,797,799,1,0,0,0,798,794,1,0,0,0,799,802,1,0,0,0,800,798,1,0, + 0,0,800,801,1,0,0,0,801,135,1,0,0,0,802,800,1,0,0,0,803,810,5,23,0,0,804, + 806,3,194,97,0,805,804,1,0,0,0,805,806,1,0,0,0,806,807,1,0,0,0,807,809, + 5,16,0,0,808,805,1,0,0,0,809,812,1,0,0,0,810,808,1,0,0,0,810,811,1,0,0, + 0,811,814,1,0,0,0,812,810,1,0,0,0,813,815,3,194,97,0,814,813,1,0,0,0,814, + 815,1,0,0,0,815,816,1,0,0,0,816,817,5,24,0,0,817,137,1,0,0,0,818,819,7, + 5,0,0,819,139,1,0,0,0,820,821,6,70,-1,0,821,822,5,69,0,0,822,839,3,76,38, + 0,823,824,5,23,0,0,824,825,3,140,70,0,825,826,5,24,0,0,826,839,1,0,0,0, + 827,828,7,6,0,0,828,839,3,140,70,19,829,830,7,7,0,0,830,839,3,140,70,18, + 831,832,5,71,0,0,832,839,3,140,70,17,833,834,5,72,0,0,834,839,3,140,70, + 16,835,836,5,6,0,0,836,839,3,140,70,15,837,839,3,142,71,0,838,820,1,0,0, + 0,838,823,1,0,0,0,838,827,1,0,0,0,838,829,1,0,0,0,838,831,1,0,0,0,838,833, + 1,0,0,0,838,835,1,0,0,0,838,837,1,0,0,0,839,914,1,0,0,0,840,841,10,14,0, + 0,841,842,5,73,0,0,842,913,3,140,70,14,843,844,10,13,0,0,844,845,7,8,0, + 0,845,913,3,140,70,14,846,847,10,12,0,0,847,848,7,7,0,0,848,913,3,140,70, + 13,849,850,10,11,0,0,850,851,7,9,0,0,851,913,3,140,70,12,852,853,10,10, + 0,0,853,854,5,29,0,0,854,913,3,140,70,11,855,856,10,9,0,0,856,857,5,5,0, + 0,857,913,3,140,70,10,858,859,10,8,0,0,859,860,5,28,0,0,860,913,3,140,70, + 9,861,862,10,7,0,0,862,863,7,10,0,0,863,913,3,140,70,8,864,865,10,6,0,0, + 865,866,7,11,0,0,866,913,3,140,70,7,867,868,10,5,0,0,868,869,5,76,0,0,869, + 913,3,140,70,6,870,871,10,4,0,0,871,872,5,4,0,0,872,913,3,140,70,5,873, + 874,10,3,0,0,874,875,5,77,0,0,875,876,3,140,70,0,876,877,5,70,0,0,877,878, + 3,140,70,3,878,913,1,0,0,0,879,880,10,2,0,0,880,881,7,12,0,0,881,913,3, + 140,70,3,882,883,10,27,0,0,883,913,7,6,0,0,884,885,10,25,0,0,885,886,5, + 42,0,0,886,887,3,140,70,0,887,888,5,43,0,0,888,913,1,0,0,0,889,890,10,24, + 0,0,890,892,5,42,0,0,891,893,3,140,70,0,892,891,1,0,0,0,892,893,1,0,0,0, + 893,894,1,0,0,0,894,896,5,70,0,0,895,897,3,140,70,0,896,895,1,0,0,0,896, + 897,1,0,0,0,897,898,1,0,0,0,898,913,5,43,0,0,899,900,10,23,0,0,900,901, + 5,45,0,0,901,913,3,194,97,0,902,903,10,22,0,0,903,904,5,15,0,0,904,905, + 3,146,73,0,905,906,5,17,0,0,906,913,1,0,0,0,907,908,10,21,0,0,908,909,5, + 23,0,0,909,910,3,150,75,0,910,911,5,24,0,0,911,913,1,0,0,0,912,840,1,0, + 0,0,912,843,1,0,0,0,912,846,1,0,0,0,912,849,1,0,0,0,912,852,1,0,0,0,912, + 855,1,0,0,0,912,858,1,0,0,0,912,861,1,0,0,0,912,864,1,0,0,0,912,867,1,0, + 0,0,912,870,1,0,0,0,912,873,1,0,0,0,912,879,1,0,0,0,912,882,1,0,0,0,912, + 884,1,0,0,0,912,889,1,0,0,0,912,899,1,0,0,0,912,902,1,0,0,0,912,907,1,0, + 0,0,913,916,1,0,0,0,914,912,1,0,0,0,914,915,1,0,0,0,915,141,1,0,0,0,916, + 914,1,0,0,0,917,927,5,102,0,0,918,927,3,192,96,0,919,927,3,196,98,0,920, + 927,3,200,100,0,921,927,3,194,97,0,922,927,5,122,0,0,923,927,5,117,0,0, + 924,927,3,190,95,0,925,927,3,76,38,0,926,917,1,0,0,0,926,918,1,0,0,0,926, + 919,1,0,0,0,926,920,1,0,0,0,926,921,1,0,0,0,926,922,1,0,0,0,926,923,1,0, + 0,0,926,924,1,0,0,0,926,925,1,0,0,0,927,143,1,0,0,0,928,933,3,140,70,0, + 929,930,5,16,0,0,930,932,3,140,70,0,931,929,1,0,0,0,932,935,1,0,0,0,933, + 931,1,0,0,0,933,934,1,0,0,0,934,145,1,0,0,0,935,933,1,0,0,0,936,941,3,148, + 74,0,937,938,5,16,0,0,938,940,3,148,74,0,939,937,1,0,0,0,940,943,1,0,0, + 0,941,939,1,0,0,0,941,942,1,0,0,0,942,945,1,0,0,0,943,941,1,0,0,0,944,946, + 5,16,0,0,945,944,1,0,0,0,945,946,1,0,0,0,946,147,1,0,0,0,947,948,3,194, + 97,0,948,949,5,70,0,0,949,950,3,140,70,0,950,149,1,0,0,0,951,953,5,15,0, + 0,952,954,3,146,73,0,953,952,1,0,0,0,953,954,1,0,0,0,954,955,1,0,0,0,955, + 960,5,17,0,0,956,958,3,144,72,0,957,956,1,0,0,0,957,958,1,0,0,0,958,960, + 1,0,0,0,959,951,1,0,0,0,959,957,1,0,0,0,960,151,1,0,0,0,961,962,3,140,70, + 0,962,963,5,23,0,0,963,964,3,150,75,0,964,965,5,24,0,0,965,153,1,0,0,0, + 966,970,5,15,0,0,967,969,3,156,78,0,968,967,1,0,0,0,969,972,1,0,0,0,970, + 968,1,0,0,0,970,971,1,0,0,0,971,973,1,0,0,0,972,970,1,0,0,0,973,974,5,17, + 0,0,974,155,1,0,0,0,975,993,3,194,97,0,976,993,3,154,77,0,977,993,3,158, + 79,0,978,993,3,164,82,0,979,993,3,166,83,0,980,993,3,172,86,0,981,993,3, + 174,87,0,982,993,3,176,88,0,983,993,3,180,90,0,984,993,3,184,92,0,985,993, + 3,186,93,0,986,993,5,109,0,0,987,993,5,112,0,0,988,993,5,113,0,0,989,993, + 3,192,96,0,990,993,3,200,100,0,991,993,3,196,98,0,992,975,1,0,0,0,992,976, + 1,0,0,0,992,977,1,0,0,0,992,978,1,0,0,0,992,979,1,0,0,0,992,980,1,0,0,0, + 992,981,1,0,0,0,992,982,1,0,0,0,992,983,1,0,0,0,992,984,1,0,0,0,992,985, + 1,0,0,0,992,986,1,0,0,0,992,987,1,0,0,0,992,988,1,0,0,0,992,989,1,0,0,0, + 992,990,1,0,0,0,992,991,1,0,0,0,993,157,1,0,0,0,994,998,3,162,81,0,995, + 998,3,188,94,0,996,998,3,160,80,0,997,994,1,0,0,0,997,995,1,0,0,0,997,996, + 1,0,0,0,998,159,1,0,0,0,999,1000,3,194,97,0,1000,1001,5,45,0,0,1001,1002, + 3,194,97,0,1002,161,1,0,0,0,1003,1008,5,59,0,0,1004,1008,5,44,0,0,1005, + 1008,5,66,0,0,1006,1008,3,194,97,0,1007,1003,1,0,0,0,1007,1004,1,0,0,0, + 1007,1005,1,0,0,0,1007,1006,1,0,0,0,1008,1021,1,0,0,0,1009,1011,5,23,0, + 0,1010,1012,3,158,79,0,1011,1010,1,0,0,0,1011,1012,1,0,0,0,1012,1017,1, + 0,0,0,1013,1014,5,16,0,0,1014,1016,3,158,79,0,1015,1013,1,0,0,0,1016,1019, + 1,0,0,0,1017,1015,1,0,0,0,1017,1018,1,0,0,0,1018,1020,1,0,0,0,1019,1017, + 1,0,0,0,1020,1022,5,24,0,0,1021,1009,1,0,0,0,1021,1022,1,0,0,0,1022,163, + 1,0,0,0,1023,1024,5,88,0,0,1024,1027,3,168,84,0,1025,1026,5,89,0,0,1026, + 1028,3,158,79,0,1027,1025,1,0,0,0,1027,1028,1,0,0,0,1028,165,1,0,0,0,1029, + 1030,3,168,84,0,1030,1031,5,89,0,0,1031,1032,3,158,79,0,1032,167,1,0,0, + 0,1033,1041,3,194,97,0,1034,1041,3,160,80,0,1035,1041,3,170,85,0,1036,1037, + 5,23,0,0,1037,1038,3,170,85,0,1038,1039,5,24,0,0,1039,1041,1,0,0,0,1040, + 1033,1,0,0,0,1040,1034,1,0,0,0,1040,1035,1,0,0,0,1040,1036,1,0,0,0,1041, + 169,1,0,0,0,1042,1047,3,194,97,0,1043,1044,5,16,0,0,1044,1046,3,194,97, + 0,1045,1043,1,0,0,0,1046,1049,1,0,0,0,1047,1045,1,0,0,0,1047,1048,1,0,0, + 0,1048,171,1,0,0,0,1049,1047,1,0,0,0,1050,1051,3,158,79,0,1051,1052,5,90, + 0,0,1052,1053,3,194,97,0,1053,173,1,0,0,0,1054,1055,3,194,97,0,1055,1056, + 5,70,0,0,1056,175,1,0,0,0,1057,1058,5,91,0,0,1058,1062,3,158,79,0,1059, + 1061,3,178,89,0,1060,1059,1,0,0,0,1061,1064,1,0,0,0,1062,1060,1,0,0,0,1062, + 1063,1,0,0,0,1063,177,1,0,0,0,1064,1062,1,0,0,0,1065,1066,5,92,0,0,1066, + 1067,3,188,94,0,1067,1068,3,154,77,0,1068,1072,1,0,0,0,1069,1070,5,93,0, + 0,1070,1072,3,154,77,0,1071,1065,1,0,0,0,1071,1069,1,0,0,0,1072,179,1,0, + 0,0,1073,1074,5,38,0,0,1074,1075,3,194,97,0,1075,1077,5,23,0,0,1076,1078, + 3,170,85,0,1077,1076,1,0,0,0,1077,1078,1,0,0,0,1078,1079,1,0,0,0,1079,1081, + 5,24,0,0,1080,1082,3,182,91,0,1081,1080,1,0,0,0,1081,1082,1,0,0,0,1082, + 1083,1,0,0,0,1083,1084,3,154,77,0,1084,181,1,0,0,0,1085,1086,5,94,0,0,1086, + 1087,3,170,85,0,1087,183,1,0,0,0,1088,1091,5,27,0,0,1089,1092,3,154,77, + 0,1090,1092,3,158,79,0,1091,1089,1,0,0,0,1091,1090,1,0,0,0,1092,1093,1, + 0,0,0,1093,1096,3,158,79,0,1094,1097,3,154,77,0,1095,1097,3,158,79,0,1096, + 1094,1,0,0,0,1096,1095,1,0,0,0,1097,1098,1,0,0,0,1098,1099,3,154,77,0,1099, + 185,1,0,0,0,1100,1101,5,51,0,0,1101,1102,3,158,79,0,1102,1103,3,154,77, + 0,1103,187,1,0,0,0,1104,1110,3,200,100,0,1105,1110,5,103,0,0,1106,1110, + 5,104,0,0,1107,1110,3,196,98,0,1108,1110,5,102,0,0,1109,1104,1,0,0,0,1109, + 1105,1,0,0,0,1109,1106,1,0,0,0,1109,1107,1,0,0,0,1109,1108,1,0,0,0,1110, + 189,1,0,0,0,1111,1113,5,23,0,0,1112,1114,3,140,70,0,1113,1112,1,0,0,0,1113, + 1114,1,0,0,0,1114,1121,1,0,0,0,1115,1117,5,16,0,0,1116,1118,3,140,70,0, + 1117,1116,1,0,0,0,1117,1118,1,0,0,0,1118,1120,1,0,0,0,1119,1115,1,0,0,0, + 1120,1123,1,0,0,0,1121,1119,1,0,0,0,1121,1122,1,0,0,0,1122,1124,1,0,0,0, + 1123,1121,1,0,0,0,1124,1138,5,24,0,0,1125,1134,5,42,0,0,1126,1131,3,140, + 70,0,1127,1128,5,16,0,0,1128,1130,3,140,70,0,1129,1127,1,0,0,0,1130,1133, + 1,0,0,0,1131,1129,1,0,0,0,1131,1132,1,0,0,0,1132,1135,1,0,0,0,1133,1131, + 1,0,0,0,1134,1126,1,0,0,0,1134,1135,1,0,0,0,1135,1136,1,0,0,0,1136,1138, + 5,43,0,0,1137,1111,1,0,0,0,1137,1125,1,0,0,0,1138,191,1,0,0,0,1139,1141, + 7,13,0,0,1140,1142,5,105,0,0,1141,1140,1,0,0,0,1141,1142,1,0,0,0,1142,193, + 1,0,0,0,1143,1144,7,14,0,0,1144,195,1,0,0,0,1145,1147,5,106,0,0,1146,1145, + 1,0,0,0,1147,1148,1,0,0,0,1148,1146,1,0,0,0,1148,1149,1,0,0,0,1149,197, + 1,0,0,0,1150,1162,5,96,0,0,1151,1152,5,23,0,0,1152,1157,3,78,39,0,1153, + 1154,5,16,0,0,1154,1156,3,78,39,0,1155,1153,1,0,0,0,1156,1159,1,0,0,0,1157, + 1155,1,0,0,0,1157,1158,1,0,0,0,1158,1160,1,0,0,0,1159,1157,1,0,0,0,1160, + 1161,5,24,0,0,1161,1163,1,0,0,0,1162,1151,1,0,0,0,1162,1163,1,0,0,0,1163, + 199,1,0,0,0,1164,1166,5,129,0,0,1165,1164,1,0,0,0,1166,1167,1,0,0,0,1167, + 1165,1,0,0,0,1167,1168,1,0,0,0,1168,201,1,0,0,0,130,213,215,230,234,239, + 245,249,252,257,263,270,274,287,295,300,310,313,319,327,330,341,350,352, + 358,385,388,399,404,409,423,426,433,437,439,444,449,452,458,462,466,471, + 484,486,493,503,509,520,523,529,532,540,543,549,552,560,563,569,573,584, + 589,594,602,607,613,618,631,633,638,648,668,680,685,691,695,698,710,719, + 723,726,733,739,761,783,787,792,796,800,805,810,814,838,892,896,912,914, + 926,933,941,945,953,957,959,970,992,997,1007,1011,1017,1021,1027,1040,1047, + 1062,1071,1077,1081,1091,1096,1109,1113,1117,1121,1131,1134,1137,1141,1148, + 1157,1162,1167]; + + private static __ATN: ATN; public static get _ATN(): ATN { if (!SolidityParser.__ATN) { - SolidityParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(SolidityParser._serializedATN)); + SolidityParser.__ATN = new ATNDeserializer().deserialize(SolidityParser._serializedATN); } return SolidityParser.__ATN; } + + static DecisionsToDFA = SolidityParser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); + } export class SourceUnitContext extends ParserRuleContext { - public EOF(): TerminalNode { return this.getToken(SolidityParser.EOF, 0); } - public pragmaDirective(): PragmaDirectiveContext[]; - public pragmaDirective(i: number): PragmaDirectiveContext; - public pragmaDirective(i?: number): PragmaDirectiveContext | PragmaDirectiveContext[] { - if (i === undefined) { - return this.getRuleContexts(PragmaDirectiveContext); - } else { - return this.getRuleContext(i, PragmaDirectiveContext); - } + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public importDirective(): ImportDirectiveContext[]; - public importDirective(i: number): ImportDirectiveContext; - public importDirective(i?: number): ImportDirectiveContext | ImportDirectiveContext[] { - if (i === undefined) { - return this.getRuleContexts(ImportDirectiveContext); - } else { - return this.getRuleContext(i, ImportDirectiveContext); - } + public EOF(): TerminalNode { + return this.getToken(SolidityParser.EOF, 0); } - public contractDefinition(): ContractDefinitionContext[]; - public contractDefinition(i: number): ContractDefinitionContext; - public contractDefinition(i?: number): ContractDefinitionContext | ContractDefinitionContext[] { - if (i === undefined) { - return this.getRuleContexts(ContractDefinitionContext); - } else { - return this.getRuleContext(i, ContractDefinitionContext); - } + public pragmaDirective_list(): PragmaDirectiveContext[] { + return this.getTypedRuleContexts(PragmaDirectiveContext) as PragmaDirectiveContext[]; } - public enumDefinition(): EnumDefinitionContext[]; - public enumDefinition(i: number): EnumDefinitionContext; - public enumDefinition(i?: number): EnumDefinitionContext | EnumDefinitionContext[] { - if (i === undefined) { - return this.getRuleContexts(EnumDefinitionContext); - } else { - return this.getRuleContext(i, EnumDefinitionContext); - } + public pragmaDirective(i: number): PragmaDirectiveContext { + return this.getTypedRuleContext(PragmaDirectiveContext, i) as PragmaDirectiveContext; } - public eventDefinition(): EventDefinitionContext[]; - public eventDefinition(i: number): EventDefinitionContext; - public eventDefinition(i?: number): EventDefinitionContext | EventDefinitionContext[] { - if (i === undefined) { - return this.getRuleContexts(EventDefinitionContext); - } else { - return this.getRuleContext(i, EventDefinitionContext); - } + public importDirective_list(): ImportDirectiveContext[] { + return this.getTypedRuleContexts(ImportDirectiveContext) as ImportDirectiveContext[]; } - public structDefinition(): StructDefinitionContext[]; - public structDefinition(i: number): StructDefinitionContext; - public structDefinition(i?: number): StructDefinitionContext | StructDefinitionContext[] { - if (i === undefined) { - return this.getRuleContexts(StructDefinitionContext); - } else { - return this.getRuleContext(i, StructDefinitionContext); - } + public importDirective(i: number): ImportDirectiveContext { + return this.getTypedRuleContext(ImportDirectiveContext, i) as ImportDirectiveContext; } - public functionDefinition(): FunctionDefinitionContext[]; - public functionDefinition(i: number): FunctionDefinitionContext; - public functionDefinition(i?: number): FunctionDefinitionContext | FunctionDefinitionContext[] { - if (i === undefined) { - return this.getRuleContexts(FunctionDefinitionContext); - } else { - return this.getRuleContext(i, FunctionDefinitionContext); - } + public contractDefinition_list(): ContractDefinitionContext[] { + return this.getTypedRuleContexts(ContractDefinitionContext) as ContractDefinitionContext[]; } - public fileLevelConstant(): FileLevelConstantContext[]; - public fileLevelConstant(i: number): FileLevelConstantContext; - public fileLevelConstant(i?: number): FileLevelConstantContext | FileLevelConstantContext[] { - if (i === undefined) { - return this.getRuleContexts(FileLevelConstantContext); - } else { - return this.getRuleContext(i, FileLevelConstantContext); - } + public contractDefinition(i: number): ContractDefinitionContext { + return this.getTypedRuleContext(ContractDefinitionContext, i) as ContractDefinitionContext; } - public customErrorDefinition(): CustomErrorDefinitionContext[]; - public customErrorDefinition(i: number): CustomErrorDefinitionContext; - public customErrorDefinition(i?: number): CustomErrorDefinitionContext | CustomErrorDefinitionContext[] { - if (i === undefined) { - return this.getRuleContexts(CustomErrorDefinitionContext); - } else { - return this.getRuleContext(i, CustomErrorDefinitionContext); - } + public enumDefinition_list(): EnumDefinitionContext[] { + return this.getTypedRuleContexts(EnumDefinitionContext) as EnumDefinitionContext[]; } - public typeDefinition(): TypeDefinitionContext[]; - public typeDefinition(i: number): TypeDefinitionContext; - public typeDefinition(i?: number): TypeDefinitionContext | TypeDefinitionContext[] { - if (i === undefined) { - return this.getRuleContexts(TypeDefinitionContext); - } else { - return this.getRuleContext(i, TypeDefinitionContext); - } + public enumDefinition(i: number): EnumDefinitionContext { + return this.getTypedRuleContext(EnumDefinitionContext, i) as EnumDefinitionContext; } - public usingForDeclaration(): UsingForDeclarationContext[]; - public usingForDeclaration(i: number): UsingForDeclarationContext; - public usingForDeclaration(i?: number): UsingForDeclarationContext | UsingForDeclarationContext[] { - if (i === undefined) { - return this.getRuleContexts(UsingForDeclarationContext); - } else { - return this.getRuleContext(i, UsingForDeclarationContext); - } + public eventDefinition_list(): EventDefinitionContext[] { + return this.getTypedRuleContexts(EventDefinitionContext) as EventDefinitionContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public eventDefinition(i: number): EventDefinitionContext { + return this.getTypedRuleContext(EventDefinitionContext, i) as EventDefinitionContext; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_sourceUnit; } - // @Override - public enterRule(listener: SolidityListener): void { - if (listener.enterSourceUnit) { - listener.enterSourceUnit(this); - } + public structDefinition_list(): StructDefinitionContext[] { + return this.getTypedRuleContexts(StructDefinitionContext) as StructDefinitionContext[]; } - // @Override - public exitRule(listener: SolidityListener): void { - if (listener.exitSourceUnit) { - listener.exitSourceUnit(this); - } + public structDefinition(i: number): StructDefinitionContext { + return this.getTypedRuleContext(StructDefinitionContext, i) as StructDefinitionContext; } - // @Override - public accept(visitor: SolidityVisitor): Result { + public functionDefinition_list(): FunctionDefinitionContext[] { + return this.getTypedRuleContexts(FunctionDefinitionContext) as FunctionDefinitionContext[]; + } + public functionDefinition(i: number): FunctionDefinitionContext { + return this.getTypedRuleContext(FunctionDefinitionContext, i) as FunctionDefinitionContext; + } + public fileLevelConstant_list(): FileLevelConstantContext[] { + return this.getTypedRuleContexts(FileLevelConstantContext) as FileLevelConstantContext[]; + } + public fileLevelConstant(i: number): FileLevelConstantContext { + return this.getTypedRuleContext(FileLevelConstantContext, i) as FileLevelConstantContext; + } + public customErrorDefinition_list(): CustomErrorDefinitionContext[] { + return this.getTypedRuleContexts(CustomErrorDefinitionContext) as CustomErrorDefinitionContext[]; + } + public customErrorDefinition(i: number): CustomErrorDefinitionContext { + return this.getTypedRuleContext(CustomErrorDefinitionContext, i) as CustomErrorDefinitionContext; + } + public typeDefinition_list(): TypeDefinitionContext[] { + return this.getTypedRuleContexts(TypeDefinitionContext) as TypeDefinitionContext[]; + } + public typeDefinition(i: number): TypeDefinitionContext { + return this.getTypedRuleContext(TypeDefinitionContext, i) as TypeDefinitionContext; + } + public usingForDeclaration_list(): UsingForDeclarationContext[] { + return this.getTypedRuleContexts(UsingForDeclarationContext) as UsingForDeclarationContext[]; + } + public usingForDeclaration(i: number): UsingForDeclarationContext { + return this.getTypedRuleContext(UsingForDeclarationContext, i) as UsingForDeclarationContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_sourceUnit; + } + public enterRule(listener: SolidityListener): void { + if(listener.enterSourceUnit) { + listener.enterSourceUnit(this); + } + } + public exitRule(listener: SolidityListener): void { + if(listener.exitSourceUnit) { + listener.exitSourceUnit(this); + } + } + // @Override + public accept(visitor: SolidityVisitor): Result { if (visitor.visitSourceUnit) { return visitor.visitSourceUnit(this); } else { @@ -7075,27 +6761,27 @@ export class SourceUnitContext extends ParserRuleContext { export class PragmaDirectiveContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public pragmaName(): PragmaNameContext { - return this.getRuleContext(0, PragmaNameContext); + return this.getTypedRuleContext(PragmaNameContext, 0) as PragmaNameContext; } public pragmaValue(): PragmaValueContext { - return this.getRuleContext(0, PragmaValueContext); + return this.getTypedRuleContext(PragmaValueContext, 0) as PragmaValueContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_pragmaDirective; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_pragmaDirective; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterPragmaDirective) { - listener.enterPragmaDirective(this); + if(listener.enterPragmaDirective) { + listener.enterPragmaDirective(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitPragmaDirective) { - listener.exitPragmaDirective(this); + if(listener.exitPragmaDirective) { + listener.exitPragmaDirective(this); } } // @Override @@ -7110,24 +6796,24 @@ export class PragmaDirectiveContext extends ParserRuleContext { export class PragmaNameContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_pragmaName; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_pragmaName; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterPragmaName) { - listener.enterPragmaName(this); + if(listener.enterPragmaName) { + listener.enterPragmaName(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitPragmaName) { - listener.exitPragmaName(this); + if(listener.exitPragmaName) { + listener.exitPragmaName(this); } } // @Override @@ -7142,27 +6828,27 @@ export class PragmaNameContext extends ParserRuleContext { export class PragmaValueContext extends ParserRuleContext { - public version(): VersionContext | undefined { - return this.tryGetRuleContext(0, VersionContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); + public version(): VersionContext { + return this.getTypedRuleContext(VersionContext, 0) as VersionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_pragmaValue; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_pragmaValue; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterPragmaValue) { - listener.enterPragmaValue(this); + if(listener.enterPragmaValue) { + listener.enterPragmaValue(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitPragmaValue) { - listener.exitPragmaValue(this); + if(listener.exitPragmaValue) { + listener.exitPragmaValue(this); } } // @Override @@ -7177,30 +6863,27 @@ export class PragmaValueContext extends ParserRuleContext { export class VersionContext extends ParserRuleContext { - public versionConstraint(): VersionConstraintContext[]; - public versionConstraint(i: number): VersionConstraintContext; - public versionConstraint(i?: number): VersionConstraintContext | VersionConstraintContext[] { - if (i === undefined) { - return this.getRuleContexts(VersionConstraintContext); - } else { - return this.getRuleContext(i, VersionConstraintContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public versionConstraint_list(): VersionConstraintContext[] { + return this.getTypedRuleContexts(VersionConstraintContext) as VersionConstraintContext[]; + } + public versionConstraint(i: number): VersionConstraintContext { + return this.getTypedRuleContext(VersionConstraintContext, i) as VersionConstraintContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_version; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_version; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterVersion) { - listener.enterVersion(this); + if(listener.enterVersion) { + listener.enterVersion(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitVersion) { - listener.exitVersion(this); + if(listener.exitVersion) { + listener.exitVersion(this); } } // @Override @@ -7215,21 +6898,21 @@ export class VersionContext extends ParserRuleContext { export class VersionOperatorContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return SolidityParser.RULE_versionOperator; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_versionOperator; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterVersionOperator) { - listener.enterVersionOperator(this); + if(listener.enterVersionOperator) { + listener.enterVersionOperator(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitVersionOperator) { - listener.exitVersionOperator(this); + if(listener.exitVersionOperator) { + listener.exitVersionOperator(this); } } // @Override @@ -7244,26 +6927,30 @@ export class VersionOperatorContext extends ParserRuleContext { export class VersionConstraintContext extends ParserRuleContext { - public VersionLiteral(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.VersionLiteral, 0); } - public versionOperator(): VersionOperatorContext | undefined { - return this.tryGetRuleContext(0, VersionOperatorContext); - } - public DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public VersionLiteral(): TerminalNode { + return this.getToken(SolidityParser.VersionLiteral, 0); + } + public versionOperator(): VersionOperatorContext { + return this.getTypedRuleContext(VersionOperatorContext, 0) as VersionOperatorContext; + } + public DecimalNumber(): TerminalNode { + return this.getToken(SolidityParser.DecimalNumber, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_versionConstraint; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_versionConstraint; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterVersionConstraint) { - listener.enterVersionConstraint(this); + if(listener.enterVersionConstraint) { + listener.enterVersionConstraint(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitVersionConstraint) { - listener.exitVersionConstraint(this); + if(listener.exitVersionConstraint) { + listener.exitVersionConstraint(this); } } // @Override @@ -7278,30 +6965,27 @@ export class VersionConstraintContext extends ParserRuleContext { export class ImportDeclarationContext extends ParserRuleContext { - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext; - public identifier(i?: number): IdentifierContext | IdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public identifier_list(): IdentifierContext[] { + return this.getTypedRuleContexts(IdentifierContext) as IdentifierContext[]; + } + public identifier(i: number): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, i) as IdentifierContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_importDeclaration; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_importDeclaration; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterImportDeclaration) { - listener.enterImportDeclaration(this); + if(listener.enterImportDeclaration) { + listener.enterImportDeclaration(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitImportDeclaration) { - listener.exitImportDeclaration(this); + if(listener.exitImportDeclaration) { + listener.exitImportDeclaration(this); } } // @Override @@ -7316,42 +7000,36 @@ export class ImportDeclarationContext extends ParserRuleContext { export class ImportDirectiveContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public importPath(): ImportPathContext { - return this.getRuleContext(0, ImportPathContext); + return this.getTypedRuleContext(ImportPathContext, 0) as ImportPathContext; } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext; - public identifier(i?: number): IdentifierContext | IdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } + public identifier_list(): IdentifierContext[] { + return this.getTypedRuleContexts(IdentifierContext) as IdentifierContext[]; } - public importDeclaration(): ImportDeclarationContext[]; - public importDeclaration(i: number): ImportDeclarationContext; - public importDeclaration(i?: number): ImportDeclarationContext | ImportDeclarationContext[] { - if (i === undefined) { - return this.getRuleContexts(ImportDeclarationContext); - } else { - return this.getRuleContext(i, ImportDeclarationContext); - } + public identifier(i: number): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, i) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public importDeclaration_list(): ImportDeclarationContext[] { + return this.getTypedRuleContexts(ImportDeclarationContext) as ImportDeclarationContext[]; + } + public importDeclaration(i: number): ImportDeclarationContext { + return this.getTypedRuleContext(ImportDeclarationContext, i) as ImportDeclarationContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_importDirective; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_importDirective; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterImportDirective) { - listener.enterImportDirective(this); + if(listener.enterImportDirective) { + listener.enterImportDirective(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitImportDirective) { - listener.exitImportDirective(this); + if(listener.exitImportDirective) { + listener.exitImportDirective(this); } } // @Override @@ -7366,22 +7044,24 @@ export class ImportDirectiveContext extends ParserRuleContext { export class ImportPathContext extends ParserRuleContext { - public StringLiteralFragment(): TerminalNode { return this.getToken(SolidityParser.StringLiteralFragment, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public StringLiteralFragment(): TerminalNode { + return this.getToken(SolidityParser.StringLiteralFragment, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_importPath; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_importPath; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterImportPath) { - listener.enterImportPath(this); + if(listener.enterImportPath) { + listener.enterImportPath(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitImportPath) { - listener.exitImportPath(this); + if(listener.exitImportPath) { + listener.exitImportPath(this); } } // @Override @@ -7396,42 +7076,36 @@ export class ImportPathContext extends ParserRuleContext { export class ContractDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public inheritanceSpecifier(): InheritanceSpecifierContext[]; - public inheritanceSpecifier(i: number): InheritanceSpecifierContext; - public inheritanceSpecifier(i?: number): InheritanceSpecifierContext | InheritanceSpecifierContext[] { - if (i === undefined) { - return this.getRuleContexts(InheritanceSpecifierContext); - } else { - return this.getRuleContext(i, InheritanceSpecifierContext); - } + public inheritanceSpecifier_list(): InheritanceSpecifierContext[] { + return this.getTypedRuleContexts(InheritanceSpecifierContext) as InheritanceSpecifierContext[]; } - public contractPart(): ContractPartContext[]; - public contractPart(i: number): ContractPartContext; - public contractPart(i?: number): ContractPartContext | ContractPartContext[] { - if (i === undefined) { - return this.getRuleContexts(ContractPartContext); - } else { - return this.getRuleContext(i, ContractPartContext); - } + public inheritanceSpecifier(i: number): InheritanceSpecifierContext { + return this.getTypedRuleContext(InheritanceSpecifierContext, i) as InheritanceSpecifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public contractPart_list(): ContractPartContext[] { + return this.getTypedRuleContexts(ContractPartContext) as ContractPartContext[]; + } + public contractPart(i: number): ContractPartContext { + return this.getTypedRuleContext(ContractPartContext, i) as ContractPartContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_contractDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_contractDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterContractDefinition) { - listener.enterContractDefinition(this); + if(listener.enterContractDefinition) { + listener.enterContractDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitContractDefinition) { - listener.exitContractDefinition(this); + if(listener.exitContractDefinition) { + listener.exitContractDefinition(this); } } // @Override @@ -7446,27 +7120,27 @@ export class ContractDefinitionContext extends ParserRuleContext { export class InheritanceSpecifierContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public userDefinedTypeName(): UserDefinedTypeNameContext { - return this.getRuleContext(0, UserDefinedTypeNameContext); + return this.getTypedRuleContext(UserDefinedTypeNameContext, 0) as UserDefinedTypeNameContext; } - public expressionList(): ExpressionListContext | undefined { - return this.tryGetRuleContext(0, ExpressionListContext); + public expressionList(): ExpressionListContext { + return this.getTypedRuleContext(ExpressionListContext, 0) as ExpressionListContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_inheritanceSpecifier; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_inheritanceSpecifier; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterInheritanceSpecifier) { - listener.enterInheritanceSpecifier(this); + if(listener.enterInheritanceSpecifier) { + listener.enterInheritanceSpecifier(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitInheritanceSpecifier) { - listener.exitInheritanceSpecifier(this); + if(listener.exitInheritanceSpecifier) { + listener.exitInheritanceSpecifier(this); } } // @Override @@ -7481,48 +7155,48 @@ export class InheritanceSpecifierContext extends ParserRuleContext { export class ContractPartContext extends ParserRuleContext { - public stateVariableDeclaration(): StateVariableDeclarationContext | undefined { - return this.tryGetRuleContext(0, StateVariableDeclarationContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public usingForDeclaration(): UsingForDeclarationContext | undefined { - return this.tryGetRuleContext(0, UsingForDeclarationContext); + public stateVariableDeclaration(): StateVariableDeclarationContext { + return this.getTypedRuleContext(StateVariableDeclarationContext, 0) as StateVariableDeclarationContext; } - public structDefinition(): StructDefinitionContext | undefined { - return this.tryGetRuleContext(0, StructDefinitionContext); + public usingForDeclaration(): UsingForDeclarationContext { + return this.getTypedRuleContext(UsingForDeclarationContext, 0) as UsingForDeclarationContext; } - public modifierDefinition(): ModifierDefinitionContext | undefined { - return this.tryGetRuleContext(0, ModifierDefinitionContext); + public structDefinition(): StructDefinitionContext { + return this.getTypedRuleContext(StructDefinitionContext, 0) as StructDefinitionContext; } - public functionDefinition(): FunctionDefinitionContext | undefined { - return this.tryGetRuleContext(0, FunctionDefinitionContext); + public modifierDefinition(): ModifierDefinitionContext { + return this.getTypedRuleContext(ModifierDefinitionContext, 0) as ModifierDefinitionContext; } - public eventDefinition(): EventDefinitionContext | undefined { - return this.tryGetRuleContext(0, EventDefinitionContext); + public functionDefinition(): FunctionDefinitionContext { + return this.getTypedRuleContext(FunctionDefinitionContext, 0) as FunctionDefinitionContext; } - public enumDefinition(): EnumDefinitionContext | undefined { - return this.tryGetRuleContext(0, EnumDefinitionContext); + public eventDefinition(): EventDefinitionContext { + return this.getTypedRuleContext(EventDefinitionContext, 0) as EventDefinitionContext; } - public customErrorDefinition(): CustomErrorDefinitionContext | undefined { - return this.tryGetRuleContext(0, CustomErrorDefinitionContext); + public enumDefinition(): EnumDefinitionContext { + return this.getTypedRuleContext(EnumDefinitionContext, 0) as EnumDefinitionContext; } - public typeDefinition(): TypeDefinitionContext | undefined { - return this.tryGetRuleContext(0, TypeDefinitionContext); + public customErrorDefinition(): CustomErrorDefinitionContext { + return this.getTypedRuleContext(CustomErrorDefinitionContext, 0) as CustomErrorDefinitionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public typeDefinition(): TypeDefinitionContext { + return this.getTypedRuleContext(TypeDefinitionContext, 0) as TypeDefinitionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_contractPart; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_contractPart; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterContractPart) { - listener.enterContractPart(this); + if(listener.enterContractPart) { + listener.enterContractPart(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitContractPart) { - listener.exitContractPart(this); + if(listener.exitContractPart) { + listener.exitContractPart(this); } } // @Override @@ -7537,84 +7211,66 @@ export class ContractPartContext extends ParserRuleContext { export class StateVariableDeclarationContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public PublicKeyword(): TerminalNode[]; - public PublicKeyword(i: number): TerminalNode; - public PublicKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.PublicKeyword); - } else { - return this.getToken(SolidityParser.PublicKeyword, i); - } + public PublicKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.PublicKeyword); } - public InternalKeyword(): TerminalNode[]; - public InternalKeyword(i: number): TerminalNode; - public InternalKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.InternalKeyword); - } else { - return this.getToken(SolidityParser.InternalKeyword, i); - } + public PublicKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.PublicKeyword, i); } - public PrivateKeyword(): TerminalNode[]; - public PrivateKeyword(i: number): TerminalNode; - public PrivateKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.PrivateKeyword); - } else { - return this.getToken(SolidityParser.PrivateKeyword, i); - } + public InternalKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.InternalKeyword); } - public ConstantKeyword(): TerminalNode[]; - public ConstantKeyword(i: number): TerminalNode; - public ConstantKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.ConstantKeyword); - } else { - return this.getToken(SolidityParser.ConstantKeyword, i); - } + public InternalKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.InternalKeyword, i); } - public ImmutableKeyword(): TerminalNode[]; - public ImmutableKeyword(i: number): TerminalNode; - public ImmutableKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.ImmutableKeyword); - } else { - return this.getToken(SolidityParser.ImmutableKeyword, i); - } + public PrivateKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.PrivateKeyword); } - public overrideSpecifier(): OverrideSpecifierContext[]; - public overrideSpecifier(i: number): OverrideSpecifierContext; - public overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] { - if (i === undefined) { - return this.getRuleContexts(OverrideSpecifierContext); - } else { - return this.getRuleContext(i, OverrideSpecifierContext); - } + public PrivateKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.PrivateKeyword, i); } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); + public ConstantKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.ConstantKeyword); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public ConstantKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.ConstantKeyword, i); + } + public ImmutableKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.ImmutableKeyword); + } + public ImmutableKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.ImmutableKeyword, i); + } + public overrideSpecifier_list(): OverrideSpecifierContext[] { + return this.getTypedRuleContexts(OverrideSpecifierContext) as OverrideSpecifierContext[]; + } + public overrideSpecifier(i: number): OverrideSpecifierContext { + return this.getTypedRuleContext(OverrideSpecifierContext, i) as OverrideSpecifierContext; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_stateVariableDeclaration; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_stateVariableDeclaration; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterStateVariableDeclaration) { - listener.enterStateVariableDeclaration(this); + if(listener.enterStateVariableDeclaration) { + listener.enterStateVariableDeclaration(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitStateVariableDeclaration) { - listener.exitStateVariableDeclaration(this); + if(listener.exitStateVariableDeclaration) { + listener.exitStateVariableDeclaration(this); } } // @Override @@ -7629,31 +7285,33 @@ export class StateVariableDeclarationContext extends ParserRuleContext { export class FileLevelConstantContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; + } + public ConstantKeyword(): TerminalNode { + return this.getToken(SolidityParser.ConstantKeyword, 0); } - public ConstantKeyword(): TerminalNode { return this.getToken(SolidityParser.ConstantKeyword, 0); } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_fileLevelConstant; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_fileLevelConstant; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterFileLevelConstant) { - listener.enterFileLevelConstant(this); + if(listener.enterFileLevelConstant) { + listener.enterFileLevelConstant(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitFileLevelConstant) { - listener.exitFileLevelConstant(this); + if(listener.exitFileLevelConstant) { + listener.exitFileLevelConstant(this); } } // @Override @@ -7668,27 +7326,27 @@ export class FileLevelConstantContext extends ParserRuleContext { export class CustomErrorDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } public parameterList(): ParameterListContext { - return this.getRuleContext(0, ParameterListContext); + return this.getTypedRuleContext(ParameterListContext, 0) as ParameterListContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_customErrorDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_customErrorDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterCustomErrorDefinition) { - listener.enterCustomErrorDefinition(this); + if(listener.enterCustomErrorDefinition) { + listener.enterCustomErrorDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitCustomErrorDefinition) { - listener.exitCustomErrorDefinition(this); + if(listener.exitCustomErrorDefinition) { + listener.exitCustomErrorDefinition(this); } } // @Override @@ -7703,28 +7361,30 @@ export class CustomErrorDefinitionContext extends ParserRuleContext { export class TypeDefinitionContext extends ParserRuleContext { - public TypeKeyword(): TerminalNode { return this.getToken(SolidityParser.TypeKeyword, 0); } + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public TypeKeyword(): TerminalNode { + return this.getToken(SolidityParser.TypeKeyword, 0); + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } public elementaryTypeName(): ElementaryTypeNameContext { - return this.getRuleContext(0, ElementaryTypeNameContext); + return this.getTypedRuleContext(ElementaryTypeNameContext, 0) as ElementaryTypeNameContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_typeDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_typeDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterTypeDefinition) { - listener.enterTypeDefinition(this); + if(listener.enterTypeDefinition) { + listener.enterTypeDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitTypeDefinition) { - listener.exitTypeDefinition(this); + if(listener.exitTypeDefinition) { + listener.exitTypeDefinition(this); } } // @Override @@ -7739,28 +7399,30 @@ export class TypeDefinitionContext extends ParserRuleContext { export class UsingForDeclarationContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public usingForObject(): UsingForObjectContext { - return this.getRuleContext(0, UsingForObjectContext); + return this.getTypedRuleContext(UsingForObjectContext, 0) as UsingForObjectContext; + } + public typeName(): TypeNameContext { + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } - public typeName(): TypeNameContext | undefined { - return this.tryGetRuleContext(0, TypeNameContext); + public GlobalKeyword(): TerminalNode { + return this.getToken(SolidityParser.GlobalKeyword, 0); } - public GlobalKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.GlobalKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_usingForDeclaration; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_usingForDeclaration; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterUsingForDeclaration) { - listener.enterUsingForDeclaration(this); + if(listener.enterUsingForDeclaration) { + listener.enterUsingForDeclaration(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitUsingForDeclaration) { - listener.exitUsingForDeclaration(this); + if(listener.exitUsingForDeclaration) { + listener.exitUsingForDeclaration(this); } } // @Override @@ -7775,33 +7437,30 @@ export class UsingForDeclarationContext extends ParserRuleContext { export class UsingForObjectContext extends ParserRuleContext { - public userDefinedTypeName(): UserDefinedTypeNameContext | undefined { - return this.tryGetRuleContext(0, UserDefinedTypeNameContext); - } - public usingForObjectDirective(): UsingForObjectDirectiveContext[]; - public usingForObjectDirective(i: number): UsingForObjectDirectiveContext; - public usingForObjectDirective(i?: number): UsingForObjectDirectiveContext | UsingForObjectDirectiveContext[] { - if (i === undefined) { - return this.getRuleContexts(UsingForObjectDirectiveContext); - } else { - return this.getRuleContext(i, UsingForObjectDirectiveContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public userDefinedTypeName(): UserDefinedTypeNameContext { + return this.getTypedRuleContext(UserDefinedTypeNameContext, 0) as UserDefinedTypeNameContext; + } + public usingForObjectDirective_list(): UsingForObjectDirectiveContext[] { + return this.getTypedRuleContexts(UsingForObjectDirectiveContext) as UsingForObjectDirectiveContext[]; + } + public usingForObjectDirective(i: number): UsingForObjectDirectiveContext { + return this.getTypedRuleContext(UsingForObjectDirectiveContext, i) as UsingForObjectDirectiveContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_usingForObject; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_usingForObject; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterUsingForObject) { - listener.enterUsingForObject(this); + if(listener.enterUsingForObject) { + listener.enterUsingForObject(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitUsingForObject) { - listener.exitUsingForObject(this); + if(listener.exitUsingForObject) { + listener.exitUsingForObject(this); } } // @Override @@ -7816,27 +7475,27 @@ export class UsingForObjectContext extends ParserRuleContext { export class UsingForObjectDirectiveContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public userDefinedTypeName(): UserDefinedTypeNameContext { - return this.getRuleContext(0, UserDefinedTypeNameContext); + return this.getTypedRuleContext(UserDefinedTypeNameContext, 0) as UserDefinedTypeNameContext; } - public userDefinableOperators(): UserDefinableOperatorsContext | undefined { - return this.tryGetRuleContext(0, UserDefinableOperatorsContext); + public userDefinableOperators(): UserDefinableOperatorsContext { + return this.getTypedRuleContext(UserDefinableOperatorsContext, 0) as UserDefinableOperatorsContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_usingForObjectDirective; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_usingForObjectDirective; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterUsingForObjectDirective) { - listener.enterUsingForObjectDirective(this); + if(listener.enterUsingForObjectDirective) { + listener.enterUsingForObjectDirective(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitUsingForObjectDirective) { - listener.exitUsingForObjectDirective(this); + if(listener.exitUsingForObjectDirective) { + listener.exitUsingForObjectDirective(this); } } // @Override @@ -7851,21 +7510,21 @@ export class UsingForObjectDirectiveContext extends ParserRuleContext { export class UserDefinableOperatorsContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return SolidityParser.RULE_userDefinableOperators; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_userDefinableOperators; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterUserDefinableOperators) { - listener.enterUserDefinableOperators(this); + if(listener.enterUserDefinableOperators) { + listener.enterUserDefinableOperators(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitUserDefinableOperators) { - listener.exitUserDefinableOperators(this); + if(listener.exitUserDefinableOperators) { + listener.exitUserDefinableOperators(this); } } // @Override @@ -7880,33 +7539,30 @@ export class UserDefinableOperatorsContext extends ParserRuleContext { export class StructDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public variableDeclaration(): VariableDeclarationContext[]; - public variableDeclaration(i: number): VariableDeclarationContext; - public variableDeclaration(i?: number): VariableDeclarationContext | VariableDeclarationContext[] { - if (i === undefined) { - return this.getRuleContexts(VariableDeclarationContext); - } else { - return this.getRuleContext(i, VariableDeclarationContext); - } + public variableDeclaration_list(): VariableDeclarationContext[] { + return this.getTypedRuleContexts(VariableDeclarationContext) as VariableDeclarationContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public variableDeclaration(i: number): VariableDeclarationContext { + return this.getTypedRuleContext(VariableDeclarationContext, i) as VariableDeclarationContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_structDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_structDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterStructDefinition) { - listener.enterStructDefinition(this); + if(listener.enterStructDefinition) { + listener.enterStructDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitStructDefinition) { - listener.exitStructDefinition(this); + if(listener.exitStructDefinition) { + listener.exitStructDefinition(this); } } // @Override @@ -7921,48 +7577,42 @@ export class StructDefinitionContext extends ParserRuleContext { export class ModifierDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public block(): BlockContext | undefined { - return this.tryGetRuleContext(0, BlockContext); + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; } - public parameterList(): ParameterListContext | undefined { - return this.tryGetRuleContext(0, ParameterListContext); + public parameterList(): ParameterListContext { + return this.getTypedRuleContext(ParameterListContext, 0) as ParameterListContext; } - public VirtualKeyword(): TerminalNode[]; - public VirtualKeyword(i: number): TerminalNode; - public VirtualKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.VirtualKeyword); - } else { - return this.getToken(SolidityParser.VirtualKeyword, i); - } + public VirtualKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.VirtualKeyword); } - public overrideSpecifier(): OverrideSpecifierContext[]; - public overrideSpecifier(i: number): OverrideSpecifierContext; - public overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] { - if (i === undefined) { - return this.getRuleContexts(OverrideSpecifierContext); - } else { - return this.getRuleContext(i, OverrideSpecifierContext); - } + public VirtualKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.VirtualKeyword, i); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public overrideSpecifier_list(): OverrideSpecifierContext[] { + return this.getTypedRuleContexts(OverrideSpecifierContext) as OverrideSpecifierContext[]; + } + public overrideSpecifier(i: number): OverrideSpecifierContext { + return this.getTypedRuleContext(OverrideSpecifierContext, i) as OverrideSpecifierContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_modifierDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_modifierDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterModifierDefinition) { - listener.enterModifierDefinition(this); + if(listener.enterModifierDefinition) { + listener.enterModifierDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitModifierDefinition) { - listener.exitModifierDefinition(this); + if(listener.exitModifierDefinition) { + listener.exitModifierDefinition(this); } } // @Override @@ -7977,27 +7627,27 @@ export class ModifierDefinitionContext extends ParserRuleContext { export class ModifierInvocationContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public expressionList(): ExpressionListContext | undefined { - return this.tryGetRuleContext(0, ExpressionListContext); + public expressionList(): ExpressionListContext { + return this.getTypedRuleContext(ExpressionListContext, 0) as ExpressionListContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_modifierInvocation; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_modifierInvocation; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterModifierInvocation) { - listener.enterModifierInvocation(this); + if(listener.enterModifierInvocation) { + listener.enterModifierInvocation(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitModifierInvocation) { - listener.exitModifierInvocation(this); + if(listener.exitModifierInvocation) { + listener.exitModifierInvocation(this); } } // @Override @@ -8012,36 +7662,36 @@ export class ModifierInvocationContext extends ParserRuleContext { export class FunctionDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public functionDescriptor(): FunctionDescriptorContext { - return this.getRuleContext(0, FunctionDescriptorContext); + return this.getTypedRuleContext(FunctionDescriptorContext, 0) as FunctionDescriptorContext; } public parameterList(): ParameterListContext { - return this.getRuleContext(0, ParameterListContext); + return this.getTypedRuleContext(ParameterListContext, 0) as ParameterListContext; } public modifierList(): ModifierListContext { - return this.getRuleContext(0, ModifierListContext); + return this.getTypedRuleContext(ModifierListContext, 0) as ModifierListContext; } - public block(): BlockContext | undefined { - return this.tryGetRuleContext(0, BlockContext); + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; } - public returnParameters(): ReturnParametersContext | undefined { - return this.tryGetRuleContext(0, ReturnParametersContext); + public returnParameters(): ReturnParametersContext { + return this.getTypedRuleContext(ReturnParametersContext, 0) as ReturnParametersContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_functionDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_functionDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterFunctionDefinition) { - listener.enterFunctionDefinition(this); + if(listener.enterFunctionDefinition) { + listener.enterFunctionDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitFunctionDefinition) { - listener.exitFunctionDefinition(this); + if(listener.exitFunctionDefinition) { + listener.exitFunctionDefinition(this); } } // @Override @@ -8056,27 +7706,33 @@ export class FunctionDefinitionContext extends ParserRuleContext { export class FunctionDescriptorContext extends ParserRuleContext { - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); - } - public ConstructorKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); } - public FallbackKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.FallbackKeyword, 0); } - public ReceiveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; + } + public ConstructorKeyword(): TerminalNode { + return this.getToken(SolidityParser.ConstructorKeyword, 0); + } + public FallbackKeyword(): TerminalNode { + return this.getToken(SolidityParser.FallbackKeyword, 0); + } + public ReceiveKeyword(): TerminalNode { + return this.getToken(SolidityParser.ReceiveKeyword, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_functionDescriptor; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_functionDescriptor; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterFunctionDescriptor) { - listener.enterFunctionDescriptor(this); + if(listener.enterFunctionDescriptor) { + listener.enterFunctionDescriptor(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitFunctionDescriptor) { - listener.exitFunctionDescriptor(this); + if(listener.exitFunctionDescriptor) { + listener.exitFunctionDescriptor(this); } } // @Override @@ -8091,24 +7747,24 @@ export class FunctionDescriptorContext extends ParserRuleContext { export class ReturnParametersContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public parameterList(): ParameterListContext { - return this.getRuleContext(0, ParameterListContext); + return this.getTypedRuleContext(ParameterListContext, 0) as ParameterListContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_returnParameters; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_returnParameters; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterReturnParameters) { - listener.enterReturnParameters(this); + if(listener.enterReturnParameters) { + listener.enterReturnParameters(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitReturnParameters) { - listener.exitReturnParameters(this); + if(listener.exitReturnParameters) { + listener.exitReturnParameters(this); } } // @Override @@ -8123,93 +7779,69 @@ export class ReturnParametersContext extends ParserRuleContext { export class ModifierListContext extends ParserRuleContext { - public ExternalKeyword(): TerminalNode[]; - public ExternalKeyword(i: number): TerminalNode; - public ExternalKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.ExternalKeyword); - } else { - return this.getToken(SolidityParser.ExternalKeyword, i); - } + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public PublicKeyword(): TerminalNode[]; - public PublicKeyword(i: number): TerminalNode; - public PublicKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.PublicKeyword); - } else { - return this.getToken(SolidityParser.PublicKeyword, i); - } + public ExternalKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.ExternalKeyword); } - public InternalKeyword(): TerminalNode[]; - public InternalKeyword(i: number): TerminalNode; - public InternalKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.InternalKeyword); - } else { - return this.getToken(SolidityParser.InternalKeyword, i); - } + public ExternalKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.ExternalKeyword, i); } - public PrivateKeyword(): TerminalNode[]; - public PrivateKeyword(i: number): TerminalNode; - public PrivateKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.PrivateKeyword); - } else { - return this.getToken(SolidityParser.PrivateKeyword, i); - } + public PublicKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.PublicKeyword); } - public VirtualKeyword(): TerminalNode[]; - public VirtualKeyword(i: number): TerminalNode; - public VirtualKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.VirtualKeyword); - } else { - return this.getToken(SolidityParser.VirtualKeyword, i); - } + public PublicKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.PublicKeyword, i); } - public stateMutability(): StateMutabilityContext[]; - public stateMutability(i: number): StateMutabilityContext; - public stateMutability(i?: number): StateMutabilityContext | StateMutabilityContext[] { - if (i === undefined) { - return this.getRuleContexts(StateMutabilityContext); - } else { - return this.getRuleContext(i, StateMutabilityContext); - } + public InternalKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.InternalKeyword); } - public modifierInvocation(): ModifierInvocationContext[]; - public modifierInvocation(i: number): ModifierInvocationContext; - public modifierInvocation(i?: number): ModifierInvocationContext | ModifierInvocationContext[] { - if (i === undefined) { - return this.getRuleContexts(ModifierInvocationContext); - } else { - return this.getRuleContext(i, ModifierInvocationContext); - } + public InternalKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.InternalKeyword, i); } - public overrideSpecifier(): OverrideSpecifierContext[]; - public overrideSpecifier(i: number): OverrideSpecifierContext; - public overrideSpecifier(i?: number): OverrideSpecifierContext | OverrideSpecifierContext[] { - if (i === undefined) { - return this.getRuleContexts(OverrideSpecifierContext); - } else { - return this.getRuleContext(i, OverrideSpecifierContext); - } + public PrivateKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.PrivateKeyword); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public PrivateKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.PrivateKeyword, i); + } + public VirtualKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.VirtualKeyword); + } + public VirtualKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.VirtualKeyword, i); + } + public stateMutability_list(): StateMutabilityContext[] { + return this.getTypedRuleContexts(StateMutabilityContext) as StateMutabilityContext[]; + } + public stateMutability(i: number): StateMutabilityContext { + return this.getTypedRuleContext(StateMutabilityContext, i) as StateMutabilityContext; + } + public modifierInvocation_list(): ModifierInvocationContext[] { + return this.getTypedRuleContexts(ModifierInvocationContext) as ModifierInvocationContext[]; + } + public modifierInvocation(i: number): ModifierInvocationContext { + return this.getTypedRuleContext(ModifierInvocationContext, i) as ModifierInvocationContext; + } + public overrideSpecifier_list(): OverrideSpecifierContext[] { + return this.getTypedRuleContexts(OverrideSpecifierContext) as OverrideSpecifierContext[]; + } + public overrideSpecifier(i: number): OverrideSpecifierContext { + return this.getTypedRuleContext(OverrideSpecifierContext, i) as OverrideSpecifierContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_modifierList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_modifierList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterModifierList) { - listener.enterModifierList(this); + if(listener.enterModifierList) { + listener.enterModifierList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitModifierList) { - listener.exitModifierList(this); + if(listener.exitModifierList) { + listener.exitModifierList(this); } } // @Override @@ -8224,28 +7856,30 @@ export class ModifierListContext extends ParserRuleContext { export class EventDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } public eventParameterList(): EventParameterListContext { - return this.getRuleContext(0, EventParameterListContext); + return this.getTypedRuleContext(EventParameterListContext, 0) as EventParameterListContext; } - public AnonymousKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.AnonymousKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public AnonymousKeyword(): TerminalNode { + return this.getToken(SolidityParser.AnonymousKeyword, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_eventDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_eventDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterEventDefinition) { - listener.enterEventDefinition(this); + if(listener.enterEventDefinition) { + listener.enterEventDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitEventDefinition) { - listener.exitEventDefinition(this); + if(listener.exitEventDefinition) { + listener.exitEventDefinition(this); } } // @Override @@ -8260,24 +7894,24 @@ export class EventDefinitionContext extends ParserRuleContext { export class EnumValueContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_enumValue; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_enumValue; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterEnumValue) { - listener.enterEnumValue(this); + if(listener.enterEnumValue) { + listener.enterEnumValue(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitEnumValue) { - listener.exitEnumValue(this); + if(listener.exitEnumValue) { + listener.exitEnumValue(this); } } // @Override @@ -8292,33 +7926,30 @@ export class EnumValueContext extends ParserRuleContext { export class EnumDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public enumValue(): EnumValueContext[]; - public enumValue(i: number): EnumValueContext; - public enumValue(i?: number): EnumValueContext | EnumValueContext[] { - if (i === undefined) { - return this.getRuleContexts(EnumValueContext); - } else { - return this.getRuleContext(i, EnumValueContext); - } + public enumValue_list(): EnumValueContext[] { + return this.getTypedRuleContexts(EnumValueContext) as EnumValueContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public enumValue(i: number): EnumValueContext { + return this.getTypedRuleContext(EnumValueContext, i) as EnumValueContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_enumDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_enumDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterEnumDefinition) { - listener.enterEnumDefinition(this); + if(listener.enterEnumDefinition) { + listener.enterEnumDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitEnumDefinition) { - listener.exitEnumDefinition(this); + if(listener.exitEnumDefinition) { + listener.exitEnumDefinition(this); } } // @Override @@ -8333,30 +7964,27 @@ export class EnumDefinitionContext extends ParserRuleContext { export class ParameterListContext extends ParserRuleContext { - public parameter(): ParameterContext[]; - public parameter(i: number): ParameterContext; - public parameter(i?: number): ParameterContext | ParameterContext[] { - if (i === undefined) { - return this.getRuleContexts(ParameterContext); - } else { - return this.getRuleContext(i, ParameterContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public parameter_list(): ParameterContext[] { + return this.getTypedRuleContexts(ParameterContext) as ParameterContext[]; + } + public parameter(i: number): ParameterContext { + return this.getTypedRuleContext(ParameterContext, i) as ParameterContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_parameterList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_parameterList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterParameterList) { - listener.enterParameterList(this); + if(listener.enterParameterList) { + listener.enterParameterList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitParameterList) { - listener.exitParameterList(this); + if(listener.exitParameterList) { + listener.exitParameterList(this); } } // @Override @@ -8371,30 +7999,30 @@ export class ParameterListContext extends ParserRuleContext { export class ParameterContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } - public storageLocation(): StorageLocationContext | undefined { - return this.tryGetRuleContext(0, StorageLocationContext); + public storageLocation(): StorageLocationContext { + return this.getTypedRuleContext(StorageLocationContext, 0) as StorageLocationContext; } - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_parameter; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_parameter; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterParameter) { - listener.enterParameter(this); + if(listener.enterParameter) { + listener.enterParameter(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitParameter) { - listener.exitParameter(this); + if(listener.exitParameter) { + listener.exitParameter(this); } } // @Override @@ -8409,30 +8037,27 @@ export class ParameterContext extends ParserRuleContext { export class EventParameterListContext extends ParserRuleContext { - public eventParameter(): EventParameterContext[]; - public eventParameter(i: number): EventParameterContext; - public eventParameter(i?: number): EventParameterContext | EventParameterContext[] { - if (i === undefined) { - return this.getRuleContexts(EventParameterContext); - } else { - return this.getRuleContext(i, EventParameterContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public eventParameter_list(): EventParameterContext[] { + return this.getTypedRuleContexts(EventParameterContext) as EventParameterContext[]; + } + public eventParameter(i: number): EventParameterContext { + return this.getTypedRuleContext(EventParameterContext, i) as EventParameterContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_eventParameterList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_eventParameterList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterEventParameterList) { - listener.enterEventParameterList(this); + if(listener.enterEventParameterList) { + listener.enterEventParameterList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitEventParameterList) { - listener.exitEventParameterList(this); + if(listener.exitEventParameterList) { + listener.exitEventParameterList(this); } } // @Override @@ -8447,28 +8072,30 @@ export class EventParameterListContext extends ParserRuleContext { export class EventParameterContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } - public IndexedKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.IndexedKeyword, 0); } - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + public IndexedKeyword(): TerminalNode { + return this.getToken(SolidityParser.IndexedKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_eventParameter; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_eventParameter; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterEventParameter) { - listener.enterEventParameter(this); + if(listener.enterEventParameter) { + listener.enterEventParameter(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitEventParameter) { - listener.exitEventParameter(this); + if(listener.exitEventParameter) { + listener.exitEventParameter(this); } } // @Override @@ -8483,30 +8110,27 @@ export class EventParameterContext extends ParserRuleContext { export class FunctionTypeParameterListContext extends ParserRuleContext { - public functionTypeParameter(): FunctionTypeParameterContext[]; - public functionTypeParameter(i: number): FunctionTypeParameterContext; - public functionTypeParameter(i?: number): FunctionTypeParameterContext | FunctionTypeParameterContext[] { - if (i === undefined) { - return this.getRuleContexts(FunctionTypeParameterContext); - } else { - return this.getRuleContext(i, FunctionTypeParameterContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public functionTypeParameter_list(): FunctionTypeParameterContext[] { + return this.getTypedRuleContexts(FunctionTypeParameterContext) as FunctionTypeParameterContext[]; + } + public functionTypeParameter(i: number): FunctionTypeParameterContext { + return this.getTypedRuleContext(FunctionTypeParameterContext, i) as FunctionTypeParameterContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_functionTypeParameterList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_functionTypeParameterList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterFunctionTypeParameterList) { - listener.enterFunctionTypeParameterList(this); + if(listener.enterFunctionTypeParameterList) { + listener.enterFunctionTypeParameterList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitFunctionTypeParameterList) { - listener.exitFunctionTypeParameterList(this); + if(listener.exitFunctionTypeParameterList) { + listener.exitFunctionTypeParameterList(this); } } // @Override @@ -8521,27 +8145,27 @@ export class FunctionTypeParameterListContext extends ParserRuleContext { export class FunctionTypeParameterContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } - public storageLocation(): StorageLocationContext | undefined { - return this.tryGetRuleContext(0, StorageLocationContext); + public storageLocation(): StorageLocationContext { + return this.getTypedRuleContext(StorageLocationContext, 0) as StorageLocationContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_functionTypeParameter; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_functionTypeParameter; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterFunctionTypeParameter) { - listener.enterFunctionTypeParameter(this); + if(listener.enterFunctionTypeParameter) { + listener.enterFunctionTypeParameter(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitFunctionTypeParameter) { - listener.exitFunctionTypeParameter(this); + if(listener.exitFunctionTypeParameter) { + listener.exitFunctionTypeParameter(this); } } // @Override @@ -8556,30 +8180,30 @@ export class FunctionTypeParameterContext extends ParserRuleContext { export class VariableDeclarationContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public storageLocation(): StorageLocationContext | undefined { - return this.tryGetRuleContext(0, StorageLocationContext); + public storageLocation(): StorageLocationContext { + return this.getTypedRuleContext(StorageLocationContext, 0) as StorageLocationContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_variableDeclaration; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_variableDeclaration; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterVariableDeclaration) { - listener.enterVariableDeclaration(this); + if(listener.enterVariableDeclaration) { + listener.enterVariableDeclaration(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitVariableDeclaration) { - listener.exitVariableDeclaration(this); + if(listener.exitVariableDeclaration) { + listener.exitVariableDeclaration(this); } } // @Override @@ -8594,40 +8218,42 @@ export class VariableDeclarationContext extends ParserRuleContext { export class TypeNameContext extends ParserRuleContext { - public elementaryTypeName(): ElementaryTypeNameContext | undefined { - return this.tryGetRuleContext(0, ElementaryTypeNameContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public userDefinedTypeName(): UserDefinedTypeNameContext | undefined { - return this.tryGetRuleContext(0, UserDefinedTypeNameContext); + public elementaryTypeName(): ElementaryTypeNameContext { + return this.getTypedRuleContext(ElementaryTypeNameContext, 0) as ElementaryTypeNameContext; } - public mapping(): MappingContext | undefined { - return this.tryGetRuleContext(0, MappingContext); + public userDefinedTypeName(): UserDefinedTypeNameContext { + return this.getTypedRuleContext(UserDefinedTypeNameContext, 0) as UserDefinedTypeNameContext; } - public typeName(): TypeNameContext | undefined { - return this.tryGetRuleContext(0, TypeNameContext); + public mapping(): MappingContext { + return this.getTypedRuleContext(MappingContext, 0) as MappingContext; } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); + public functionTypeName(): FunctionTypeNameContext { + return this.getTypedRuleContext(FunctionTypeNameContext, 0) as FunctionTypeNameContext; } - public functionTypeName(): FunctionTypeNameContext | undefined { - return this.tryGetRuleContext(0, FunctionTypeNameContext); + public PayableKeyword(): TerminalNode { + return this.getToken(SolidityParser.PayableKeyword, 0); } - public PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public typeName(): TypeNameContext { + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_typeName; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_typeName; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterTypeName) { - listener.enterTypeName(this); + if(listener.enterTypeName) { + listener.enterTypeName(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitTypeName) { - listener.exitTypeName(this); + if(listener.exitTypeName) { + listener.exitTypeName(this); } } // @Override @@ -8642,30 +8268,27 @@ export class TypeNameContext extends ParserRuleContext { export class UserDefinedTypeNameContext extends ParserRuleContext { - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext; - public identifier(i?: number): IdentifierContext | IdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public identifier_list(): IdentifierContext[] { + return this.getTypedRuleContexts(IdentifierContext) as IdentifierContext[]; + } + public identifier(i: number): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, i) as IdentifierContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_userDefinedTypeName; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_userDefinedTypeName; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterUserDefinedTypeName) { - listener.enterUserDefinedTypeName(this); + if(listener.enterUserDefinedTypeName) { + listener.enterUserDefinedTypeName(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitUserDefinedTypeName) { - listener.exitUserDefinedTypeName(this); + if(listener.exitUserDefinedTypeName) { + listener.exitUserDefinedTypeName(this); } } // @Override @@ -8680,27 +8303,27 @@ export class UserDefinedTypeNameContext extends ParserRuleContext { export class MappingKeyContext extends ParserRuleContext { - public elementaryTypeName(): ElementaryTypeNameContext | undefined { - return this.tryGetRuleContext(0, ElementaryTypeNameContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public userDefinedTypeName(): UserDefinedTypeNameContext | undefined { - return this.tryGetRuleContext(0, UserDefinedTypeNameContext); + public elementaryTypeName(): ElementaryTypeNameContext { + return this.getTypedRuleContext(ElementaryTypeNameContext, 0) as ElementaryTypeNameContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public userDefinedTypeName(): UserDefinedTypeNameContext { + return this.getTypedRuleContext(UserDefinedTypeNameContext, 0) as UserDefinedTypeNameContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_mappingKey; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_mappingKey; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterMappingKey) { - listener.enterMappingKey(this); + if(listener.enterMappingKey) { + listener.enterMappingKey(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitMappingKey) { - listener.exitMappingKey(this); + if(listener.exitMappingKey) { + listener.exitMappingKey(this); } } // @Override @@ -8715,33 +8338,33 @@ export class MappingKeyContext extends ParserRuleContext { export class MappingContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public mappingKey(): MappingKeyContext { - return this.getRuleContext(0, MappingKeyContext); + return this.getTypedRuleContext(MappingKeyContext, 0) as MappingKeyContext; } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } - public mappingKeyName(): MappingKeyNameContext | undefined { - return this.tryGetRuleContext(0, MappingKeyNameContext); + public mappingKeyName(): MappingKeyNameContext { + return this.getTypedRuleContext(MappingKeyNameContext, 0) as MappingKeyNameContext; } - public mappingValueName(): MappingValueNameContext | undefined { - return this.tryGetRuleContext(0, MappingValueNameContext); + public mappingValueName(): MappingValueNameContext { + return this.getTypedRuleContext(MappingValueNameContext, 0) as MappingValueNameContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_mapping; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_mapping; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterMapping) { - listener.enterMapping(this); + if(listener.enterMapping) { + listener.enterMapping(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitMapping) { - listener.exitMapping(this); + if(listener.exitMapping) { + listener.exitMapping(this); } } // @Override @@ -8756,24 +8379,24 @@ export class MappingContext extends ParserRuleContext { export class MappingKeyNameContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_mappingKeyName; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_mappingKeyName; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterMappingKeyName) { - listener.enterMappingKeyName(this); + if(listener.enterMappingKeyName) { + listener.enterMappingKeyName(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitMappingKeyName) { - listener.exitMappingKeyName(this); + if(listener.exitMappingKeyName) { + listener.exitMappingKeyName(this); } } // @Override @@ -8788,24 +8411,24 @@ export class MappingKeyNameContext extends ParserRuleContext { export class MappingValueNameContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_mappingValueName; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_mappingValueName; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterMappingValueName) { - listener.enterMappingValueName(this); + if(listener.enterMappingValueName) { + listener.enterMappingValueName(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitMappingValueName) { - listener.exitMappingValueName(this); + if(listener.exitMappingValueName) { + listener.exitMappingValueName(this); } } // @Override @@ -8820,57 +8443,45 @@ export class MappingValueNameContext extends ParserRuleContext { export class FunctionTypeNameContext extends ParserRuleContext { - public functionTypeParameterList(): FunctionTypeParameterListContext[]; - public functionTypeParameterList(i: number): FunctionTypeParameterListContext; - public functionTypeParameterList(i?: number): FunctionTypeParameterListContext | FunctionTypeParameterListContext[] { - if (i === undefined) { - return this.getRuleContexts(FunctionTypeParameterListContext); - } else { - return this.getRuleContext(i, FunctionTypeParameterListContext); - } + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public InternalKeyword(): TerminalNode[]; - public InternalKeyword(i: number): TerminalNode; - public InternalKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.InternalKeyword); - } else { - return this.getToken(SolidityParser.InternalKeyword, i); - } + public functionTypeParameterList_list(): FunctionTypeParameterListContext[] { + return this.getTypedRuleContexts(FunctionTypeParameterListContext) as FunctionTypeParameterListContext[]; } - public ExternalKeyword(): TerminalNode[]; - public ExternalKeyword(i: number): TerminalNode; - public ExternalKeyword(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.ExternalKeyword); - } else { - return this.getToken(SolidityParser.ExternalKeyword, i); - } + public functionTypeParameterList(i: number): FunctionTypeParameterListContext { + return this.getTypedRuleContext(FunctionTypeParameterListContext, i) as FunctionTypeParameterListContext; } - public stateMutability(): StateMutabilityContext[]; - public stateMutability(i: number): StateMutabilityContext; - public stateMutability(i?: number): StateMutabilityContext | StateMutabilityContext[] { - if (i === undefined) { - return this.getRuleContexts(StateMutabilityContext); - } else { - return this.getRuleContext(i, StateMutabilityContext); - } + public InternalKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.InternalKeyword); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public InternalKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.InternalKeyword, i); + } + public ExternalKeyword_list(): TerminalNode[] { + return this.getTokens(SolidityParser.ExternalKeyword); + } + public ExternalKeyword(i: number): TerminalNode { + return this.getToken(SolidityParser.ExternalKeyword, i); + } + public stateMutability_list(): StateMutabilityContext[] { + return this.getTypedRuleContexts(StateMutabilityContext) as StateMutabilityContext[]; + } + public stateMutability(i: number): StateMutabilityContext { + return this.getTypedRuleContext(StateMutabilityContext, i) as StateMutabilityContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_functionTypeName; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_functionTypeName; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterFunctionTypeName) { - listener.enterFunctionTypeName(this); + if(listener.enterFunctionTypeName) { + listener.enterFunctionTypeName(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitFunctionTypeName) { - listener.exitFunctionTypeName(this); + if(listener.exitFunctionTypeName) { + listener.exitFunctionTypeName(this); } } // @Override @@ -8885,21 +8496,21 @@ export class FunctionTypeNameContext extends ParserRuleContext { export class StorageLocationContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return SolidityParser.RULE_storageLocation; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_storageLocation; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterStorageLocation) { - listener.enterStorageLocation(this); + if(listener.enterStorageLocation) { + listener.enterStorageLocation(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitStorageLocation) { - listener.exitStorageLocation(this); + if(listener.exitStorageLocation) { + listener.exitStorageLocation(this); } } // @Override @@ -8914,25 +8525,33 @@ export class StorageLocationContext extends ParserRuleContext { export class StateMutabilityContext extends ParserRuleContext { - public PureKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PureKeyword, 0); } - public ConstantKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstantKeyword, 0); } - public ViewKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ViewKeyword, 0); } - public PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public PureKeyword(): TerminalNode { + return this.getToken(SolidityParser.PureKeyword, 0); + } + public ConstantKeyword(): TerminalNode { + return this.getToken(SolidityParser.ConstantKeyword, 0); + } + public ViewKeyword(): TerminalNode { + return this.getToken(SolidityParser.ViewKeyword, 0); + } + public PayableKeyword(): TerminalNode { + return this.getToken(SolidityParser.PayableKeyword, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_stateMutability; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_stateMutability; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterStateMutability) { - listener.enterStateMutability(this); + if(listener.enterStateMutability) { + listener.enterStateMutability(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitStateMutability) { - listener.exitStateMutability(this); + if(listener.exitStateMutability) { + listener.exitStateMutability(this); } } // @Override @@ -8947,30 +8566,27 @@ export class StateMutabilityContext extends ParserRuleContext { export class BlockContext extends ParserRuleContext { - public statement(): StatementContext[]; - public statement(i: number): StatementContext; - public statement(i?: number): StatementContext | StatementContext[] { - if (i === undefined) { - return this.getRuleContexts(StatementContext); - } else { - return this.getRuleContext(i, StatementContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public statement_list(): StatementContext[] { + return this.getTypedRuleContexts(StatementContext) as StatementContext[]; + } + public statement(i: number): StatementContext { + return this.getTypedRuleContext(StatementContext, i) as StatementContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_block; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_block; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterBlock) { - listener.enterBlock(this); + if(listener.enterBlock) { + listener.enterBlock(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitBlock) { - listener.exitBlock(this); + if(listener.exitBlock) { + listener.exitBlock(this); } } // @Override @@ -8985,66 +8601,66 @@ export class BlockContext extends ParserRuleContext { export class StatementContext extends ParserRuleContext { - public ifStatement(): IfStatementContext | undefined { - return this.tryGetRuleContext(0, IfStatementContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public ifStatement(): IfStatementContext { + return this.getTypedRuleContext(IfStatementContext, 0) as IfStatementContext; } - public tryStatement(): TryStatementContext | undefined { - return this.tryGetRuleContext(0, TryStatementContext); + public tryStatement(): TryStatementContext { + return this.getTypedRuleContext(TryStatementContext, 0) as TryStatementContext; } - public whileStatement(): WhileStatementContext | undefined { - return this.tryGetRuleContext(0, WhileStatementContext); + public whileStatement(): WhileStatementContext { + return this.getTypedRuleContext(WhileStatementContext, 0) as WhileStatementContext; } - public forStatement(): ForStatementContext | undefined { - return this.tryGetRuleContext(0, ForStatementContext); + public forStatement(): ForStatementContext { + return this.getTypedRuleContext(ForStatementContext, 0) as ForStatementContext; } - public block(): BlockContext | undefined { - return this.tryGetRuleContext(0, BlockContext); + public block(): BlockContext { + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; } - public inlineAssemblyStatement(): InlineAssemblyStatementContext | undefined { - return this.tryGetRuleContext(0, InlineAssemblyStatementContext); + public inlineAssemblyStatement(): InlineAssemblyStatementContext { + return this.getTypedRuleContext(InlineAssemblyStatementContext, 0) as InlineAssemblyStatementContext; } - public doWhileStatement(): DoWhileStatementContext | undefined { - return this.tryGetRuleContext(0, DoWhileStatementContext); + public doWhileStatement(): DoWhileStatementContext { + return this.getTypedRuleContext(DoWhileStatementContext, 0) as DoWhileStatementContext; } - public continueStatement(): ContinueStatementContext | undefined { - return this.tryGetRuleContext(0, ContinueStatementContext); + public continueStatement(): ContinueStatementContext { + return this.getTypedRuleContext(ContinueStatementContext, 0) as ContinueStatementContext; } - public breakStatement(): BreakStatementContext | undefined { - return this.tryGetRuleContext(0, BreakStatementContext); + public breakStatement(): BreakStatementContext { + return this.getTypedRuleContext(BreakStatementContext, 0) as BreakStatementContext; } - public returnStatement(): ReturnStatementContext | undefined { - return this.tryGetRuleContext(0, ReturnStatementContext); + public returnStatement(): ReturnStatementContext { + return this.getTypedRuleContext(ReturnStatementContext, 0) as ReturnStatementContext; } - public throwStatement(): ThrowStatementContext | undefined { - return this.tryGetRuleContext(0, ThrowStatementContext); + public throwStatement(): ThrowStatementContext { + return this.getTypedRuleContext(ThrowStatementContext, 0) as ThrowStatementContext; } - public emitStatement(): EmitStatementContext | undefined { - return this.tryGetRuleContext(0, EmitStatementContext); + public emitStatement(): EmitStatementContext { + return this.getTypedRuleContext(EmitStatementContext, 0) as EmitStatementContext; } - public simpleStatement(): SimpleStatementContext | undefined { - return this.tryGetRuleContext(0, SimpleStatementContext); + public simpleStatement(): SimpleStatementContext { + return this.getTypedRuleContext(SimpleStatementContext, 0) as SimpleStatementContext; } - public uncheckedStatement(): UncheckedStatementContext | undefined { - return this.tryGetRuleContext(0, UncheckedStatementContext); + public uncheckedStatement(): UncheckedStatementContext { + return this.getTypedRuleContext(UncheckedStatementContext, 0) as UncheckedStatementContext; } - public revertStatement(): RevertStatementContext | undefined { - return this.tryGetRuleContext(0, RevertStatementContext); + public revertStatement(): RevertStatementContext { + return this.getTypedRuleContext(RevertStatementContext, 0) as RevertStatementContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_statement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_statement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterStatement) { - listener.enterStatement(this); + if(listener.enterStatement) { + listener.enterStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitStatement) { - listener.exitStatement(this); + if(listener.exitStatement) { + listener.exitStatement(this); } } // @Override @@ -9059,24 +8675,24 @@ export class StatementContext extends ParserRuleContext { export class ExpressionStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_expressionStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_expressionStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterExpressionStatement) { - listener.enterExpressionStatement(this); + if(listener.enterExpressionStatement) { + listener.enterExpressionStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitExpressionStatement) { - listener.exitExpressionStatement(this); + if(listener.exitExpressionStatement) { + listener.exitExpressionStatement(this); } } // @Override @@ -9091,33 +8707,30 @@ export class ExpressionStatementContext extends ParserRuleContext { export class IfStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - public statement(): StatementContext[]; - public statement(i: number): StatementContext; - public statement(i?: number): StatementContext | StatementContext[] { - if (i === undefined) { - return this.getRuleContexts(StatementContext); - } else { - return this.getRuleContext(i, StatementContext); - } + public statement_list(): StatementContext[] { + return this.getTypedRuleContexts(StatementContext) as StatementContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public statement(i: number): StatementContext { + return this.getTypedRuleContext(StatementContext, i) as StatementContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_ifStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_ifStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterIfStatement) { - listener.enterIfStatement(this); + if(listener.enterIfStatement) { + listener.enterIfStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitIfStatement) { - listener.exitIfStatement(this); + if(listener.exitIfStatement) { + listener.exitIfStatement(this); } } // @Override @@ -9132,39 +8745,36 @@ export class IfStatementContext extends ParserRuleContext { export class TryStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } public block(): BlockContext { - return this.getRuleContext(0, BlockContext); + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; + } + public returnParameters(): ReturnParametersContext { + return this.getTypedRuleContext(ReturnParametersContext, 0) as ReturnParametersContext; } - public returnParameters(): ReturnParametersContext | undefined { - return this.tryGetRuleContext(0, ReturnParametersContext); + public catchClause_list(): CatchClauseContext[] { + return this.getTypedRuleContexts(CatchClauseContext) as CatchClauseContext[]; } - public catchClause(): CatchClauseContext[]; - public catchClause(i: number): CatchClauseContext; - public catchClause(i?: number): CatchClauseContext | CatchClauseContext[] { - if (i === undefined) { - return this.getRuleContexts(CatchClauseContext); - } else { - return this.getRuleContext(i, CatchClauseContext); - } + public catchClause(i: number): CatchClauseContext { + return this.getTypedRuleContext(CatchClauseContext, i) as CatchClauseContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_tryStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_tryStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterTryStatement) { - listener.enterTryStatement(this); + if(listener.enterTryStatement) { + listener.enterTryStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitTryStatement) { - listener.exitTryStatement(this); + if(listener.exitTryStatement) { + listener.exitTryStatement(this); } } // @Override @@ -9179,30 +8789,30 @@ export class TryStatementContext extends ParserRuleContext { export class CatchClauseContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public block(): BlockContext { - return this.getRuleContext(0, BlockContext); + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; } - public parameterList(): ParameterListContext | undefined { - return this.tryGetRuleContext(0, ParameterListContext); + public parameterList(): ParameterListContext { + return this.getTypedRuleContext(ParameterListContext, 0) as ParameterListContext; } - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_catchClause; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_catchClause; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterCatchClause) { - listener.enterCatchClause(this); + if(listener.enterCatchClause) { + listener.enterCatchClause(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitCatchClause) { - listener.exitCatchClause(this); + if(listener.exitCatchClause) { + listener.exitCatchClause(this); } } // @Override @@ -9217,27 +8827,27 @@ export class CatchClauseContext extends ParserRuleContext { export class WhileStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } public statement(): StatementContext { - return this.getRuleContext(0, StatementContext); + return this.getTypedRuleContext(StatementContext, 0) as StatementContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_whileStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_whileStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterWhileStatement) { - listener.enterWhileStatement(this); + if(listener.enterWhileStatement) { + listener.enterWhileStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitWhileStatement) { - listener.exitWhileStatement(this); + if(listener.exitWhileStatement) { + listener.exitWhileStatement(this); } } // @Override @@ -9252,27 +8862,27 @@ export class WhileStatementContext extends ParserRuleContext { export class SimpleStatementContext extends ParserRuleContext { - public variableDeclarationStatement(): VariableDeclarationStatementContext | undefined { - return this.tryGetRuleContext(0, VariableDeclarationStatementContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public expressionStatement(): ExpressionStatementContext | undefined { - return this.tryGetRuleContext(0, ExpressionStatementContext); + public variableDeclarationStatement(): VariableDeclarationStatementContext { + return this.getTypedRuleContext(VariableDeclarationStatementContext, 0) as VariableDeclarationStatementContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public expressionStatement(): ExpressionStatementContext { + return this.getTypedRuleContext(ExpressionStatementContext, 0) as ExpressionStatementContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_simpleStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_simpleStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterSimpleStatement) { - listener.enterSimpleStatement(this); + if(listener.enterSimpleStatement) { + listener.enterSimpleStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitSimpleStatement) { - listener.exitSimpleStatement(this); + if(listener.exitSimpleStatement) { + listener.exitSimpleStatement(this); } } // @Override @@ -9287,24 +8897,24 @@ export class SimpleStatementContext extends ParserRuleContext { export class UncheckedStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public block(): BlockContext { - return this.getRuleContext(0, BlockContext); + return this.getTypedRuleContext(BlockContext, 0) as BlockContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_uncheckedStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_uncheckedStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterUncheckedStatement) { - listener.enterUncheckedStatement(this); + if(listener.enterUncheckedStatement) { + listener.enterUncheckedStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitUncheckedStatement) { - listener.exitUncheckedStatement(this); + if(listener.exitUncheckedStatement) { + listener.exitUncheckedStatement(this); } } // @Override @@ -9319,33 +8929,33 @@ export class UncheckedStatementContext extends ParserRuleContext { export class ForStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public statement(): StatementContext { - return this.getRuleContext(0, StatementContext); + return this.getTypedRuleContext(StatementContext, 0) as StatementContext; } - public simpleStatement(): SimpleStatementContext | undefined { - return this.tryGetRuleContext(0, SimpleStatementContext); + public simpleStatement(): SimpleStatementContext { + return this.getTypedRuleContext(SimpleStatementContext, 0) as SimpleStatementContext; } - public expressionStatement(): ExpressionStatementContext | undefined { - return this.tryGetRuleContext(0, ExpressionStatementContext); + public expressionStatement(): ExpressionStatementContext { + return this.getTypedRuleContext(ExpressionStatementContext, 0) as ExpressionStatementContext; } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_forStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_forStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterForStatement) { - listener.enterForStatement(this); + if(listener.enterForStatement) { + listener.enterForStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitForStatement) { - listener.exitForStatement(this); + if(listener.exitForStatement) { + listener.exitForStatement(this); } } // @Override @@ -9360,28 +8970,30 @@ export class ForStatementContext extends ParserRuleContext { export class InlineAssemblyStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public assemblyBlock(): AssemblyBlockContext { - return this.getRuleContext(0, AssemblyBlockContext); + return this.getTypedRuleContext(AssemblyBlockContext, 0) as AssemblyBlockContext; } - public StringLiteralFragment(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.StringLiteralFragment, 0); } - public inlineAssemblyStatementFlag(): InlineAssemblyStatementFlagContext | undefined { - return this.tryGetRuleContext(0, InlineAssemblyStatementFlagContext); + public StringLiteralFragment(): TerminalNode { + return this.getToken(SolidityParser.StringLiteralFragment, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public inlineAssemblyStatementFlag(): InlineAssemblyStatementFlagContext { + return this.getTypedRuleContext(InlineAssemblyStatementFlagContext, 0) as InlineAssemblyStatementFlagContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_inlineAssemblyStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_inlineAssemblyStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterInlineAssemblyStatement) { - listener.enterInlineAssemblyStatement(this); + if(listener.enterInlineAssemblyStatement) { + listener.enterInlineAssemblyStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitInlineAssemblyStatement) { - listener.exitInlineAssemblyStatement(this); + if(listener.exitInlineAssemblyStatement) { + listener.exitInlineAssemblyStatement(this); } } // @Override @@ -9396,24 +9008,24 @@ export class InlineAssemblyStatementContext extends ParserRuleContext { export class InlineAssemblyStatementFlagContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public stringLiteral(): StringLiteralContext { - return this.getRuleContext(0, StringLiteralContext); + return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_inlineAssemblyStatementFlag; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_inlineAssemblyStatementFlag; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterInlineAssemblyStatementFlag) { - listener.enterInlineAssemblyStatementFlag(this); + if(listener.enterInlineAssemblyStatementFlag) { + listener.enterInlineAssemblyStatementFlag(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitInlineAssemblyStatementFlag) { - listener.exitInlineAssemblyStatementFlag(this); + if(listener.exitInlineAssemblyStatementFlag) { + listener.exitInlineAssemblyStatementFlag(this); } } // @Override @@ -9428,27 +9040,27 @@ export class InlineAssemblyStatementFlagContext extends ParserRuleContext { export class DoWhileStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public statement(): StatementContext { - return this.getRuleContext(0, StatementContext); + return this.getTypedRuleContext(StatementContext, 0) as StatementContext; } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_doWhileStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_doWhileStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterDoWhileStatement) { - listener.enterDoWhileStatement(this); + if(listener.enterDoWhileStatement) { + listener.enterDoWhileStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitDoWhileStatement) { - listener.exitDoWhileStatement(this); + if(listener.exitDoWhileStatement) { + listener.exitDoWhileStatement(this); } } // @Override @@ -9463,22 +9075,24 @@ export class DoWhileStatementContext extends ParserRuleContext { export class ContinueStatementContext extends ParserRuleContext { - public ContinueKeyword(): TerminalNode { return this.getToken(SolidityParser.ContinueKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public ContinueKeyword(): TerminalNode { + return this.getToken(SolidityParser.ContinueKeyword, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_continueStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_continueStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterContinueStatement) { - listener.enterContinueStatement(this); + if(listener.enterContinueStatement) { + listener.enterContinueStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitContinueStatement) { - listener.exitContinueStatement(this); + if(listener.exitContinueStatement) { + listener.exitContinueStatement(this); } } // @Override @@ -9493,22 +9107,24 @@ export class ContinueStatementContext extends ParserRuleContext { export class BreakStatementContext extends ParserRuleContext { - public BreakKeyword(): TerminalNode { return this.getToken(SolidityParser.BreakKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public BreakKeyword(): TerminalNode { + return this.getToken(SolidityParser.BreakKeyword, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_breakStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_breakStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterBreakStatement) { - listener.enterBreakStatement(this); + if(listener.enterBreakStatement) { + listener.enterBreakStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitBreakStatement) { - listener.exitBreakStatement(this); + if(listener.exitBreakStatement) { + listener.exitBreakStatement(this); } } // @Override @@ -9523,24 +9139,24 @@ export class BreakStatementContext extends ParserRuleContext { export class ReturnStatementContext extends ParserRuleContext { - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_returnStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_returnStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterReturnStatement) { - listener.enterReturnStatement(this); + if(listener.enterReturnStatement) { + listener.enterReturnStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitReturnStatement) { - listener.exitReturnStatement(this); + if(listener.exitReturnStatement) { + listener.exitReturnStatement(this); } } // @Override @@ -9555,21 +9171,21 @@ export class ReturnStatementContext extends ParserRuleContext { export class ThrowStatementContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return SolidityParser.RULE_throwStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_throwStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterThrowStatement) { - listener.enterThrowStatement(this); + if(listener.enterThrowStatement) { + listener.enterThrowStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitThrowStatement) { - listener.exitThrowStatement(this); + if(listener.exitThrowStatement) { + listener.exitThrowStatement(this); } } // @Override @@ -9584,24 +9200,24 @@ export class ThrowStatementContext extends ParserRuleContext { export class EmitStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public functionCall(): FunctionCallContext { - return this.getRuleContext(0, FunctionCallContext); + return this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_emitStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_emitStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterEmitStatement) { - listener.enterEmitStatement(this); + if(listener.enterEmitStatement) { + listener.enterEmitStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitEmitStatement) { - listener.exitEmitStatement(this); + if(listener.exitEmitStatement) { + listener.exitEmitStatement(this); } } // @Override @@ -9616,24 +9232,24 @@ export class EmitStatementContext extends ParserRuleContext { export class RevertStatementContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public functionCall(): FunctionCallContext { - return this.getRuleContext(0, FunctionCallContext); + return this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_revertStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_revertStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterRevertStatement) { - listener.enterRevertStatement(this); + if(listener.enterRevertStatement) { + listener.enterRevertStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitRevertStatement) { - listener.exitRevertStatement(this); + if(listener.exitRevertStatement) { + listener.exitRevertStatement(this); } } // @Override @@ -9648,33 +9264,33 @@ export class RevertStatementContext extends ParserRuleContext { export class VariableDeclarationStatementContext extends ParserRuleContext { - public identifierList(): IdentifierListContext | undefined { - return this.tryGetRuleContext(0, IdentifierListContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public variableDeclaration(): VariableDeclarationContext | undefined { - return this.tryGetRuleContext(0, VariableDeclarationContext); + public identifierList(): IdentifierListContext { + return this.getTypedRuleContext(IdentifierListContext, 0) as IdentifierListContext; } - public variableDeclarationList(): VariableDeclarationListContext | undefined { - return this.tryGetRuleContext(0, VariableDeclarationListContext); + public variableDeclaration(): VariableDeclarationContext { + return this.getTypedRuleContext(VariableDeclarationContext, 0) as VariableDeclarationContext; } - public expression(): ExpressionContext | undefined { - return this.tryGetRuleContext(0, ExpressionContext); + public variableDeclarationList(): VariableDeclarationListContext { + return this.getTypedRuleContext(VariableDeclarationListContext, 0) as VariableDeclarationListContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_variableDeclarationStatement; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_variableDeclarationStatement; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterVariableDeclarationStatement) { - listener.enterVariableDeclarationStatement(this); + if(listener.enterVariableDeclarationStatement) { + listener.enterVariableDeclarationStatement(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitVariableDeclarationStatement) { - listener.exitVariableDeclarationStatement(this); + if(listener.exitVariableDeclarationStatement) { + listener.exitVariableDeclarationStatement(this); } } // @Override @@ -9689,30 +9305,27 @@ export class VariableDeclarationStatementContext extends ParserRuleContext { export class VariableDeclarationListContext extends ParserRuleContext { - public variableDeclaration(): VariableDeclarationContext[]; - public variableDeclaration(i: number): VariableDeclarationContext; - public variableDeclaration(i?: number): VariableDeclarationContext | VariableDeclarationContext[] { - if (i === undefined) { - return this.getRuleContexts(VariableDeclarationContext); - } else { - return this.getRuleContext(i, VariableDeclarationContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public variableDeclaration_list(): VariableDeclarationContext[] { + return this.getTypedRuleContexts(VariableDeclarationContext) as VariableDeclarationContext[]; + } + public variableDeclaration(i: number): VariableDeclarationContext { + return this.getTypedRuleContext(VariableDeclarationContext, i) as VariableDeclarationContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_variableDeclarationList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_variableDeclarationList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterVariableDeclarationList) { - listener.enterVariableDeclarationList(this); + if(listener.enterVariableDeclarationList) { + listener.enterVariableDeclarationList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitVariableDeclarationList) { - listener.exitVariableDeclarationList(this); + if(listener.exitVariableDeclarationList) { + listener.exitVariableDeclarationList(this); } } // @Override @@ -9727,30 +9340,27 @@ export class VariableDeclarationListContext extends ParserRuleContext { export class IdentifierListContext extends ParserRuleContext { - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext; - public identifier(i?: number): IdentifierContext | IdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public identifier_list(): IdentifierContext[] { + return this.getTypedRuleContexts(IdentifierContext) as IdentifierContext[]; + } + public identifier(i: number): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, i) as IdentifierContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_identifierList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_identifierList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterIdentifierList) { - listener.enterIdentifierList(this); + if(listener.enterIdentifierList) { + listener.enterIdentifierList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitIdentifierList) { - listener.exitIdentifierList(this); + if(listener.exitIdentifierList) { + listener.exitIdentifierList(this); } } // @Override @@ -9765,26 +9375,36 @@ export class IdentifierListContext extends ParserRuleContext { export class ElementaryTypeNameContext extends ParserRuleContext { - public Int(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Int, 0); } - public Uint(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Uint, 0); } - public Byte(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Byte, 0); } - public Fixed(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Fixed, 0); } - public Ufixed(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Ufixed, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public Int(): TerminalNode { + return this.getToken(SolidityParser.Int, 0); + } + public Uint(): TerminalNode { + return this.getToken(SolidityParser.Uint, 0); + } + public Byte(): TerminalNode { + return this.getToken(SolidityParser.Byte, 0); + } + public Fixed(): TerminalNode { + return this.getToken(SolidityParser.Fixed, 0); + } + public Ufixed(): TerminalNode { + return this.getToken(SolidityParser.Ufixed, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_elementaryTypeName; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_elementaryTypeName; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterElementaryTypeName) { - listener.enterElementaryTypeName(this); + if(listener.enterElementaryTypeName) { + listener.enterElementaryTypeName(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitElementaryTypeName) { - listener.exitElementaryTypeName(this); + if(listener.exitElementaryTypeName) { + listener.exitElementaryTypeName(this); } } // @Override @@ -9799,45 +9419,42 @@ export class ElementaryTypeNameContext extends ParserRuleContext { export class ExpressionContext extends ParserRuleContext { - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public typeName(): TypeNameContext | undefined { - return this.tryGetRuleContext(0, TypeNameContext); + public typeName(): TypeNameContext { + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; } - public nameValueList(): NameValueListContext | undefined { - return this.tryGetRuleContext(0, NameValueListContext); + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; } - public functionCallArguments(): FunctionCallArgumentsContext | undefined { - return this.tryGetRuleContext(0, FunctionCallArgumentsContext); + public primaryExpression(): PrimaryExpressionContext { + return this.getTypedRuleContext(PrimaryExpressionContext, 0) as PrimaryExpressionContext; } - public primaryExpression(): PrimaryExpressionContext | undefined { - return this.tryGetRuleContext(0, PrimaryExpressionContext); + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public nameValueList(): NameValueListContext { + return this.getTypedRuleContext(NameValueListContext, 0) as NameValueListContext; + } + public functionCallArguments(): FunctionCallArgumentsContext { + return this.getTypedRuleContext(FunctionCallArgumentsContext, 0) as FunctionCallArgumentsContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_expression; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_expression; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterExpression) { - listener.enterExpression(this); + if(listener.enterExpression) { + listener.enterExpression(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitExpression) { - listener.exitExpression(this); + if(listener.exitExpression) { + listener.exitExpression(this); } } // @Override @@ -9852,42 +9469,48 @@ export class ExpressionContext extends ParserRuleContext { export class PrimaryExpressionContext extends ParserRuleContext { - public BooleanLiteral(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.BooleanLiteral, 0); } - public numberLiteral(): NumberLiteralContext | undefined { - return this.tryGetRuleContext(0, NumberLiteralContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public BooleanLiteral(): TerminalNode { + return this.getToken(SolidityParser.BooleanLiteral, 0); + } + public numberLiteral(): NumberLiteralContext { + return this.getTypedRuleContext(NumberLiteralContext, 0) as NumberLiteralContext; } - public hexLiteral(): HexLiteralContext | undefined { - return this.tryGetRuleContext(0, HexLiteralContext); + public hexLiteral(): HexLiteralContext { + return this.getTypedRuleContext(HexLiteralContext, 0) as HexLiteralContext; } - public stringLiteral(): StringLiteralContext | undefined { - return this.tryGetRuleContext(0, StringLiteralContext); + public stringLiteral(): StringLiteralContext { + return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext; } - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public TypeKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.TypeKeyword, 0); } - public PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); } - public tupleExpression(): TupleExpressionContext | undefined { - return this.tryGetRuleContext(0, TupleExpressionContext); + public TypeKeyword(): TerminalNode { + return this.getToken(SolidityParser.TypeKeyword, 0); } - public typeName(): TypeNameContext | undefined { - return this.tryGetRuleContext(0, TypeNameContext); + public PayableKeyword(): TerminalNode { + return this.getToken(SolidityParser.PayableKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public tupleExpression(): TupleExpressionContext { + return this.getTypedRuleContext(TupleExpressionContext, 0) as TupleExpressionContext; + } + public typeName(): TypeNameContext { + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_primaryExpression; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_primaryExpression; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterPrimaryExpression) { - listener.enterPrimaryExpression(this); + if(listener.enterPrimaryExpression) { + listener.enterPrimaryExpression(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitPrimaryExpression) { - listener.exitPrimaryExpression(this); + if(listener.exitPrimaryExpression) { + listener.exitPrimaryExpression(this); } } // @Override @@ -9900,32 +9523,29 @@ export class PrimaryExpressionContext extends ParserRuleContext { } } - -export class ExpressionListContext extends ParserRuleContext { - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + +export class ExpressionListContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_expressionList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_expressionList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterExpressionList) { - listener.enterExpressionList(this); + if(listener.enterExpressionList) { + listener.enterExpressionList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitExpressionList) { - listener.exitExpressionList(this); + if(listener.exitExpressionList) { + listener.exitExpressionList(this); } } // @Override @@ -9940,30 +9560,27 @@ export class ExpressionListContext extends ParserRuleContext { export class NameValueListContext extends ParserRuleContext { - public nameValue(): NameValueContext[]; - public nameValue(i: number): NameValueContext; - public nameValue(i?: number): NameValueContext | NameValueContext[] { - if (i === undefined) { - return this.getRuleContexts(NameValueContext); - } else { - return this.getRuleContext(i, NameValueContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public nameValue_list(): NameValueContext[] { + return this.getTypedRuleContexts(NameValueContext) as NameValueContext[]; + } + public nameValue(i: number): NameValueContext { + return this.getTypedRuleContext(NameValueContext, i) as NameValueContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_nameValueList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_nameValueList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterNameValueList) { - listener.enterNameValueList(this); + if(listener.enterNameValueList) { + listener.enterNameValueList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitNameValueList) { - listener.exitNameValueList(this); + if(listener.exitNameValueList) { + listener.exitNameValueList(this); } } // @Override @@ -9978,27 +9595,27 @@ export class NameValueListContext extends ParserRuleContext { export class NameValueContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_nameValue; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_nameValue; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterNameValue) { - listener.enterNameValue(this); + if(listener.enterNameValue) { + listener.enterNameValue(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitNameValue) { - listener.exitNameValue(this); + if(listener.exitNameValue) { + listener.exitNameValue(this); } } // @Override @@ -10013,27 +9630,27 @@ export class NameValueContext extends ParserRuleContext { export class FunctionCallArgumentsContext extends ParserRuleContext { - public nameValueList(): NameValueListContext | undefined { - return this.tryGetRuleContext(0, NameValueListContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public expressionList(): ExpressionListContext | undefined { - return this.tryGetRuleContext(0, ExpressionListContext); + public nameValueList(): NameValueListContext { + return this.getTypedRuleContext(NameValueListContext, 0) as NameValueListContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public expressionList(): ExpressionListContext { + return this.getTypedRuleContext(ExpressionListContext, 0) as ExpressionListContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_functionCallArguments; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_functionCallArguments; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterFunctionCallArguments) { - listener.enterFunctionCallArguments(this); + if(listener.enterFunctionCallArguments) { + listener.enterFunctionCallArguments(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitFunctionCallArguments) { - listener.exitFunctionCallArguments(this); + if(listener.exitFunctionCallArguments) { + listener.exitFunctionCallArguments(this); } } // @Override @@ -10048,27 +9665,27 @@ export class FunctionCallArgumentsContext extends ParserRuleContext { export class FunctionCallContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } public functionCallArguments(): FunctionCallArgumentsContext { - return this.getRuleContext(0, FunctionCallArgumentsContext); + return this.getTypedRuleContext(FunctionCallArgumentsContext, 0) as FunctionCallArgumentsContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_functionCall; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_functionCall; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterFunctionCall) { - listener.enterFunctionCall(this); + if(listener.enterFunctionCall) { + listener.enterFunctionCall(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitFunctionCall) { - listener.exitFunctionCall(this); + if(listener.exitFunctionCall) { + listener.exitFunctionCall(this); } } // @Override @@ -10083,30 +9700,27 @@ export class FunctionCallContext extends ParserRuleContext { export class AssemblyBlockContext extends ParserRuleContext { - public assemblyItem(): AssemblyItemContext[]; - public assemblyItem(i: number): AssemblyItemContext; - public assemblyItem(i?: number): AssemblyItemContext | AssemblyItemContext[] { - if (i === undefined) { - return this.getRuleContexts(AssemblyItemContext); - } else { - return this.getRuleContext(i, AssemblyItemContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public assemblyItem_list(): AssemblyItemContext[] { + return this.getTypedRuleContexts(AssemblyItemContext) as AssemblyItemContext[]; + } + public assemblyItem(i: number): AssemblyItemContext { + return this.getTypedRuleContext(AssemblyItemContext, i) as AssemblyItemContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyBlock; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyBlock; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyBlock) { - listener.enterAssemblyBlock(this); + if(listener.enterAssemblyBlock) { + listener.enterAssemblyBlock(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyBlock) { - listener.exitAssemblyBlock(this); + if(listener.exitAssemblyBlock) { + listener.exitAssemblyBlock(this); } } // @Override @@ -10121,66 +9735,72 @@ export class AssemblyBlockContext extends ParserRuleContext { export class AssemblyItemContext extends ParserRuleContext { - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public assemblyBlock(): AssemblyBlockContext | undefined { - return this.tryGetRuleContext(0, AssemblyBlockContext); + public assemblyBlock(): AssemblyBlockContext { + return this.getTypedRuleContext(AssemblyBlockContext, 0) as AssemblyBlockContext; } - public assemblyExpression(): AssemblyExpressionContext | undefined { - return this.tryGetRuleContext(0, AssemblyExpressionContext); + public assemblyExpression(): AssemblyExpressionContext { + return this.getTypedRuleContext(AssemblyExpressionContext, 0) as AssemblyExpressionContext; } - public assemblyLocalDefinition(): AssemblyLocalDefinitionContext | undefined { - return this.tryGetRuleContext(0, AssemblyLocalDefinitionContext); + public assemblyLocalDefinition(): AssemblyLocalDefinitionContext { + return this.getTypedRuleContext(AssemblyLocalDefinitionContext, 0) as AssemblyLocalDefinitionContext; } - public assemblyAssignment(): AssemblyAssignmentContext | undefined { - return this.tryGetRuleContext(0, AssemblyAssignmentContext); + public assemblyAssignment(): AssemblyAssignmentContext { + return this.getTypedRuleContext(AssemblyAssignmentContext, 0) as AssemblyAssignmentContext; } - public assemblyStackAssignment(): AssemblyStackAssignmentContext | undefined { - return this.tryGetRuleContext(0, AssemblyStackAssignmentContext); + public assemblyStackAssignment(): AssemblyStackAssignmentContext { + return this.getTypedRuleContext(AssemblyStackAssignmentContext, 0) as AssemblyStackAssignmentContext; } - public labelDefinition(): LabelDefinitionContext | undefined { - return this.tryGetRuleContext(0, LabelDefinitionContext); + public labelDefinition(): LabelDefinitionContext { + return this.getTypedRuleContext(LabelDefinitionContext, 0) as LabelDefinitionContext; } - public assemblySwitch(): AssemblySwitchContext | undefined { - return this.tryGetRuleContext(0, AssemblySwitchContext); + public assemblySwitch(): AssemblySwitchContext { + return this.getTypedRuleContext(AssemblySwitchContext, 0) as AssemblySwitchContext; } - public assemblyFunctionDefinition(): AssemblyFunctionDefinitionContext | undefined { - return this.tryGetRuleContext(0, AssemblyFunctionDefinitionContext); + public assemblyFunctionDefinition(): AssemblyFunctionDefinitionContext { + return this.getTypedRuleContext(AssemblyFunctionDefinitionContext, 0) as AssemblyFunctionDefinitionContext; } - public assemblyFor(): AssemblyForContext | undefined { - return this.tryGetRuleContext(0, AssemblyForContext); + public assemblyFor(): AssemblyForContext { + return this.getTypedRuleContext(AssemblyForContext, 0) as AssemblyForContext; } - public assemblyIf(): AssemblyIfContext | undefined { - return this.tryGetRuleContext(0, AssemblyIfContext); + public assemblyIf(): AssemblyIfContext { + return this.getTypedRuleContext(AssemblyIfContext, 0) as AssemblyIfContext; } - public BreakKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.BreakKeyword, 0); } - public ContinueKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ContinueKeyword, 0); } - public LeaveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.LeaveKeyword, 0); } - public numberLiteral(): NumberLiteralContext | undefined { - return this.tryGetRuleContext(0, NumberLiteralContext); + public BreakKeyword(): TerminalNode { + return this.getToken(SolidityParser.BreakKeyword, 0); } - public stringLiteral(): StringLiteralContext | undefined { - return this.tryGetRuleContext(0, StringLiteralContext); + public ContinueKeyword(): TerminalNode { + return this.getToken(SolidityParser.ContinueKeyword, 0); } - public hexLiteral(): HexLiteralContext | undefined { - return this.tryGetRuleContext(0, HexLiteralContext); + public LeaveKeyword(): TerminalNode { + return this.getToken(SolidityParser.LeaveKeyword, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public numberLiteral(): NumberLiteralContext { + return this.getTypedRuleContext(NumberLiteralContext, 0) as NumberLiteralContext; + } + public stringLiteral(): StringLiteralContext { + return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext; + } + public hexLiteral(): HexLiteralContext { + return this.getTypedRuleContext(HexLiteralContext, 0) as HexLiteralContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyItem; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyItem; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyItem) { - listener.enterAssemblyItem(this); + if(listener.enterAssemblyItem) { + listener.enterAssemblyItem(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyItem) { - listener.exitAssemblyItem(this); + if(listener.exitAssemblyItem) { + listener.exitAssemblyItem(this); } } // @Override @@ -10195,30 +9815,30 @@ export class AssemblyItemContext extends ParserRuleContext { export class AssemblyExpressionContext extends ParserRuleContext { - public assemblyCall(): AssemblyCallContext | undefined { - return this.tryGetRuleContext(0, AssemblyCallContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public assemblyCall(): AssemblyCallContext { + return this.getTypedRuleContext(AssemblyCallContext, 0) as AssemblyCallContext; } - public assemblyLiteral(): AssemblyLiteralContext | undefined { - return this.tryGetRuleContext(0, AssemblyLiteralContext); + public assemblyLiteral(): AssemblyLiteralContext { + return this.getTypedRuleContext(AssemblyLiteralContext, 0) as AssemblyLiteralContext; } - public assemblyMember(): AssemblyMemberContext | undefined { - return this.tryGetRuleContext(0, AssemblyMemberContext); + public assemblyMember(): AssemblyMemberContext { + return this.getTypedRuleContext(AssemblyMemberContext, 0) as AssemblyMemberContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyExpression; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyExpression; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyExpression) { - listener.enterAssemblyExpression(this); + if(listener.enterAssemblyExpression) { + listener.enterAssemblyExpression(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyExpression) { - listener.exitAssemblyExpression(this); + if(listener.exitAssemblyExpression) { + listener.exitAssemblyExpression(this); } } // @Override @@ -10233,30 +9853,27 @@ export class AssemblyExpressionContext extends ParserRuleContext { export class AssemblyMemberContext extends ParserRuleContext { - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext; - public identifier(i?: number): IdentifierContext | IdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public identifier_list(): IdentifierContext[] { + return this.getTypedRuleContexts(IdentifierContext) as IdentifierContext[]; + } + public identifier(i: number): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, i) as IdentifierContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyMember; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyMember; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyMember) { - listener.enterAssemblyMember(this); + if(listener.enterAssemblyMember) { + listener.enterAssemblyMember(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyMember) { - listener.exitAssemblyMember(this); + if(listener.exitAssemblyMember) { + listener.exitAssemblyMember(this); } } // @Override @@ -10271,33 +9888,30 @@ export class AssemblyMemberContext extends ParserRuleContext { export class AssemblyCallContext extends ParserRuleContext { - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); - } - public assemblyExpression(): AssemblyExpressionContext[]; - public assemblyExpression(i: number): AssemblyExpressionContext; - public assemblyExpression(i?: number): AssemblyExpressionContext | AssemblyExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(AssemblyExpressionContext); - } else { - return this.getRuleContext(i, AssemblyExpressionContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; + } + public assemblyExpression_list(): AssemblyExpressionContext[] { + return this.getTypedRuleContexts(AssemblyExpressionContext) as AssemblyExpressionContext[]; + } + public assemblyExpression(i: number): AssemblyExpressionContext { + return this.getTypedRuleContext(AssemblyExpressionContext, i) as AssemblyExpressionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyCall; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyCall; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyCall) { - listener.enterAssemblyCall(this); + if(listener.enterAssemblyCall) { + listener.enterAssemblyCall(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyCall) { - listener.exitAssemblyCall(this); + if(listener.exitAssemblyCall) { + listener.exitAssemblyCall(this); } } // @Override @@ -10312,27 +9926,27 @@ export class AssemblyCallContext extends ParserRuleContext { export class AssemblyLocalDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public assemblyIdentifierOrList(): AssemblyIdentifierOrListContext { - return this.getRuleContext(0, AssemblyIdentifierOrListContext); + return this.getTypedRuleContext(AssemblyIdentifierOrListContext, 0) as AssemblyIdentifierOrListContext; } - public assemblyExpression(): AssemblyExpressionContext | undefined { - return this.tryGetRuleContext(0, AssemblyExpressionContext); + public assemblyExpression(): AssemblyExpressionContext { + return this.getTypedRuleContext(AssemblyExpressionContext, 0) as AssemblyExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyLocalDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyLocalDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyLocalDefinition) { - listener.enterAssemblyLocalDefinition(this); + if(listener.enterAssemblyLocalDefinition) { + listener.enterAssemblyLocalDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyLocalDefinition) { - listener.exitAssemblyLocalDefinition(this); + if(listener.exitAssemblyLocalDefinition) { + listener.exitAssemblyLocalDefinition(this); } } // @Override @@ -10347,27 +9961,27 @@ export class AssemblyLocalDefinitionContext extends ParserRuleContext { export class AssemblyAssignmentContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public assemblyIdentifierOrList(): AssemblyIdentifierOrListContext { - return this.getRuleContext(0, AssemblyIdentifierOrListContext); + return this.getTypedRuleContext(AssemblyIdentifierOrListContext, 0) as AssemblyIdentifierOrListContext; } public assemblyExpression(): AssemblyExpressionContext { - return this.getRuleContext(0, AssemblyExpressionContext); + return this.getTypedRuleContext(AssemblyExpressionContext, 0) as AssemblyExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyAssignment; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyAssignment; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyAssignment) { - listener.enterAssemblyAssignment(this); + if(listener.enterAssemblyAssignment) { + listener.enterAssemblyAssignment(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyAssignment) { - listener.exitAssemblyAssignment(this); + if(listener.exitAssemblyAssignment) { + listener.exitAssemblyAssignment(this); } } // @Override @@ -10382,30 +9996,30 @@ export class AssemblyAssignmentContext extends ParserRuleContext { export class AssemblyIdentifierOrListContext extends ParserRuleContext { - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public assemblyMember(): AssemblyMemberContext | undefined { - return this.tryGetRuleContext(0, AssemblyMemberContext); + public identifier(): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - public assemblyIdentifierList(): AssemblyIdentifierListContext | undefined { - return this.tryGetRuleContext(0, AssemblyIdentifierListContext); + public assemblyMember(): AssemblyMemberContext { + return this.getTypedRuleContext(AssemblyMemberContext, 0) as AssemblyMemberContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public assemblyIdentifierList(): AssemblyIdentifierListContext { + return this.getTypedRuleContext(AssemblyIdentifierListContext, 0) as AssemblyIdentifierListContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyIdentifierOrList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyIdentifierOrList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyIdentifierOrList) { - listener.enterAssemblyIdentifierOrList(this); + if(listener.enterAssemblyIdentifierOrList) { + listener.enterAssemblyIdentifierOrList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyIdentifierOrList) { - listener.exitAssemblyIdentifierOrList(this); + if(listener.exitAssemblyIdentifierOrList) { + listener.exitAssemblyIdentifierOrList(this); } } // @Override @@ -10420,30 +10034,27 @@ export class AssemblyIdentifierOrListContext extends ParserRuleContext { export class AssemblyIdentifierListContext extends ParserRuleContext { - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext; - public identifier(i?: number): IdentifierContext | IdentifierContext[] { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } else { - return this.getRuleContext(i, IdentifierContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public identifier_list(): IdentifierContext[] { + return this.getTypedRuleContexts(IdentifierContext) as IdentifierContext[]; + } + public identifier(i: number): IdentifierContext { + return this.getTypedRuleContext(IdentifierContext, i) as IdentifierContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyIdentifierList; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyIdentifierList; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyIdentifierList) { - listener.enterAssemblyIdentifierList(this); + if(listener.enterAssemblyIdentifierList) { + listener.enterAssemblyIdentifierList(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyIdentifierList) { - listener.exitAssemblyIdentifierList(this); + if(listener.exitAssemblyIdentifierList) { + listener.exitAssemblyIdentifierList(this); } } // @Override @@ -10458,27 +10069,27 @@ export class AssemblyIdentifierListContext extends ParserRuleContext { export class AssemblyStackAssignmentContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public assemblyExpression(): AssemblyExpressionContext { - return this.getRuleContext(0, AssemblyExpressionContext); + return this.getTypedRuleContext(AssemblyExpressionContext, 0) as AssemblyExpressionContext; } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyStackAssignment; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyStackAssignment; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyStackAssignment) { - listener.enterAssemblyStackAssignment(this); + if(listener.enterAssemblyStackAssignment) { + listener.enterAssemblyStackAssignment(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyStackAssignment) { - listener.exitAssemblyStackAssignment(this); + if(listener.exitAssemblyStackAssignment) { + listener.exitAssemblyStackAssignment(this); } } // @Override @@ -10493,24 +10104,24 @@ export class AssemblyStackAssignmentContext extends ParserRuleContext { export class LabelDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_labelDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_labelDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterLabelDefinition) { - listener.enterLabelDefinition(this); + if(listener.enterLabelDefinition) { + listener.enterLabelDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitLabelDefinition) { - listener.exitLabelDefinition(this); + if(listener.exitLabelDefinition) { + listener.exitLabelDefinition(this); } } // @Override @@ -10525,33 +10136,30 @@ export class LabelDefinitionContext extends ParserRuleContext { export class AssemblySwitchContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public assemblyExpression(): AssemblyExpressionContext { - return this.getRuleContext(0, AssemblyExpressionContext); + return this.getTypedRuleContext(AssemblyExpressionContext, 0) as AssemblyExpressionContext; } - public assemblyCase(): AssemblyCaseContext[]; - public assemblyCase(i: number): AssemblyCaseContext; - public assemblyCase(i?: number): AssemblyCaseContext | AssemblyCaseContext[] { - if (i === undefined) { - return this.getRuleContexts(AssemblyCaseContext); - } else { - return this.getRuleContext(i, AssemblyCaseContext); - } + public assemblyCase_list(): AssemblyCaseContext[] { + return this.getTypedRuleContexts(AssemblyCaseContext) as AssemblyCaseContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public assemblyCase(i: number): AssemblyCaseContext { + return this.getTypedRuleContext(AssemblyCaseContext, i) as AssemblyCaseContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblySwitch; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblySwitch; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblySwitch) { - listener.enterAssemblySwitch(this); + if(listener.enterAssemblySwitch) { + listener.enterAssemblySwitch(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblySwitch) { - listener.exitAssemblySwitch(this); + if(listener.exitAssemblySwitch) { + listener.exitAssemblySwitch(this); } } // @Override @@ -10566,27 +10174,27 @@ export class AssemblySwitchContext extends ParserRuleContext { export class AssemblyCaseContext extends ParserRuleContext { - public assemblyLiteral(): AssemblyLiteralContext | undefined { - return this.tryGetRuleContext(0, AssemblyLiteralContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public assemblyLiteral(): AssemblyLiteralContext { + return this.getTypedRuleContext(AssemblyLiteralContext, 0) as AssemblyLiteralContext; } public assemblyBlock(): AssemblyBlockContext { - return this.getRuleContext(0, AssemblyBlockContext); + return this.getTypedRuleContext(AssemblyBlockContext, 0) as AssemblyBlockContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyCase; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyCase; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyCase) { - listener.enterAssemblyCase(this); + if(listener.enterAssemblyCase) { + listener.enterAssemblyCase(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyCase) { - listener.exitAssemblyCase(this); + if(listener.exitAssemblyCase) { + listener.exitAssemblyCase(this); } } // @Override @@ -10601,33 +10209,33 @@ export class AssemblyCaseContext extends ParserRuleContext { export class AssemblyFunctionDefinitionContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + return this.getTypedRuleContext(IdentifierContext, 0) as IdentifierContext; } public assemblyBlock(): AssemblyBlockContext { - return this.getRuleContext(0, AssemblyBlockContext); + return this.getTypedRuleContext(AssemblyBlockContext, 0) as AssemblyBlockContext; } - public assemblyIdentifierList(): AssemblyIdentifierListContext | undefined { - return this.tryGetRuleContext(0, AssemblyIdentifierListContext); + public assemblyIdentifierList(): AssemblyIdentifierListContext { + return this.getTypedRuleContext(AssemblyIdentifierListContext, 0) as AssemblyIdentifierListContext; } - public assemblyFunctionReturns(): AssemblyFunctionReturnsContext | undefined { - return this.tryGetRuleContext(0, AssemblyFunctionReturnsContext); + public assemblyFunctionReturns(): AssemblyFunctionReturnsContext { + return this.getTypedRuleContext(AssemblyFunctionReturnsContext, 0) as AssemblyFunctionReturnsContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyFunctionDefinition; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyFunctionDefinition; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyFunctionDefinition) { - listener.enterAssemblyFunctionDefinition(this); + if(listener.enterAssemblyFunctionDefinition) { + listener.enterAssemblyFunctionDefinition(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyFunctionDefinition) { - listener.exitAssemblyFunctionDefinition(this); + if(listener.exitAssemblyFunctionDefinition) { + listener.exitAssemblyFunctionDefinition(this); } } // @Override @@ -10642,24 +10250,24 @@ export class AssemblyFunctionDefinitionContext extends ParserRuleContext { export class AssemblyFunctionReturnsContext extends ParserRuleContext { - public assemblyIdentifierList(): AssemblyIdentifierListContext | undefined { - return this.tryGetRuleContext(0, AssemblyIdentifierListContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public assemblyIdentifierList(): AssemblyIdentifierListContext { + return this.getTypedRuleContext(AssemblyIdentifierListContext, 0) as AssemblyIdentifierListContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyFunctionReturns; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyFunctionReturns; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyFunctionReturns) { - listener.enterAssemblyFunctionReturns(this); + if(listener.enterAssemblyFunctionReturns) { + listener.enterAssemblyFunctionReturns(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyFunctionReturns) { - listener.exitAssemblyFunctionReturns(this); + if(listener.exitAssemblyFunctionReturns) { + listener.exitAssemblyFunctionReturns(this); } } // @Override @@ -10674,39 +10282,33 @@ export class AssemblyFunctionReturnsContext extends ParserRuleContext { export class AssemblyForContext extends ParserRuleContext { - public assemblyExpression(): AssemblyExpressionContext[]; - public assemblyExpression(i: number): AssemblyExpressionContext; - public assemblyExpression(i?: number): AssemblyExpressionContext | AssemblyExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(AssemblyExpressionContext); - } else { - return this.getRuleContext(i, AssemblyExpressionContext); - } + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public assemblyBlock(): AssemblyBlockContext[]; - public assemblyBlock(i: number): AssemblyBlockContext; - public assemblyBlock(i?: number): AssemblyBlockContext | AssemblyBlockContext[] { - if (i === undefined) { - return this.getRuleContexts(AssemblyBlockContext); - } else { - return this.getRuleContext(i, AssemblyBlockContext); - } + public assemblyExpression_list(): AssemblyExpressionContext[] { + return this.getTypedRuleContexts(AssemblyExpressionContext) as AssemblyExpressionContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public assemblyExpression(i: number): AssemblyExpressionContext { + return this.getTypedRuleContext(AssemblyExpressionContext, i) as AssemblyExpressionContext; + } + public assemblyBlock_list(): AssemblyBlockContext[] { + return this.getTypedRuleContexts(AssemblyBlockContext) as AssemblyBlockContext[]; + } + public assemblyBlock(i: number): AssemblyBlockContext { + return this.getTypedRuleContext(AssemblyBlockContext, i) as AssemblyBlockContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyFor; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyFor; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyFor) { - listener.enterAssemblyFor(this); + if(listener.enterAssemblyFor) { + listener.enterAssemblyFor(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyFor) { - listener.exitAssemblyFor(this); + if(listener.exitAssemblyFor) { + listener.exitAssemblyFor(this); } } // @Override @@ -10721,27 +10323,27 @@ export class AssemblyForContext extends ParserRuleContext { export class AssemblyIfContext extends ParserRuleContext { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public assemblyExpression(): AssemblyExpressionContext { - return this.getRuleContext(0, AssemblyExpressionContext); + return this.getTypedRuleContext(AssemblyExpressionContext, 0) as AssemblyExpressionContext; } public assemblyBlock(): AssemblyBlockContext { - return this.getRuleContext(0, AssemblyBlockContext); + return this.getTypedRuleContext(AssemblyBlockContext, 0) as AssemblyBlockContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyIf; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyIf; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyIf) { - listener.enterAssemblyIf(this); + if(listener.enterAssemblyIf) { + listener.enterAssemblyIf(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyIf) { - listener.exitAssemblyIf(this); + if(listener.exitAssemblyIf) { + listener.exitAssemblyIf(this); } } // @Override @@ -10756,30 +10358,36 @@ export class AssemblyIfContext extends ParserRuleContext { export class AssemblyLiteralContext extends ParserRuleContext { - public stringLiteral(): StringLiteralContext | undefined { - return this.tryGetRuleContext(0, StringLiteralContext); + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public stringLiteral(): StringLiteralContext { + return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext; } - public DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); } - public HexNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.HexNumber, 0); } - public hexLiteral(): HexLiteralContext | undefined { - return this.tryGetRuleContext(0, HexLiteralContext); + public DecimalNumber(): TerminalNode { + return this.getToken(SolidityParser.DecimalNumber, 0); } - public BooleanLiteral(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.BooleanLiteral, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public HexNumber(): TerminalNode { + return this.getToken(SolidityParser.HexNumber, 0); + } + public hexLiteral(): HexLiteralContext { + return this.getTypedRuleContext(HexLiteralContext, 0) as HexLiteralContext; + } + public BooleanLiteral(): TerminalNode { + return this.getToken(SolidityParser.BooleanLiteral, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_assemblyLiteral; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_assemblyLiteral; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterAssemblyLiteral) { - listener.enterAssemblyLiteral(this); + if(listener.enterAssemblyLiteral) { + listener.enterAssemblyLiteral(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitAssemblyLiteral) { - listener.exitAssemblyLiteral(this); + if(listener.exitAssemblyLiteral) { + listener.exitAssemblyLiteral(this); } } // @Override @@ -10794,30 +10402,27 @@ export class AssemblyLiteralContext extends ParserRuleContext { export class TupleExpressionContext extends ParserRuleContext { - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_tupleExpression; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_tupleExpression; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterTupleExpression) { - listener.enterTupleExpression(this); + if(listener.enterTupleExpression) { + listener.enterTupleExpression(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitTupleExpression) { - listener.exitTupleExpression(this); + if(listener.exitTupleExpression) { + listener.exitTupleExpression(this); } } // @Override @@ -10832,24 +10437,30 @@ export class TupleExpressionContext extends ParserRuleContext { export class NumberLiteralContext extends ParserRuleContext { - public DecimalNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.DecimalNumber, 0); } - public HexNumber(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.HexNumber, 0); } - public NumberUnit(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.NumberUnit, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public DecimalNumber(): TerminalNode { + return this.getToken(SolidityParser.DecimalNumber, 0); + } + public HexNumber(): TerminalNode { + return this.getToken(SolidityParser.HexNumber, 0); + } + public NumberUnit(): TerminalNode { + return this.getToken(SolidityParser.NumberUnit, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_numberLiteral; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_numberLiteral; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterNumberLiteral) { - listener.enterNumberLiteral(this); + if(listener.enterNumberLiteral) { + listener.enterNumberLiteral(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitNumberLiteral) { - listener.exitNumberLiteral(this); + if(listener.exitNumberLiteral) { + listener.exitNumberLiteral(this); } } // @Override @@ -10864,27 +10475,39 @@ export class NumberLiteralContext extends ParserRuleContext { export class IdentifierContext extends ParserRuleContext { - public ReceiveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ReceiveKeyword, 0); } - public GlobalKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.GlobalKeyword, 0); } - public ConstructorKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.ConstructorKeyword, 0); } - public PayableKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.PayableKeyword, 0); } - public LeaveKeyword(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.LeaveKeyword, 0); } - public Identifier(): TerminalNode | undefined { return this.tryGetToken(SolidityParser.Identifier, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public ReceiveKeyword(): TerminalNode { + return this.getToken(SolidityParser.ReceiveKeyword, 0); + } + public GlobalKeyword(): TerminalNode { + return this.getToken(SolidityParser.GlobalKeyword, 0); + } + public ConstructorKeyword(): TerminalNode { + return this.getToken(SolidityParser.ConstructorKeyword, 0); + } + public PayableKeyword(): TerminalNode { + return this.getToken(SolidityParser.PayableKeyword, 0); + } + public LeaveKeyword(): TerminalNode { + return this.getToken(SolidityParser.LeaveKeyword, 0); + } + public Identifier(): TerminalNode { + return this.getToken(SolidityParser.Identifier, 0); + } + public get ruleIndex(): number { + return SolidityParser.RULE_identifier; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_identifier; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterIdentifier) { - listener.enterIdentifier(this); + if(listener.enterIdentifier) { + listener.enterIdentifier(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitIdentifier) { - listener.exitIdentifier(this); + if(listener.exitIdentifier) { + listener.exitIdentifier(this); } } // @Override @@ -10899,30 +10522,27 @@ export class IdentifierContext extends ParserRuleContext { export class HexLiteralContext extends ParserRuleContext { - public HexLiteralFragment(): TerminalNode[]; - public HexLiteralFragment(i: number): TerminalNode; - public HexLiteralFragment(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.HexLiteralFragment); - } else { - return this.getToken(SolidityParser.HexLiteralFragment, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public HexLiteralFragment_list(): TerminalNode[] { + return this.getTokens(SolidityParser.HexLiteralFragment); + } + public HexLiteralFragment(i: number): TerminalNode { + return this.getToken(SolidityParser.HexLiteralFragment, i); + } + public get ruleIndex(): number { + return SolidityParser.RULE_hexLiteral; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_hexLiteral; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterHexLiteral) { - listener.enterHexLiteral(this); + if(listener.enterHexLiteral) { + listener.enterHexLiteral(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitHexLiteral) { - listener.exitHexLiteral(this); + if(listener.exitHexLiteral) { + listener.exitHexLiteral(this); } } // @Override @@ -10937,30 +10557,27 @@ export class HexLiteralContext extends ParserRuleContext { export class OverrideSpecifierContext extends ParserRuleContext { - public userDefinedTypeName(): UserDefinedTypeNameContext[]; - public userDefinedTypeName(i: number): UserDefinedTypeNameContext; - public userDefinedTypeName(i?: number): UserDefinedTypeNameContext | UserDefinedTypeNameContext[] { - if (i === undefined) { - return this.getRuleContexts(UserDefinedTypeNameContext); - } else { - return this.getRuleContext(i, UserDefinedTypeNameContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public userDefinedTypeName_list(): UserDefinedTypeNameContext[] { + return this.getTypedRuleContexts(UserDefinedTypeNameContext) as UserDefinedTypeNameContext[]; + } + public userDefinedTypeName(i: number): UserDefinedTypeNameContext { + return this.getTypedRuleContext(UserDefinedTypeNameContext, i) as UserDefinedTypeNameContext; + } + public get ruleIndex(): number { + return SolidityParser.RULE_overrideSpecifier; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_overrideSpecifier; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterOverrideSpecifier) { - listener.enterOverrideSpecifier(this); + if(listener.enterOverrideSpecifier) { + listener.enterOverrideSpecifier(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitOverrideSpecifier) { - listener.exitOverrideSpecifier(this); + if(listener.exitOverrideSpecifier) { + listener.exitOverrideSpecifier(this); } } // @Override @@ -10975,30 +10592,27 @@ export class OverrideSpecifierContext extends ParserRuleContext { export class StringLiteralContext extends ParserRuleContext { - public StringLiteralFragment(): TerminalNode[]; - public StringLiteralFragment(i: number): TerminalNode; - public StringLiteralFragment(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(SolidityParser.StringLiteralFragment); - } else { - return this.getToken(SolidityParser.StringLiteralFragment, i); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: SolidityParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public StringLiteralFragment_list(): TerminalNode[] { + return this.getTokens(SolidityParser.StringLiteralFragment); + } + public StringLiteralFragment(i: number): TerminalNode { + return this.getToken(SolidityParser.StringLiteralFragment, i); + } + public get ruleIndex(): number { + return SolidityParser.RULE_stringLiteral; } - // @Override - public get ruleIndex(): number { return SolidityParser.RULE_stringLiteral; } - // @Override public enterRule(listener: SolidityListener): void { - if (listener.enterStringLiteral) { - listener.enterStringLiteral(this); + if(listener.enterStringLiteral) { + listener.enterStringLiteral(this); } } - // @Override public exitRule(listener: SolidityListener): void { - if (listener.exitStringLiteral) { - listener.exitStringLiteral(this); + if(listener.exitStringLiteral) { + listener.exitStringLiteral(this); } } // @Override @@ -11010,5 +10624,3 @@ export class StringLiteralContext extends ParserRuleContext { } } } - - diff --git a/src/antlr/SolidityVisitor.ts b/src/antlr/SolidityVisitor.ts index aae06ab..803340a 100644 --- a/src/antlr/SolidityVisitor.ts +++ b/src/antlr/SolidityVisitor.ts @@ -1,7 +1,7 @@ -// Generated from antlr/Solidity.g4 by ANTLR 4.9.0-SNAPSHOT +// Generated from antlr/Solidity.g4 by ANTLR 4.13.1 +import {ParseTreeVisitor} from 'antlr4'; -import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor"; import { SourceUnitContext } from "./SolidityParser"; import { PragmaDirectiveContext } from "./SolidityParser"; @@ -113,707 +113,607 @@ import { StringLiteralContext } from "./SolidityParser"; * @param The return type of the visit operation. Use `void` for * operations with no return type. */ -export interface SolidityVisitor extends ParseTreeVisitor { +export default class SolidityVisitor extends ParseTreeVisitor { /** * Visit a parse tree produced by `SolidityParser.sourceUnit`. * @param ctx the parse tree * @return the visitor result */ visitSourceUnit?: (ctx: SourceUnitContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.pragmaDirective`. * @param ctx the parse tree * @return the visitor result */ visitPragmaDirective?: (ctx: PragmaDirectiveContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.pragmaName`. * @param ctx the parse tree * @return the visitor result */ visitPragmaName?: (ctx: PragmaNameContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.pragmaValue`. * @param ctx the parse tree * @return the visitor result */ visitPragmaValue?: (ctx: PragmaValueContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.version`. * @param ctx the parse tree * @return the visitor result */ visitVersion?: (ctx: VersionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.versionOperator`. * @param ctx the parse tree * @return the visitor result */ visitVersionOperator?: (ctx: VersionOperatorContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.versionConstraint`. * @param ctx the parse tree * @return the visitor result */ visitVersionConstraint?: (ctx: VersionConstraintContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.importDeclaration`. * @param ctx the parse tree * @return the visitor result */ visitImportDeclaration?: (ctx: ImportDeclarationContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.importDirective`. * @param ctx the parse tree * @return the visitor result */ visitImportDirective?: (ctx: ImportDirectiveContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.importPath`. * @param ctx the parse tree * @return the visitor result */ visitImportPath?: (ctx: ImportPathContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.contractDefinition`. * @param ctx the parse tree * @return the visitor result */ visitContractDefinition?: (ctx: ContractDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.inheritanceSpecifier`. * @param ctx the parse tree * @return the visitor result */ visitInheritanceSpecifier?: (ctx: InheritanceSpecifierContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.contractPart`. * @param ctx the parse tree * @return the visitor result */ visitContractPart?: (ctx: ContractPartContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.stateVariableDeclaration`. * @param ctx the parse tree * @return the visitor result */ visitStateVariableDeclaration?: (ctx: StateVariableDeclarationContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.fileLevelConstant`. * @param ctx the parse tree * @return the visitor result */ visitFileLevelConstant?: (ctx: FileLevelConstantContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.customErrorDefinition`. * @param ctx the parse tree * @return the visitor result */ visitCustomErrorDefinition?: (ctx: CustomErrorDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.typeDefinition`. * @param ctx the parse tree * @return the visitor result */ visitTypeDefinition?: (ctx: TypeDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.usingForDeclaration`. * @param ctx the parse tree * @return the visitor result */ visitUsingForDeclaration?: (ctx: UsingForDeclarationContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.usingForObject`. * @param ctx the parse tree * @return the visitor result */ visitUsingForObject?: (ctx: UsingForObjectContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.usingForObjectDirective`. * @param ctx the parse tree * @return the visitor result */ visitUsingForObjectDirective?: (ctx: UsingForObjectDirectiveContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.userDefinableOperators`. * @param ctx the parse tree * @return the visitor result */ visitUserDefinableOperators?: (ctx: UserDefinableOperatorsContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.structDefinition`. * @param ctx the parse tree * @return the visitor result */ visitStructDefinition?: (ctx: StructDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.modifierDefinition`. * @param ctx the parse tree * @return the visitor result */ visitModifierDefinition?: (ctx: ModifierDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.modifierInvocation`. * @param ctx the parse tree * @return the visitor result */ visitModifierInvocation?: (ctx: ModifierInvocationContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.functionDefinition`. * @param ctx the parse tree * @return the visitor result */ visitFunctionDefinition?: (ctx: FunctionDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.functionDescriptor`. * @param ctx the parse tree * @return the visitor result */ visitFunctionDescriptor?: (ctx: FunctionDescriptorContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.returnParameters`. * @param ctx the parse tree * @return the visitor result */ visitReturnParameters?: (ctx: ReturnParametersContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.modifierList`. * @param ctx the parse tree * @return the visitor result */ visitModifierList?: (ctx: ModifierListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.eventDefinition`. * @param ctx the parse tree * @return the visitor result */ visitEventDefinition?: (ctx: EventDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.enumValue`. * @param ctx the parse tree * @return the visitor result */ visitEnumValue?: (ctx: EnumValueContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.enumDefinition`. * @param ctx the parse tree * @return the visitor result */ visitEnumDefinition?: (ctx: EnumDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.parameterList`. * @param ctx the parse tree * @return the visitor result */ visitParameterList?: (ctx: ParameterListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.parameter`. * @param ctx the parse tree * @return the visitor result */ visitParameter?: (ctx: ParameterContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.eventParameterList`. * @param ctx the parse tree * @return the visitor result */ visitEventParameterList?: (ctx: EventParameterListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.eventParameter`. * @param ctx the parse tree * @return the visitor result */ visitEventParameter?: (ctx: EventParameterContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.functionTypeParameterList`. * @param ctx the parse tree * @return the visitor result */ visitFunctionTypeParameterList?: (ctx: FunctionTypeParameterListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.functionTypeParameter`. * @param ctx the parse tree * @return the visitor result */ visitFunctionTypeParameter?: (ctx: FunctionTypeParameterContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.variableDeclaration`. * @param ctx the parse tree * @return the visitor result */ visitVariableDeclaration?: (ctx: VariableDeclarationContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.typeName`. * @param ctx the parse tree * @return the visitor result */ visitTypeName?: (ctx: TypeNameContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.userDefinedTypeName`. * @param ctx the parse tree * @return the visitor result */ visitUserDefinedTypeName?: (ctx: UserDefinedTypeNameContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.mappingKey`. * @param ctx the parse tree * @return the visitor result */ visitMappingKey?: (ctx: MappingKeyContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.mapping`. * @param ctx the parse tree * @return the visitor result */ visitMapping?: (ctx: MappingContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.mappingKeyName`. * @param ctx the parse tree * @return the visitor result */ visitMappingKeyName?: (ctx: MappingKeyNameContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.mappingValueName`. * @param ctx the parse tree * @return the visitor result */ visitMappingValueName?: (ctx: MappingValueNameContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.functionTypeName`. * @param ctx the parse tree * @return the visitor result */ visitFunctionTypeName?: (ctx: FunctionTypeNameContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.storageLocation`. * @param ctx the parse tree * @return the visitor result */ visitStorageLocation?: (ctx: StorageLocationContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.stateMutability`. * @param ctx the parse tree * @return the visitor result */ visitStateMutability?: (ctx: StateMutabilityContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.block`. * @param ctx the parse tree * @return the visitor result */ visitBlock?: (ctx: BlockContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.statement`. * @param ctx the parse tree * @return the visitor result */ visitStatement?: (ctx: StatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.expressionStatement`. * @param ctx the parse tree * @return the visitor result */ visitExpressionStatement?: (ctx: ExpressionStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.ifStatement`. * @param ctx the parse tree * @return the visitor result */ visitIfStatement?: (ctx: IfStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.tryStatement`. * @param ctx the parse tree * @return the visitor result */ visitTryStatement?: (ctx: TryStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.catchClause`. * @param ctx the parse tree * @return the visitor result */ visitCatchClause?: (ctx: CatchClauseContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.whileStatement`. * @param ctx the parse tree * @return the visitor result */ visitWhileStatement?: (ctx: WhileStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.simpleStatement`. * @param ctx the parse tree * @return the visitor result */ visitSimpleStatement?: (ctx: SimpleStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.uncheckedStatement`. * @param ctx the parse tree * @return the visitor result */ visitUncheckedStatement?: (ctx: UncheckedStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.forStatement`. * @param ctx the parse tree * @return the visitor result */ visitForStatement?: (ctx: ForStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.inlineAssemblyStatement`. * @param ctx the parse tree * @return the visitor result */ visitInlineAssemblyStatement?: (ctx: InlineAssemblyStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.inlineAssemblyStatementFlag`. * @param ctx the parse tree * @return the visitor result */ visitInlineAssemblyStatementFlag?: (ctx: InlineAssemblyStatementFlagContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.doWhileStatement`. * @param ctx the parse tree * @return the visitor result */ visitDoWhileStatement?: (ctx: DoWhileStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.continueStatement`. * @param ctx the parse tree * @return the visitor result */ visitContinueStatement?: (ctx: ContinueStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.breakStatement`. * @param ctx the parse tree * @return the visitor result */ visitBreakStatement?: (ctx: BreakStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.returnStatement`. * @param ctx the parse tree * @return the visitor result */ visitReturnStatement?: (ctx: ReturnStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.throwStatement`. * @param ctx the parse tree * @return the visitor result */ visitThrowStatement?: (ctx: ThrowStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.emitStatement`. * @param ctx the parse tree * @return the visitor result */ visitEmitStatement?: (ctx: EmitStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.revertStatement`. * @param ctx the parse tree * @return the visitor result */ visitRevertStatement?: (ctx: RevertStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.variableDeclarationStatement`. * @param ctx the parse tree * @return the visitor result */ visitVariableDeclarationStatement?: (ctx: VariableDeclarationStatementContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.variableDeclarationList`. * @param ctx the parse tree * @return the visitor result */ visitVariableDeclarationList?: (ctx: VariableDeclarationListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.identifierList`. * @param ctx the parse tree * @return the visitor result */ visitIdentifierList?: (ctx: IdentifierListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.elementaryTypeName`. * @param ctx the parse tree * @return the visitor result */ visitElementaryTypeName?: (ctx: ElementaryTypeNameContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.expression`. * @param ctx the parse tree * @return the visitor result */ visitExpression?: (ctx: ExpressionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.primaryExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrimaryExpression?: (ctx: PrimaryExpressionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.expressionList`. * @param ctx the parse tree * @return the visitor result */ visitExpressionList?: (ctx: ExpressionListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.nameValueList`. * @param ctx the parse tree * @return the visitor result */ visitNameValueList?: (ctx: NameValueListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.nameValue`. * @param ctx the parse tree * @return the visitor result */ visitNameValue?: (ctx: NameValueContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.functionCallArguments`. * @param ctx the parse tree * @return the visitor result */ visitFunctionCallArguments?: (ctx: FunctionCallArgumentsContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.functionCall`. * @param ctx the parse tree * @return the visitor result */ visitFunctionCall?: (ctx: FunctionCallContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyBlock`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyBlock?: (ctx: AssemblyBlockContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyItem`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyItem?: (ctx: AssemblyItemContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyExpression`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyExpression?: (ctx: AssemblyExpressionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyMember`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyMember?: (ctx: AssemblyMemberContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyCall`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyCall?: (ctx: AssemblyCallContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyLocalDefinition`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyLocalDefinition?: (ctx: AssemblyLocalDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyAssignment`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyAssignment?: (ctx: AssemblyAssignmentContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyIdentifierOrList`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyIdentifierOrList?: (ctx: AssemblyIdentifierOrListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyIdentifierList`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyIdentifierList?: (ctx: AssemblyIdentifierListContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyStackAssignment`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyStackAssignment?: (ctx: AssemblyStackAssignmentContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.labelDefinition`. * @param ctx the parse tree * @return the visitor result */ visitLabelDefinition?: (ctx: LabelDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblySwitch`. * @param ctx the parse tree * @return the visitor result */ visitAssemblySwitch?: (ctx: AssemblySwitchContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyCase`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyCase?: (ctx: AssemblyCaseContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyFunctionDefinition`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyFunctionDefinition?: (ctx: AssemblyFunctionDefinitionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyFunctionReturns`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyFunctionReturns?: (ctx: AssemblyFunctionReturnsContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyFor`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyFor?: (ctx: AssemblyForContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyIf`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyIf?: (ctx: AssemblyIfContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.assemblyLiteral`. * @param ctx the parse tree * @return the visitor result */ visitAssemblyLiteral?: (ctx: AssemblyLiteralContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.tupleExpression`. * @param ctx the parse tree * @return the visitor result */ visitTupleExpression?: (ctx: TupleExpressionContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.numberLiteral`. * @param ctx the parse tree * @return the visitor result */ visitNumberLiteral?: (ctx: NumberLiteralContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.identifier`. * @param ctx the parse tree * @return the visitor result */ visitIdentifier?: (ctx: IdentifierContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.hexLiteral`. * @param ctx the parse tree * @return the visitor result */ visitHexLiteral?: (ctx: HexLiteralContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.overrideSpecifier`. * @param ctx the parse tree * @return the visitor result */ visitOverrideSpecifier?: (ctx: OverrideSpecifierContext) => Result; - /** * Visit a parse tree produced by `SolidityParser.stringLiteral`. * @param ctx the parse tree diff --git a/src/declarations.d.ts b/src/declarations.d.ts deleted file mode 100644 index f4961a4..0000000 --- a/src/declarations.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module 'antlr4' diff --git a/src/parser.ts b/src/parser.ts index 7aa5e27..bdb7323 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -1,7 +1,7 @@ -import { ANTLRInputStream, CommonTokenStream } from 'antlr4ts' +import { CharStream, CommonTokenStream } from 'antlr4' -import { SolidityLexer } from './antlr/SolidityLexer' -import { SolidityParser } from './antlr/SolidityParser' +import SolidityLexer from './antlr/SolidityLexer' +import SolidityParser from './antlr/SolidityParser' import { ASTNode, astNodeTypes, @@ -43,14 +43,14 @@ export class ParserError extends Error { } export function tokenize(input: string, options: TokenizeOptions = {}): any { - const inputStream = new ANTLRInputStream(input) + const inputStream = new CharStream(input) const lexer = new SolidityLexer(inputStream) return buildTokenList(lexer.getAllTokens(), options) } export function parse(input: string, options: ParseOptions = {}): ParseResult { - const inputStream = new ANTLRInputStream(input) + const inputStream = new CharStream(input) const lexer = new SolidityLexer(inputStream) const tokenStream = new CommonTokenStream(lexer) const parser = new SolidityParser(tokenStream) @@ -61,7 +61,7 @@ export function parse(input: string, options: ParseOptions = {}): ParseResult { parser.removeErrorListeners() parser.addErrorListener(listener) - parser.buildParseTree = true + parser.buildParseTrees = true const sourceUnit = parser.sourceUnit() @@ -77,7 +77,7 @@ export function parse(input: string, options: ParseOptions = {}): ParseResult { let tokenList: Token[] = [] if (options.tokens === true) { - tokenList = buildTokenList(tokenStream.getTokens(), options) + tokenList = buildTokenList(tokenStream.tokens, options) } if (options.tolerant !== true && listener.hasErrors()) { diff --git a/src/tokens.ts b/src/tokens.ts index 11f287b..27d0efe 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -1,4 +1,5 @@ -import { Token, AntlrToken, TokenizeOptions } from './types' +import { Token as AntlrToken } from 'antlr4' +import { Token, TokenizeOptions } from './types' import { tokens } from './antlr/solidity-tokens' const TYPE_TOKENS = [ @@ -47,14 +48,14 @@ export function buildTokenList( const type = getTokenType(tokens[token.type.toString()]) const node: Token = { type, value: token.text } if (options.range === true) { - node.range = [token.startIndex, token.stopIndex + 1] + node.range = [token.start, token.stop + 1] } if (options.loc === true) { node.loc = { - start: { line: token.line, column: token.charPositionInLine }, + start: { line: token.line, column: token.column }, end: { line: token.line, - column: token.charPositionInLine + (token.text?.length ?? 0), + column: token.column + (token.text?.length ?? 0), }, } } diff --git a/src/types.ts b/src/types.ts index 773d143..e2c650b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,10 +1,7 @@ -import { Token as Antlr4TsToken } from 'antlr4ts' export interface Node { type: string } -export type AntlrToken = Antlr4TsToken - export interface TokenizeOptions { range?: boolean loc?: boolean