app-builder-lib 26.14.0 → 26.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/configuration.d.ts +11 -0
- package/out/configuration.js.map +1 -1
- package/out/electron/ElectronFramework.js +1 -5
- package/out/electron/ElectronFramework.js.map +1 -1
- package/out/frameworks/LibUiFramework.d.ts +25 -0
- package/out/frameworks/LibUiFramework.js +107 -19
- package/out/frameworks/LibUiFramework.js.map +1 -1
- package/out/mac/MacTargetHelper.d.ts +7 -2
- package/out/mac/MacTargetHelper.js +13 -10
- package/out/mac/MacTargetHelper.js.map +1 -1
- package/out/macPackager.js +2 -3
- package/out/macPackager.js.map +1 -1
- package/out/node-module-collector/nodeModulesCollector.d.ts +17 -8
- package/out/node-module-collector/nodeModulesCollector.js +86 -60
- package/out/node-module-collector/nodeModulesCollector.js.map +1 -1
- package/out/options/linuxOptions.d.ts +10 -0
- package/out/options/linuxOptions.js.map +1 -1
- package/out/options/macOptions.d.ts +12 -2
- package/out/options/macOptions.js.map +1 -1
- package/out/packager.d.ts +0 -4
- package/out/packager.js +0 -19
- package/out/packager.js.map +1 -1
- package/out/targets/FpmTarget.js +6 -5
- package/out/targets/FpmTarget.js.map +1 -1
- package/out/targets/LinuxTargetHelper.d.ts +1 -0
- package/out/targets/LinuxTargetHelper.js +23 -0
- package/out/targets/LinuxTargetHelper.js.map +1 -1
- package/out/targets/MsiTarget.js +2 -1
- package/out/targets/MsiTarget.js.map +1 -1
- package/out/targets/appimage/AppImageTarget.js +6 -1
- package/out/targets/appimage/AppImageTarget.js.map +1 -1
- package/out/targets/appimage/appImageUtil.d.ts +2 -0
- package/out/targets/appimage/appImageUtil.js +2 -2
- package/out/targets/appimage/appImageUtil.js.map +1 -1
- package/out/targets/archive.d.ts +0 -1
- package/out/targets/archive.js +60 -88
- package/out/targets/archive.js.map +1 -1
- package/out/targets/blockmap/blockmap.js +8 -4
- package/out/targets/blockmap/blockmap.js.map +1 -1
- package/out/targets/nsis/NsisTarget.js +6 -12
- package/out/targets/nsis/NsisTarget.js.map +1 -1
- package/out/targets/pkg.d.ts +13 -0
- package/out/targets/pkg.js +34 -9
- package/out/targets/pkg.js.map +1 -1
- package/out/targets/snap/core24.js +4 -3
- package/out/targets/snap/core24.js.map +1 -1
- package/out/targets/snap/coreLegacy.d.ts +23 -0
- package/out/targets/snap/coreLegacy.js +161 -23
- package/out/targets/snap/coreLegacy.js.map +1 -1
- package/out/toolsets/7zip.d.ts +2 -0
- package/out/toolsets/7zip.js +72 -0
- package/out/toolsets/7zip.js.map +1 -0
- package/out/toolsets/wine.d.ts +5 -0
- package/out/toolsets/wine.js +100 -0
- package/out/toolsets/wine.js.map +1 -0
- package/out/util/electronGet.js +36 -5
- package/out/util/electronGet.js.map +1 -1
- package/out/util/packageDependencies.d.ts +0 -6
- package/out/util/packageDependencies.js +0 -17
- package/out/util/packageDependencies.js.map +1 -1
- package/out/util/yarn.d.ts +0 -3
- package/out/util/yarn.js +3 -15
- package/out/util/yarn.js.map +1 -1
- package/out/version.d.ts +1 -1
- package/out/version.js +1 -1
- package/out/version.js.map +1 -1
- package/out/vm/WineVm.d.ts +5 -2
- package/out/vm/WineVm.js +19 -5
- package/out/vm/WineVm.js.map +1 -1
- package/out/vm/vm.js.map +1 -1
- package/package.json +9 -9
- package/scheme.json +25 -4
- package/templates/snap/desktop-common.sh +444 -0
- package/templates/snap/desktop-gnome-specific.sh +31 -0
- package/templates/snap/desktop-init.sh +52 -0
- package/out/util/appBuilder.d.ts +0 -4
- package/out/util/appBuilder.js +0 -36
- package/out/util/appBuilder.js.map +0 -1
- package/out/wine.d.ts +0 -5
- package/out/wine.js +0 -31
- package/out/wine.js.map +0 -1
package/out/targets/archive.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.tar = tar;
|
|
4
4
|
exports.compute7zCompressArgs = compute7zCompressArgs;
|
|
5
|
-
exports.computeZipCompressArgs = computeZipCompressArgs;
|
|
6
5
|
exports.archive = archive;
|
|
7
6
|
const builder_util_1 = require("builder-util");
|
|
8
7
|
const fs_extra_1 = require("fs-extra");
|
|
9
8
|
const path = require("path");
|
|
10
9
|
const tar_1 = require("tar");
|
|
11
10
|
const linux_1 = require("../toolsets/linux");
|
|
11
|
+
const _7zip_1 = require("../toolsets/7zip");
|
|
12
12
|
const ALLOWED_7Z_FILTERS = new Set(["BCJ", "BCJ2", "ARM", "ARMT", "IA64", "PPC", "SPARC", "DELTA"]);
|
|
13
13
|
function validateCompressionLevel(level) {
|
|
14
14
|
if (!/^[0-9]$/.test(level)) {
|
|
@@ -38,49 +38,42 @@ async function tar({ compression, format, outFile, dirToArchive, isMacApp, tempD
|
|
|
38
38
|
if (format === "tar.lz") {
|
|
39
39
|
const lzipPath = process.platform === "darwin" ? (await (0, linux_1.getLinuxToolsMacToolset)()).lzip : "lzip";
|
|
40
40
|
await (0, builder_util_1.exec)(lzipPath, [compression === "store" ? "-1" : "-9", "--keep" /* keep (don't delete) input files */, tarFile]);
|
|
41
|
-
//
|
|
41
|
+
// lzip creates the output file in the same directory as the input with a .lz suffix
|
|
42
42
|
await (0, fs_extra_1.move)(`${tarFile}.lz`, outFile);
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
method: "DEFAULT",
|
|
48
|
-
compression,
|
|
49
|
-
});
|
|
45
|
+
const compressFormat = format === "tar.xz" ? "xz" : format === "tar.bz2" ? "bzip2" : "gzip";
|
|
46
|
+
const args = compute7zCompressArgs(compressFormat, { isRegularFile: true, method: "DEFAULT", compression });
|
|
50
47
|
args.push(outFile, tarFile);
|
|
51
|
-
await (0, builder_util_1.exec)(await (0,
|
|
52
|
-
cwd: path.dirname(dirToArchive),
|
|
53
|
-
}, builder_util_1.debug7z.enabled);
|
|
48
|
+
await (0, builder_util_1.exec)(await (0, _7zip_1.getPath7za)(), args, { cwd: path.dirname(dirToArchive) }, builder_util_1.debug7z.enabled);
|
|
54
49
|
}
|
|
55
50
|
function compute7zCompressArgs(format, options = {}) {
|
|
56
51
|
let storeOnly = options.compression === "store";
|
|
57
52
|
const args = debug7zArgs("a");
|
|
58
|
-
let isLevelSet = false;
|
|
59
53
|
const compressionLevel = process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL;
|
|
60
54
|
if (compressionLevel != null) {
|
|
61
55
|
validateCompressionLevel(compressionLevel);
|
|
62
|
-
storeOnly = false;
|
|
56
|
+
storeOnly = false; // env var overrides "store" config
|
|
63
57
|
args.push(`-mx=${compressionLevel}`);
|
|
64
|
-
isLevelSet = true;
|
|
65
58
|
}
|
|
66
|
-
|
|
67
|
-
|
|
59
|
+
else if (storeOnly) {
|
|
60
|
+
// -mx=0 is the universal "no compression" flag across all formats (zip, 7z, gzip, xz, bzip2).
|
|
61
|
+
// -mm=Copy would only be valid for zip/7z and causes E_INVALIDARG on xz/gzip/bzip2.
|
|
62
|
+
args.push("-mx=0");
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const isZip = format === "zip";
|
|
66
|
+
// ZIP uses level 7 by default; everything else (7z, gzip, xz, bzip2) uses level 9
|
|
67
|
+
args.push("-mx=" + (isZip && options.compression !== "maximum" ? "7" : "9"));
|
|
68
68
|
if (isZip && options.compression === "maximum") {
|
|
69
69
|
// http://superuser.com/a/742034
|
|
70
70
|
args.push("-mfb=258", "-mpass=15");
|
|
71
71
|
}
|
|
72
|
-
if (!isLevelSet) {
|
|
73
|
-
// https://github.com/electron-userland/electron-builder/pull/3032
|
|
74
|
-
args.push("-mx=" + (!isZip || options.compression === "maximum" ? "9" : "7"));
|
|
75
|
-
}
|
|
76
72
|
}
|
|
77
73
|
if (options.dictSize != null) {
|
|
78
74
|
args.push(`-md=${options.dictSize}m`);
|
|
79
75
|
}
|
|
80
|
-
//
|
|
81
|
-
// https://stackoverflow.com/questions/27136783/7zip-produces-different-output-from-identical-input
|
|
82
|
-
// tc and ta are off by default, but to be sure, we explicitly set it to off
|
|
83
|
-
// disable "Stores NTFS timestamps for files: Modification time, Creation time, Last access time." to produce the same archive for the same data
|
|
76
|
+
// Disable NTFS timestamps for reproducible archives
|
|
84
77
|
if (!options.isRegularFile) {
|
|
85
78
|
args.push("-mtc=off");
|
|
86
79
|
}
|
|
@@ -91,8 +84,6 @@ function compute7zCompressArgs(format, options = {}) {
|
|
|
91
84
|
if (options.isArchiveHeaderCompressed === false) {
|
|
92
85
|
args.push("-mhc=off");
|
|
93
86
|
}
|
|
94
|
-
// https://www.7-zip.org/7z.html
|
|
95
|
-
// Filters: BCJ, BCJ2, ARM, ARMT, IA64, PPC, SPARC, ...
|
|
96
87
|
const sevenZFilter = process.env.ELECTRON_BUILDER_7Z_FILTER;
|
|
97
88
|
if (sevenZFilter) {
|
|
98
89
|
if (!ALLOWED_7Z_FILTERS.has(sevenZFilter.toUpperCase())) {
|
|
@@ -100,60 +91,19 @@ function compute7zCompressArgs(format, options = {}) {
|
|
|
100
91
|
}
|
|
101
92
|
args.push(`-mf=${sevenZFilter}`);
|
|
102
93
|
}
|
|
103
|
-
// args valid only for 7z
|
|
104
|
-
// -mtm=off disable "Stores last Modified timestamps for files."
|
|
105
94
|
args.push("-mtm=off", "-mta=off");
|
|
106
95
|
}
|
|
107
|
-
if (options.method != null) {
|
|
108
|
-
|
|
109
|
-
args.push(`-mm=${options.method}`);
|
|
110
|
-
}
|
|
96
|
+
if (options.method != null && options.method !== "DEFAULT") {
|
|
97
|
+
args.push(`-mm=${options.method}`);
|
|
111
98
|
}
|
|
112
|
-
else if (
|
|
99
|
+
else if (format === "zip") {
|
|
100
|
+
// -mm is only set explicitly for zip (Deflate/Copy) and includes the UTF-8 flag.
|
|
101
|
+
// For all other formats the codec is implicit from the output file extension.
|
|
113
102
|
args.push(`-mm=${storeOnly ? "Copy" : "Deflate"}`);
|
|
114
|
-
}
|
|
115
|
-
if (isZip) {
|
|
116
|
-
// -mcu switch: 7-Zip uses UTF-8, if there are non-ASCII symbols.
|
|
117
|
-
// because default mode: 7-Zip uses UTF-8, if the local code page doesn't contain required symbols.
|
|
118
|
-
// but archive should be the same regardless where produced
|
|
119
103
|
args.push("-mcu");
|
|
120
104
|
}
|
|
121
105
|
return args;
|
|
122
106
|
}
|
|
123
|
-
function computeZipCompressArgs(options = {}) {
|
|
124
|
-
let storeOnly = options.compression === "store";
|
|
125
|
-
// do not deref symlinks
|
|
126
|
-
const args = ["-q", "-r", "-y"];
|
|
127
|
-
if (builder_util_1.debug7z.enabled) {
|
|
128
|
-
args.push("-v");
|
|
129
|
-
}
|
|
130
|
-
const compressionLevelZip = process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL;
|
|
131
|
-
if (compressionLevelZip != null) {
|
|
132
|
-
validateCompressionLevel(compressionLevelZip);
|
|
133
|
-
storeOnly = false;
|
|
134
|
-
args.push(`-${compressionLevelZip}`);
|
|
135
|
-
}
|
|
136
|
-
else if (!storeOnly) {
|
|
137
|
-
// https://github.com/electron-userland/electron-builder/pull/3032
|
|
138
|
-
args.push("-" + (options.compression === "maximum" ? "9" : "7"));
|
|
139
|
-
}
|
|
140
|
-
if (options.dictSize != null) {
|
|
141
|
-
builder_util_1.log.warn({ distSize: options.dictSize }, `ignoring unsupported option`);
|
|
142
|
-
}
|
|
143
|
-
// do not save extra file attributes (Extended Attributes on OS/2, uid/gid and file times on Unix)
|
|
144
|
-
if (!options.isRegularFile) {
|
|
145
|
-
args.push("-X");
|
|
146
|
-
}
|
|
147
|
-
if (options.method != null) {
|
|
148
|
-
if (options.method !== "DEFAULT") {
|
|
149
|
-
builder_util_1.log.warn({ method: options.method }, `ignoring unsupported option`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
args.push("-Z", storeOnly ? "store" : "deflate");
|
|
154
|
-
}
|
|
155
|
-
return args;
|
|
156
|
-
}
|
|
157
107
|
// 7z is very fast, so, use ultra compression
|
|
158
108
|
/** @internal */
|
|
159
109
|
async function archive(format, outFile, dirToArchive, options = {}) {
|
|
@@ -168,28 +118,50 @@ async function archive(format, outFile, dirToArchive, options = {}) {
|
|
|
168
118
|
builder_util_1.log.warn({ reason: "7z doesn't support NFD-normalized filenames" }, `using zip`);
|
|
169
119
|
use7z = false;
|
|
170
120
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
121
|
+
if (use7z) {
|
|
122
|
+
const args = compute7zCompressArgs(format, options);
|
|
123
|
+
await (0, builder_util_1.unlinkIfExists)(outFile);
|
|
124
|
+
args.push(outFile, options.withoutDir ? "." : path.basename(dirToArchive));
|
|
125
|
+
if (options.excluded != null) {
|
|
126
|
+
for (const mask of options.excluded) {
|
|
127
|
+
if (mask.includes("..")) {
|
|
128
|
+
throw new Error(`Excluded archive pattern contains path traversal sequence: "${mask}"`);
|
|
129
|
+
}
|
|
130
|
+
args.push(`-xr!${mask}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
await (0, builder_util_1.exec)(await (0, _7zip_1.getPath7za)(), args, { cwd: options.withoutDir ? dirToArchive : path.dirname(dirToArchive) }, builder_util_1.debug7z.enabled);
|
|
135
|
+
}
|
|
136
|
+
catch (e) {
|
|
137
|
+
if (e.code === "ENOENT" && !(await (0, builder_util_1.exists)(dirToArchive))) {
|
|
138
|
+
throw new Error(`Cannot create archive: "${dirToArchive}" doesn't exist`);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
throw e;
|
|
142
|
+
}
|
|
178
143
|
}
|
|
179
144
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
throw new Error(`Cannot create archive: "${dirToArchive}" doesn't exist`);
|
|
145
|
+
else {
|
|
146
|
+
// NFD fallback: macOS native zip handles NFD-normalized Unicode paths correctly
|
|
147
|
+
const args = ["-q", "-r", "-y"];
|
|
148
|
+
if (builder_util_1.debug7z.enabled) {
|
|
149
|
+
args.push("-v");
|
|
150
|
+
}
|
|
151
|
+
if (options.compression === "store") {
|
|
152
|
+
args.push("-0");
|
|
189
153
|
}
|
|
190
154
|
else {
|
|
191
|
-
|
|
155
|
+
args.push(options.compression === "maximum" ? "-9" : "-7");
|
|
156
|
+
}
|
|
157
|
+
await (0, builder_util_1.unlinkIfExists)(outFile);
|
|
158
|
+
args.push(outFile, options.withoutDir ? "." : path.basename(dirToArchive));
|
|
159
|
+
if (options.excluded != null) {
|
|
160
|
+
for (const mask of options.excluded) {
|
|
161
|
+
args.push(`-x${mask}`);
|
|
162
|
+
}
|
|
192
163
|
}
|
|
164
|
+
await (0, builder_util_1.exec)("zip", args, { cwd: options.withoutDir ? dirToArchive : path.dirname(dirToArchive) }, builder_util_1.debug7z.enabled);
|
|
193
165
|
}
|
|
194
166
|
return outFile;
|
|
195
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/targets/archive.ts"],"names":[],"mappings":"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","sourcesContent":["import { debug7z, exec, exists, getPath7za, log, statOrNull, unlinkIfExists } from \"builder-util\"\nimport { move } from \"fs-extra\"\nimport * as path from \"path\"\nimport { create } from \"tar\"\nimport { TmpDir } from \"temp-file\"\nimport { CompressionLevel } from \"../core\"\nimport { getLinuxToolsMacToolset } from \"../toolsets/linux\"\nimport { TarOptionsWithAliasesAsync } from \"tar/dist/commonjs/options\"\n\nconst ALLOWED_7Z_FILTERS = new Set([\"BCJ\", \"BCJ2\", \"ARM\", \"ARMT\", \"IA64\", \"PPC\", \"SPARC\", \"DELTA\"])\n\nfunction validateCompressionLevel(level: string): void {\n if (!/^[0-9]$/.test(level)) {\n throw new Error(`ELECTRON_BUILDER_COMPRESSION_LEVEL must be a single digit 0-9, got: \"${level}\"`)\n }\n}\n\ntype TarConfig = {\n compression: CompressionLevel | any\n format: string\n outFile: string\n dirToArchive: string\n isMacApp: boolean\n tempDirManager: TmpDir\n}\n\n/** @internal */\nexport async function tar({ compression, format, outFile, dirToArchive, isMacApp, tempDirManager }: TarConfig): Promise<void> {\n const tarFile = await tempDirManager.getTempFile({ suffix: \".tar\" })\n const tarArgs: TarOptionsWithAliasesAsync = {\n file: tarFile,\n portable: true,\n cwd: dirToArchive,\n prefix: path.basename(outFile, `.${format}`),\n }\n let tarDirectory = \".\"\n if (isMacApp) {\n delete tarArgs.prefix\n tarArgs.cwd = path.dirname(dirToArchive)\n tarDirectory = path.basename(dirToArchive)\n }\n\n await Promise.all([\n create(tarArgs, [tarDirectory]),\n // remove file before - 7z doesn't overwrite file, but update\n unlinkIfExists(outFile),\n ])\n\n if (format === \"tar.lz\") {\n const lzipPath = process.platform === \"darwin\" ? (await getLinuxToolsMacToolset()).lzip : \"lzip\"\n await exec(lzipPath, [compression === \"store\" ? \"-1\" : \"-9\", \"--keep\" /* keep (don't delete) input files */, tarFile])\n // bloody lzip creates file in the same dir where input file with postfix `.lz`, option --output doesn't work\n await move(`${tarFile}.lz`, outFile)\n return\n }\n\n const args = compute7zCompressArgs(format === \"tar.xz\" ? \"xz\" : format === \"tar.bz2\" ? \"bzip2\" : \"gzip\", {\n isRegularFile: true,\n method: \"DEFAULT\",\n compression,\n })\n args.push(outFile, tarFile)\n await exec(\n await getPath7za(),\n args,\n {\n cwd: path.dirname(dirToArchive),\n },\n debug7z.enabled\n )\n}\n\nexport interface ArchiveOptions {\n compression?: CompressionLevel | null\n\n /**\n * @default false\n */\n withoutDir?: boolean\n\n /**\n * @default true\n */\n solid?: boolean\n\n /**\n * @default true\n */\n isArchiveHeaderCompressed?: boolean\n\n dictSize?: number\n excluded?: Array<string> | null\n\n // DEFAULT allows to disable custom logic and do not pass method switch at all\n method?: \"Copy\" | \"LZMA\" | \"Deflate\" | \"DEFAULT\"\n\n isRegularFile?: boolean\n}\n\nexport function compute7zCompressArgs(format: string, options: ArchiveOptions = {}) {\n let storeOnly = options.compression === \"store\"\n const args = debug7zArgs(\"a\")\n\n let isLevelSet = false\n const compressionLevel = process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL\n if (compressionLevel != null) {\n validateCompressionLevel(compressionLevel)\n storeOnly = false\n args.push(`-mx=${compressionLevel}`)\n isLevelSet = true\n }\n\n const isZip = format === \"zip\"\n if (!storeOnly) {\n if (isZip && options.compression === \"maximum\") {\n // http://superuser.com/a/742034\n args.push(\"-mfb=258\", \"-mpass=15\")\n }\n\n if (!isLevelSet) {\n // https://github.com/electron-userland/electron-builder/pull/3032\n args.push(\"-mx=\" + (!isZip || options.compression === \"maximum\" ? \"9\" : \"7\"))\n }\n }\n\n if (options.dictSize != null) {\n args.push(`-md=${options.dictSize}m`)\n }\n\n // https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm#7Z\n // https://stackoverflow.com/questions/27136783/7zip-produces-different-output-from-identical-input\n // tc and ta are off by default, but to be sure, we explicitly set it to off\n // disable \"Stores NTFS timestamps for files: Modification time, Creation time, Last access time.\" to produce the same archive for the same data\n if (!options.isRegularFile) {\n args.push(\"-mtc=off\")\n }\n\n if (format === \"7z\" || format.endsWith(\".7z\")) {\n if (options.solid === false) {\n args.push(\"-ms=off\")\n }\n\n if (options.isArchiveHeaderCompressed === false) {\n args.push(\"-mhc=off\")\n }\n\n // https://www.7-zip.org/7z.html\n // Filters: BCJ, BCJ2, ARM, ARMT, IA64, PPC, SPARC, ...\n const sevenZFilter = process.env.ELECTRON_BUILDER_7Z_FILTER\n if (sevenZFilter) {\n if (!ALLOWED_7Z_FILTERS.has(sevenZFilter.toUpperCase())) {\n throw new Error(`ELECTRON_BUILDER_7Z_FILTER must be one of: ${[...ALLOWED_7Z_FILTERS].join(\", \")}`)\n }\n args.push(`-mf=${sevenZFilter}`)\n }\n\n // args valid only for 7z\n // -mtm=off disable \"Stores last Modified timestamps for files.\"\n args.push(\"-mtm=off\", \"-mta=off\")\n }\n\n if (options.method != null) {\n if (options.method !== \"DEFAULT\") {\n args.push(`-mm=${options.method}`)\n }\n } else if (isZip || storeOnly) {\n args.push(`-mm=${storeOnly ? \"Copy\" : \"Deflate\"}`)\n }\n\n if (isZip) {\n // -mcu switch: 7-Zip uses UTF-8, if there are non-ASCII symbols.\n // because default mode: 7-Zip uses UTF-8, if the local code page doesn't contain required symbols.\n // but archive should be the same regardless where produced\n args.push(\"-mcu\")\n }\n return args\n}\n\nexport function computeZipCompressArgs(options: ArchiveOptions = {}) {\n let storeOnly = options.compression === \"store\"\n // do not deref symlinks\n const args = [\"-q\", \"-r\", \"-y\"]\n if (debug7z.enabled) {\n args.push(\"-v\")\n }\n\n const compressionLevelZip = process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL\n if (compressionLevelZip != null) {\n validateCompressionLevel(compressionLevelZip)\n storeOnly = false\n args.push(`-${compressionLevelZip}`)\n } else if (!storeOnly) {\n // https://github.com/electron-userland/electron-builder/pull/3032\n args.push(\"-\" + (options.compression === \"maximum\" ? \"9\" : \"7\"))\n }\n\n if (options.dictSize != null) {\n log.warn({ distSize: options.dictSize }, `ignoring unsupported option`)\n }\n\n // do not save extra file attributes (Extended Attributes on OS/2, uid/gid and file times on Unix)\n if (!options.isRegularFile) {\n args.push(\"-X\")\n }\n\n if (options.method != null) {\n if (options.method !== \"DEFAULT\") {\n log.warn({ method: options.method }, `ignoring unsupported option`)\n }\n } else {\n args.push(\"-Z\", storeOnly ? \"store\" : \"deflate\")\n }\n return args\n}\n\n// 7z is very fast, so, use ultra compression\n/** @internal */\nexport async function archive(format: string, outFile: string, dirToArchive: string, options: ArchiveOptions = {}): Promise<string> {\n const outFileStat = await statOrNull(outFile)\n const dirStat = await statOrNull(dirToArchive)\n if (outFileStat && dirStat && outFileStat.mtime > dirStat.mtime) {\n log.info({ reason: \"Archive file is up to date\", outFile }, `skipped archiving`)\n return outFile\n }\n let use7z = true\n if (process.platform === \"darwin\" && format === \"zip\" && dirToArchive.normalize(\"NFC\") !== dirToArchive) {\n log.warn({ reason: \"7z doesn't support NFD-normalized filenames\" }, `using zip`)\n use7z = false\n }\n const args = use7z ? compute7zCompressArgs(format, options) : computeZipCompressArgs(options)\n // remove file before - 7z and zip doesn't overwrite file, but update\n await unlinkIfExists(outFile)\n\n args.push(outFile, options.withoutDir ? \".\" : path.basename(dirToArchive))\n if (options.excluded != null) {\n for (const mask of options.excluded) {\n args.push(use7z ? `-xr!${mask}` : `-x${mask}`)\n }\n }\n\n try {\n const binary = use7z ? await getPath7za() : \"zip\"\n await exec(\n binary,\n args,\n {\n cwd: options.withoutDir ? dirToArchive : path.dirname(dirToArchive),\n },\n debug7z.enabled\n )\n } catch (e: any) {\n if (e.code === \"ENOENT\" && !(await exists(dirToArchive))) {\n throw new Error(`Cannot create archive: \"${dirToArchive}\" doesn't exist`)\n } else {\n throw e\n }\n }\n\n return outFile\n}\n\nfunction debug7zArgs(command: \"a\" | \"x\"): Array<string> {\n const args = [command, \"-bd\"]\n if (debug7z.enabled) {\n args.push(\"-bb\")\n }\n return args\n}\n"]}
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/targets/archive.ts"],"names":[],"mappings":"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","sourcesContent":["import { debug7z, exec, exists, log, statOrNull, unlinkIfExists } from \"builder-util\"\nimport { move } from \"fs-extra\"\nimport * as path from \"path\"\nimport { create } from \"tar\"\nimport { TarOptionsWithAliasesAsync } from \"tar/dist/commonjs/options\"\nimport { TmpDir } from \"temp-file\"\nimport { CompressionLevel } from \"../core\"\nimport { getLinuxToolsMacToolset } from \"../toolsets/linux\"\nimport { getPath7za } from \"../toolsets/7zip\"\n\nconst ALLOWED_7Z_FILTERS = new Set([\"BCJ\", \"BCJ2\", \"ARM\", \"ARMT\", \"IA64\", \"PPC\", \"SPARC\", \"DELTA\"])\n\nfunction validateCompressionLevel(level: string): void {\n if (!/^[0-9]$/.test(level)) {\n throw new Error(`ELECTRON_BUILDER_COMPRESSION_LEVEL must be a single digit 0-9, got: \"${level}\"`)\n }\n}\n\ntype TarConfig = {\n compression: CompressionLevel | null | undefined\n format: string\n outFile: string\n dirToArchive: string\n isMacApp: boolean\n tempDirManager: TmpDir\n}\n\n/** @internal */\nexport async function tar({ compression, format, outFile, dirToArchive, isMacApp, tempDirManager }: TarConfig): Promise<void> {\n const tarFile = await tempDirManager.getTempFile({ suffix: \".tar\" })\n const tarArgs: TarOptionsWithAliasesAsync = {\n file: tarFile,\n portable: true,\n cwd: dirToArchive,\n prefix: path.basename(outFile, `.${format}`),\n }\n let tarDirectory = \".\"\n if (isMacApp) {\n delete tarArgs.prefix\n tarArgs.cwd = path.dirname(dirToArchive)\n tarDirectory = path.basename(dirToArchive)\n }\n\n await Promise.all([\n create(tarArgs, [tarDirectory]),\n // remove file before - 7z doesn't overwrite file, but update\n unlinkIfExists(outFile),\n ])\n\n if (format === \"tar.lz\") {\n const lzipPath = process.platform === \"darwin\" ? (await getLinuxToolsMacToolset()).lzip : \"lzip\"\n await exec(lzipPath, [compression === \"store\" ? \"-1\" : \"-9\", \"--keep\" /* keep (don't delete) input files */, tarFile])\n // lzip creates the output file in the same directory as the input with a .lz suffix\n await move(`${tarFile}.lz`, outFile)\n return\n }\n\n const compressFormat = format === \"tar.xz\" ? \"xz\" : format === \"tar.bz2\" ? \"bzip2\" : \"gzip\"\n const args = compute7zCompressArgs(compressFormat, { isRegularFile: true, method: \"DEFAULT\", compression })\n args.push(outFile, tarFile)\n await exec(await getPath7za(), args, { cwd: path.dirname(dirToArchive) }, debug7z.enabled)\n}\n\nexport interface ArchiveOptions {\n compression?: CompressionLevel | null\n\n /**\n * @default false\n */\n withoutDir?: boolean\n\n /**\n * @default true\n */\n solid?: boolean\n\n /**\n * @default true\n */\n isArchiveHeaderCompressed?: boolean\n\n dictSize?: number\n excluded?: Array<string> | null\n\n // DEFAULT allows to disable custom logic and do not pass method switch at all\n method?: \"Copy\" | \"LZMA\" | \"Deflate\" | \"DEFAULT\"\n\n isRegularFile?: boolean\n}\n\nexport function compute7zCompressArgs(format: string, options: ArchiveOptions = {}) {\n let storeOnly = options.compression === \"store\"\n const args = debug7zArgs(\"a\")\n\n const compressionLevel = process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL\n if (compressionLevel != null) {\n validateCompressionLevel(compressionLevel)\n storeOnly = false // env var overrides \"store\" config\n args.push(`-mx=${compressionLevel}`)\n } else if (storeOnly) {\n // -mx=0 is the universal \"no compression\" flag across all formats (zip, 7z, gzip, xz, bzip2).\n // -mm=Copy would only be valid for zip/7z and causes E_INVALIDARG on xz/gzip/bzip2.\n args.push(\"-mx=0\")\n } else {\n const isZip = format === \"zip\"\n // ZIP uses level 7 by default; everything else (7z, gzip, xz, bzip2) uses level 9\n args.push(\"-mx=\" + (isZip && options.compression !== \"maximum\" ? \"7\" : \"9\"))\n if (isZip && options.compression === \"maximum\") {\n // http://superuser.com/a/742034\n args.push(\"-mfb=258\", \"-mpass=15\")\n }\n }\n\n if (options.dictSize != null) {\n args.push(`-md=${options.dictSize}m`)\n }\n\n // Disable NTFS timestamps for reproducible archives\n if (!options.isRegularFile) {\n args.push(\"-mtc=off\")\n }\n\n if (format === \"7z\" || format.endsWith(\".7z\")) {\n if (options.solid === false) {\n args.push(\"-ms=off\")\n }\n\n if (options.isArchiveHeaderCompressed === false) {\n args.push(\"-mhc=off\")\n }\n\n const sevenZFilter = process.env.ELECTRON_BUILDER_7Z_FILTER\n if (sevenZFilter) {\n if (!ALLOWED_7Z_FILTERS.has(sevenZFilter.toUpperCase())) {\n throw new Error(`ELECTRON_BUILDER_7Z_FILTER must be one of: ${[...ALLOWED_7Z_FILTERS].join(\", \")}`)\n }\n args.push(`-mf=${sevenZFilter}`)\n }\n\n args.push(\"-mtm=off\", \"-mta=off\")\n }\n\n if (options.method != null && options.method !== \"DEFAULT\") {\n args.push(`-mm=${options.method}`)\n } else if (format === \"zip\") {\n // -mm is only set explicitly for zip (Deflate/Copy) and includes the UTF-8 flag.\n // For all other formats the codec is implicit from the output file extension.\n args.push(`-mm=${storeOnly ? \"Copy\" : \"Deflate\"}`)\n args.push(\"-mcu\")\n }\n\n return args\n}\n\n// 7z is very fast, so, use ultra compression\n/** @internal */\nexport async function archive(format: string, outFile: string, dirToArchive: string, options: ArchiveOptions = {}): Promise<string> {\n const outFileStat = await statOrNull(outFile)\n const dirStat = await statOrNull(dirToArchive)\n if (outFileStat && dirStat && outFileStat.mtime > dirStat.mtime) {\n log.info({ reason: \"Archive file is up to date\", outFile }, `skipped archiving`)\n return outFile\n }\n\n let use7z = true\n if (process.platform === \"darwin\" && format === \"zip\" && dirToArchive.normalize(\"NFC\") !== dirToArchive) {\n log.warn({ reason: \"7z doesn't support NFD-normalized filenames\" }, `using zip`)\n use7z = false\n }\n\n if (use7z) {\n const args = compute7zCompressArgs(format, options)\n await unlinkIfExists(outFile)\n args.push(outFile, options.withoutDir ? \".\" : path.basename(dirToArchive))\n if (options.excluded != null) {\n for (const mask of options.excluded) {\n if (mask.includes(\"..\")) {\n throw new Error(`Excluded archive pattern contains path traversal sequence: \"${mask}\"`)\n }\n args.push(`-xr!${mask}`)\n }\n }\n\n try {\n await exec(await getPath7za(), args, { cwd: options.withoutDir ? dirToArchive : path.dirname(dirToArchive) }, debug7z.enabled)\n } catch (e: any) {\n if (e.code === \"ENOENT\" && !(await exists(dirToArchive))) {\n throw new Error(`Cannot create archive: \"${dirToArchive}\" doesn't exist`)\n } else {\n throw e\n }\n }\n } else {\n // NFD fallback: macOS native zip handles NFD-normalized Unicode paths correctly\n const args = [\"-q\", \"-r\", \"-y\"]\n if (debug7z.enabled) {\n args.push(\"-v\")\n }\n if (options.compression === \"store\") {\n args.push(\"-0\")\n } else {\n args.push(options.compression === \"maximum\" ? \"-9\" : \"-7\")\n }\n await unlinkIfExists(outFile)\n args.push(outFile, options.withoutDir ? \".\" : path.basename(dirToArchive))\n if (options.excluded != null) {\n for (const mask of options.excluded) {\n args.push(`-x${mask}`)\n }\n }\n await exec(\"zip\", args, { cwd: options.withoutDir ? dirToArchive : path.dirname(dirToArchive) }, debug7z.enabled)\n }\n\n return outFile\n}\n\nfunction debug7zArgs(command: \"a\" | \"x\"): Array<string> {\n const args = [command, \"-bd\"]\n if (debug7z.enabled) {\n args.push(\"-bb\")\n }\n return args\n}\n"]}
|
|
@@ -85,8 +85,9 @@ async function buildBlockMap(inFile, compressionFormat, outFile) {
|
|
|
85
85
|
hi = (nhi ^ PUSH_HI[top]) | 0;
|
|
86
86
|
lo = (nlo ^ PUSH_LO[top]) | 0;
|
|
87
87
|
// At exactly MIN: check whether the primed hash is already a boundary
|
|
88
|
-
if (chunkN === RABIN_MIN && (lo & RABIN_HASH_MASK) === RABIN_HASH_MASK)
|
|
88
|
+
if (chunkN === RABIN_MIN && (lo & RABIN_HASH_MASK) === RABIN_HASH_MASK) {
|
|
89
89
|
emitChunk();
|
|
90
|
+
}
|
|
90
91
|
return;
|
|
91
92
|
}
|
|
92
93
|
// Scan phase: sliding window — pop oldest byte, push new byte
|
|
@@ -100,8 +101,9 @@ async function buildBlockMap(inFile, compressionFormat, outFile) {
|
|
|
100
101
|
const nlo = ((lo << 8) | b) & 0xffffffff;
|
|
101
102
|
hi = (nhi ^ PUSH_HI[top]) | 0;
|
|
102
103
|
lo = (nlo ^ PUSH_LO[top]) | 0;
|
|
103
|
-
if ((lo & RABIN_HASH_MASK) === RABIN_HASH_MASK || chunkN >= RABIN_MAX)
|
|
104
|
+
if ((lo & RABIN_HASH_MASK) === RABIN_HASH_MASK || chunkN >= RABIN_MAX) {
|
|
104
105
|
emitChunk();
|
|
106
|
+
}
|
|
105
107
|
}
|
|
106
108
|
// Stream-read the file, feeding SHA-512 and the Rabin chunker simultaneously
|
|
107
109
|
await new Promise((resolve, reject) => {
|
|
@@ -111,12 +113,14 @@ async function buildBlockMap(inFile, compressionFormat, outFile) {
|
|
|
111
113
|
chunk = buf;
|
|
112
114
|
fileHash.update(chunk);
|
|
113
115
|
totalSize += chunk.length;
|
|
114
|
-
for (let i = 0; i < chunk.length; i++)
|
|
116
|
+
for (let i = 0; i < chunk.length; i++) {
|
|
115
117
|
processByte(chunk[i]);
|
|
118
|
+
}
|
|
116
119
|
});
|
|
117
120
|
rs.on("end", () => {
|
|
118
|
-
if (chunkN > 0)
|
|
121
|
+
if (chunkN > 0) {
|
|
119
122
|
emitChunk();
|
|
123
|
+
}
|
|
120
124
|
resolve();
|
|
121
125
|
});
|
|
122
126
|
rs.on("error", reject);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockmap.js","sourceRoot":"","sources":["../../../src/targets/blockmap/blockmap.ts"],"names":[],"mappings":";;AA+DA,sCA2GC;AA1KD,mCAAmC;AACnC,2BAAqC;AACrC,0CAAmD;AACnD,6BAA4B;AAC5B,uDAAiD;AAGjD,qEAAqE;AACrE,8EAA8E;AAC9E,4DAA4D;AAC5D,4EAA4E;AAC5E,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AACjE,mCAAmC;AACnC,iFAAiF;AAEjF,kBAAkB;AAClB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,OAAO,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,CAAC,CAAC,CAAA;AAClxF,kBAAkB;AAClB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,OAAO,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,OAAO,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,OAAO,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,CAAC,CAAC,CAAA;AACtxF,kBAAkB;AAClB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,CAAA;AAClpF,kBAAkB;AAClB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EA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","sourcesContent":["import { createHash } from \"crypto\"\nimport { createReadStream } from \"fs\"\nimport { appendFile, writeFile } from \"fs/promises\"\nimport * as zlib from \"zlib\"\nimport { blake2b } from \"@noble/hashes/blake2.js\"\nimport { BlockMapDataHolder } from \"builder-util-runtime\"\n\n// Rabin fingerprinting constants from github.com/aclements/go-rabin:\n// Poly64 = 0xbfe6b8a5bf378d83 (degree-63 irreducible polynomial over GF(2))\n// Window = 64 bytes, Avg = 16 KB, Min = 8 KB, Max = 32 KB\n// Boundary condition: (hash & (AVG-1)) === (AVG-1), i.e. all mask bits set.\n//\n// The tables below are precomputed offline (avoiding BigInt in production):\n// PUSH[i] = (i * x^63 + (i * x^63 mod p)) truncated to 64 bits\n// POP[i] = (i * x^(63*8)) mod p\n// Each stored as signed Int32 hi/lo pair; hash = hi*2^32 + lo (unsigned 64-bit).\n\n// prettier-ignore\nconst PUSH_HI = new Int32Array([0,-1075398491,2144170315,-1070872082,1081891379,-6626666,1068575608,-2141744163,1058933955,-2131184538,1087602056,-13253331,2137151216,-1065030059,11478971,-1085694178,2117867910,-1042636509,32598221,-1105735576,1044399029,-2119763184,1099772670,-26506661,1092752709,-20664864,1055876110,-2130060117,22957942,-1095174189,2123578941,-1049262440,1134463913,-59231476,1012136674,-2085273017,65196442,-1140561601,2083496145,-1010231180,2088798058,-1016709169,55440929,-1129623932,1023204697,-2095421956,1127328786,-53013321,1034064431,-2109461878,1114628964,-41329727,2111752220,-1036488519,34847063,-1108016654,45915884,-1118165431,2104618919,-1030269182,1119929567,-47809414,1024308628,-2098524879,953921527,-2026039470,1192681148,-118462951,2024273348,-952021663,124421263,-1198769110,130392884,-1205658735,2013844095,-940676390,1203370247,-127975006,947161164,-2020462359,1189590641,-117371180,959104826,-2033418337,110881858,-1182968601,2035719433,-961534548,2046409394,-971046377,104123385,-1177390244,965075073,-2040309724,1179161034,-106026641,2068128862,-995910405,76043541,-1150358096,993623661,-2065709368,1156845350,-82659453,1146824861,-71462856,999709142,-2072977037,69694126,-1144927733,2078933989,-1005798592,91831768,-1163950723,2058636435,-984419274,1157982187,-85729458,986191520,-2060538363,979841307,-2055108162,1168785488,-95618827,2048617256,-973220979,97917539,-1171217722,1907843054,-833493173,242888357,-1315138048,835388893,-1909605000,1309045910,-236925901,1319719725,-246420600,828645990,-1904043325,248842526,-1322012229,1897429077,-822165264,260785768,-1334968627,1883649827,-811561082,1341594715,-267279106,809135376,-1881352779,815090347,-1888226802,1331182560,-255950011,1894322328,-821057475,254042579,-1329407626,841602119,-1915786014,1306830092,-234742359,1918209652,-843893039,228130623,-1300346982,221763716,-1294901215,1929030095,-853798550,1296794295,-223528430,847705084,-1923069095,1276497345,-202148508,869842058,-1942092753,208246770,-1282461865,1940186809,-868065764,1930150146,-856852057,214347849,-1289746196,863476529,-1936645228,1287318138,-212053281,1231876121,-158709572,916554066,-1991820809,152087082,-1225387377,1994251105,-918854716,1987247322,-913030017,163548561,-1235667660,906929897,-1981276596,1237571490,-165318905,928049567,-2001317574,1218287828,-142925711,1999418284,-926282999,149013223,-1224246718,139388252,-1213702663,2005111831,-932893518,1211285359,-137099318,939511332,-2011597183,183663536,-1256930539,1967065851,-891702690,1250828675,-177694426,893604040,-1968838547,904689523,-1979002922,1243678264,-171458915,1972383040,-898198043,173890571,-1245977426,1959682614,-886515053,184750973,-1260016680,884094981,-1957396320,1266633038,-191237653,1271951093,-197732784,874323902,-1946441957,195835078,-1270182813,1952531853,-880280280])\n// prettier-ignore\nconst PUSH_LO = new Int32Array([0,-1086878333,2121210630,-1051158907,1139391375,-52546036,1032233097,-2102317814,954530461,-2016184546,1183572379,-105092072,2064466194,-1002779503,90331668,-1168779369,1909060922,-822183751,262598204,-1332649025,840978101,-1927822538,1280267699,-210184144,1227689895,-166034908,927077537,-2005559006,180663336,-1242351189,1957408558,-878959955,1554278391,-476845452,583761137,-1644367502,525196408,-1602596357,1629669246,-569029891,1681956202,-612953879,439322220,-1525150737,665396965,-1734431898,1506164195,-420368288,762155725,-1839587506,1392675275,-332069816,1854155074,-776756031,283849284,-1344487481,361326672,-1430329901,1810264918,-724435243,1449186271,-380150180,672123097,-1757919910,109003373,-1186410514,2014337387,-953690904,1167522274,-90082207,1006232292,-2066845849,1050392816,-2119420557,1089774582,-3985803,2104623999,-1035628804,52238457,-1138059782,2008463191,-931054892,165260369,-1225907758,878644440,-1956085413,1244665822,-184051107,1330793930,-261767095,826103500,-1911891121,213644869,-1282638906,1926556995,-840736576,1524311450,-437475303,615792284,-1685867745,422747669,-1509616746,1734182163,-664139632,1648353031,-586657148,475055105,-1553512062,567698568,-1629361909,1605992334,-527502835,722653344,-1809490653,1434307494,-364231131,1761307439,-674437460,378826793,-1448870486,334899773,-1396594754,1838756155,-760300360,1344246194,-282584015,779127476,-1857616073,218006746,-1278670503,1922146268,-844754337,1326923605,-266292522,829957203,-1907381808,874151495,-1959922748,1249207617,-180164414,2012464584,-926660533,161275598,-1230286003,2100785632,-1040122781,56126182,-1133516955,1054788207,-2115418132,1085395305,-7971606,1171491709,-85719298,1002213499,-2071257608,104476914,-1190281871,2018847732,-949836169,1348133677,-278040914,775288875,-1862109784,330520738,-1400580831,1843151780,-756298201,1757288880,-678849485,382796470,-1444507851,727163455,-1805635652,1429780793,-368102214,563287575,-1633379436,1610353937,-523534190,1652207000,-582148069,471185054,-1558037731,427289738,-1505730295,1729689484,-667977201,1520326405,-441853306,619793411,-1681473152,176277175,-1246344396,1961811377,-874950606,1231584568,-161484613,923231806,-2010059843,845495338,-1923960407,1275733804,-214062417,1905035173,-826602970,266575011,-1328279264,2068329357,-998261234,86452363,-1173314296,950110210,-2020211327,1187943172,-101114233,1135397136,-56933229,1036243478,-2097913963,4551327,-1082982628,2116708761,-1055005670,1445306688,-384684861,675985990,-1753401403,365697743,-1426352308,1805844937,-728462262,1858165725,-772352418,279855323,-1348874920,757653586,-1843434031,1397226324,-328173865,669799546,-1730422279,1501777788,-424361217,1678110709,-617454986,443217139,-1520600720,520662759,-1606474908,1634186721,-565168030,1558254952,-472475413,579735150,-1648786451])\n// prettier-ignore\nconst POP_HI = new Int32Array([0,2138251555,1090583266,1047780289,1038568800,1117023299,2095560578,60069537,2077137601,79543266,986603555,1170030848,1177147297,962262658,120139075,2019167328,1216056615,923315204,159086533,1980258022,1973207111,183492964,882653861,1273961350,867506150,1288058565,1924525316,231132199,240278150,1898019749,1330815076,807502151,789684970,1348633545,1846630408,291666219,318173066,1837485737,1408636264,746927179,1423915051,732698888,366985929,1789715434,1765307723,374035560,674795433,1464577674,1735012301,404295406,644535599,1494873100,1519215277,637420430,462264399,1694415212,480556300,1675072559,1571049454,584543949,558102636,1580259663,1615004302,523248557,1579369941,558916854,522436407,1615896084,1673791669,481765782,583332439,1572328308,636346132,1520369207,1693263350,463340757,403346036,1736029015,1493854358,645482933,374917362,1764485585,1465397776,673911603,733971858,1422697649,1790934896,365715027,1838567987,317027088,748071121,1407551986,1349590867,788676208,292677041,1845675154,1899161407,239191580,808590813,1329675518,1289071199,866552700,232083645,1923510686,184319486,1972329693,1274840860,881829439,924528798,1214779837,1981532796,157870943,961112600,1178225467,2018087162,121287129,78522232,2078082651,1169087898,987626681,1116205273,1039454714,59181627,2096376600,2137046457,1285274,1046497115,1091790456,60830479,2094207532,1117833709,1037297870,1044872815,1093951308,2135393421,3450286,2020518350,119376109,963531564,1176334863,1166664878,989513101,76095052,2079997807,1272692264,883465995,182142154,1973970409,1983705928,156226155,926681514,1213147273,806692073,1332086218,1897258507,241631016,233990537,1921075370,1290965867,864137800,749834725,1405268166,1840343815,314722852,290905221,1847983526,1347823207,790955844,1467943716,671885831,377483718,1762447589,1788364356,367748967,731430054,1424727429,1690967234,465124833,634054176,1522124547,1496142242,643723393,405646144,1734249059,520390147,1618454304,1577352417,561470914,585354083,1569778240,1675833729,479203490,1568896730,586176505,478383160,1676717339,1617181626,521607833,560251224,1578623099,642640923,1497287992,1733105401,406730714,464167291,1691975768,1521114009,635009722,368638973,1787550430,1425539359,730538044,673167005,1466734526,1763658879,376204636,1849057596,289751071,792107998,1346747133,1406217308,748817791,315741886,1839396765,1922225200,232912147,865218258,1289818097,1333107024,805746803,242574258,1896235665,157044465,1982820306,1214034963,925865264,884671377,1271407282,1975253363,180934736,988371223,1167751220,2078909429,77234902,118363255,2021471572,1175383701,964546486,1093125078,1045750517,2570548,2136217623,2092994230,62107541,1036022868,1119049079])\n// prettier-ignore\nconst POP_LO = new Int32Array([0,-1826189856,-1720019389,173808547,-1916624635,518270181,347617094,-2019640666,461718026,-2002530326,-2097163191,299456937,-1773673713,90271471,255685964,-1675888468,-2009265769,454788215,289906644,-2107567564,100640914,-1764153998,-1668989231,262386481,-1816638563,10405501,180542942,-1713090498,511371928,-1923324040,-2030011173,338096443,-1353867603,1013650253,909576430,-1525578482,579813288,-1314278840,-1141528085,684925963,-1261904729,669929799,766659300,-1097545980,956988834,-1439895486,-1603212319,861300225,661690170,-1269425446,-1106640519,757894297,-1431161281,966048735,868786300,-1595003492,1022743856,-1345103664,-1517337741,917098131,-1321765835,571603413,676192886,-1150586986,1587232090,-843206470,-941511911,1422337785,-749101985,1082069439,1243810332,-653948932,1159626576,-700910928,-597366509,1329751283,-925049259,1543132085,1369851926,-1031748106,-693750579,1166063917,1339859598,-587583634,1533318600,-935192536,-1038220405,1362660971,-853313849,1577450279,1415176324,-947950236,1088542658,-741909982,-644136575,1253952609,-237591561,1659907607,1756116404,-74794924,2081686258,-281899246,-445737807,1984436561,-363601411,2037738525,1932097470,-535823778,1737572600,-189281000,-18098501,1842174811,2045487712,-355653760,-527352797,1941418435,-198636699,1729070725,1834196262,-25882426,1651435626,-246913654,-82543063,1748169673,-273921681,2089469071,1993793324,-437234996,33683255,-1859683625,-1686412940,140373140,-1883023822,484826066,381272177,-2053157487,428127549,-1969080099,-2130828418,332967582,-1807346632,123771352,222069371,-1642459237,-1975714144,421163840,323381475,-2141133565,134111141,-1797729723,-1635464730,228738054,-1850098518,43987274,147008233,-1679448311,477830575,-1889693617,-2063496212,371656204,-1387501158,1047192698,876019673,-1492094407,546228383,-1280817793,-1175167268,718459708,-1228330096,636462704,800308691,-1131073485,990612117,-1473443979,-1569645354,827822390,628187149,-1235751443,-1140066738,791509934,-1464614648,999640296,835278667,-1561339221,1056186887,-1378701337,-1483819964,883440036,-1288273150,537923298,709629249,-1184196447,1553648237,-809744499,-975152082,1455870414,-782734488,1115612808,1210252587,-620465973,1193248871,-734460537,-563798492,1296274372,-891475614,1509663874,1403502369,-1065274687,-727202822,1199656474,1306351033,-553920423,1499816703,-901517537,-1071647556,1396275548,-819822096,1543769104,1448613811,-981558701,1121984757,-775508715,-610617674,1220295510,-203991872,1626462496,1789772419,-108310685,2115368389,-315394011,-412130426,1951002214,-397273398,2071239466,1898479753,-502395543,1703983055,-155829713,-51764852,1875684460,2078956887,-389230409,-493827308,1907771124,-165086126,1695445426,1867672081,-59447311,1617895261,-213282115,-116029154,1781728510,-307380648,2123051960,1960257563,-403593733])\n\n// Chunker parameters\nconst RABIN_MIN = 8192\nconst RABIN_AVG = 16384\nconst RABIN_MAX = 32768\nconst RABIN_WINDOW = 64\n// Boundary: all mask bits (14 bits) set in lo word. RABIN_AVG is a power of 2.\nconst RABIN_HASH_MASK = RABIN_AVG - 1 // 0x3FFF\n\nexport type CompressionFormat = \"deflate\" | \"gzip\"\n\ninterface BlockMap {\n version: \"2\"\n files: Array<{\n name: string\n offset: number\n checksums: string[]\n sizes: number[]\n }>\n}\n\nfunction compress(data: Buffer, format: CompressionFormat): Buffer {\n return format === \"deflate\" ? zlib.deflateRawSync(data, { level: 9 }) : zlib.gzipSync(data, { level: 9 })\n}\n\n/**\n * Build a content-defined block map for `inFile` using Rabin fingerprinting.\n *\n * Files are processed via streaming (peak memory ≈ RABIN_MAX = 32 KB per chunk,\n * not the full file size), making this safe for large installers.\n *\n * - If `outFile` is omitted: compressed blockmap is appended to `inFile`\n * (used for NSIS web installer / AppImage embed); `blockMapSize` is returned.\n * - If `outFile` is provided: compressed blockmap is written to that file;\n * `blockMapSize` is not included in the result.\n *\n * Returned `sha512` is SHA-512 of the full file as it exists after the call.\n */\nexport async function buildBlockMap(inFile: string, compressionFormat: CompressionFormat, outFile?: string): Promise<BlockMapDataHolder> {\n const fileHash = createHash(\"sha512\")\n const checksums: string[] = []\n const sizes: number[] = []\n let totalSize = 0\n\n // Per-chunk Rabin state. Peak memory ≈ RABIN_MAX (32 KB) — not file size.\n const chunkBuf = Buffer.allocUnsafe(RABIN_MAX)\n let chunkN = 0 // bytes accumulated for current chunk\n let hi = 0\n let lo = 0\n const win = new Uint8Array(RABIN_WINDOW) // rolling window ring buffer\n let wpos = 0\n\n function emitChunk() {\n checksums.push(Buffer.from(blake2b(chunkBuf.subarray(0, chunkN), { dkLen: 18 })).toString(\"base64\"))\n sizes.push(chunkN)\n chunkN = 0\n hi = 0\n lo = 0\n win.fill(0)\n wpos = 0\n }\n\n // Called once per byte; inlines the three-phase Rabin state machine:\n // skip (< MIN-WINDOW bytes) → prime (next WINDOW bytes) → scan (≥ MIN bytes)\n function processByte(b: number) {\n chunkBuf[chunkN++] = b\n\n if (chunkN <= RABIN_MIN - RABIN_WINDOW) {\n // Skip phase: not close enough to MIN to start priming yet\n return\n }\n\n if (chunkN <= RABIN_MIN) {\n // Prime phase: non-windowed hash update, filling the ring buffer\n win[wpos] = b\n wpos = (wpos + 1) % RABIN_WINDOW\n const top = (hi >>> 23) & 0xff\n const nhi = ((hi << 8) | (lo >>> 24)) & 0x7fffffff\n const nlo = ((lo << 8) | b) & 0xffffffff\n hi = (nhi ^ PUSH_HI[top]) | 0\n lo = (nlo ^ PUSH_LO[top]) | 0\n // At exactly MIN: check whether the primed hash is already a boundary\n if (chunkN === RABIN_MIN && (lo & RABIN_HASH_MASK) === RABIN_HASH_MASK) emitChunk()\n return\n }\n\n // Scan phase: sliding window — pop oldest byte, push new byte\n const old = win[wpos]\n win[wpos] = b\n wpos = (wpos + 1) % RABIN_WINDOW\n hi = (hi ^ POP_HI[old]) | 0\n lo = (lo ^ POP_LO[old]) | 0\n const top = (hi >>> 23) & 0xff\n const nhi = ((hi << 8) | (lo >>> 24)) & 0x7fffffff\n const nlo = ((lo << 8) | b) & 0xffffffff\n hi = (nhi ^ PUSH_HI[top]) | 0\n lo = (nlo ^ PUSH_LO[top]) | 0\n\n if ((lo & RABIN_HASH_MASK) === RABIN_HASH_MASK || chunkN >= RABIN_MAX) emitChunk()\n }\n\n // Stream-read the file, feeding SHA-512 and the Rabin chunker simultaneously\n await new Promise<void>((resolve, reject) => {\n const rs = createReadStream(inFile, { highWaterMark: 256 * 1024 })\n rs.on(\"data\", (chunk: Buffer | string) => {\n const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n chunk = buf\n fileHash.update(chunk)\n totalSize += chunk.length\n for (let i = 0; i < chunk.length; i++) processByte(chunk[i])\n })\n rs.on(\"end\", () => {\n if (chunkN > 0) emitChunk()\n resolve()\n })\n rs.on(\"error\", reject)\n })\n\n const blockMap: BlockMap = {\n version: \"2\",\n files: [{ name: \"file\", offset: 0, checksums, sizes }],\n }\n const compressed = compress(Buffer.from(JSON.stringify(blockMap)), compressionFormat)\n\n if (outFile == null || outFile === \"\") {\n // Append mode: write compressed blockmap + 4-byte size in one atomic call\n // to avoid a partial-write window between the two separate appendFile calls.\n const sizeHeader = Buffer.allocUnsafe(4)\n sizeHeader.writeUInt32BE(compressed.length, 0)\n const appended = Buffer.concat([compressed, sizeHeader])\n await appendFile(inFile, appended)\n fileHash.update(appended)\n\n return {\n size: totalSize + appended.length,\n sha512: fileHash.digest(\"base64\"),\n blockMapSize: compressed.length,\n }\n }\n\n await writeFile(outFile, compressed)\n return {\n size: totalSize,\n sha512: fileHash.digest(\"base64\"),\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"blockmap.js","sourceRoot":"","sources":["../../../src/targets/blockmap/blockmap.ts"],"names":[],"mappings":";;AA+DA,sCAmHC;AAlLD,mCAAmC;AACnC,2BAAqC;AACrC,0CAAmD;AACnD,6BAA4B;AAC5B,uDAAiD;AAGjD,qEAAqE;AACrE,8EAA8E;AAC9E,4DAA4D;AAC5D,4EAA4E;AAC5E,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AACjE,mCAAmC;AACnC,iFAAiF;AAEjF,kBAAkB;AAClB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,OAAO,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,CAAC,CAAC,CAAA;AAClxF,kBAAkB;AAClB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,OAAO,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,OAAO,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,OAAO,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,CAAC,CAAC,CAAA;AACtxF,kBAAkB;AAClB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,CAAA;AAClpF,kBAAkB;AAClB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAC,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,CAAC,SAAS,EAAC,UAAU,EAAC,UAAU,EAAC,CAAC,UAAU,EA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","sourcesContent":["import { createHash } from \"crypto\"\nimport { createReadStream } from \"fs\"\nimport { appendFile, writeFile } from \"fs/promises\"\nimport * as zlib from \"zlib\"\nimport { blake2b } from \"@noble/hashes/blake2.js\"\nimport { BlockMapDataHolder } from \"builder-util-runtime\"\n\n// Rabin fingerprinting constants from github.com/aclements/go-rabin:\n// Poly64 = 0xbfe6b8a5bf378d83 (degree-63 irreducible polynomial over GF(2))\n// Window = 64 bytes, Avg = 16 KB, Min = 8 KB, Max = 32 KB\n// Boundary condition: (hash & (AVG-1)) === (AVG-1), i.e. all mask bits set.\n//\n// The tables below are precomputed offline (avoiding BigInt in production):\n// PUSH[i] = (i * x^63 + (i * x^63 mod p)) truncated to 64 bits\n// POP[i] = (i * x^(63*8)) mod p\n// Each stored as signed Int32 hi/lo pair; hash = hi*2^32 + lo (unsigned 64-bit).\n\n// prettier-ignore\nconst PUSH_HI = new Int32Array([0,-1075398491,2144170315,-1070872082,1081891379,-6626666,1068575608,-2141744163,1058933955,-2131184538,1087602056,-13253331,2137151216,-1065030059,11478971,-1085694178,2117867910,-1042636509,32598221,-1105735576,1044399029,-2119763184,1099772670,-26506661,1092752709,-20664864,1055876110,-2130060117,22957942,-1095174189,2123578941,-1049262440,1134463913,-59231476,1012136674,-2085273017,65196442,-1140561601,2083496145,-1010231180,2088798058,-1016709169,55440929,-1129623932,1023204697,-2095421956,1127328786,-53013321,1034064431,-2109461878,1114628964,-41329727,2111752220,-1036488519,34847063,-1108016654,45915884,-1118165431,2104618919,-1030269182,1119929567,-47809414,1024308628,-2098524879,953921527,-2026039470,1192681148,-118462951,2024273348,-952021663,124421263,-1198769110,130392884,-1205658735,2013844095,-940676390,1203370247,-127975006,947161164,-2020462359,1189590641,-117371180,959104826,-2033418337,110881858,-1182968601,2035719433,-961534548,2046409394,-971046377,104123385,-1177390244,965075073,-2040309724,1179161034,-106026641,2068128862,-995910405,76043541,-1150358096,993623661,-2065709368,1156845350,-82659453,1146824861,-71462856,999709142,-2072977037,69694126,-1144927733,2078933989,-1005798592,91831768,-1163950723,2058636435,-984419274,1157982187,-85729458,986191520,-2060538363,979841307,-2055108162,1168785488,-95618827,2048617256,-973220979,97917539,-1171217722,1907843054,-833493173,242888357,-1315138048,835388893,-1909605000,1309045910,-236925901,1319719725,-246420600,828645990,-1904043325,248842526,-1322012229,1897429077,-822165264,260785768,-1334968627,1883649827,-811561082,1341594715,-267279106,809135376,-1881352779,815090347,-1888226802,1331182560,-255950011,1894322328,-821057475,254042579,-1329407626,841602119,-1915786014,1306830092,-234742359,1918209652,-843893039,228130623,-1300346982,221763716,-1294901215,1929030095,-853798550,1296794295,-223528430,847705084,-1923069095,1276497345,-202148508,869842058,-1942092753,208246770,-1282461865,1940186809,-868065764,1930150146,-856852057,214347849,-1289746196,863476529,-1936645228,1287318138,-212053281,1231876121,-158709572,916554066,-1991820809,152087082,-1225387377,1994251105,-918854716,1987247322,-913030017,163548561,-1235667660,906929897,-1981276596,1237571490,-165318905,928049567,-2001317574,1218287828,-142925711,1999418284,-926282999,149013223,-1224246718,139388252,-1213702663,2005111831,-932893518,1211285359,-137099318,939511332,-2011597183,183663536,-1256930539,1967065851,-891702690,1250828675,-177694426,893604040,-1968838547,904689523,-1979002922,1243678264,-171458915,1972383040,-898198043,173890571,-1245977426,1959682614,-886515053,184750973,-1260016680,884094981,-1957396320,1266633038,-191237653,1271951093,-197732784,874323902,-1946441957,195835078,-1270182813,1952531853,-880280280])\n// prettier-ignore\nconst PUSH_LO = new Int32Array([0,-1086878333,2121210630,-1051158907,1139391375,-52546036,1032233097,-2102317814,954530461,-2016184546,1183572379,-105092072,2064466194,-1002779503,90331668,-1168779369,1909060922,-822183751,262598204,-1332649025,840978101,-1927822538,1280267699,-210184144,1227689895,-166034908,927077537,-2005559006,180663336,-1242351189,1957408558,-878959955,1554278391,-476845452,583761137,-1644367502,525196408,-1602596357,1629669246,-569029891,1681956202,-612953879,439322220,-1525150737,665396965,-1734431898,1506164195,-420368288,762155725,-1839587506,1392675275,-332069816,1854155074,-776756031,283849284,-1344487481,361326672,-1430329901,1810264918,-724435243,1449186271,-380150180,672123097,-1757919910,109003373,-1186410514,2014337387,-953690904,1167522274,-90082207,1006232292,-2066845849,1050392816,-2119420557,1089774582,-3985803,2104623999,-1035628804,52238457,-1138059782,2008463191,-931054892,165260369,-1225907758,878644440,-1956085413,1244665822,-184051107,1330793930,-261767095,826103500,-1911891121,213644869,-1282638906,1926556995,-840736576,1524311450,-437475303,615792284,-1685867745,422747669,-1509616746,1734182163,-664139632,1648353031,-586657148,475055105,-1553512062,567698568,-1629361909,1605992334,-527502835,722653344,-1809490653,1434307494,-364231131,1761307439,-674437460,378826793,-1448870486,334899773,-1396594754,1838756155,-760300360,1344246194,-282584015,779127476,-1857616073,218006746,-1278670503,1922146268,-844754337,1326923605,-266292522,829957203,-1907381808,874151495,-1959922748,1249207617,-180164414,2012464584,-926660533,161275598,-1230286003,2100785632,-1040122781,56126182,-1133516955,1054788207,-2115418132,1085395305,-7971606,1171491709,-85719298,1002213499,-2071257608,104476914,-1190281871,2018847732,-949836169,1348133677,-278040914,775288875,-1862109784,330520738,-1400580831,1843151780,-756298201,1757288880,-678849485,382796470,-1444507851,727163455,-1805635652,1429780793,-368102214,563287575,-1633379436,1610353937,-523534190,1652207000,-582148069,471185054,-1558037731,427289738,-1505730295,1729689484,-667977201,1520326405,-441853306,619793411,-1681473152,176277175,-1246344396,1961811377,-874950606,1231584568,-161484613,923231806,-2010059843,845495338,-1923960407,1275733804,-214062417,1905035173,-826602970,266575011,-1328279264,2068329357,-998261234,86452363,-1173314296,950110210,-2020211327,1187943172,-101114233,1135397136,-56933229,1036243478,-2097913963,4551327,-1082982628,2116708761,-1055005670,1445306688,-384684861,675985990,-1753401403,365697743,-1426352308,1805844937,-728462262,1858165725,-772352418,279855323,-1348874920,757653586,-1843434031,1397226324,-328173865,669799546,-1730422279,1501777788,-424361217,1678110709,-617454986,443217139,-1520600720,520662759,-1606474908,1634186721,-565168030,1558254952,-472475413,579735150,-1648786451])\n// prettier-ignore\nconst POP_HI = new Int32Array([0,2138251555,1090583266,1047780289,1038568800,1117023299,2095560578,60069537,2077137601,79543266,986603555,1170030848,1177147297,962262658,120139075,2019167328,1216056615,923315204,159086533,1980258022,1973207111,183492964,882653861,1273961350,867506150,1288058565,1924525316,231132199,240278150,1898019749,1330815076,807502151,789684970,1348633545,1846630408,291666219,318173066,1837485737,1408636264,746927179,1423915051,732698888,366985929,1789715434,1765307723,374035560,674795433,1464577674,1735012301,404295406,644535599,1494873100,1519215277,637420430,462264399,1694415212,480556300,1675072559,1571049454,584543949,558102636,1580259663,1615004302,523248557,1579369941,558916854,522436407,1615896084,1673791669,481765782,583332439,1572328308,636346132,1520369207,1693263350,463340757,403346036,1736029015,1493854358,645482933,374917362,1764485585,1465397776,673911603,733971858,1422697649,1790934896,365715027,1838567987,317027088,748071121,1407551986,1349590867,788676208,292677041,1845675154,1899161407,239191580,808590813,1329675518,1289071199,866552700,232083645,1923510686,184319486,1972329693,1274840860,881829439,924528798,1214779837,1981532796,157870943,961112600,1178225467,2018087162,121287129,78522232,2078082651,1169087898,987626681,1116205273,1039454714,59181627,2096376600,2137046457,1285274,1046497115,1091790456,60830479,2094207532,1117833709,1037297870,1044872815,1093951308,2135393421,3450286,2020518350,119376109,963531564,1176334863,1166664878,989513101,76095052,2079997807,1272692264,883465995,182142154,1973970409,1983705928,156226155,926681514,1213147273,806692073,1332086218,1897258507,241631016,233990537,1921075370,1290965867,864137800,749834725,1405268166,1840343815,314722852,290905221,1847983526,1347823207,790955844,1467943716,671885831,377483718,1762447589,1788364356,367748967,731430054,1424727429,1690967234,465124833,634054176,1522124547,1496142242,643723393,405646144,1734249059,520390147,1618454304,1577352417,561470914,585354083,1569778240,1675833729,479203490,1568896730,586176505,478383160,1676717339,1617181626,521607833,560251224,1578623099,642640923,1497287992,1733105401,406730714,464167291,1691975768,1521114009,635009722,368638973,1787550430,1425539359,730538044,673167005,1466734526,1763658879,376204636,1849057596,289751071,792107998,1346747133,1406217308,748817791,315741886,1839396765,1922225200,232912147,865218258,1289818097,1333107024,805746803,242574258,1896235665,157044465,1982820306,1214034963,925865264,884671377,1271407282,1975253363,180934736,988371223,1167751220,2078909429,77234902,118363255,2021471572,1175383701,964546486,1093125078,1045750517,2570548,2136217623,2092994230,62107541,1036022868,1119049079])\n// prettier-ignore\nconst POP_LO = new Int32Array([0,-1826189856,-1720019389,173808547,-1916624635,518270181,347617094,-2019640666,461718026,-2002530326,-2097163191,299456937,-1773673713,90271471,255685964,-1675888468,-2009265769,454788215,289906644,-2107567564,100640914,-1764153998,-1668989231,262386481,-1816638563,10405501,180542942,-1713090498,511371928,-1923324040,-2030011173,338096443,-1353867603,1013650253,909576430,-1525578482,579813288,-1314278840,-1141528085,684925963,-1261904729,669929799,766659300,-1097545980,956988834,-1439895486,-1603212319,861300225,661690170,-1269425446,-1106640519,757894297,-1431161281,966048735,868786300,-1595003492,1022743856,-1345103664,-1517337741,917098131,-1321765835,571603413,676192886,-1150586986,1587232090,-843206470,-941511911,1422337785,-749101985,1082069439,1243810332,-653948932,1159626576,-700910928,-597366509,1329751283,-925049259,1543132085,1369851926,-1031748106,-693750579,1166063917,1339859598,-587583634,1533318600,-935192536,-1038220405,1362660971,-853313849,1577450279,1415176324,-947950236,1088542658,-741909982,-644136575,1253952609,-237591561,1659907607,1756116404,-74794924,2081686258,-281899246,-445737807,1984436561,-363601411,2037738525,1932097470,-535823778,1737572600,-189281000,-18098501,1842174811,2045487712,-355653760,-527352797,1941418435,-198636699,1729070725,1834196262,-25882426,1651435626,-246913654,-82543063,1748169673,-273921681,2089469071,1993793324,-437234996,33683255,-1859683625,-1686412940,140373140,-1883023822,484826066,381272177,-2053157487,428127549,-1969080099,-2130828418,332967582,-1807346632,123771352,222069371,-1642459237,-1975714144,421163840,323381475,-2141133565,134111141,-1797729723,-1635464730,228738054,-1850098518,43987274,147008233,-1679448311,477830575,-1889693617,-2063496212,371656204,-1387501158,1047192698,876019673,-1492094407,546228383,-1280817793,-1175167268,718459708,-1228330096,636462704,800308691,-1131073485,990612117,-1473443979,-1569645354,827822390,628187149,-1235751443,-1140066738,791509934,-1464614648,999640296,835278667,-1561339221,1056186887,-1378701337,-1483819964,883440036,-1288273150,537923298,709629249,-1184196447,1553648237,-809744499,-975152082,1455870414,-782734488,1115612808,1210252587,-620465973,1193248871,-734460537,-563798492,1296274372,-891475614,1509663874,1403502369,-1065274687,-727202822,1199656474,1306351033,-553920423,1499816703,-901517537,-1071647556,1396275548,-819822096,1543769104,1448613811,-981558701,1121984757,-775508715,-610617674,1220295510,-203991872,1626462496,1789772419,-108310685,2115368389,-315394011,-412130426,1951002214,-397273398,2071239466,1898479753,-502395543,1703983055,-155829713,-51764852,1875684460,2078956887,-389230409,-493827308,1907771124,-165086126,1695445426,1867672081,-59447311,1617895261,-213282115,-116029154,1781728510,-307380648,2123051960,1960257563,-403593733])\n\n// Chunker parameters\nconst RABIN_MIN = 8192\nconst RABIN_AVG = 16384\nconst RABIN_MAX = 32768\nconst RABIN_WINDOW = 64\n// Boundary: all mask bits (14 bits) set in lo word. RABIN_AVG is a power of 2.\nconst RABIN_HASH_MASK = RABIN_AVG - 1 // 0x3FFF\n\nexport type CompressionFormat = \"deflate\" | \"gzip\"\n\ninterface BlockMap {\n version: \"2\"\n files: Array<{\n name: string\n offset: number\n checksums: string[]\n sizes: number[]\n }>\n}\n\nfunction compress(data: Buffer, format: CompressionFormat): Buffer {\n return format === \"deflate\" ? zlib.deflateRawSync(data, { level: 9 }) : zlib.gzipSync(data, { level: 9 })\n}\n\n/**\n * Build a content-defined block map for `inFile` using Rabin fingerprinting.\n *\n * Files are processed via streaming (peak memory ≈ RABIN_MAX = 32 KB per chunk,\n * not the full file size), making this safe for large installers.\n *\n * - If `outFile` is omitted: compressed blockmap is appended to `inFile`\n * (used for NSIS web installer / AppImage embed); `blockMapSize` is returned.\n * - If `outFile` is provided: compressed blockmap is written to that file;\n * `blockMapSize` is not included in the result.\n *\n * Returned `sha512` is SHA-512 of the full file as it exists after the call.\n */\nexport async function buildBlockMap(inFile: string, compressionFormat: CompressionFormat, outFile?: string): Promise<BlockMapDataHolder> {\n const fileHash = createHash(\"sha512\")\n const checksums: string[] = []\n const sizes: number[] = []\n let totalSize = 0\n\n // Per-chunk Rabin state. Peak memory ≈ RABIN_MAX (32 KB) — not file size.\n const chunkBuf = Buffer.allocUnsafe(RABIN_MAX)\n let chunkN = 0 // bytes accumulated for current chunk\n let hi = 0\n let lo = 0\n const win = new Uint8Array(RABIN_WINDOW) // rolling window ring buffer\n let wpos = 0\n\n function emitChunk() {\n checksums.push(Buffer.from(blake2b(chunkBuf.subarray(0, chunkN), { dkLen: 18 })).toString(\"base64\"))\n sizes.push(chunkN)\n chunkN = 0\n hi = 0\n lo = 0\n win.fill(0)\n wpos = 0\n }\n\n // Called once per byte; inlines the three-phase Rabin state machine:\n // skip (< MIN-WINDOW bytes) → prime (next WINDOW bytes) → scan (≥ MIN bytes)\n function processByte(b: number) {\n chunkBuf[chunkN++] = b\n\n if (chunkN <= RABIN_MIN - RABIN_WINDOW) {\n // Skip phase: not close enough to MIN to start priming yet\n return\n }\n\n if (chunkN <= RABIN_MIN) {\n // Prime phase: non-windowed hash update, filling the ring buffer\n win[wpos] = b\n wpos = (wpos + 1) % RABIN_WINDOW\n const top = (hi >>> 23) & 0xff\n const nhi = ((hi << 8) | (lo >>> 24)) & 0x7fffffff\n const nlo = ((lo << 8) | b) & 0xffffffff\n hi = (nhi ^ PUSH_HI[top]) | 0\n lo = (nlo ^ PUSH_LO[top]) | 0\n // At exactly MIN: check whether the primed hash is already a boundary\n if (chunkN === RABIN_MIN && (lo & RABIN_HASH_MASK) === RABIN_HASH_MASK) {\n emitChunk()\n }\n return\n }\n\n // Scan phase: sliding window — pop oldest byte, push new byte\n const old = win[wpos]\n win[wpos] = b\n wpos = (wpos + 1) % RABIN_WINDOW\n hi = (hi ^ POP_HI[old]) | 0\n lo = (lo ^ POP_LO[old]) | 0\n const top = (hi >>> 23) & 0xff\n const nhi = ((hi << 8) | (lo >>> 24)) & 0x7fffffff\n const nlo = ((lo << 8) | b) & 0xffffffff\n hi = (nhi ^ PUSH_HI[top]) | 0\n lo = (nlo ^ PUSH_LO[top]) | 0\n\n if ((lo & RABIN_HASH_MASK) === RABIN_HASH_MASK || chunkN >= RABIN_MAX) {\n emitChunk()\n }\n }\n\n // Stream-read the file, feeding SHA-512 and the Rabin chunker simultaneously\n await new Promise<void>((resolve, reject) => {\n const rs = createReadStream(inFile, { highWaterMark: 256 * 1024 })\n rs.on(\"data\", (chunk: Buffer | string) => {\n const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n chunk = buf\n fileHash.update(chunk)\n totalSize += chunk.length\n for (let i = 0; i < chunk.length; i++) {\n processByte(chunk[i])\n }\n })\n rs.on(\"end\", () => {\n if (chunkN > 0) {\n emitChunk()\n }\n resolve()\n })\n rs.on(\"error\", reject)\n })\n\n const blockMap: BlockMap = {\n version: \"2\",\n files: [{ name: \"file\", offset: 0, checksums, sizes }],\n }\n const compressed = compress(Buffer.from(JSON.stringify(blockMap)), compressionFormat)\n\n if (outFile == null || outFile === \"\") {\n // Append mode: write compressed blockmap + 4-byte size in one atomic call\n // to avoid a partial-write window between the two separate appendFile calls.\n const sizeHeader = Buffer.allocUnsafe(4)\n sizeHeader.writeUInt32BE(compressed.length, 0)\n const appended = Buffer.concat([compressed, sizeHeader])\n await appendFile(inFile, appended)\n fileHash.update(appended)\n\n return {\n size: totalSize + appended.length,\n sha512: fileHash.digest(\"base64\"),\n blockMapSize: compressed.length,\n }\n }\n\n await writeFile(outFile, compressed)\n return {\n size: totalSize,\n sha512: fileHash.digest(\"base64\"),\n }\n}\n"]}
|
|
@@ -13,7 +13,6 @@ const platformPackager_1 = require("../../platformPackager");
|
|
|
13
13
|
const hash_1 = require("../../util/hash");
|
|
14
14
|
const macosVersion_1 = require("../../util/macosVersion");
|
|
15
15
|
const timer_1 = require("../../util/timer");
|
|
16
|
-
const wine_1 = require("../../wine");
|
|
17
16
|
const archive_1 = require("../archive");
|
|
18
17
|
const differentialUpdateInfoBuilder_1 = require("../differentialUpdateInfoBuilder");
|
|
19
18
|
const targetUtil_1 = require("../targetUtil");
|
|
@@ -23,6 +22,7 @@ const nsisScriptGenerator_1 = require("./nsisScriptGenerator");
|
|
|
23
22
|
const windows_1 = require("../../toolsets/windows");
|
|
24
23
|
const nsisUtil_1 = require("./nsisUtil");
|
|
25
24
|
const nsisValidation_1 = require("./nsisValidation");
|
|
25
|
+
const WineVm_1 = require("../../vm/WineVm");
|
|
26
26
|
const debug = (0, debug_1.default)("electron-builder:nsis");
|
|
27
27
|
// noinspection SpellCheckingInspection
|
|
28
28
|
const ELECTRON_BUILDER_NS_UUID = builder_util_runtime_1.UUID.parse("50e065bc-3134-11e6-9bab-38c9862bdaf3");
|
|
@@ -235,16 +235,7 @@ class NsisTarget extends core_1.Target {
|
|
|
235
235
|
});
|
|
236
236
|
packageFiles[builder_util_1.Arch[arch]] = fileInfo;
|
|
237
237
|
}
|
|
238
|
-
|
|
239
|
-
const archiveInfo = (await (0, builder_util_1.exec)(path7za, ["l", file])).trim();
|
|
240
|
-
// after adding blockmap data will be "Warnings: 1" in the end of output
|
|
241
|
-
const match = /(\d+)\s+\d+\s+\d+\s+files/.exec(archiveInfo);
|
|
242
|
-
if (match == null) {
|
|
243
|
-
builder_util_1.log.warn({ output: archiveInfo }, "cannot compute size of app package");
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
estimatedSize += parseInt(match[1], 10);
|
|
247
|
-
}
|
|
238
|
+
estimatedSize += unpackedSize;
|
|
248
239
|
}));
|
|
249
240
|
}
|
|
250
241
|
this.configureDefinesForAllTypeOfInstaller(defines);
|
|
@@ -344,6 +335,7 @@ class NsisTarget extends core_1.Target {
|
|
|
344
335
|
return false;
|
|
345
336
|
}
|
|
346
337
|
async computeScriptAndSignUninstaller(defines, commands, installerPath, sharedHeader, archs) {
|
|
338
|
+
var _a;
|
|
347
339
|
const packager = this.packager;
|
|
348
340
|
const customScriptPath = await packager.getResource(this.options.script, "installer.nsi");
|
|
349
341
|
const script = await (0, fs_extra_1.readFile)(customScriptPath || path.join(nsisUtil_1.nsisTemplatesDir, "installer.nsi"), "utf8");
|
|
@@ -360,6 +352,7 @@ class NsisTarget extends core_1.Target {
|
|
|
360
352
|
defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join("Z:", uninstallerPath);
|
|
361
353
|
await this.executeMakensis(defines, commands, sharedHeader + (await this.computeFinalScript(script, false, archs)));
|
|
362
354
|
// http://forums.winamp.com/showthread.php?p=3078545
|
|
355
|
+
// TODO: remove workaround when wine is fully upgraded to 11
|
|
363
356
|
if ((0, macosVersion_1.isMacOsCatalina)()) {
|
|
364
357
|
try {
|
|
365
358
|
await nsisUtil_1.UninstallerReader.exec(installerPath, uninstallerPath);
|
|
@@ -377,7 +370,8 @@ class NsisTarget extends core_1.Target {
|
|
|
377
370
|
}
|
|
378
371
|
}
|
|
379
372
|
else {
|
|
380
|
-
|
|
373
|
+
const wineVm = new WineVm_1.WineVmManager((_a = packager.config.toolsets) === null || _a === void 0 ? void 0 : _a.wine);
|
|
374
|
+
await wineVm.exec(installerPath, [], { env: { __COMPAT_LAYER: "RunAsInvoker" } });
|
|
381
375
|
}
|
|
382
376
|
await packager.signIf(uninstallerPath);
|
|
383
377
|
delete defines.BUILD_UNINSTALLER;
|