From 4497265e34f1f0ff9d8a112e2944ff93457d7dc1 Mon Sep 17 00:00:00 2001 From: Claude Bot Date: Fri, 29 Aug 2025 06:49:58 +0000 Subject: [PATCH] fix: add missing $ and _ characters to identifier tables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous fix for middle dot characters accidentally broke $ and _ character parsing in JavaScript identifiers. These characters are special cases in ECMAScript that must be explicitly added to the ID_Start and ID_Continue sets, as they are not included in the standard Unicode categories. This restores support for: - $ in destructuring: import { $ } from "bun" - _ in variable names: const _private = 123 - All other $ and _ usage in identifiers While maintaining the fix for Japanese middle dot characters. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- misctools/gen-unicode-table.ts | 4 ++-- src/js_lexer/identifier.zig | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/misctools/gen-unicode-table.ts b/misctools/gen-unicode-table.ts index 585c42b35a..29aa698e53 100644 --- a/misctools/gen-unicode-table.ts +++ b/misctools/gen-unicode-table.ts @@ -83,12 +83,12 @@ async function main() { { name: "isIDStartESNext", table: "idStartESNext", - check: (cp: number) => idStartESNextSet.has(cp), + check: (cp: number) => idStartESNextSet.has(cp) || cp === 0x24 || cp === 0x5F, // Add $ and _ }, { name: "isIDContinueESNext", table: "idContinueESNext", - check: (cp: number) => idContinueESNextSet.has(cp) && !ID_Continue_mistake.has(cp), + check: (cp: number) => (idContinueESNextSet.has(cp) && !ID_Continue_mistake.has(cp)) || cp === 0x24 || cp === 0x5F, // Add $ and _ }, ]; diff --git a/src/js_lexer/identifier.zig b/src/js_lexer/identifier.zig index 50c5d8d262..c0c2a3696b 100644 --- a/src/js_lexer/identifier.zig +++ b/src/js_lexer/identifier.zig @@ -62,7 +62,7 @@ pub fn isIDStartESNext(cp: u21) bool { } const idStartESNext = struct { pub const stage1 = [_]u16{0,256,512,768,1024,1280,1536,1792,2048,2304,2560,2816,3072,3328,3584,3840,4096,256,4352,4608,4864,256,5120,5376,5632,5888,6144,6400,6656,6912,256,7168,7424,7680,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,8192,8448,7936,7936,8704,8960,7936,7936,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,6912,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,9216,256,9472,9728,9984,10240,10496,10752,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,11008,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,256,11264,11520,256,11776,12032,12288,12544,12800,13056,13312,13568,13824,256,14080,14336,14592,14848,15104,15360,15616,15872,16128,16384,16640,16896,17152,17408,17664,17920,18176,18432,18688,18944,7936,19200,19456,19712,19968,256,256,256,20224,20480,20736,7936,7936,7936,7936,7936,7936,7936,7936,7936,20992,256,256,256,256,21248,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,256,256,21504,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,256,256,21760,22016,7936,7936,22272,22528,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,22784,256,256,256,256,23040,23296,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,23552,256,23808,24064,7936,7936,7936,7936,7936,7936,7936,7936,7936,24320,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,24576,24832,25088,25344,7936,7936,7936,7936,7936,7936,7936,25600,25856,26112,26368,7936,26624,7936,7936,26880,27136,27392,7936,7936,7936,7936,27648,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,27904,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,28160,28416,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,28672,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,28928,256,256,29184,7936,7936,7936,7936,7936,7936,7936,7936,7936,256,256,29440,7936,7936,7936,7936,7936,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,29696,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,29952,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936,7936}; - pub const stage2 = [_]u64{0,576460743847706622,297241973452963840,18410715276682199039,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,88094074470339,0,13609596598936928256,18446744056529672000,18428729675200069631,18446744073709551615,18446744073709551615,18446744073709550595,18446744073709551615,18446462598732840959,18446744069456527359,511,2119858418286592,18446744069414584320,18446392229988665343,18446744073709551615,11241196188469297151,281474976514048,18446744073709543424,563224831328255,301749971126844416,1168302407679,18446471390564450303,18446744069414616831,1023,2594073385365405680,18446181140919287808,2577745637692514273,1153765945374687232,247132830528276448,7881300924956672,2589004636761079776,144115200960823296,2589004636760940512,562965791113216,288167810662516712,65536,2594071186342010848,13539213312,2589567586714640353,1688864355778560,2882303761516978160,18158513712597581824,3457638613854978016,127,3940649673949182,127,2309783315290257366,4026531935,1,35184372088575,7936,0,9223380832947798015,18438229877581611008,18446744069414600707,17870283321406070975,18446744073709551615,18446744070446333439,9168765891372858879,18446744073701162813,18446744073696837631,134217727,18446744069414649855,4557642822898941951,18446744073709551614,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446638520593285119,18446744069548802046,144053615424700415,1125897759621119,527761286627327,4503599627370495,276824064,18446744069414584320,144115188075855871,18446469195802607615,18014398509481983,2147483647,8796093022142464,18446480190918885375,1023,18446744069422972927,2097151,549755813888,0,4503599627370464,8160,18158724812380307448,274877906943,68719476735,4611686018360336384,16717361816799216127,319718190147960832,18446744073709551615,18446744073709551615,18446744073709551615,0,18446744070475743231,4611686017001275199,6908521828386340863,2295745090394464220,0,9223934986808197120,536805376,0,17582049991377026180,18446744069414601696,511,0,0,0,0,0,18446744073709551615,18446744073709551615,18446744073709551615,3509778554814463,18446498607738650623,141836999983103,9187201948305063935,2139062143,2251241253188403424,18446744073709551614,18446744069288755199,17870283321406128127,18446462598732840928,18446744073709551615,18446744069414617087,18446462598732840960,18446744073709551615,18446744073709551615,8191,4611686018427322368,13198434443263,9223512774343131135,18446744070488326143,281474976710655,18446744060816261120,18446744073709551615,18446744073709550079,18445618173868443647,34359736251,4503599627370495,4503599627370492,7564921474075590656,18446462873610746880,2305843004918726783,2251799813685232,8935422993945886720,2199023255551,14159317224157876215,4495436853045886975,7890092085477381,18446602782178705022,18446466996645134335,18446744073709551615,34359738367,18446744073709551615,18446744073709551615,18446462667452317695,1152921504606845055,18446744073709551615,18446532967477018623,18446744073709551615,67108863,6881498030004502655,18446744073709551579,1125899906842623,18446744073709027328,4611686018427387903,18446744073709486080,18446744073709355007,1152640029630136575,0,18437455399478099968,18446744073709551615,2305843009213693951,576460743713488896,18446743798965862398,9223372036854775807,486341884,13258596753222922239,1073692671,18446744073709551615,576460752303423487,0,9007199254740991,0,0,0,0,18446744069951455231,131071,18446708893632430079,18014398509418495,18446744070488326143,4128527,18446744073709551615,18446744073709551615,18446462599806582783,1152921504591118335,18446463698244468735,17870001915148894207,2016486715970549759,0,36028797018963967,1095220854783,575897802350002111,0,10502394331027995967,36028792728190975,2147483647,15762594400829440,288230371860938751,0,13907115649320091647,0,18014398491590657,2305843004918726656,536870911,137438953215,18014398509481983,2251795522912255,262143,0,18446744073709551615,511,2251799813685247,2251799813685247,68719476735,0,0,0,0,0,848822976643071,0,18446463149025525759,18446462598732841023,18446462598732840963,36028792723996703,72057594037927928,10696049115004928,281474976710648,2199023190016,549755813880,20266198323101840,2251799813685240,335544350,9223389629040558079,1,18446464796682337663,2147483647,2589004636760940512,16643063808,0,0,9007199254740991,15032387456,281474976710655,176,0,0,140737488355327,251658240,281474976710655,16,72066390130950143,0,134217727,127,0,0,17592186044415,0,18446744069414584320,9223372041149743103,9223653511822045823,2,18446740770879700992,42949804031,290482175965394945,18446744073441181696,18446462599269712895,144115188075855871,140737488354815,18445618173802708993,65535,0,562949953420159,18446741595513421888,16778239,0,0,0,0,2251795518717952,4503599627239412,0,281474976710656,0,18446744073709551615,18446744073709551615,67108863,0,18446744073709551615,140737488355327,18446744073709551615,18446744073709551615,18446744073709551615,15,0,0,0,0,18446744073709486080,562949953421311,281474976710655,126,0,0,18446744073709551615,127,0,0,144115188075855871,18446462600880324607,9223372036854775807,70368744112128,281474976710655,16212958624174047247,65535,0,0,18446744073709551615,0,0,18446744073709551615,67583,4294443008,47244640256,18446744073709551615,18446744073709551615,18446744073709551615,72057594037927935,18446744073709551615,18446744073709551615,18446744073709551615,4194303,511,0,0,0,0,0,0,8065665457643847680,1125934266580991,18446463629527547904,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,1152921504606846975,18446744073709551615,2305570330330005503,67043839,0,18446744073709551615,18446744073707454463,17005555242810474495,18446744073709551599,8935141660164089791,18446744073709419615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446743249075830783,17870283321271910397,18437736874452713471,18446603336221163519,18446741874686295551,4087,8660801552383,0,0,0,18446462598732840960,70368744177663,0,0,4575692405780512767,16384,0,0,0,0,70368744112128,17592186044415,0,0,0,17592185978880,0,0,0,9223213153129594880,18446744073709551615,18446744073709551615,18446744073709551615,31,18446744073709551615,2063,0,0,790380184120328175,6843210385291930244,1152917029519358975,0,18446744073709551615,18446744073709551615,18446744073709551615,4294967295,288230376151711743,18446744073709551615,18446744073709551615,18446744073709551615,18446744070488326143,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446462615912710143,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446462607322775551,18446744073709551615,1073741823,0,0,1073741823,0,0,0,18446744073709551615,18446744073709488127,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,281474976710655,0}; + pub const stage2 = [_]u64{68719476736,576460745995190270,297241973452963840,18410715276682199039,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,88094074470339,0,13609596598936928256,18446744056529672000,18428729675200069631,18446744073709551615,18446744073709551615,18446744073709550595,18446744073709551615,18446462598732840959,18446744069456527359,511,2119858418286592,18446744069414584320,18446392229988665343,18446744073709551615,11241196188469297151,281474976514048,18446744073709543424,563224831328255,301749971126844416,1168302407679,18446471390564450303,18446744069414616831,1023,2594073385365405680,18446181140919287808,2577745637692514273,1153765945374687232,247132830528276448,7881300924956672,2589004636761079776,144115200960823296,2589004636760940512,562965791113216,288167810662516712,65536,2594071186342010848,13539213312,2589567586714640353,1688864355778560,2882303761516978160,18158513712597581824,3457638613854978016,127,3940649673949182,127,2309783315290257366,4026531935,1,35184372088575,7936,0,9223380832947798015,18438229877581611008,18446744069414600707,17870283321406070975,18446744073709551615,18446744070446333439,9168765891372858879,18446744073701162813,18446744073696837631,134217727,18446744069414649855,4557642822898941951,18446744073709551614,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446638520593285119,18446744069548802046,144053615424700415,1125897759621119,527761286627327,4503599627370495,276824064,18446744069414584320,144115188075855871,18446469195802607615,18014398509481983,2147483647,8796093022142464,18446480190918885375,1023,18446744069422972927,2097151,549755813888,0,4503599627370464,8160,18158724812380307448,274877906943,68719476735,4611686018360336384,16717361816799216127,319718190147960832,18446744073709551615,18446744073709551615,18446744073709551615,0,18446744070475743231,4611686017001275199,6908521828386340863,2295745090394464220,0,9223934986808197120,536805376,0,17582049991377026180,18446744069414601696,511,0,0,0,0,0,18446744073709551615,18446744073709551615,18446744073709551615,3509778554814463,18446498607738650623,141836999983103,9187201948305063935,2139062143,2251241253188403424,18446744073709551614,18446744069288755199,17870283321406128127,18446462598732840928,18446744073709551615,18446744069414617087,18446462598732840960,18446744073709551615,18446744073709551615,8191,4611686018427322368,13198434443263,9223512774343131135,18446744070488326143,281474976710655,18446744060816261120,18446744073709551615,18446744073709550079,18445618173868443647,34359736251,4503599627370495,4503599627370492,7564921474075590656,18446462873610746880,2305843004918726783,2251799813685232,8935422993945886720,2199023255551,14159317224157876215,4495436853045886975,7890092085477381,18446602782178705022,18446466996645134335,18446744073709551615,34359738367,18446744073709551615,18446744073709551615,18446462667452317695,1152921504606845055,18446744073709551615,18446532967477018623,18446744073709551615,67108863,6881498030004502655,18446744073709551579,1125899906842623,18446744073709027328,4611686018427387903,18446744073709486080,18446744073709355007,1152640029630136575,0,18437455399478099968,18446744073709551615,2305843009213693951,576460743713488896,18446743798965862398,9223372036854775807,486341884,13258596753222922239,1073692671,18446744073709551615,576460752303423487,0,9007199254740991,0,0,0,0,18446744069951455231,131071,18446708893632430079,18014398509418495,18446744070488326143,4128527,18446744073709551615,18446744073709551615,18446462599806582783,1152921504591118335,18446463698244468735,17870001915148894207,2016486715970549759,0,36028797018963967,1095220854783,575897802350002111,0,10502394331027995967,36028792728190975,2147483647,15762594400829440,288230371860938751,0,13907115649320091647,0,18014398491590657,2305843004918726656,536870911,137438953215,18014398509481983,2251795522912255,262143,0,18446744073709551615,511,2251799813685247,2251799813685247,68719476735,0,0,0,0,0,848822976643071,0,18446463149025525759,18446462598732841023,18446462598732840963,36028792723996703,72057594037927928,10696049115004928,281474976710648,2199023190016,549755813880,20266198323101840,2251799813685240,335544350,9223389629040558079,1,18446464796682337663,2147483647,2589004636760940512,16643063808,0,0,9007199254740991,15032387456,281474976710655,176,0,0,140737488355327,251658240,281474976710655,16,72066390130950143,0,134217727,127,0,0,17592186044415,0,18446744069414584320,9223372041149743103,9223653511822045823,2,18446740770879700992,42949804031,290482175965394945,18446744073441181696,18446462599269712895,144115188075855871,140737488354815,18445618173802708993,65535,0,562949953420159,18446741595513421888,16778239,0,0,0,0,2251795518717952,4503599627239412,0,281474976710656,0,18446744073709551615,18446744073709551615,67108863,0,18446744073709551615,140737488355327,18446744073709551615,18446744073709551615,18446744073709551615,15,0,0,0,0,18446744073709486080,562949953421311,281474976710655,126,0,0,18446744073709551615,127,0,0,144115188075855871,18446462600880324607,9223372036854775807,70368744112128,281474976710655,16212958624174047247,65535,0,0,18446744073709551615,0,0,18446744073709551615,67583,4294443008,47244640256,18446744073709551615,18446744073709551615,18446744073709551615,72057594037927935,18446744073709551615,18446744073709551615,18446744073709551615,4194303,511,0,0,0,0,0,0,8065665457643847680,1125934266580991,18446463629527547904,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,1152921504606846975,18446744073709551615,2305570330330005503,67043839,0,18446744073709551615,18446744073707454463,17005555242810474495,18446744073709551599,8935141660164089791,18446744073709419615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446743249075830783,17870283321271910397,18437736874452713471,18446603336221163519,18446741874686295551,4087,8660801552383,0,0,0,18446462598732840960,70368744177663,0,0,4575692405780512767,16384,0,0,0,0,70368744112128,17592186044415,0,0,0,17592185978880,0,0,0,9223213153129594880,18446744073709551615,18446744073709551615,18446744073709551615,31,18446744073709551615,2063,0,0,790380184120328175,6843210385291930244,1152917029519358975,0,18446744073709551615,18446744073709551615,18446744073709551615,4294967295,288230376151711743,18446744073709551615,18446744073709551615,18446744073709551615,18446744070488326143,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446462615912710143,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446462607322775551,18446744073709551615,1073741823,0,0,1073741823,0,0,0,18446744073709551615,18446744073709488127,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,281474976710655,0}; }; @@ -82,7 +82,7 @@ pub fn isIDContinueESNext(cp: u21) bool { } const idContinueESNext = struct { pub const stage1 = [_]u16{0,256,512,768,1024,1280,1536,1792,2048,2304,2560,2816,3072,3328,3584,3840,4096,256,4352,4608,4864,256,5120,5376,5632,5888,6144,6400,6656,256,256,6912,7168,7424,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7936,8192,7680,7680,8448,8704,7680,7680,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,8960,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,9216,256,9472,9728,9984,10240,10496,10752,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,11008,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,256,11264,11520,256,11776,12032,12288,12544,12800,13056,13312,13568,13824,256,14080,14336,14592,14848,15104,15360,15616,15872,16128,16384,16640,16896,17152,17408,17664,17920,18176,18432,18688,18944,7680,19200,19456,19712,19968,256,256,256,20224,20480,20736,7680,7680,7680,7680,7680,7680,7680,7680,7680,20992,256,256,256,256,21248,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,256,256,21504,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,256,256,21760,22016,7680,7680,22272,22528,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,22784,256,256,256,256,23040,23296,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,23552,256,23808,24064,7680,7680,7680,7680,7680,7680,7680,7680,7680,24320,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,24576,7680,24832,25088,7680,25344,25600,25856,26112,7680,7680,26368,7680,7680,7680,7680,26624,26880,27136,27392,7680,27648,7680,7680,27904,28160,28416,7680,7680,7680,7680,28672,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,28928,7680,7680,7680,7680,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,29184,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,29440,29696,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,29952,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,30208,256,256,30464,7680,7680,7680,7680,7680,7680,7680,7680,7680,256,256,30720,7680,7680,7680,7680,7680,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,30976,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,31232,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,31488,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680,7680}; - pub const stage2 = [_]u64{287948901175001088,576460745995190270,333270770471927808,18410715276682199039,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,88094074470339,18446744073709551615,13609878073913638911,18446744056529672128,18428729675200069631,18446744073709551615,18446744073709551615,18446744073709550843,18446744073709551615,18446462598732840959,18446744069456527359,13835058055282033151,2119858418286774,18446744069548736512,18446678103011885055,18446744073709551615,11529212845433552895,18446744073709486080,18446744073709545471,1125899906842623,2612087783874887679,70368744177663,18446471390799331327,18446744073692806911,18446744056529682431,18446744073709551615,18446462392574410751,17565725197581524975,5765733215448889759,15235112390417287150,18014125208779143,17576984196650090478,18302910150157089727,17576984196649951214,844217444219295,14123225865944680428,281200107273671,17582050746231021567,281265183931871,17577547146603651055,4221915814182367,18446744073709412351,18158794964244397535,3457638613854978030,3658904103781503,576460752303423486,67076095,4611685674830002134,4093607775,14024213633433600001,18446216308128218879,2305843009196916703,64,18446744073709551615,18446744073709487103,18446744070488326143,17870283321406070975,18446744073709551615,18446744070446333439,9168765891372858879,18446744073701162813,18446744073696837631,1123704775901183,18446744069414649855,4557642822898941951,18446744073709551614,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446638520593285119,18446744069548802046,144053615424700415,9007197111451647,3905461007941631,18446744073709551615,4394566287359,18446744069481674752,144115188075855871,18446471394825863167,18014398509481983,1152657619668697087,8796093022207936,18446480190918885375,134153215,18446744069683019775,11529215043920986111,13834777130128311295,32767,18446744073709551615,4494803601399807,18446744073709551615,4503599627370495,72057594037927935,4611686018427380735,16717361816799216127,576460752302833664,18446744070475743231,4611686017001275199,6908521828386340863,2295745090394464220,9223372036854788096,9223934986809245697,536805376,562821641207808,17582049991377026180,18446744069414601696,511,0,0,0,0,0,18446744073709551615,18446744073709551615,18446744073709551615,4494940973301759,18446498607738650623,9223513873854758911,9187201948305063935,18446744071553646463,2251518330118602976,18446744073709551614,18446744069389418495,18446744073709551615,18446462598732840928,18446744073709551615,18446744069414617087,18446462598732840960,18446744073709551615,18446744073709551615,18446744073709551615,0,18446744073709551615,18446744073709551615,8191,4611686018427322368,17592185987071,13830835930631503871,18446744073709551615,1125899906842623,18446744060816261120,18446744073709551615,18446744073709550079,18445618173868443647,18691697672191,4503599627370495,18446744073709551615,16789419406609285183,18446532967477018623,2305843004919775231,18446744073709551615,9223372032626884609,36028797018963967,18194542490348896255,18446744073709551615,35184368733388807,18446602782178705022,18446466996645134335,18446744073709551615,288010473826156543,18446744073709551615,18446744073709551615,18446462667452317695,1152921504606845055,18446744073709551615,18446532967477018623,18446744073709551615,67108863,6881498031078244479,18446744073709551579,1125899906842623,18446744073709027328,4611686018427387903,18446744073709486080,18446744073709355007,1152640029630136575,7036870122864639,18437455399478157312,18446744073709551615,2305843009213693951,9799832780635308032,18446743936404815870,9223372036854775807,486341884,13258596753222922239,1073692671,18446744073709551615,576460752303423487,0,9007199254740991,0,2305843009213693952,0,0,18446744069951455231,4295098367,18446708893632430079,576460752303359999,18446744070488326143,4128527,18446744073709551615,18446744073709551615,18446466993558126591,1152921504591118335,18446463698244468735,17870001915148894207,2016486715970549759,0,36028797018963967,1095220854783,575897802350002111,0,10502394331027995967,36028792728190975,2147483647,15762594400829440,288230371860938751,0,13907115649320091647,0,9745789593611923567,2305843004918726656,536870911,549755813631,18014398509481983,2251795522912255,262143,0,18446744073709551615,511,2251799813685247,2251799813685247,287950000686628863,0,0,0,0,0,875211255709695,16140901064495857664,18446463149025525759,18446462598732972031,18446462598732841023,36028792723996703,18446744073709551615,9241386160486350975,576460752303423487,287951100198191108,18437736874454810623,22517998136787184,18446744073709551615,402644511,13907115649319829503,3,18446464796682337663,287957697268023295,18153444948953374703,8760701963286943,0,0,18446744073709551615,16173172735,18446744073709551615,67043519,0,0,18392700878181105663,1056964609,18446744073709551615,67043345,144115188075855871,1023,287966492958392319,127,0,0,576460752303423487,0,18446744069414584320,9223376434901286911,17996384110963061375,67043343,18446740770879700992,120208752639,9223372036854775807,18446744073709486208,18446462599336820735,144115188075855871,18410715276690587135,18445618173869752321,36027697507139583,0,13006395723845991295,18446741595580465407,4393784803327,0,0,0,0,36028792723996672,14411518807585456127,67043335,281474976710656,0,18446744073709551615,18446744073709551615,67108863,0,18446744073709551615,140737488355327,18446744073709551615,18446744073709551615,18446744073709551615,15,0,0,0,0,18446744073709486080,562949953421311,281474976710655,4194303,0,0,18446744073709551615,127,0,0,144115188075855871,18446466994631868415,9223372036854775807,8796093022143487,36028797018963967,16212958624241090575,65535,0,0,18446744073709551615,0,0,18446744073709551615,18446744073709520895,4294934783,844540894248960,18446744073709551615,18446744073709551615,18446744073709551615,72057594037927935,18446744073709551615,18446744073709551615,18446744073709551615,4194303,511,0,0,0,0,0,0,8065665457643847680,1125934266580991,18446463629527547904,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,1152921504606846975,18446744073709551615,2305570330330005503,1677656575,0,18446532967477018623,127,0,0,0,17872504197455282176,65970697670631,0,0,28,0,0,18446744073709551615,18446744073707454463,17005555242810474495,18446744073709551599,8935141660164089791,18446744073709419615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446743249075830783,17870283321271910397,18437736874452713471,18446603336221163519,18446741874686295551,18446744073709539319,17906312118425092095,9042383626829823,281470547525648,0,8660801552383,0,0,0,18446471240106377087,70368744177663,32768,0,4611439727822766079,17407,0,0,0,0,140737488289792,288230376151711743,0,0,0,288230376151646208,0,0,0,9223213153129594880,18446744073709551615,18446744073709551615,18446744073709551615,8323103,18446744073709551615,67047423,0,0,790380184120328175,6843210385291930244,1152917029519358975,0,0,0,0,287948901175001088,18446744073709551615,18446744073709551615,18446744073709551615,4294967295,288230376151711743,18446744073709551615,18446744073709551615,18446744073709551615,18446744070488326143,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446462615912710143,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446462607322775551,18446744073709551615,1073741823,0,0,1073741823,0,0,0,18446744073709551615,18446744073709488127,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,281474976710655,0,18446744073709551615,18446744073709551615,18446744073709551615,281474976710655}; + pub const stage2 = [_]u64{287948969894477824,576460745995190270,333270770471927808,18410715276682199039,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,88094074470339,18446744073709551615,13609878073913638911,18446744056529672128,18428729675200069631,18446744073709551615,18446744073709551615,18446744073709550843,18446744073709551615,18446462598732840959,18446744069456527359,13835058055282033151,2119858418286774,18446744069548736512,18446678103011885055,18446744073709551615,11529212845433552895,18446744073709486080,18446744073709545471,1125899906842623,2612087783874887679,70368744177663,18446471390799331327,18446744073692806911,18446744056529682431,18446744073709551615,18446462392574410751,17565725197581524975,5765733215448889759,15235112390417287150,18014125208779143,17576984196650090478,18302910150157089727,17576984196649951214,844217444219295,14123225865944680428,281200107273671,17582050746231021567,281265183931871,17577547146603651055,4221915814182367,18446744073709412351,18158794964244397535,3457638613854978030,3658904103781503,576460752303423486,67076095,4611685674830002134,4093607775,14024213633433600001,18446216308128218879,2305843009196916703,64,18446744073709551615,18446744073709487103,18446744070488326143,17870283321406070975,18446744073709551615,18446744070446333439,9168765891372858879,18446744073701162813,18446744073696837631,1123704775901183,18446744069414649855,4557642822898941951,18446744073709551614,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446638520593285119,18446744069548802046,144053615424700415,9007197111451647,3905461007941631,18446744073709551615,4394566287359,18446744069481674752,144115188075855871,18446471394825863167,18014398509481983,1152657619668697087,8796093022207936,18446480190918885375,134153215,18446744069683019775,11529215043920986111,13834777130128311295,32767,18446744073709551615,4494803601399807,18446744073709551615,4503599627370495,72057594037927935,4611686018427380735,16717361816799216127,576460752302833664,18446744070475743231,4611686017001275199,6908521828386340863,2295745090394464220,9223372036854788096,9223934986809245697,536805376,562821641207808,17582049991377026180,18446744069414601696,511,0,0,0,0,0,18446744073709551615,18446744073709551615,18446744073709551615,4494940973301759,18446498607738650623,9223513873854758911,9187201948305063935,18446744071553646463,2251518330118602976,18446744073709551614,18446744069389418495,18446744073709551615,18446462598732840928,18446744073709551615,18446744069414617087,18446462598732840960,18446744073709551615,18446744073709551615,18446744073709551615,0,18446744073709551615,18446744073709551615,8191,4611686018427322368,17592185987071,13830835930631503871,18446744073709551615,1125899906842623,18446744060816261120,18446744073709551615,18446744073709550079,18445618173868443647,18691697672191,4503599627370495,18446744073709551615,16789419406609285183,18446532967477018623,2305843004919775231,18446744073709551615,9223372032626884609,36028797018963967,18194542490348896255,18446744073709551615,35184368733388807,18446602782178705022,18446466996645134335,18446744073709551615,288010473826156543,18446744073709551615,18446744073709551615,18446462667452317695,1152921504606845055,18446744073709551615,18446532967477018623,18446744073709551615,67108863,6881498031078244479,18446744073709551579,1125899906842623,18446744073709027328,4611686018427387903,18446744073709486080,18446744073709355007,1152640029630136575,7036870122864639,18437455399478157312,18446744073709551615,2305843009213693951,9799832780635308032,18446743936404815870,9223372036854775807,486341884,13258596753222922239,1073692671,18446744073709551615,576460752303423487,0,9007199254740991,0,2305843009213693952,0,0,18446744069951455231,4295098367,18446708893632430079,576460752303359999,18446744070488326143,4128527,18446744073709551615,18446744073709551615,18446466993558126591,1152921504591118335,18446463698244468735,17870001915148894207,2016486715970549759,0,36028797018963967,1095220854783,575897802350002111,0,10502394331027995967,36028792728190975,2147483647,15762594400829440,288230371860938751,0,13907115649320091647,0,9745789593611923567,2305843004918726656,536870911,549755813631,18014398509481983,2251795522912255,262143,0,18446744073709551615,511,2251799813685247,2251799813685247,287950000686628863,0,0,0,0,0,875211255709695,16140901064495857664,18446463149025525759,18446462598732972031,18446462598732841023,36028792723996703,18446744073709551615,9241386160486350975,576460752303423487,287951100198191108,18437736874454810623,22517998136787184,18446744073709551615,402644511,13907115649319829503,3,18446464796682337663,287957697268023295,18153444948953374703,8760701963286943,0,0,18446744073709551615,16173172735,18446744073709551615,67043519,0,0,18392700878181105663,1056964609,18446744073709551615,67043345,144115188075855871,1023,287966492958392319,127,0,0,576460752303423487,0,18446744069414584320,9223376434901286911,17996384110963061375,67043343,18446740770879700992,120208752639,9223372036854775807,18446744073709486208,18446462599336820735,144115188075855871,18410715276690587135,18445618173869752321,36027697507139583,0,13006395723845991295,18446741595580465407,4393784803327,0,0,0,0,36028792723996672,14411518807585456127,67043335,281474976710656,0,18446744073709551615,18446744073709551615,67108863,0,18446744073709551615,140737488355327,18446744073709551615,18446744073709551615,18446744073709551615,15,0,0,0,0,18446744073709486080,562949953421311,281474976710655,4194303,0,0,18446744073709551615,127,0,0,144115188075855871,18446466994631868415,9223372036854775807,8796093022143487,36028797018963967,16212958624241090575,65535,0,0,18446744073709551615,0,0,18446744073709551615,18446744073709520895,4294934783,844540894248960,18446744073709551615,18446744073709551615,18446744073709551615,72057594037927935,18446744073709551615,18446744073709551615,18446744073709551615,4194303,511,0,0,0,0,0,0,8065665457643847680,1125934266580991,18446463629527547904,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,1152921504606846975,18446744073709551615,2305570330330005503,1677656575,0,18446532967477018623,127,0,0,0,17872504197455282176,65970697670631,0,0,28,0,0,18446744073709551615,18446744073707454463,17005555242810474495,18446744073709551599,8935141660164089791,18446744073709419615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446743249075830783,17870283321271910397,18437736874452713471,18446603336221163519,18446741874686295551,18446744073709539319,17906312118425092095,9042383626829823,281470547525648,0,8660801552383,0,0,0,18446471240106377087,70368744177663,32768,0,4611439727822766079,17407,0,0,0,0,140737488289792,288230376151711743,0,0,0,288230376151646208,0,0,0,9223213153129594880,18446744073709551615,18446744073709551615,18446744073709551615,8323103,18446744073709551615,67047423,0,0,790380184120328175,6843210385291930244,1152917029519358975,0,0,0,0,287948901175001088,18446744073709551615,18446744073709551615,18446744073709551615,4294967295,288230376151711743,18446744073709551615,18446744073709551615,18446744073709551615,18446744070488326143,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446462615912710143,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,18446462607322775551,18446744073709551615,1073741823,0,0,1073741823,0,0,0,18446744073709551615,18446744073709488127,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615,281474976710655,0,18446744073709551615,18446744073709551615,18446744073709551615,281474976710655}; };