feat: implement Phase A direct .g4 grammar frontend - #152
Conversation
|
Warning Review limit reached
Next review available in: 40 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughChangesGrammar frontend
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related issues
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Implements Phase A of the direct .g4 grammar frontend by vendoring/pinning upstream grammar sources + inventories, adding reproducible “Stage 0” generation validation, and wiring a private Rust-side ANTLR-v4 meta-grammar frontend into antlr4-rust-gen without altering the production CLI inputs yet.
Changes:
- Added Stage 0 reproducibility tooling (bash + Node validators) with pinned commits/hashes and checked-in generated Rust lexer/parser artifacts.
- Added corpus + fixture inventories/snapshots and validation scripts to lock token/CST parity and govern upstream/external case mappings and port evidence ledgers.
- Introduced the Rust lexer adaptor + module plumbing to host the generated ANTLR-v4 meta-grammar frontend inside
antlr4-rust-gen.
Reviewed changes
Copilot reviewed 79 out of 84 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/grammar-frontend/validate-upstream-test-map.mjs | Validates upstream inventory ↔ test-map partitioning and pin consistency. |
| tools/grammar-frontend/validate-stage0.mjs | Validates (and optionally updates) Stage 0 manifest and generated file hashes. |
| tools/grammar-frontend/validate-port-evidence.mjs | Validates Phase A port-evidence ledgers, hashes, and commit ancestry. |
| tools/grammar-frontend/validate-external-fixture-map.mjs | Validates external fixture inventory, licenses, and assertion ownership links. |
| tools/grammar-frontend/update-vscode-antlr4-fixtures.mjs | Rebuilds/verifies pinned vscode-antlr4 mirrors + inventory JSON. |
| tools/grammar-frontend/update-stage0.sh | Repro script to regenerate Stage 0 artifacts using pinned ANTLR jar + generator. |
| tools/grammar-frontend/snapshot-frontend.mjs | Generates token/CST snapshots via antlr-ng for the pinned corpus. |
| tools/grammar-frontend/read-junit-report.py | Parses Surefire JUnit XML into a compact JSON summary for inventory ingestion. |
| third_party/antlr-v4-grammar/stage0-manifest.json | Records pinned tool inputs/commands and exact hashes for Stage 0 reproduction. |
| third_party/antlr-v4-grammar/README.md | Documents provenance and how to reproduce/refresh Stage 0. |
| third_party/antlr-v4-grammar/predefined.tokens | Pinned token vocabulary needed by the meta-grammar frontend bootstrap. |
| third_party/antlr-v4-grammar/License.txt | Third-party license retention for vendored meta-grammar sources. |
| third_party/antlr-v4-grammar/ANTLRv4Parser.g4 | Vendored/pinned ANTLR-v4 meta-grammar parser source. |
| third_party/antlr-v4-grammar/antlr-v4.toml | Semantic hook configuration for the meta-grammar frontend bootstrap. |
| tests/codegen-direct/port-evidence/vscode-tparser-source-spans/revisions/external-vscode-tparser-source-spans-r1/oracle-results/declared-sources.json | Port-evidence oracle metadata for span preservation assertion. |
| tests/codegen-direct/port-evidence/vscode-tparser-source-spans/revisions/external-vscode-tparser-source-spans-r1/matrix-results/results.json | Port-evidence execution matrix result for the assertion. |
| tests/codegen-direct/port-evidence/vscode-tparser-source-spans/revisions/external-vscode-tparser-source-spans-r1/manifest.json | Port-evidence manifest including hashes, commits, and locked sections. |
| tests/codegen-direct/port-evidence/vscode-tparser-source-spans/index.json | Ledger index for the active revision of the assertion. |
| tests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/revisions/external-vscode-symbol-info-valid-undefined-edit-r1/oracle-results/declared-sources.json | Port-evidence oracle metadata for “valid undefined rule” CST behavior. |
| tests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/revisions/external-vscode-symbol-info-valid-undefined-edit-r1/matrix-results/results.json | Port-evidence execution matrix for that assertion. |
| tests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/revisions/external-vscode-symbol-info-valid-undefined-edit-r1/manifest.json | Port-evidence manifest for that assertion. |
| tests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/index.json | Ledger index for the active revision of the assertion. |
| tests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/revisions/external-vscode-symbol-info-malformed-edit-r1/oracle-results/declared-sources.json | Port-evidence oracle metadata for fail-closed malformed edit behavior. |
| tests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/revisions/external-vscode-symbol-info-malformed-edit-r1/matrix-results/results.json | Port-evidence execution matrix for that assertion. |
| tests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/revisions/external-vscode-symbol-info-malformed-edit-r1/manifest.json | Port-evidence manifest for that assertion. |
| tests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/index.json | Ledger index for the active revision of the assertion. |
| tests/codegen-direct/port-evidence/frontend-token-cst-parity/revisions/frontend-token-cst-parity-r1/oracle-results/declared-sources.json | Declares upstream oracle sources for token/CST parity. |
| tests/codegen-direct/port-evidence/frontend-token-cst-parity/revisions/frontend-token-cst-parity-r1/matrix-results/results.json | Execution matrix for token/CST parity evidence. |
| tests/codegen-direct/port-evidence/frontend-token-cst-parity/index.json | Ledger index for token/CST parity evidence. |
| tests/codegen-direct/port-evidence/frontend-source-regressions/revisions/frontend-source-regressions-r1/oracle-results/declared-sources.json | Declares regression oracle sources for the frontend corpus. |
| tests/codegen-direct/port-evidence/frontend-source-regressions/revisions/frontend-source-regressions-r1/matrix-results/results.json | Execution matrix for regression evidence. |
| tests/codegen-direct/port-evidence/frontend-source-regressions/revisions/frontend-source-regressions-r1/manifest.json | Manifest tying regressions to pinned inputs/commits/hashes. |
| tests/codegen-direct/port-evidence/frontend-source-regressions/index.json | Ledger index for regression evidence. |
| tests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r1/oracle-results/declared-sources.json | Declares oracle sources for fail-closed syntax behavior. |
| tests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r1/matrix-results/results.json | Execution matrix for fail-closed syntax evidence. |
| tests/codegen-direct/port-evidence/frontend-fail-closed-syntax/index.json | Ledger index for fail-closed syntax evidence. |
| tests/codegen-direct/port-evidence/frontend-bootstrap-corpus/revisions/frontend-bootstrap-corpus-r1/oracle-results/declared-sources.json | Declares bootstrap corpus oracle fixtures for snapshots. |
| tests/codegen-direct/port-evidence/frontend-bootstrap-corpus/revisions/frontend-bootstrap-corpus-r1/matrix-results/results.json | Execution matrix for bootstrap corpus evidence. |
| tests/codegen-direct/port-evidence/frontend-bootstrap-corpus/revisions/frontend-bootstrap-corpus-r1/manifest.json | Manifest for bootstrap corpus evidence and locked oracle sections. |
| tests/codegen-direct/port-evidence/frontend-bootstrap-corpus/index.json | Ledger index for bootstrap corpus evidence. |
| tests/codegen-direct/frontend-snapshots.tsv | Pinned token/CST hash snapshots for bootstrap + external corpora. |
| tests/codegen-direct/frontend-corpus.json | Declares the pinned corpus inputs and antlr-ng commit used for snapshots. |
| tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/TParser2.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/TParser.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/TLexer2.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/TLexer.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/t2.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/t.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/sentences.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/License.txt | Mirrored upstream license for external fixtures. |
| tests/codegen-direct/external/vscode-antlr4/grammars/LexBasic.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/grammars/ANTLRv4Parser.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external/vscode-antlr4/grammars/ANTLRv4Lexer.g4 | Pinned external grammar fixture mirrored from vscode-antlr4. |
| tests/codegen-direct/external-source-inventory.json | Inventory of mirrored external artifacts with hashes and blob IDs. |
| tests/codegen-direct/bootstrap/tests/grammars/Psl.g4 | Bootstrap corpus grammar fixture for parity/snapshot testing. |
| tests/codegen-direct/bootstrap/tests/grammars/PositionAdjustingLexer.g4 | Bootstrap corpus grammar fixture for parity/snapshot testing. |
| tests/codegen-direct/bootstrap/tests/bugs/data/GoLexer.g4 | Bootstrap corpus grammar fixture for parity/snapshot testing. |
| tests/codegen-direct/bootstrap/tests/bugs/data/abbLexer.g4 | Bootstrap corpus grammar fixture for parity/snapshot testing. |
| tests/codegen-direct/bootstrap/src/grammars/ANTLRv4Parser.g4 | Bootstrap corpus meta-grammar fixture for parity/snapshot testing. |
| tests/codegen-direct/bootstrap/src/grammars/ActionSplitter.g4 | Bootstrap corpus grammar fixture for parity/snapshot testing. |
| tests/codegen-direct/bootstrap/malformed/MissingDelimiter.g4 | Malformed grammar fixture for fail-closed behavior tests. |
| tests/codegen-direct/bootstrap/malformed/BadAlternative.g4 | Malformed grammar fixture for fail-closed behavior tests. |
| tests/codegen-direct/approved-differences.json | Pins “approved differences” set (currently empty) for Phase A governance. |
| src/bin/antlr4-rust-gen.rs | Wires in the new internal grammar module for the generator binary. |
| src/bin_support/grammar/mod.rs | Declares the new grammar frontend module + generated submodules. |
| src/bin_support/grammar/lexer_adaptor.rs | Implements the Rust-side lexer adaptor hooks for the meta-grammar lexer. |
| .gitattributes | Marks generated Rust frontend modules as linguist-generated. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Code Review
This pull request introduces a new grammar frontend module, adding support for parsing ANTLR4 grammars with a custom lexer adaptor and CST generation. The reviewer provided actionable feedback to improve code maintainability by refactoring error handling in frontend.rs to reduce duplication and simplifying the uppercase character check in lexer_adaptor.rs for better readability.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 10ca7179fb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Actionable comments posted: 7
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@tools/grammar-frontend/generate-port-evidence.mjs`:
- Around line 13-18: Remove the duplicated commit SHA constants from
generate-port-evidence.mjs and reuse the shared definitions from
generate-upstream-test-map.mjs, preserving the existing JAVA_COMMIT,
ANTLR_NG_COMMIT, VSCODE_COMMIT, SCAFFOLD_COMMIT, TEST_COMMIT, and
IMPLEMENTATION_COMMIT values.
- Around line 119-129: Update the port-evidence validation around gitShow,
including the calls for TEST_COMMIT and IMPLEMENTATION_COMMIT, so pinned commits
are available before reading TEST_MODULE_PATH. Ensure the tooling fetches or
otherwise resolves the full history required by all pinned commits in shallow CI
checkouts, while preserving the existing module-consistency comparison and error
behavior.
- Around line 428-450: Remove the duplicated stableStringify, digest, and
parseMode implementations from this module and reuse the shared definitions or
utility exported by generate-upstream-test-map.mjs. Update callers in
generate-port-evidence.mjs to preserve the existing deterministic serialization,
SHA-256 digest, and argument validation behavior.
In `@tools/grammar-frontend/generate-upstream-test-map.mjs`:
- Around line 8-13: Remove the duplicated pinned commit constants from
generate-upstream-test-map.mjs and reuse the corresponding shared definitions
from generate-port-evidence.mjs, preserving the existing values for JAVA_COMMIT,
ANTLR_NG_COMMIT, TEST_COMMIT, IMPLEMENTATION_COMMIT, and SCAFFOLD_COMMIT.
- Around line 534-556: The helper functions stableStringify, digest, and
parseMode are duplicated in generate-port-evidence.mjs; consolidate them into a
shared reusable module, remove the duplicate implementations from both scripts,
and update each caller to import the shared helpers while preserving their
current behavior.
In `@tools/grammar-frontend/inventory-upstream-tests.mjs`:
- Around line 219-336: Update inventoryAntlrNg to cache each result’s resolved
path or derived reportPath while building sourceCatalog, then reuse that cached
value when processing assertions instead of calling realpath(result.name) again.
Preserve the existing sourceCatalog lookup and report path behavior.
In `@tools/grammar-frontend/read-junit-report.py`:
- Around line 24-35: Update the testcase status classification in the JUnit
parsing loop to inspect both <failure> and <error> elements in addition to
<skipped>. Preserve "skipped" for skipped cases, report failure/error cases with
a non-passed status, and only use "passed" when none of these child elements
exist; retain the existing skip_reason behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: a4215e04-e632-4479-b05d-df7ed301c56c
⛔ Files ignored due to path filters (3)
src/bin_support/grammar/generated/antlr_v4_lexer.rsis excluded by!**/generated/**src/bin_support/grammar/generated/antlr_v4_parser.rsis excluded by!**/generated/**tests/codegen-direct/frontend-snapshots.tsvis excluded by!**/*.tsv
📒 Files selected for processing (81)
.gitattributessrc/bin/antlr4-rust-gen.rssrc/bin_support/grammar/frontend.rssrc/bin_support/grammar/lexer_adaptor.rssrc/bin_support/grammar/mod.rstests/codegen-direct/approved-differences.jsontests/codegen-direct/bootstrap/malformed/BadAlternative.g4tests/codegen-direct/bootstrap/malformed/MissingDelimiter.g4tests/codegen-direct/bootstrap/src/grammars/ANTLRv4Lexer.g4tests/codegen-direct/bootstrap/src/grammars/ANTLRv4Parser.g4tests/codegen-direct/bootstrap/src/grammars/ActionSplitter.g4tests/codegen-direct/bootstrap/tests/bugs/data/GoLexer.g4tests/codegen-direct/bootstrap/tests/bugs/data/abbLexer.g4tests/codegen-direct/bootstrap/tests/grammars/Java.g4tests/codegen-direct/bootstrap/tests/grammars/JavaLR.g4tests/codegen-direct/bootstrap/tests/grammars/PositionAdjustingLexer.g4tests/codegen-direct/bootstrap/tests/grammars/Psl.g4tests/codegen-direct/external-fixture-map.jsontests/codegen-direct/external-source-inventory.jsontests/codegen-direct/external/vscode-antlr4/License.txttests/codegen-direct/external/vscode-antlr4/grammars/ANTLRv4Lexer.g4tests/codegen-direct/external/vscode-antlr4/grammars/ANTLRv4Parser.g4tests/codegen-direct/external/vscode-antlr4/grammars/LexBasic.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/CPP14.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/OddExpr.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/TLexer.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/TLexer2.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/TParser.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/TParser2.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/sentences.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/t.g4tests/codegen-direct/external/vscode-antlr4/tests/backend/test-data/t2.g4tests/codegen-direct/frontend-corpus.jsontests/codegen-direct/port-evidence/frontend-bootstrap-corpus/index.jsontests/codegen-direct/port-evidence/frontend-bootstrap-corpus/revisions/frontend-bootstrap-corpus-r1/manifest.jsontests/codegen-direct/port-evidence/frontend-bootstrap-corpus/revisions/frontend-bootstrap-corpus-r1/matrix-results/results.jsontests/codegen-direct/port-evidence/frontend-bootstrap-corpus/revisions/frontend-bootstrap-corpus-r1/oracle-results/declared-sources.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/index.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r1/manifest.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r1/matrix-results/results.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r1/oracle-results/declared-sources.jsontests/codegen-direct/port-evidence/frontend-source-regressions/index.jsontests/codegen-direct/port-evidence/frontend-source-regressions/revisions/frontend-source-regressions-r1/manifest.jsontests/codegen-direct/port-evidence/frontend-source-regressions/revisions/frontend-source-regressions-r1/matrix-results/results.jsontests/codegen-direct/port-evidence/frontend-source-regressions/revisions/frontend-source-regressions-r1/oracle-results/declared-sources.jsontests/codegen-direct/port-evidence/frontend-token-cst-parity/index.jsontests/codegen-direct/port-evidence/frontend-token-cst-parity/revisions/frontend-token-cst-parity-r1/manifest.jsontests/codegen-direct/port-evidence/frontend-token-cst-parity/revisions/frontend-token-cst-parity-r1/matrix-results/results.jsontests/codegen-direct/port-evidence/frontend-token-cst-parity/revisions/frontend-token-cst-parity-r1/oracle-results/declared-sources.jsontests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/index.jsontests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/revisions/external-vscode-symbol-info-malformed-edit-r1/manifest.jsontests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/revisions/external-vscode-symbol-info-malformed-edit-r1/matrix-results/results.jsontests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/revisions/external-vscode-symbol-info-malformed-edit-r1/oracle-results/declared-sources.jsontests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/index.jsontests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/revisions/external-vscode-symbol-info-valid-undefined-edit-r1/manifest.jsontests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/revisions/external-vscode-symbol-info-valid-undefined-edit-r1/matrix-results/results.jsontests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/revisions/external-vscode-symbol-info-valid-undefined-edit-r1/oracle-results/declared-sources.jsontests/codegen-direct/port-evidence/vscode-tparser-source-spans/index.jsontests/codegen-direct/port-evidence/vscode-tparser-source-spans/revisions/external-vscode-tparser-source-spans-r1/manifest.jsontests/codegen-direct/port-evidence/vscode-tparser-source-spans/revisions/external-vscode-tparser-source-spans-r1/matrix-results/results.jsontests/codegen-direct/port-evidence/vscode-tparser-source-spans/revisions/external-vscode-tparser-source-spans-r1/oracle-results/declared-sources.jsontests/codegen-direct/upstream-case-inventory.jsontests/codegen-direct/upstream-test-map.jsonthird_party/antlr-v4-grammar/ANTLRv4Lexer.g4third_party/antlr-v4-grammar/ANTLRv4Parser.g4third_party/antlr-v4-grammar/License.txtthird_party/antlr-v4-grammar/README.mdthird_party/antlr-v4-grammar/antlr-v4.tomlthird_party/antlr-v4-grammar/predefined.tokensthird_party/antlr-v4-grammar/stage0-manifest.jsontools/grammar-frontend/generate-port-evidence.mjstools/grammar-frontend/generate-upstream-test-map.mjstools/grammar-frontend/inventory-upstream-tests.mjstools/grammar-frontend/read-junit-report.pytools/grammar-frontend/snapshot-frontend.mjstools/grammar-frontend/update-stage0.shtools/grammar-frontend/update-vscode-antlr4-fixtures.mjstools/grammar-frontend/validate-external-fixture-map.mjstools/grammar-frontend/validate-port-evidence.mjstools/grammar-frontend/validate-stage0.mjstools/grammar-frontend/validate-upstream-test-map.mjs
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 60d4eb4385
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c8a5df019c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 87 out of 92 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
src/bin/antlr4-rust-gen.rs:21
mod grammar;pulls the entire Phase A grammar frontend (and its generated lexer/parser) into the productionantlr4-rust-genbinary even though it’s currently unused here (hence#[allow(dead_code)]). That increases compile time/binary size for non-test builds. If the intent is only to compile the grammar frontend’s unit tests undercargo test --bin antlr4-rust-gen, gate the module behindcfg(test)instead.
#[allow(dead_code)]
#[path = "../bin_support/grammar/mod.rs"]
mod grammar;
|
@codex review |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/bin_support/grammar/frontend.rs`:
- Around line 319-331: In the function building the `starts` offsets, validate
`text.len()` against `u32` before iterating over `text.bytes()`. After this
upfront check succeeds, replace the per-newline `u32::try_from(index + 1)`
conversion with a direct offset conversion while preserving the existing
`invalid_span(source, LIMIT_EXCEEDED)` error and final boxed slice result.
In `@tools/grammar-frontend/generate-port-evidence.mjs`:
- Around line 547-557: Move the shared gitShowOptional helper from
generate-port-evidence.mjs into evidence-common.mjs, then import and reuse it in
both generate-port-evidence.mjs and validate-port-evidence.mjs. Remove the
duplicated local definitions while preserving its existing git show behavior and
null-on-failure result.
- Around line 130-184: Update the locked-section verification around
gitShowOptional calls for TEST_COMMIT and FRONTEND_SYNTAX_TEST_COMMIT so every
null result emits a clear diagnostic that the corresponding historical
consistency check was skipped because the pinned commit is unavailable. Preserve
the existing comparisons and errors when historical content is present, and
cover the test module plus syntax test and syntax module checks without silently
returning.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: a14ebc87-3b71-47fc-877a-72dd784a53d1
⛔ Files ignored due to path filters (1)
src/bin_support/grammar/generated/antlr_v4_lexer.rsis excluded by!**/generated/**
📒 Files selected for processing (31)
src/atn/lexer.rssrc/atn/lexer_dfa.rssrc/bin_support/grammar/frontend.rssrc/bin_support/grammar/lexer_adaptor.rssrc/bin_support/grammar/mod.rssrc/bin_support/grammar/ported_tests.rssrc/lexer.rstests/codegen-direct/port-evidence/frontend-bootstrap-corpus/revisions/frontend-bootstrap-corpus-r1/manifest.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/index.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r1/manifest.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r2/manifest.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r2/matrix-results/results.jsontests/codegen-direct/port-evidence/frontend-fail-closed-syntax/revisions/frontend-fail-closed-syntax-r2/oracle-results/declared-sources.jsontests/codegen-direct/port-evidence/frontend-source-regressions/revisions/frontend-source-regressions-r1/manifest.jsontests/codegen-direct/port-evidence/frontend-token-cst-parity/revisions/frontend-token-cst-parity-r1/manifest.jsontests/codegen-direct/port-evidence/vscode-symbol-info-malformed-edit/revisions/external-vscode-symbol-info-malformed-edit-r1/manifest.jsontests/codegen-direct/port-evidence/vscode-symbol-info-valid-undefined-edit/revisions/external-vscode-symbol-info-valid-undefined-edit-r1/manifest.jsontests/codegen-direct/port-evidence/vscode-tparser-source-spans/revisions/external-vscode-tparser-source-spans-r1/manifest.jsontests/codegen-direct/upstream-test-map.jsonthird_party/antlr-v4-grammar/stage0-manifest.jsontools/grammar-frontend/evidence-common.mjstools/grammar-frontend/generate-port-evidence.mjstools/grammar-frontend/generate-upstream-test-map.mjstools/grammar-frontend/inventory-upstream-tests.mjstools/grammar-frontend/read-junit-report.pytools/grammar-frontend/snapshot-frontend.mjstools/grammar-frontend/update-stage0.shtools/grammar-frontend/validate-external-fixture-map.mjstools/grammar-frontend/validate-port-evidence.mjstools/grammar-frontend/validate-stage0.mjstools/grammar-frontend/validate-upstream-test-map.mjs
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Copy/Paste DetectionFound 1821 duplication(s) across 10 changed Rust file(s) (threshold: 100 tokens). Show duplicationsFound a 5 line (829 tokens) duplication in the following files:
&["DOC_COMMENT", "BLOCK_COMMENT", "LINE_COMMENT", "INT", "STRING_LITERAL", "UNTERMINATED_STRING_LITERAL", "BEGIN_ARGUMENT", "ACTION", "NESTED_ACTION", "OPTIONS", "TOKENS", "CHANNELS", "IMPORT", "FRAGMENT", "LEXER", "PARSER", "GRAMMAR", "PROTECTED", "PUBLIC", "PRIVATE", "RETURNS", "LOCALS", "THROWS", "CATCH", "FINALLY", "MODE", "COLON", "COLONCOLON", "COMMA", "SEMI", "LPAREN", "RPAREN", "RBRACE", "RARROW", "LT", "GT", "ASSIGN", "QUESTION", "STAR", "PLUS_ASSIGN", "PLUS", "OR", "DOLLAR", "RANGE", "DOT", "AT", "POUND", "NOT", "ID", "WS", "NESTED_ARGUMENT", "ARGUMENT_ESCAPE", "ARGUMENT_STRING_LITERAL", "ARGUMENT_CHAR_LITERAL", "END_ARGUMENT", "UNTERMINATED_ARGUMENT", "ARGUMENT_CONTENT", "LEXER_CHAR_SET_BODY", "LEXER_CHAR_SET", "UNTERMINATED_CHAR_SET", "ESC_SEQUENCE", "HexDigit", "UnicodeESC", "DoubleQuoteLiteral", "TripleQuoteLiteral", "BacktickQuoteLiteral", "NameChar", "NameStartChar"],
&[None, None, None, None, None, None, None, Some("\'=\'"), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, Some("\'[\'"), None, None, None, Some("\'import\'"), Some("\'fragment\'"), Some("\'lexer\'"), Some("\'parser\'"), Some("\'grammar\'"), Some("\'protected\'"), Some("\'public\'"), Some("\'private\'"), Some("\'returns\'"), Some("\'locals\'"), Some("\'throws\'"), Some("\'catch\'"), Some("\'finally\'"), Some("\'mode\'"), Some("\':\'"), Some("\'::\'"), Some("\',\'"), Some("\';\'"), Some("\'(\'"), Some("\')\'"), Some("\'}\'"), Some("\'->\'"), Some("\'<\'"), Some("\'>\'"), Some("\'?\'"), Some("\'*\'"), Some("\'+=\'"), Some("\'+\'"), Some("\'|\'"), Some("\'$\'"), Some("\'..\'"), Some("\'.\'"), Some("\'@\'"), Some("\'#\'"), Some("\'~\'"), None, None, None, None, None, None],
&[None, None, None, None, Some("ACTION"), Some("ARG_ACTION"), Some("ARG_OR_CHARSET"), Some("ASSIGN"), Some("LEXER_CHAR_SET"), Some("RULE_REF"), Some("SEMPRED"), Some("STRING_LITERAL"), Some("TOKEN_REF"), Some("UNICODE_ESC"), Some("UNICODE_EXTENDED_ESC"), Some("WS"), Some("ALT"), Some("BLOCK"), Some("CLOSURE"), Some("ELEMENT_OPTIONS"), Some("EPSILON"), Some("LEXER_ACTION_CALL"), Some("LEXER_ALT_ACTION"), Some("OPTIONAL"), Some("POSITIVE_CLOSURE"), Some("RULE"), Some("RULEMODIFIERS"), Some("RULES"), Some("SET"), Some("WILDCARD"), Some("DOC_COMMENT"), Some("BLOCK_COMMENT"), Some("LINE_COMMENT"), Some("INT"), Some("UNTERMINATED_STRING_LITERAL"), Some("BEGIN_ARGUMENT"), Some("OPTIONS"), Some("TOKENS"), Some("CHANNELS"), Some("IMPORT"), Some("FRAGMENT"), Some("LEXER"), Some("PARSER"), Some("GRAMMAR"), Some("PROTECTED"), Some("PUBLIC"), Some("PRIVATE"), Some("RETURNS"), Some("LOCALS"), Some("THROWS"), Some("CATCH"), Some("FINALLY"), Some("MODE"), Some("COLON"), Some("COLONCOLON"), Some("COMMA"), Some("SEMI"), Some("LPAREN"), Some("RPAREN"), Some("RBRACE"), Some("RARROW"), Some("LT"), Some("GT"), Some("QUESTION"), Some("STAR"), Some("PLUS_ASSIGN"), Some("PLUS"), Some("OR"), Some("DOLLAR"), Some("RANGE"), Some("DOT"), Some("AT"), Some("POUND"), Some("NOT"), Some("ID"), Some("END_ARGUMENT"), Some("UNTERMINATED_ARGUMENT"), Some("ARGUMENT_CONTENT"), Some("UNTERMINATED_CHAR_SET"), None],
&[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None],
&["DEFAULT_TOKEN_CHANNEL", "HIDDEN", "null", "null", "OFF_CHANNEL", "COMMENT"],Found a 81 line (622 tokens) duplication in the following files:
use antlr4_runtime::{BaseLexer, GeneratedLexer, GrammarMetadata, Lexer, Recognizer};
use std::sync::OnceLock;
pub const EOF: i32 = antlr4_runtime::TOKEN_EOF;
pub const ACTION: i32 = 4;
pub const ARG_ACTION: i32 = 5;
pub const ARG_OR_CHARSET: i32 = 6;
pub const ASSIGN: i32 = 7;
pub const LEXER_CHAR_SET: i32 = 8;
pub const RULE_REF: i32 = 9;
pub const SEMPRED: i32 = 10;
pub const STRING_LITERAL: i32 = 11;
pub const TOKEN_REF: i32 = 12;
pub const UNICODE_ESC: i32 = 13;
pub const UNICODE_EXTENDED_ESC: i32 = 14;
pub const WS: i32 = 15;
pub const ALT: i32 = 16;
pub const BLOCK: i32 = 17;
pub const CLOSURE: i32 = 18;
pub const ELEMENT_OPTIONS: i32 = 19;
pub const EPSILON: i32 = 20;
pub const LEXER_ACTION_CALL: i32 = 21;
pub const LEXER_ALT_ACTION: i32 = 22;
pub const OPTIONAL: i32 = 23;
pub const POSITIVE_CLOSURE: i32 = 24;
pub const RULE: i32 = 25;
pub const RULEMODIFIERS: i32 = 26;
pub const RULES: i32 = 27;
pub const SET: i32 = 28;
pub const WILDCARD: i32 = 29;
pub const DOC_COMMENT: i32 = 30;
pub const BLOCK_COMMENT: i32 = 31;
pub const LINE_COMMENT: i32 = 32;
pub const INT: i32 = 33;
pub const UNTERMINATED_STRING_LITERAL: i32 = 34;
pub const BEGIN_ARGUMENT: i32 = 35;
pub const OPTIONS: i32 = 36;
pub const TOKENS: i32 = 37;
pub const CHANNELS: i32 = 38;
pub const IMPORT: i32 = 39;
pub const FRAGMENT: i32 = 40;
pub const LEXER: i32 = 41;
pub const PARSER: i32 = 42;
pub const GRAMMAR: i32 = 43;
pub const PROTECTED: i32 = 44;
pub const PUBLIC: i32 = 45;
pub const PRIVATE: i32 = 46;
pub const RETURNS: i32 = 47;
pub const LOCALS: i32 = 48;
pub const THROWS: i32 = 49;
pub const CATCH: i32 = 50;
pub const FINALLY: i32 = 51;
pub const MODE: i32 = 52;
pub const COLON: i32 = 53;
pub const COLONCOLON: i32 = 54;
pub const COMMA: i32 = 55;
pub const SEMI: i32 = 56;
pub const LPAREN: i32 = 57;
pub const RPAREN: i32 = 58;
pub const RBRACE: i32 = 59;
pub const RARROW: i32 = 60;
pub const LT: i32 = 61;
pub const GT: i32 = 62;
pub const QUESTION: i32 = 63;
pub const STAR: i32 = 64;
pub const PLUS_ASSIGN: i32 = 65;
pub const PLUS: i32 = 66;
pub const OR: i32 = 67;
pub const DOLLAR: i32 = 68;
pub const RANGE: i32 = 69;
pub const DOT: i32 = 70;
pub const AT: i32 = 71;
pub const POUND: i32 = 72;
pub const NOT: i32 = 73;
pub const ID: i32 = 74;
pub const END_ARGUMENT: i32 = 75;
pub const UNTERMINATED_ARGUMENT: i32 = 76;
pub const ARGUMENT_CONTENT: i32 = 77;
pub const UNTERMINATED_CHAR_SET: i32 = 78;
pub static METADATA: GrammarMetadata = GrammarMetadata::new(Found a 1 line (391 tokens) duplication in the following files:
static LEXER_DFA_DATA: &[u32] = &[1280852999,3,0,4096,4133,4138,0,0,65535,4294967295,1,1,65535,0,2,1,65535,1,2,1,65535,2,3,2,65535,3,2,1,65535,4,2,1,65535,5,2,1,65535,6,4,1,65535,7,2,1,65535,8,5,1,65535,4294967295,6,1,65535,9,7,1,65535,4294967295,2,1,65535,10,8,1,65535,11,9,1,65535,12,2,1,65535,13,2,1,65535,14,2,1,65535,15,2,1,65535,16,2,1,65535,17,2,1,65535,18,10,3,65535,19,2,1,65535,20,11,3,65535,21,12,3,65535,22,13,3,65535,23,14,3,65535,24,15,3,65535,25,16,3,65535,26,17,3,65535,27,18,3,65535,28,19,3,65535,29,20,3,65535,30,21,4,65535,4294967295,2,1,65535,31,2,1,65535,32,2,1,65535,33,2,1,65535,34,22,2,68,4294967295,2,1,65535,35,2,1,65535,36,2,1,65535,37,23,5,70,4294967295,24,6,65535,38,2,1,65535,39,25,3,65535,40,26,3,65535,41,27,3,65535,42,28,3,65535,43,29,3,65535,44,30,3,65535,45,31,3,65535,46,32,3,65535,47,33,3,65535,48,34,3,65535,49,35,3,65535,50,36,3,65535,51,37,3,65535,52,38,3,65535,53,39,3,65535,54,40,3,65535,55,41,7,65535,4294967295,42,8,65535,4294967295,43,4,65535,4294967295,44,4,65535,4294967295,45,9,65535,4294967295,2,1,65535,56,46,10,65535,57,47,2,65535,58,2,1,65535,59,48,5,70,4294967295,49,11,102,4294967295,50,3,65535,60,51,3,65535,61,52,3,65535,62,53,3,65535,63,54,3,65535,64,55,3,65535,65,56,3,65535,66,57,3,65535,67,58,3,65535,68,59,3,65535,69,60,3,65535,70,61,3,65535,71,62,3,65535,72,63,3,65535,73,64,3,65535,74,65,3,65535,75,66,3,65535,76,67,7,65535,4294967295,68,4,65535,4294967295,69,7,124,4294967295,70,8,126,4294967295,71,12,65535,4294967295,72,13,65535,4294967295,73,9,142,4294967295,74,14,65535,4294967295,2,1,65535,77,75,10,68,4294967295,76,2,65535,78,77,5,70,4294967295,2,1,65535,79,78,11,102,4294967295,79,11,102,4294967295,80,15,152,80,81,3,65535,81,82,3,65535,82,83,3,65535,83,84,3,65535,84,85,3,65535,85,86,3,65535,86,87,3,65535,87,88,3,65535,88,10,3,65535,89,89,3,65535,90,90,3,65535,91,91,3,65535,92,92,3,65535,93,93,3,65535,94,94,3,65535,95,95,3,65535,96,96,3,65535,97,97,16,65535,4294967295,98,17,65535,4294967295,99,7,65535,4294967295,100,18,65535,4294967295,101,8,65535,4294967295,102,19,65535,4294967295,103,20,65535,4294967295,104,12,65535,4294967295,105,12,65535,4294967295,106,12,65535,4294967295,107,21,65535,4294967295,108,22,65535,98,109,13,65535,4294967295,110,23,65535,4294967295,111,24,65535,4294967295,112,25,65535,4294967295,109,13,65535,4294967295,113,26,65535,4294967295,109,13,65535,99,114,27,65535,4294967295,115,9,65535,4294967295,116,28,65535,4294967295,117,14,65535,4294967295,118,14,142,4294967295,119,29,65535,4294967295,120,10,65535,100,121,2,65535,101,2,1,65535,102,2,1,65535,103,2,1,65535,104,80,15,152,4294967295,122,15,152,4294967295,10,3,65535,105,123,3,65535,106,124,3,65535,107,125,3,65535,108,126,3,65535,109,127,3,65535,110,10,3,65535,111,128,3,65535,112,129,3,65535,113,130,3,65535,114,131,3,65535,115,132,3,65535,116,133,3,65535,117,134,3,65535,118,135,3,65535,119,136,3,65535,120,137,16,65535,4294967295,138,30,65535,4294967295,139,31,65535,4294967295,140,16,249,4294967295,141,32,65535,4294967295,142,17,124,4294967295,143,7,65535,4294967295,144,18,126,4294967295,145,8,65535,4294967295,146,19,65535,4294967295,108,22,65535,4294967295,147,12,65535,4294967295,148,19,65535,4294967295,149,19,124,4294967295,150,20,65535,4294967295,151,20,126,4294967295,152,33,65535,4294967295,153,34,65535,4294967295,154,21,65535,4294967295,155,21,142,4294967295,156,35,65535,4294967295,157,22,65535,4294967295,158,23,65535,4294967295,159,23,65535,4294967295,160,36,65535,4294967295,161,23,65535,4294967295,162,23,124,4294967295,163,37,65535,4294967295,164,38,65535,4294967295,165,24,65535,4294967295,166,24,126,4294967295,167,39,65535,4294967295,168,33,65535,4294967295,169,40,65535,4294967295,170,41,65535,4294967295,112,25,65535,4294967295,171,25,65535,4294967295,112,25,65535,4294967295,172,42,65535,4294967295,173,43,65535,4294967295,174,26,65535,4294967295,175,26,142,4294967295,176,27,142,4294967295,177,44,65535,4294967295,178,9,65535,4294967295,179,28,333,4294967295,180,45,65535,4294967295,181,14,65535,4294967295,182,46,65535,4294967295,183,29,65535,4294967295,184,29,142,4294967295,45,9,65535,121,185,10,65535,122,3,2,65535,123,2,1,65535,124,186,3,65535,125,187,3,65535,126,188,3,65535,127,189,3,65535,128,10,3,65535,129,10,3,65535,130,190,3,65535,131,10,3,65535,132,191,3,65535,133,192,3,65535,134,10,3,65535,135,193,3,65535,136,10,3,65535,137,194,3,65535,138,195,31,65535,4294967295,196,30,65535,4294967295,197,30,364,4294967295,198,31,65535,4294967295,199,16,65535,4294967295,200,47,65535,4294967295,201,31,65535,4294967295,202,31,364,4294967295,203,48,65535,4294967295,204,49,65535,4294967295,205,16,65535,4294967295,206,16,364,4294967295,207,16,65535,4294967295,208,17,65535,4294967295,209,32,65535,4294967295,210,32,65535,4294967295,2,1,65535,139,211,17,65535,4294967295,212,7,65535,4294967295,213,18,65535,4294967295,214,8,65535,4294967295,215,50,65535,4294967295,216,51,65535,4294967295,217,19,65535,4294967295,218,52,65535,4294967295,219,20,65535,4294967295,220,53,65535,4294967295,221,54,65535,4294967295,168,33,65535,4294967295,222,55,65535,4294967295,223,33,65535,4294967295,224,56,65535,4294967295,153,34,65535,4294967295,225,57,65535,4294967295,226,58,65535,4294967295,227,34,65535,4294967295,153,34,65535,4294967295,228,59,65535,4294967295,153,34,65535,140,229,60,65535,4294967295,230,21,65535,4294967295,231,61,65535,4294967295,232,35,65535,4294967295,233,35,65535,4294967295,234,35,142,4294967295,235,62,65535,4294967295,236,63,65535,4294967295,237,36,65535,4294967295,238,36,464,4294967295,239,64,65535,4294967295,240,65,65535,4294967295,241,66,65535,4294967295,158,23,65535,4294967295,242,23,65535,4294967295,243,67,65535,4294967295,244,37,65535,4294967295,245,37,484,4294967295,246,38,65535,4294967295,247,38,65535,4294967295,248,38,65535,4294967295,249,38,490,4294967295,250,68,65535,4294967295,251,69,65535,4294967295,252,70,65535,4294967295,111,24,65535,4294967295,253,24,65535,4294967295,254,39,65535,4294967295,255,39,507,4294967295,256,33,65535,4294967295,257,40,65535,4294967295,258,40,65535,4294967295,259,71,65535,4294967295,257,40,65535,4294967295,260,40,65535,4294967295,261,40,124,4294967295,262,72,65535,4294967295,263,73,65535,4294967295,170,41,65535,4294967295,264,41,65535,4294967295,265,41,126,4294967295,266,74,65535,4294967295,112,25,65535,4294967295,267,75,65535,4294967295,172,42,65535,4294967295,268,42,65535,4294967295,269,42,142,4294967295,270,43,65535,4294967295,271,43,333,4294967295,272,76,65535,4294967295,273,77,65535,4294967295,113,26,65535,4294967295,274,26,65535,4294967295,275,27,65535,4294967295,276,78,65535,4294967295,277,44,65535,4294967295,278,44,142,4294967295,279,79,65535,4294967295,280,9,65535,4294967295,281,28,65535,4294967295,282,80,65535,4294967295,283,81,65535,4294967295,284,45,65535,4294967295,285,82,333,4294967295,286,82,65535,4294967295,287,8,65535,141,288,14,65535,4294967295,289,46,507,4294967295,290,83,65535,4294967295,291,84,65535,4294967295,292,85,65535,4294967295,293,29,65535,4294967295,294,10,65535,142,295,3,65535,143,10,3,65535,144,296,3,65535,145,10,3,65535,146,297,3,65535,147,10,3,65535,148,298,3,65535,149,10,3,65535,150,299,1,65535,4294967295,2,1,65535,151,300,16,65535,4294967295,301,30,65535,4294967295,302,86,65535,4294967295,303,30,65535,4294967295,304,30,364,4294967295,305,30,65535,4294967295,300,16,65535,4294967295,306,31,65535,4294967295,307,47,65535,4294967295,308,47,610,4294967295,309,87,65535,4294967295,310,88,65535,4294967295,311,31,65535,4294967295,312,31,364,4294967295,313,31,65535,4294967295,314,48,629,4294967295,315,89,65535,4294967295,316,90,65535,4294967295,317,49,249,4294967295,318,31,65535,4294967295,319,16,65535,4294967295,320,16,65535,4294967295,321,32,65535,4294967295,322,91,65535,4294967295,323,92,65535,4294967295,324,17,65535,4294967295,67,7,65535,4294967295,325,18,65535,4294967295,42,8,65535,4294967295,326,50,65535,4294967295,327,93,65535,4294967295,328,87,65535,4294967295,329,50,65535,4294967295,330,50,249,4294967295,331,94,65535,4294967295,332,95,65535,4294967295,216,51,65535,4294967295,333,51,65535,4294967295,334,51,124,4294967295,335,96,65535,4294967295,336,19,65535,4294967295,337,97,65535,4294967295,338,98,65535,4294967295,218,52,65535,4294967295,339,52,65535,4294967295,340,52,126,4294967295,341,99,65535,4294967295,342,20,65535,4294967295,343,53,65535,4294967295,344,33,65535,4294967295,345,53,65535,4294967295,346,53,124,4294967295,347,54,65535,4294967295,348,54,126,4294967295,349,55,65535,4294967295,350,100,65535,4294967295,351,101,65535,4294967295,352,102,65535,4294967295,353,55,65535,4294967295,354,103,65535,4294967295,355,56,65535,4294967295,356,56,142,4294967295,357,104,65535,4294967295,358,57,65535,4294967295,359,57,65535,4294967295,360,105,65535,4294967295,361,57,65535,4294967295,358,57,65535,4294967295,362,57,124,4294967295,363,106,65535,4294967295,364,107,65535,4294967295,365,58,65535,4294967295,226,58,65535,4294967295,366,58,126,4294967295,367,108,65535,4294967295,349,55,65535,4294967295,368,109,65535,4294967295,369,59,65535,4294967295,228,59,65535,4294967295,370,59,142,4294967295,371,110,65535,4294967295,229,60,65535,4294967295,372,60,65535,4294967295,373,60,142,4294967295,374,21,65535,4294967295,375,61,65535,4294967295,376,61,333,4294967295,377,111,65535,4294967295,378,60,65535,4294967295,379,35,65535,4294967295,380,112,65535,4294967295,381,62,65535,4294967295,382,62,65535,4294967295,383,62,142,4294967295,107,21,65535,152,384,63,65535,4294967295,385,63,65535,4294967295,386,113,65535,4294967295,387,63,65535,4294967295,388,63,249,4294967295,389,114,65535,4294967295,390,115,65535,4294967295,391,116,65535,4294967295,392,117,65535,4294967295,160,36,65535,4294967295,393,36,65535,4294967295,394,64,65535,4294967295,395,64,829,4294967295,396,118,65535,4294967295,240,65,65535,4294967295,397,65,65535,4294967295,398,65,124,4294967295,399,119,65535,4294967295,400,120,65535,4294967295,401,80,65535,4294967295,402,66,65535,4294967295,403,66,124,4294967295,404,121,65535,4294967295,405,23,65535,4294967295,406,67,65535,4294967295,407,67,853,4294967295,408,122,65535,4294967295,409,123,65535,4294967295,410,124,65535,4294967295,163,37,65535,4294967295,411,37,65535,4294967295,412,125,65535,4294967295,413,126,65535,4294967295,414,127,65535,4294967295,415,128,65535,4294967295,246,38,65535,4294967295,416,38,65535,4294967295,417,68,65535,4294967295,418,68,887,4294967295,419,129,65535,4294967295,251,69,65535,4294967295,420,69,65535,4294967295,421,69,126,4294967295,422,130,65535,4294967295,423,131,65535,4294967295,424,132,65535,4294967295,425,70,65535,4294967295,426,70,126,4294967295,427,24,65535,4294967295,428,133,65535,4294967295,429,134,65535,4294967295,430,135,65535,4294967295,167,39,65535,4294967295,431,39,65535,4294967295,71,12,65535,4294967295,432,136,65535,4294967295,259,71,65535,4294967295,433,71,65535,4294967295,434,71,464,4294967295,435,137,65535,4294967295,240,65,65535,4294967295,436,138,65535,4294967295,257,40,65535,4294967295,437,40,65535,4294967295,438,139,65535,4294967295,262,72,65535,4294967295,439,72,65535,4294967295,440,72,484,4294967295,441,73,65535,4294967295,442,73,65535,4294967295,441,73,65535,4294967295,443,73,65535,4294967295,444,73,490,4294967295,445,140,65535,4294967295,251,69,65535,4294967295,446,141,65535,4294967295,170,41,65535,4294967295,447,41,65535,4294967295,266,74,65535,4294967295,448,74,65535,4294967295,449,74,507,4294967295,267,75,65535,4294967295,450,75,65535,4294967295,451,75,333,4294967295,272,76,65535,4294967295,452,142,65535,4294967295,172,42,65535,4294967295,453,42,65535,4294967295,454,143,65535,4294967295,455,144,65535,4294967295,173,43,65535,4294967295,456,43,65535,4294967295,457,145,65535,4294967295,272,76,65535,4294967295,458,76,65535,4294967295,459,76,142,4294967295,460,77,65535,4294967295,461,146,65535,4294967295,462,77,65535,4294967295,463,77,992,4294967295,464,26,65535,4294967295,465,27,65535,4294967295,466,78,333,4294967295,467,147,65535,4294967295,468,148,65535,4294967295,469,149,65535,4294967295,470,44,65535,4294967295,471,79,65535,4294967295,472,79,142,4294967295,114,27,65535,153,45,9,65535,4294967295,473,28,65535,4294967295,474,132,65535,4294967295,475,80,464,4294967295,476,81,65535,4294967295,477,81,333,4294967295,478,150,65535,4294967295,479,151,65535,4294967295,480,152,65535,4294967295,481,82,65535,4294967295,482,82,65535,4294967295,116,28,65535,154,483,14,65535,4294967295,484,46,65535,4294967295,485,83,65535,4294967295,486,83,507,4294967295,487,153,65535,4294967295,488,84,65535,4294967295,489,84,65535,4294967295,490,84,142,4294967295,224,56,65535,155,491,85,65535,4294967295,492,154,65535,4294967295,493,155,65535,4294967295,494,85,142,4294967295,495,156,65535,4294967295,491,85,65535,156,496,29,65535,4294967295,46,10,65535,157,497,3,65535,158,10,3,65535,159,498,1,65535,4294967295,2,1,65535,160,499,3,65535,161,500,31,65535,4294967295,501,31,65535,4294967295,502,86,65535,4294967295,503,86,364,4294967295,504,30,65535,4294967295,505,30,65535,4294967295,506,30,65535,4294967295,507,157,65535,4294967295,508,47,65535,4294967295,509,158,65535,4294967295,510,47,65535,4294967295,511,47,364,4294967295,512,47,65535,4294967295,513,50,65535,4294967295,514,159,65535,4294967295,515,87,65535,4294967295,516,87,65535,4294967295,517,87,364,4294967295,518,160,65535,4294967295,519,88,65535,4294967295,520,63,65535,4294967295,521,161,65535,4294967295,522,162,65535,4294967295,523,88,364,4294967295,524,163,65535,4294967295,300,16,65535,4294967295,525,31,65535,4294967295,526,31,65535,4294967295,527,164,65535,4294967295,528,48,65535,4294967295,529,48,364,4294967295,530,48,65535,4294967295,531,165,65535,4294967295,532,89,65535,4294967295,533,89,629,4294967295,534,166,65535,4294967295,535,90,65535,4294967295,536,49,65535,4294967295,537,90,65535,4294967295,538,90,364,4294967295,539,49,65535,4294967295,540,49,364,4294967295,541,49,65535,4294967295,542,157,65535,4294967295,543,16,65535,4294967295,544,16,65535,4294967295,545,49,65535,4294967295,546,167,65535,4294967295,547,168,65535,4294967295,548,91,65535,4294967295,549,91,65535,4294967295,550,91,65535,4294967295,551,169,65535,4294967295,552,170,65535,162,553,92,65535,4294967295,554,171,65535,4294967295,555,172,65535,4294967295,556,173,65535,4294967295,553,92,65535,4294967295,557,149,65535,4294967295,553,92,65535,163,558,17,65535,4294967295,559,18,65535,4294967295,560,87,65535,4294967295,561,93,65535,4294967295,562,93,65535,4294967295,563,93,364,4294967295,564,50,65535,4294967295,565,174,65535,4294967295,566,50,65535,4294967295,567,50,364,4294967295,568,50,65535,4294967295,569,94,65535,4294967295,570,51,65535,4294967295,571,97,65535,4294967295,572,94,65535,4294967295,573,94,65535,4294967295,574,94,124,4294967295,575,175,65535,4294967295,343,53,65535,164,576,95,65535,4294967295,577,176,464,4294967295,578,177,65535,4294967295,579,51,65535,4294967295,580,96,65535,4294967295,581,178,484,4294967295,582,179,65535,4294967295,583,19,65535,4294967295,584,52,65535,4294967295,585,97,65535,4294967295,586,180,490,4294967295,587,95,65535,4294967295,588,98,65535,4294967295,589,98,65535,4294967295,590,98,126,4294967295,221,54,65535,165,591,181,65535,4294967295,592,52,65535,4294967295,593,99,65535,4294967295,594,182,507,4294967295,595,183,65535,4294967295,596,20,65535,4294967295,597,184,65535,4294967295,598,185,65535,4294967295,599,53,65535,4294967295,600,186,65535,4294967295,601,54,65535,4294967295,349,55,65535,4294967295,602,100,65535,4294967295,603,187,65535,4294967295,604,188,65535,4294967295,605,100,65535,4294967295,602,100,65535,4294967295,606,100,124,4294967295,607,189,65535,4294967295,602,100,65535,166,608,190,65535,4294967295,609,191,65535,4294967295,610,101,65535,4294967295,351,101,65535,4294967295,611,101,126,4294967295,612,192,65535,4294967295,351,101,65535,167,352,102,65535,4294967295,613,193,65535,4294967295,614,194,65535,4294967295,615,102,65535,4294967295,616,102,65535,4294967295,617,102,65535,4294967295,618,195,65535,4294967295,619,187,65535,4294967295,349,55,65535,4294967295,620,196,65535,4294967295,349,55,65535,168,621,197,65535,4294967295,622,103,65535,4294967295,354,103,65535,4294967295,623,103,142,4294967295,624,198,65535,4294967295,354,103,65535,169,625,199,65535,4294967295,626,56,65535,4294967295,627,200,65535,4294967295,357,104,65535,4294967295,628,104,65535,4294967295,629,104,142,4294967295,630,201,65535,4294967295,631,105,65535,4294967295,360,105,65535,4294967295,632,105,464,4294967295,633,202,65535,4294967295,634,187,65535,4294967295,578,177,65535,4294967295,358,57,65535,4294967295,635,57,65535,4294967295,636,203,65535,4294967295,637,106,65535,4294967295,363,106,65535,4294967295,638,106,484,4294967295,639,107,65535,4294967295,640,107,65535,4294967295,641,107,65535,4294967295,639,107,65535,4294967295,642,107,490,4294967295,643,204,65535,4294967295,609,191,65535,4294967295,591,181,65535,4294967295,226,58,65535,4294967295,644,58,65535,4294967295,645,108,65535,4294967295,367,108,65535,4294967295,646,108,507,4294967295,647,109,65535,4294967295,368,109,65535,4294967295,648,109,333,4294967295,620,196,65535,4294967295,649,205,65535,4294967295,228,59,65535,4294967295,650,59,65535,4294967295,651,110,65535,4294967295,652,200,333,4294967295,156,35,65535,4294967295,653,60,65535,4294967295,654,21,65535,4294967295,655,206,65535,4294967295,656,61,65535,4294967295,657,207,65535,4294967295,658,208,65535,4294967295,659,111,65535,4294967295,660,111,65535,4294967295,661,209,333,4294967295,662,209,65535,4294967295,663,20,65535,170,664,196,65535,4294967295,665,35,65535,4294967295,666,112,65535,4294967295,667,112,507,4294967295,668,210,65535,4294967295,669,60,65535,4294967295,618,195,65535,4294967295,670,62,65535,4294967295,385,63,65535,4294967295,671,211,65535,4294967295,672,113,65535,4294967295,673,113,1429,4294967295,674,212,65535,4294967295,675,213,65535,4294967295,676,214,65535,4294967295,677,63,65535,4294967295,678,63,364,4294967295,679,63,65535,4294967295,680,215,65535,4294967295,681,114,65535,4294967295,682,114,1452,4294967295,390,115,65535,4294967295,683,115,65535,4294967295,684,115,464,4294967295,685,216,65535,4294967295,686,217,65535,4294967295,687,218,65535,4294967295,688,116,464,4294967295,689,219,65535,4294967295,690,220,65535,4294967295,691,117,65535,4294967295,692,117,464,4294967295,693,221,65535,4294967295,694,36,65535,4294967295,695,222,65535,4294967295,696,223,65535,4294967295,697,224,65535,4294967295,239,64,65535,4294967295,698,64,65535,4294967295,396,118,65535,4294967295,699,118,65535,4294967295,700,225,65535,4294967295,240,65,65535,4294967295,240,65,65535,4294967295,701,65,65535,4294967295,702,226,65535,4294967295,399,119,65535,4294967295,703,119,65535,4294967295,704,120,65535,4294967295,705,66,65535,4294967295,706,131,65535,4294967295,707,120,65535,4294967295,708,120,124,4294967295,709,227,65535,4294967295,67,7,65535,171,710,66,65535,4294967295,711,121,484,4294967295,712,23,65535,4294967295,713,228,65535,4294967295,714,229,65535,4294967295,715,230,65535,4294967295,243,67,65535,4294967295,716,67,65535,4294967295,717,231,65535,4294967295,408,122,65535,4294967295,718,122,65535,4294967295,719,122,484,4294967295,720,123,484,4294967295,721,232,65535,4294967295,722,233,65535,4294967295,723,124,65535,4294967295,724,124,484,4294967295,725,234,65535,4294967295,726,37,65535,4294967295,727,125,65535,4294967295,728,125,65535,4294967295,729,125,65535,4294967295,730,125,1539,4294967295,731,235,65535,4294967295,413,126,65535,4294967295,732,126,65535,4294967295,733,126,490,4294967295,734,236,65535,4294967295,735,237,65535,4294967295,736,238,65535,4294967295,737,127,490,4294967295,738,239,65535,4294967295,739,240,65535,4294967295,740,128,65535,4294967295,741,128,490,4294967295,742,241,65535,4294967295,743,38,65535,4294967295,744,242,65535,4294967295,745,243,65535,4294967295,746,244,65535,4294967295,250,68,65535,4294967295,747,68,65535,4294967295,748,129,65535,4294967295,749,129,65535,4294967295,748,129,65535,4294967295,750,129,65535,4294967295,751,245,65535,4294967295,251,69,65535,4294967295,251,69,65535,4294967295,752,69,65535,4294967295,422,130,65535,4294967295,753,130,65535,4294967295,754,70,65535,4294967295,755,131,490,4294967295,756,132,65535,4294967295,757,132,126,4294967295,42,8,65535,172,758,70,65535,4294967295,759,24,65535,4294967295,428,133,65535,4294967295,760,133,65535,4294967295,761,133,507,4294967295,762,134,507,4294967295,763,246,65535,4294967295,764,135,65535,4294967295,765,135,65535,4294967295,766,135,1604,4294967295,767,39,65535,4294967295,768,136,65535,4294967295,769,247,65535,4294967295,770,136,65535,4294967295,771,248,65535,4294967295,768,136,65535,4294967295,772,136,65535,4294967295,773,136,249,4294967295,774,249,65535,4294967295,390,115,65535,4294967295,775,250,65535,4294967295,259,71,65535,4294967295,776,71,65535,4294967295,435,137,65535,4294967295,777,137,65535,4294967295,778,137,829,4294967295,779,185,65535,4294967295,780,176,65535,4294967295,436,138,65535,4294967295,781,138,65535,4294967295,782,138,124,4294967295,783,178,65535,4294967295,784,40,65535,4294967295,438,139,65535,4294967295,785,139,65535,4294967295,786,139,853,4294967295,408,122,65535,4294967295,787,251,65535,4294967295,262,72,65535,4294967295,788,72,65535,4294967295,789,252,65535,4294967295,413,126,65535,4294967295,790,253,65535,4294967295,441,73,65535,4294967295,791,73,65535,4294967295,445,140,65535,4294967295,792,140,65535,4294967295,793,140,887,4294967295,794,180,65535,4294967295,446,141,65535,4294967295,795,141,65535,4294967295,796,141,126,4294967295,797,182,65535,4294967295,798,41,65535,4294967295,428,133,65535,4294967295,799,254,65535,4294967295,800,255,65535,4294967295,266,74,65535,4294967295,801,74,65535,4294967295,454,143,65535,4294967295,802,256,65535,4294967295,803,257,65535,4294967295,267,75,65535,4294967295,804,75,65535,4294967295,805,142,65535,4294967295,806,258,65535,4294967295,805,142,65535,4294967295,807,142,65535,4294967295,808,142,992,4294967295,809,42,65535,4294967295,454,143,65535,4294967295,810,143,65535,4294967295,811,143,333,4294967295,812,144,65535,4294967295,813,144,65535,4294967295,814,144,1707,4294967295,815,43,65535,4294967295,457,145,65535,4294967295,816,145,65535,4294967295,272,76,65535,4294967295,817,259,65535,4294967295,272,76,65535,4294967295,818,76,65535,4294967295,819,146,65535,4294967295,820,146,1719,4294967295,821,260,65535,4294967295,822,261,65535,4294967295,823,262,65535,4294967295,460,77,65535,4294967295,824,77,65535,4294967295,825,26,65535,4294967295,826,27,65535,4294967295,827,78,65535,4294967295,828,116,65535,4294967295,829,263,65535,4294967295,830,147,65535,4294967295,831,264,333,4294967295,832,264,65535,4294967295,833,18,65535,173,834,265,65535,4294967295,835,148,65535,4294967295,836,148,65535,4294967295,837,148,142,4294967295,838,266,65535,4294967295,839,267,65535,4294967295,840,268,65535,4294967295,841,149,142,4294967295,842,44,65535,4294967295,843,269,65535,4294967295,844,270,65535,4294967295,845,79,65535,4294967295,846,28,65535,4294967295,847,271,65535,4294967295,848,80,65535,4294967295,849,81,65535,4294967295,850,150,65535,4294967295,851,150,507,4294967295,182,46,65535,174,852,151,65535,4294967295,853,151,65535,4294967295,854,272,333,4294967295,855,273,65535,4294967295,856,54,65535,175,857,152,65535,4294967295,858,274,65535,4294967295,859,275,65535,4294967295,860,276,65535,4294967295,861,277,333,4294967295,862,278,65535,176,863,82,65535,4294967295,864,272,65535,4294967295,865,277,65535,4294967295,74,14,65535,4294967295,866,46,65535,4294967295,867,83,65535,4294967295,868,153,65535,4294967295,869,9,65535,177,870,199,65535,4294967295,871,84,65535,4294967295,872,154,65535,4294967295,873,279,507,4294967295,874,280,65535,4294967295,875,85,65535,178,876,281,65535,4294967295,493,155,65535,4294967295,877,155,65535,4294967295,878,155,142,4294967295,879,282,65535,4294967295,880,283,65535,4294967295,491,85,65535,4294967295,881,85,65535,4294967295,882,284,65535,4294967295,883,277,65535,4294967295,884,156,65535,4294967295,885,156,142,4294967295,886,285,65535,4294967295,887,29,65535,4294967295,888,1,65535,4294967295,2,1,65535,179,10,3,65535,180,889,157,65535,4294967295,890,286,65535,4294967295,891,86,65535,4294967295,892,86,65535,4294967295,893,86,364,4294967295,894,86,65535,4294967295,895,287,65535,4294967295,896,30,65535,4294967295,897,30,65535,4294967295,898,157,65535,4294967295,899,287,65535,4294967295,900,288,65535,4294967295,901,289,65535,4294967295,902,157,65535,4294967295,903,157,249,4294967295,904,290,65535,4294967295,137,16,65535,181,905,291,65535,4294967295,906,158,65535,4294967295,907,158,610,4294967295,908,47,65535,4294967295,909,47,65535,4294967295,910,47,65535,4294967295,911,87,65535,4294967295,912,159,65535,4294967295,913,159,65535,4294967295,914,159,610,4294967295,915,292,65535,4294967295,916,293,65535,4294967295,917,87,65535,4294967295,918,87,364,4294967295,919,87,65535,4294967295,920,160,65535,4294967295,921,160,629,4294967295,922,294,65535,4294967295,923,63,65535,4294967295,924,161,65535,4294967295,925,161,610,4294967295,926,295,65535,4294967295,927,292,65535,4294967295,928,296,65535,4294967295,929,297,65535,4294967295,522,162,65535,4294967295,930,162,65535,4294967295,931,162,364,4294967295,932,298,65535,4294967295,933,88,364,4294967295,934,88,65535,4294967295,935,299,65535,4294967295,936,163,65535,4294967295,937,163,629,4294967295,938,31,65535,4294967295,939,31,65535,4294967295,940,164,629,4294967295,941,300,65535,4294967295,942,48,65535,4294967295,943,48,65535,4294967295,944,165,1987,4294967295,945,301,65535,4294967295,946,89,65535,4294967295,947,89,364,4294967295,948,89,65535,4294967295,949,302,65535,4294967295,950,166,65535,4294967295,951,303,629,4294967295,952,9,65535,182,536,49,65535,4294967295,953,90,65535,4294967295,954,304,65535,4294967295,955,305,65535,4294967295,956,90,65535,4294967295,957,90,364,4294967295,958,90,65535,4294967295,959,90,65535,4294967295,960,49,65535,4294967295,961,49,65535,4294967295,962,288,65535,4294967295,963,16,65535,4294967295,137,16,65535,4294967295,964,90,65535,4294967295,965,167,65535,4294967295,552,170,65535,4294967295,966,91,65535,4294967295,967,167,65535,4294967295,968,167,124,4294967295,969,168,65535,4294967295,970,168,126,4294967295,971,306,65535,4294967295,972,307,65535,4294967295,973,169,65535,4294967295,974,169,142,4294967295,975,170,65535,4294967295,976,171,65535,4294967295,977,171,65535,4294967295,978,308,65535,4294967295,979,171,65535,4294967295,980,171,124,4294967295,981,309,65535,4294967295,982,310,65535,4294967295,983,172,65535,4294967295,984,172,126,4294967295,985,311,65535,4294967295,986,306,65535,4294967295,987,312,65535,4294967295,988,313,65535,4294967295,556,173,65535,4294967295,989,173,65535,4294967295,556,173,65535,4294967295,990,314,65535,4294967295,98,17,65535,4294967295,100,18,65535,4294967295,513,50,65535,4294967295,991,93,65535,4294967295,992,93,65535,4294967295,993,93,364,4294967295,994,93,65535,4294967295,995,87,65535,4294967295,996,315,65535,4294967295,997,316,65535,4294967295,565,174,65535,4294967295,998,174,65535,4294967295,999,174,249,4294967295,1000,317,65535,4294967295,1001,87,65535,4294967295,1002,50,65535,4294967295,1003,50,65535,4294967295,1004,51,65535,4294967295,1005,318,65535,4294967295,1006,185,65535,4294967295,1007,94,65535,4294967295,1008,175,65535,4294967295,1009,319,992,4294967295,1010,320,65535,4294967295,1011,321,65535,4294967295,1012,176,65535,4294967295,1013,176,65535,4294967295,1014,322,65535,4294967295,1015,207,65535,4294967295,1016,177,65535,4294967295,1017,177,65535,4294967295,1018,177,124,4294967295,1019,323,65535,4294967295,1020,51,65535,4294967295,1021,324,65535,4294967295,1022,178,65535,4294967295,1023,178,65535,4294967295,1024,325,65535,4294967295,582,179,65535,4294967295,1025,179,65535,4294967295,1026,251,484,4294967295,146,19,65535,4294967295,1027,326,65535,4294967295,1028,327,65535,4294967295,1029,180,65535,4294967295,1030,180,65535,4294967295,1031,180,65535,4294967295,1032,98,65535,4294967295,1033,186,65535,4294967295,1034,98,65535,4294967295,1035,328,65535,4294967295,1036,329,65535,4294967295,1037,181,65535,4294967295,1038,181,65535,4294967295,1039,181,126,4294967295,1040,52,65535,4294967295,1041,330,65535,4294967295,1042,182,65535,4294967295,1043,182,65535,4294967295,595,183,65535,4294967295,1044,183,65535,4294967295,1045,254,507,4294967295,103,20,65535,4294967295,1046,184,65535,4294967295,1047,331,65535,4294967295,1048,247,65535,4294967295,1049,184,65535,4294967295,1050,184,249,4294967295,1051,138,65535,4294967295,598,185,65535,4294967295,1052,185,65535,4294967295,1053,185,124,4294967295,1054,319,65535,4294967295,1055,53,65535,4294967295,1056,176,65535,4294967295,600,186,65535,4294967295,1057,186,65535,4294967295,1058,186,126,4294967295,1059,54,65535,4294967295,634,187,65535,4294967295,1060,332,65535,4294967295,1061,190,65535,4294967295,634,187,65535,4294967295,1062,187,65535,4294967295,1063,187,124,4294967295,1064,333,65535,4294967295,1065,334,65535,4294967295,1066,188,65535,4294967295,604,188,65535,4294967295,1067,335,490,4294967295,1068,336,65535,4294967295,1069,100,65535,183,1070,337,65535,4294967295,1071,100,65535,4294967295,602,100,65535,4294967295,1072,100,65535,4294967295,1073,338,65535,4294967295,1074,189,65535,4294967295,607,189,65535,4294967295,1075,339,992,4294967295,1076,100,65535,184,1077,190,65535,4294967295,1078,340,65535,4294967295,1079,190,65535,4294967295,1061,190,65535,4294967295,1080,341,464,4294967295,1081,342,65535,4294967295,1082,101,65535,185,1083,188,65535,4294967295,609,191,65535,4294967295,1084,191,65535,4294967295,1085,191,126,4294967295,1086,343,65535,4294967295,351,101,65535,4294967295,1087,101,65535,4294967295,1088,344,65535,4294967295,1089,192,65535,4294967295,612,192,65535,4294967295,1090,345,333,4294967295,1091,101,65535,186,1092,193,65535,4294967295,1093,346,65535,4294967295,1094,347,65535,4294967295,1095,193,65535,4294967295,1092,193,65535,4294967295,1096,193,124,4294967295,1097,348,65535,4294967295,1092,193,65535,187,1098,349,65535,4294967295,1099,350,65535,4294967295,1100,194,65535,4294967295,614,194,65535,4294967295,1101,194,126,4294967295,1102,351,65535,4294967295,614,194,65535,188,349,55,65535,4294967295,1103,346,65535,4294967295,352,102,65535,4294967295,352,102,65535,4294967295,1104,352,65535,4294967295,352,102,65535,189,1105,353,65535,4294967295,1106,195,65535,4294967295,1107,195,142,4294967295,1108,354,65535,4294967295,618,195,65535,190,1109,100,65535,4294967295,620,196,65535,4294967295,1110,196,142,4294967295,1111,197,65535,4294967295,621,197,65535,4294967295,1112,355,507,4294967295,1113,356,65535,4294967295,1114,103,65535,191,1115,357,65535,4294967295,1116,333,65535,4294967295,354,103,65535,4294967295,1117,103,65535,4294967295,1118,345,65535,4294967295,624,198,65535,4294967295,1119,198,65535,4294967295,1120,198,142,4294967295,1115,357,65535,4294967295,625,199,65535,4294967295,1121,199,65535,4294967295,1122,199,142,4294967295,1123,56,65535,4294967295,1124,200,65535,4294967295,1125,358,65535,4294967295,156,35,65535,4294967295,1126,104,65535,4294967295,1127,201,65535,4294967295,1128,201,65535,4294967295,1129,359,65535,4294967295,1130,201,65535,4294967295,1127,201,65535,4294967295,1131,201,249,4294967295,1132,360,65535,4294967295,1078,340,65535,4294967295,1133,361,65535,4294967295,360,105,65535,4294967295,1134,105,65535,4294967295,1135,202,65535,4294967295,633,202,65535,4294967295,1136,202,829,4294967295,1137,57,65535,4294967295,1138,203,65535,4294967295,636,203,65535,4294967295,1139,203,853,4294967295,1140,362,65535,4294967295,1141,363,65535,4294967295,363,106,65535,4294967295,1142,106,65535,4294967295,1143,364,65535,4294967295,1144,334,65535,4294967295,1145,365,65535,4294967295,639,107,65535,4294967295,1146,107,65535,4294967295,1147,204,65535,4294967295,643,204,65535,4294967295,1148,204,887,4294967295,1149,58,65535,4294967295,1150,366,65535,4294967295,1151,367,65535,4294967295,367,108,65535,4294967295,1152,108,65535,4294967295,1088,344,65535,4294967295,1153,368,65535,4294967295,368,109,65535,4294967295,1154,109,65535,4294967295,1155,205,65535,4294967295,1156,369,65535,4294967295,1157,205,65535,4294967295,1155,205,65535,4294967295,1158,205,992,4294967295,1159,59,65535,4294967295,1160,370,65535,4294967295,1161,200,65535,4294967295,1162,60,65535,4294967295,107,21,65535,4294967295,655,206,65535,4294967295,1163,206,65535,4294967295,1164,206,333,4294967295,1165,371,65535,4294967295,1166,61,65535,4294967295,1167,329,65535,4294967295,1168,207,65535,4294967295,1169,207,464,4294967295,1170,208,65535,4294967295,1171,208,65535,4294967295,1172,208,333,4294967295,1173,372,65535,4294967295,1174,206,65535,4294967295,1102,351,65535,4294967295,1175,209,65535,4294967295,1176,209,65535,4294967295,1177,209,65535,4294967295,231,61,65535,192,1104,352,65535,4294967295,1178,35,65535,4294967295,1179,373,65535,4294967295,1180,112,65535,4294967295,1181,210,65535,4294967295,1182,210,65535,4294967295,1183,210,507,4294967295,1184,374,65535,4294967295,1185,375,65535,4294967295,1186,62,65535,4294967295,1187,211,65535,4294967295,1188,211,65535,4294967295,1189,211,65535,4294967295,1190,211,2528,4294967295,1191,376,65535,4294967295,1192,377,65535,4294967295,1193,378,65535,4294967295,1194,379,65535,4294967295,1195,211,65535,4294967295,1196,113,364,4294967295,1197,113,65535,4294967295,1198,212,65535,4294967295,1199,212,2551,4294967295,1200,380,65535,4294967295,675,213,65535,4294967295,1201,213,65535,4294967295,1202,213,249,4294967295,1203,381,65535,4294967295,890,286,65535,4294967295,1204,271,65535,4294967295,1205,214,65535,4294967295,1206,214,249,4294967295,1207,382,65535,4294967295,923,63,65535,4294967295,1208,63,65535,4294967295,1209,63,65535,4294967295,1210,215,65535,4294967295,1211,215,2575,4294967295,1212,383,65535,4294967295,1213,384,65535,4294967295,1214,385,65535,4294967295,1215,386,65535,4294967295,1216,114,364,4294967295,1217,114,65535,4294967295,390,115,65535,4294967295,1218,387,65535,4294967295,390,115,65535,4294967295,1219,115,65535,4294967295,685,216,65535,4294967295,1220,216,65535,4294967295,1221,217,65535,4294967295,1222,217,126,4294967295,100,18,65535,193,1223,238,65535,4294967295,1224,218,65535,4294967295,1225,218,124,4294967295,1226,116,65535,4294967295,1227,219,65535,4294967295,1228,117,65535,4294967295,1229,239,65535,4294967295,1230,219,65535,4294967295,1231,219,490,4294967295,1232,388,65535,4294967295,706,131,65535,194,1233,240,65535,4294967295,1234,220,65535,4294967295,1235,240,464,4294967295,1236,8,65535,195,1237,117,65535,4294967295,1238,221,829,4294967295,1239,36,65535,4294967295,695,222,65535,4294967295,1240,222,65535,4294967295,1241,222,829,4294967295,1242,389,65535,4294967295,1243,223,829,4294967295,1244,390,65535,4294967295,1245,391,65535,4294967295,1246,224,65535,4294967295,1247,224,829,4294967295,1248,392,65535,4294967295,1249,64,65535,4294967295,390,115,65535,4294967295,700,225,65535,4294967295,1250,225,65535,4294967295,1251,65,65535,4294967295,702,226,65535,4294967295,1252,226,65535,4294967295,408,122,65535,4294967295,1253,66,65535,4294967295,1254,157,65535,4294967295,1255,284,65535,4294967295,1256,120,65535,4294967295,1257,227,992,4294967295,1258,393,65535,4294967295,1259,66,65535,4294967295,1260,121,65535,4294967295,158,23,65535,4294967295,713,228,65535,4294967295,1261,228,65535,4294967295,1262,228,853,4294967295,1263,229,853,4294967295,1264,394,65535,4294967295,1265,395,65535,4294967295,1266,230,65535,4294967295,1267,230,853,4294967295,1268,396,65535,4294967295,1269,67,65535,4294967295,717,231,65535,4294967295,1270,231,65535,4294967295,408,122,65535,4294967295,1271,397,65535,4294967295,408,122,65535,4294967295,1272,122,65535,4294967295,1273,123,65535,4294967295,1274,232,65535,4294967295,1275,232,484,4294967295,1276,233,853,4294967295,1277,124,65535,4294967295,1278,234,65535,4294967295,1279,398,484,4294967295,1280,9,65535,196,1281,37,65535,4294967295,1282,125,65535,4294967295,728,125,65535,4294967295,1283,399,65535,4294967295,1284,400,65535,4294967295,1285,401,65535,4294967295,1286,125,65535,4294967295,1287,125,364,4294967295,1288,125,65535,4294967295,1289,235,65535,4294967295,1290,235,2707,4294967295,413,126,65535,4294967295,1291,402,65535,4294967295,413,126,65535,4294967295,1292,126,65535,4294967295,734,236,65535,4294967295,1293,236,65535,4294967295,1294,127,65535,4294967295,1295,237,65535,4294967295,1296,237,126,4294967295,1297,218,65535,4294967295,1298,238,65535,4294967295,1299,238,124,4294967295,98,17,65535,197,1300,127,65535,4294967295,1301,128,65535,4294967295,1302,239,65535,4294967295,1303,403,65535,4294967295,1304,7,65535,198,1305,220,65535,4294967295,1306,240,65535,4294967295,1307,404,65535,4294967295,401,80,65535,199,1308,128,65535,4294967295,1309,398,65535,4294967295,1310,241,887,4294967295,1311,38,65535,4294967295,744,242,65535,4294967295,1312,242,65535,4294967295,1313,242,887,4294967295,1314,405,65535,4294967295,1315,243,887,4294967295,1316,406,65535,4294967295,1317,407,65535,4294967295,1318,244,65535,4294967295,1319,244,887,4294967295,1320,408,65535,4294967295,1321,68,65535,4294967295,1322,409,65535,4294967295,413,126,65535,4294967295,751,245,65535,4294967295,1323,245,65535,4294967295,1324,69,65535,4294967295,428,133,65535,4294967295,1325,289,65535,4294967295,1326,131,65535,4294967295,1327,278,65535,4294967295,1328,132,65535,4294967295,1329,70,65535,4294967295,111,24,65535,4294967295,428,133,65535,4294967295,1330,410,65535,4294967295,428,133,65535,4294967295,1331,133,65535,4294967295,1332,134,65535,4294967295,1333,246,65535,4294967295,1334,246,507,4294967295,1335,411,65535,4294967295,1336,412,65535,4294967295,1337,413,65535,4294967295,1338,414,65535,4294967295,764,135,65535,4294967295,1339,135,65535,4294967295,1340,39,65535,4294967295,1341,136,65535,4294967295,1342,184,65535,4294967295,1343,415,65535,4294967295,769,247,65535,4294967295,1344,247,65535,4294967295,1345,247,364,4294967295,1346,416,65535,4294967295,770,136,65535,4294967295,1347,417,65535,4294967295,771,248,65535,4294967295,1348,248,65535,4294967295,1349,248,1429,4294967295,1350,418,65535,4294967295,675,213,65535,4294967295,1351,419,65535,4294967295,1352,136,65535,4294967295,1353,136,364,4294967295,1354,136,65535,4294967295,1355,420,65535,4294967295,774,249,65535,4294967295,1356,249,65535,4294967295,1357,249,1452,4294967295,1358,421,65535,4294967295,1359,422,65535,4294967295,775,250,65535,4294967295,1360,250,65535,4294967295,1361,250,464,4294967295,1362,423,65535,4294967295,1363,71,65535,4294967295,695,222,65535,4294967295,1364,424,65535,4294967295,435,137,65535,4294967295,1365,137,65535,4294967295,1366,138,65535,4294967295,578,177,65535,4294967295,1367,138,65535,4294967295,1368,40,65535,4294967295,713,228,65535,4294967295,1369,425,65535,4294967295,438,139,65535,4294967295,1370,139,65535,4294967295,1371,426,65535,4294967295,787,251,65535,4294967295,1372,251,65535,4294967295,1373,427,65535,4294967295,1374,72,65535,4294967295,1375,252,65535,4294967295,1376,252,65535,4294967295,1375,252,65535,4294967295,1377,252,65535,4294967295,1378,252,1539,4294967295,1379,428,65535,4294967295,1380,429,65535,4294967295,1381,430,65535,4294967295,790,253,65535,4294967295,1382,253,65535,4294967295,1383,253,490,4294967295,1384,431,65535,4294967295,1385,73,65535,4294967295,744,242,65535,4294967295,1386,432,65535,4294967295,445,140,65535,4294967295,1387,140,65535,4294967295,1388,141,65535,4294967295,591,181,65535,4294967295,1389,141,65535,4294967295,1390,41,65535,4294967295,1391,433,65535,4294967295,799,254,65535,4294967295,1392,254,65535,4294967295,1393,434,65535,4294967295,1394,255,65535,4294967295,1394,255,65535,4294967295,1395,255,65535,4294967295,1396,255,1604,4294967295,1397,74,65535,4294967295,802,256,65535,4294967295,1398,256,65535,4294967295,1399,256,333,4294967295,1400,435,65535,4294967295,1401,257,65535,4294967295,1401,257,65535,4294967295,1402,257,65535,4294967295,1403,257,1707,4294967295,1404,75,65535,4294967295,806,258,65535,4294967295,1405,258,65535,4294967295,1406,258,1719,4294967295,821,260,65535,4294967295,1407,436,65535,4294967295,805,142,65535,4294967295,1408,142,65535,4294967295,1409,42,65535,4294967295,454,143,65535,4294967295,1410,437,65535,4294967295,454,143,65535,4294967295,1411,143,65535,4294967295,1412,438,65535,4294967295,1413,439,65535,4294967295,1414,440,65535,4294967295,812,144,65535,4294967295,1415,144,65535,4294967295,1416,43,65535,4294967295,454,143,65535,4294967295,1417,259,65535,4294967295,1418,441,65535,4294967295,1417,259,65535,4294967295,1419,259,65535,4294967295,1420,76,65535,4294967295,1421,442,65535,4294967295,1422,443,65535,4294967295,1423,444,65535,4294967295,461,146,65535,4294967295,1424,146,65535,4294967295,1425,445,65535,4294967295,821,260,65535,4294967295,1426,260,65535,4294967295,1427,260,992,4294967295,1428,261,992,4294967295,1429,446,65535,4294967295,1430,262,65535,4294967295,1431,262,992,4294967295,1432,77,65535,4294967295,113,26,65535,4294967295,114,27,65535,4294967295,1433,78,65535,4294967295,1434,217,65535,4294967295,1435,263,65535,4294967295,1436,263,333,4294967295,1437,447,65535,4294967295,1438,448,65535,4294967295,1439,449,65535,4294967295,1440,264,65535,4294967295,1441,264,65535,4294967295,276,78,65535,200,1442,265,65535,4294967295,1443,265,333,4294967295,1444,450,65535,4294967295,1445,451,65535,4294967295,1446,452,65535,4294967295,1447,148,65535,4294967295,1448,453,65535,4294967295,1449,266,65535,4294967295,1450,266,65535,4294967295,1451,266,142,4294967295,551,169,65535,201,1452,267,65535,4294967295,1453,267,333,4294967295,1454,454,65535,4294967295,840,268,65535,4294967295,1455,268,65535,4294967295,1456,268,142,4294967295,1457,455,65535,4294967295,557,149,65535,4294967295,1458,149,65535,4294967295,1459,44,65535,4294967295,1460,456,65535,4294967295,1461,269,65535,4294967295,1462,269,65535,4294967295,1463,269,142,4294967295,1464,457,65535,4294967295,1465,458,65535,202,1466,270,65535,4294967295,1467,459,65535,4294967295,1468,460,65535,4294967295,1469,270,142,4294967295,1470,461,65535,4294967295,1466,270,65535,203,1471,79,65535,4294967295,116,28,65535,4294967295,1472,291,65535,4294967295,1473,271,1429,4294967295,1474,80,65535,4294967295,1475,81,65535,4294967295,1476,462,65535,4294967295,1477,279,65535,4294967295,1478,150,65535,4294967295,1479,370,65535,4294967295,1480,272,65535,4294967295,1481,272,65535,4294967295,1482,273,65535,4294967295,1483,273,65535,4294967295,371,110,65535,204,1484,274,65535,4294967295,1485,274,65535,4294967295,1486,463,65535,4294967295,1487,274,65535,4294967295,1488,464,464,4294967295,1489,465,65535,4294967295,1490,278,65535,205,1491,466,65535,4294967295,1492,275,65535,4294967295,1493,275,333,4294967295,1494,467,65535,4294967295,1495,468,65535,4294967295,860,276,65535,4294967295,1496,276,65535,4294967295,1497,469,333,4294967295,1498,470,65535,4294967295,1499,471,65535,4294967295,883,277,65535,4294967295,1500,277,65535,4294967295,883,277,65535,206,1501,278,65535,4294967295,1502,472,65535,4294967295,1501,278,65535,207,1503,82,65535,4294967295,1504,272,65535,4294967295,627,200,65535,208,1505,469,65535,4294967295,1506,473,65535,4294967295,1507,46,65535,4294967295,1508,83,65535,4294967295,1509,474,65535,4294967295,1510,357,65535,4294967295,1511,84,65535,4294967295,1512,475,65535,4294967295,1513,279,65535,4294967295,1514,476,65535,4294967295,1513,279,65535,4294967295,1515,279,65535,4294967295,1513,279,65535,209,1516,280,65535,4294967295,1517,477,507,4294967295,1518,478,65535,4294967295,876,281,65535,4294967295,1519,281,65535,4294967295,1520,479,507,4294967295,1521,480,65535,4294967295,493,155,65535,4294967295,1522,481,65535,4294967295,493,155,65535,4294967295,1523,155,65535,4294967295,1524,482,65535,4294967295,879,282,65535,4294967295,1525,282,65535,4294967295,1526,282,142,4294967295,1527,483,65535,4294967295,1528,283,65535,4294967295,1529,484,65535,4294967295,1530,283,65535,4294967295,1531,485,484,4294967295,1532,486,65535,4294967295,1533,85,65535,210,1534,85,65535,4294967295,1535,284,65535,4294967295,1536,487,65535,4294967295,1537,466,65535,4294967295,1538,284,124,4294967295,1539,488,65535,4294967295,1535,284,65535,211,1540,486,65535,4294967295,1541,156,65535,4294967295,495,156,65535,4294967295,1542,156,65535,4294967295,495,156,65535,212,1543,285,65535,4294967295,1544,285,142,4294967295,119,29,65535,4294967295,900,288,65535,4294967295,1545,286,65535,4294967295,1546,214,65535,4294967295,1547,489,65535,4294967295,1548,286,65535,4294967295,1549,157,249,4294967295,1550,490,65535,4294967295,1551,7,65535,213,1552,90,65535,4294967295,1553,86,65535,4294967295,1554,86,65535,4294967295,1555,86,65535,4294967295,1556,288,65535,4294967295,1557,491,65535,4294967295,1558,287,65535,4294967295,1559,287,364,4294967295,1560,492,65535,4294967295,138,30,65535,214,1561,30,65535,4294967295,138,30,65535,4294967295,1562,288,65535,4294967295,1563,493,65535,4294967295,1564,288,65535,4294967295,507,157,65535,4294967295,1565,494,65535,4294967295,1566,288,65535,4294967295,1567,288,3260,4294967295,1568,495,65535,4294967295,1569,496,65535,4294967295,1570,289,1539,4294967295,1571,318,65535,4294967295,1572,497,65535,4294967295,1573,157,65535,4294967295,1574,157,364,4294967295,1575,157,65535,4294967295,1576,290,3287,4294967295,1577,498,65535,4294967295,1578,291,65535,4294967295,1579,499,65535,4294967295,1580,500,65535,4294967295,1581,291,65535,4294967295,1582,501,610,4294967295,1583,8,65535,215,1584,158,65535,4294967295,1585,158,65535,4294967295,1586,158,364,4294967295,1587,158,65535,4294967295,1588,501,65535,4294967295,1589,47,65535,4294967295,1590,47,65535,4294967295,1591,502,65535,4294967295,1592,159,65535,4294967295,1593,503,65535,4294967295,1594,159,65535,4294967295,1595,159,364,4294967295,1596,159,65535,4294967295,1597,504,65535,4294967295,1598,505,65535,4294967295,927,292,65535,4294967295,1599,506,65535,4294967295,1600,292,364,4294967295,1601,507,65535,4294967295,916,293,65535,4294967295,1602,201,65535,4294967295,1603,508,65535,4294967295,1604,293,65535,4294967295,1605,293,364,4294967295,1606,509,65535,4294967295,513,50,65535,4294967295,1607,87,65535,4294967295,1608,87,65535,4294967295,1609,510,65535,4294967295,1610,160,65535,4294967295,1611,160,364,4294967295,1612,160,65535,4294967295,1613,511,65535,4294967295,1614,294,65535,4294967295,1615,294,65535,4294967295,1616,294,629,4294967295,1617,512,65535,4294967295,385,63,65535,4294967295,1618,513,65535,4294967295,1619,161,364,4294967295,1620,161,65535,4294967295,1621,295,65535,4294967295,1622,295,3398,4294967295,1623,292,65535,4294967295,1624,296,65535,4294967295,1625,296,65535,4294967295,1626,514,65535,4294967295,1624,296,65535,4294967295,1627,296,65535,4294967295,1628,136,249,4294967295,1629,515,65535,4294967295,1630,516,65535,4294967295,929,297,65535,4294967295,1631,297,65535,4294967295,1632,517,610,4294967295,1633,518,65535,4294967295,522,162,65535,4294967295,1634,296,65535,4294967295,1635,162,364,4294967295,1636,162,65535,4294967295,1637,519,65535,4294967295,932,298,65535,4294967295,1638,298,65535,4294967295,1639,520,629,4294967295,1640,88,65535,4294967295,1641,88,65535,4294967295,1642,299,65535,4294967295,1643,299,1987,4294967295,1644,521,65535,4294967295,1645,163,364,4294967295,1646,163,65535,4294967295,1647,31,65535,4294967295,198,31,65535,4294967295,1648,164,65535,4294967295,1649,164,364,4294967295,1650,164,65535,4294967295,1651,522,65535,4294967295,1652,300,65535,4294967295,1653,300,629,4294967295,1654,523,65535,4294967295,1655,48,65535,4294967295,1656,48,65535,4294967295,1657,165,65535,4294967295,1658,165,364,4294967295,1659,165,65535,4294967295,1660,271,65535,4294967295,1661,524,65535,4294967295,1662,301,65535,4294967295,1663,525,1987,4294967295,1664,526,65535,4294967295,1665,8,65535,216,1666,89,65535,4294967295,1667,89,65535,4294967295,1668,302,3398,4294967295,1669,527,65535,4294967295,1670,528,65535,4294967295,1671,529,65535,4294967295,1672,303,65535,4294967295,1673,303,65535,4294967295,1674,303,364,4294967295,1675,303,65535,4294967295,1676,48,629,4294967295,1677,530,65535,4294967295,1678,531,65535,4294967295,1679,532,65535,4294967295,1680,304,65535,4294967295,1681,304,65535,4294967295,1682,304,364,4294967295,1683,533,65535,4294967295,1684,305,65535,4294967295,1685,534,65535,4294967295,1686,535,65535,4294967295,1687,536,65535,4294967295,1688,305,364,4294967295,1689,537,65535,4294967295,536,49,65535,4294967295,1690,90,65535,4294967295,1691,90,65535,4294967295,1692,530,65535,4294967295,1693,49,65535,4294967295,1694,49,65535,4294967295,889,157,65535,4294967295,137,16,65535,4294967295,1695,49,65535,4294967295,1696,531,65535,4294967295,1697,538,65535,4294967295,1698,167,65535,4294967295,1699,539,65535,4294967295,1700,168,65535,4294967295,1701,540,65535,4294967295,1702,541,65535,4294967295,986,306,65535,4294967295,1703,542,65535,4294967295,1704,306,65535,4294967295,1465,458,65535,4294967295,972,307,65535,4294967295,1705,543,65535,4294967295,1706,544,65535,4294967295,1707,307,65535,4294967295,972,307,65535,4294967295,1446,452,65535,4294967295,972,307,65535,217,1708,451,65535,4294967295,1709,169,65535,4294967295,1710,534,65535,4294967295,1711,308,65535,4294967295,1712,308,464,4294967295,1713,545,65535,4294967295,1714,546,65535,4294967295,976,171,65535,4294967295,1715,171,65535,4294967295,1716,547,65535,4294967295,1717,309,65535,4294967295,1718,309,484,4294967295,1719,310,65535,4294967295,1720,310,65535,4294967295,1721,310,65535,4294967295,1722,310,490,4294967295,1723,548,65535,4294967295,1724,549,65535,4294967295,555,172,65535,4294967295,1725,172,65535,4294967295,1726,311,65535,4294967295,1727,311,507,4294967295,1728,306,65535,4294967295,1729,312,65535,4294967295,1730,312,65535,4294967295,1731,550,65535,4294967295,1729,312,65535,4294967295,1732,312,65535,4294967295,1733,312,124,4294967295,1734,551,65535,4294967295,1735,552,65535,4294967295,988,313,65535,4294967295,1736,313,65535,4294967295,1737,313,126,4294967295,1738,553,65535,4294967295,556,173,65535,4294967295,1739,554,65535,4294967295,990,314,65535,4294967295,1740,314,65535,4294967295,1741,314,142,4294967295,1742,87,65535,4294967295,1743,93,65535,4294967295,1744,93,65535,4294967295,1745,93,65535,4294967295,1746,502,65535,4294967295,1747,315,65535,4294967295,1748,174,65535,4294967295,1749,555,65535,4294967295,1750,315,65535,4294967295,1751,315,65535,4294967295,1752,318,249,4294967295,1753,556,65535,4294967295,1754,53,65535,218,1755,557,65535,4294967295,1756,316,65535,4294967295,1757,558,1429,4294967295,1758,559,65535,4294967295,1759,174,65535,4294967295,1760,174,364,4294967295,1761,174,65535,4294967295,1762,317,65535,4294967295,1763,560,1452,4294967295,1764,561,65535,4294967295,1765,502,65535,4294967295,1766,50,65535,4294967295,1767,50,65535,4294967295,1768,94,65535,4294967295,1769,562,65535,4294967295,1770,563,65535,4294967295,1771,326,65535,4294967295,1772,318,65535,4294967295,1773,318,65535,4294967295,1774,318,249,4294967295,1775,564,65535,4294967295,1046,184,65535,219,1776,337,65535,4294967295,1777,94,65535,4294967295,1778,565,65535,4294967295,1779,319,65535,4294967295,1780,319,65535,4294967295,1781,566,65535,4294967295,1782,320,65535,4294967295,1783,320,65535,4294967295,1784,567,992,4294967295,1785,568,65535,4294967295,1786,53,65535,220,1787,569,65535,4294967295,1788,570,65535,4294967295,1011,321,65535,4294967295,1789,321,65535,4294967295,1790,430,464,4294967295,1791,176,65535,4294967295,1792,322,65535,4294967295,1793,177,65535,4294967295,1794,328,65535,4294967295,1795,322,65535,4294967295,1796,322,65535,4294967295,1797,322,124,4294967295,1798,571,65535,4294967295,146,19,65535,221,1799,51,65535,4294967295,1800,177,65535,4294967295,1801,323,65535,4294967295,1802,323,484,4294967295,1803,51,65535,4294967295,1804,572,65535,4294967295,1021,324,65535,4294967295,1805,324,65535,4294967295,1806,573,484,4294967295,1807,573,65535,4294967295,1808,178,65535,4294967295,1809,325,65535,4294967295,1810,426,853,4294967295,1811,574,65535,4294967295,1141,363,65535,4294967295,1812,251,65535,4294967295,1813,575,65535,4294967295,1814,326,65535,4294967295,1815,576,1539,4294967295,1816,577,65535,4294967295,1817,578,65535,4294967295,1028,327,65535,4294967295,1818,327,65535,4294967295,1819,421,490,4294967295,1820,579,65535,4294967295,1821,421,65535,4294967295,1822,180,65535,4294967295,1823,316,65535,4294967295,1824,343,65535,4294967295,1825,98,65535,4294967295,1826,181,65535,4294967295,1827,328,65535,4294967295,1828,328,490,4294967295,1829,329,65535,4294967295,1830,329,65535,4294967295,1831,329,126,4294967295,103,20,65535,222,1832,52,65535,4294967295,1833,181,65535,4294967295,1834,52,65535,4294967295,1041,330,65535,4294967295,1835,330,65535,4294967295,1836,435,507,4294967295,1837,182,65535,4294967295,668,210,65535,4294967295,1838,254,65535,4294967295,1839,247,65535,4294967295,1840,331,65535,4294967295,1841,331,65535,4294967295,1842,331,364,4294967295,1843,184,65535,4294967295,1844,580,65535,4294967295,1845,184,65535,4294967295,1846,184,364,4294967295,1847,184,65535,4294967295,1848,185,65535,4294967295,569,94,65535,4294967295,1849,482,65535,4294967295,1850,185,65535,4294967295,1851,581,65535,4294967295,1852,53,65535,4294967295,1853,186,65535,4294967295,338,98,65535,4294967295,1854,582,65535,4294967295,1855,186,65535,4294967295,1856,54,65535,42949
_(report truncated; full output in workflow logs)_ |
Summary
Implements Phase A of the direct
.g4codegen plan fromdocs/issue-141-direct-g4-codegen-plan.md:vscode-antlr4corpusImpact
This establishes the bootstrapped source frontend required by issue #141 without changing the production CLI or legacy
.interpcodegen path. The shared DFA correction preserves lexer priority for all compiled-DFA consumers without changing public APIs. Loading, semantic analysis, left-recursion rewriting, ATN construction, and final CLI cutover remain Phase B/C work.Part of #141.
Validation
cargo test --locked: 430 passedcargo clippy --locked --all-targets --all-features -- -D warningsPATH: 5 passedtools/grammar-frontend/update-stage0.sh --check: exact reproduction with a conflicting ambientCARGO_TARGET_DIRSummary by CodeRabbit