@poe-platform/safe-bash 0.1.533 → 0.1.534

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.
Files changed (35) hide show
  1. package/dist/safe-bash/commands/archive/index.d.ts +2 -0
  2. package/dist/safe-bash/commands/archive/index.d.ts.map +1 -1
  3. package/dist/safe-bash/commands/archive/index.js +11 -3
  4. package/dist/safe-bash/commands/archive/index.js.map +1 -1
  5. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts +32 -0
  6. package/dist/safe-bash/commands/archive/unzip/arguments.d.ts.map +1 -0
  7. package/dist/safe-bash/commands/archive/unzip/arguments.js +214 -0
  8. package/dist/safe-bash/commands/archive/unzip/arguments.js.map +1 -0
  9. package/dist/safe-bash/commands/archive/unzip/safety.d.ts +28 -0
  10. package/dist/safe-bash/commands/archive/unzip/safety.d.ts.map +1 -0
  11. package/dist/safe-bash/commands/archive/unzip/safety.js +288 -0
  12. package/dist/safe-bash/commands/archive/unzip/safety.js.map +1 -0
  13. package/dist/safe-bash/commands/archive/unzip.d.ts +4 -0
  14. package/dist/safe-bash/commands/archive/unzip.d.ts.map +1 -0
  15. package/dist/safe-bash/commands/archive/unzip.js +264 -0
  16. package/dist/safe-bash/commands/archive/unzip.js.map +1 -0
  17. package/dist/safe-bash/commands/archive/zip/safety.d.ts +28 -0
  18. package/dist/safe-bash/commands/archive/zip/safety.d.ts.map +1 -0
  19. package/dist/safe-bash/commands/archive/zip/safety.js +228 -0
  20. package/dist/safe-bash/commands/archive/zip/safety.js.map +1 -0
  21. package/dist/safe-bash/commands/archive/zip-format.d.ts +39 -0
  22. package/dist/safe-bash/commands/archive/zip-format.d.ts.map +1 -0
  23. package/dist/safe-bash/commands/archive/zip-format.js +509 -0
  24. package/dist/safe-bash/commands/archive/zip-format.js.map +1 -0
  25. package/dist/safe-bash/commands/archive/zip.d.ts +4 -0
  26. package/dist/safe-bash/commands/archive/zip.d.ts.map +1 -0
  27. package/dist/safe-bash/commands/archive/zip.js +290 -0
  28. package/dist/safe-bash/commands/archive/zip.js.map +1 -0
  29. package/dist/safe-bash/commands/bytes/compression/codec.d.ts +1 -1
  30. package/dist/safe-bash/commands/bytes/compression/codec.d.ts.map +1 -1
  31. package/dist/safe-bash/commands/bytes/compression/codec.js +2 -2
  32. package/dist/safe-bash/commands/bytes/compression/codec.js.map +1 -1
  33. package/dist/safe-bash/core.browser.js +1932 -387
  34. package/dist/safe-bash/core.browser.js.map +4 -4
  35. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../../src/commands/archive/unzip/safety.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type CommandDefinition } from "../../contracts/index.js";
2
+ import { type ArchiveCommandsOptions } from "./internal.js";
3
+ export declare function createUnzipCommand(options?: ArchiveCommandsOptions): CommandDefinition;
4
+ //# sourceMappingURL=unzip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unzip.d.ts","sourceRoot":"","sources":["../../../src/commands/archive/unzip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyE,KAAK,iBAAiB,EAAiB,MAAM,0BAA0B,CAAC;AAGxJ,OAAO,EAAsE,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAC;AA8ChI,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,sBAA2B,GAAG,iBAAiB,CAmK1F"}
@@ -0,0 +1,264 @@
1
+ import { collectBytes, readBytes, resolvePath, writeBytes } from "../../contracts/index.js";
2
+ import { writeFileOutput } from "../../contracts/filesystem-output.js";
3
+ import { publicDiagnosticMessage } from "../../diagnostics.js";
4
+ import { Budget, bounded, checkPath, display, fail, settings, text, vfsPath } from "./internal.js";
5
+ import { decodeZipEntry, readZipArchive } from "./zip-format.js";
6
+ import { Answers, parseArguments, Selection } from "./unzip/arguments.js";
7
+ import { Extraction } from "./unzip/safety.js";
8
+ function filtered(name) {
9
+ let output = "";
10
+ for (const character of name) {
11
+ const code = character.charCodeAt(0);
12
+ output += code < 32 ? `^${String.fromCharCode(code + 64)}` : character;
13
+ }
14
+ return output;
15
+ }
16
+ function padded(name) {
17
+ return name + " ".repeat(Math.max(0, 22 - Buffer.byteLength(name)));
18
+ }
19
+ function date(entry) {
20
+ const modified = entry.modified;
21
+ const pad = (value) => String(value).padStart(2, "0");
22
+ return `${modified.getFullYear()}-${pad(modified.getMonth() + 1)}-${pad(modified.getDate())} ${pad(modified.getHours())}:${pad(modified.getMinutes())}`;
23
+ }
24
+ async function comment(bytes, budget) {
25
+ if (!bytes.length)
26
+ return;
27
+ const output = [];
28
+ let length = 0;
29
+ for (const byte of bytes) {
30
+ if (!byte)
31
+ break;
32
+ if (byte !== 13 && byte !== 19)
33
+ length += byte === 27 ? 2 : 1;
34
+ if (length > budget.limits.maxTextBytes - budget.textBytes)
35
+ fail("text output limit exceeded");
36
+ }
37
+ for (const byte of bytes) {
38
+ if (!byte)
39
+ break;
40
+ if (byte === 13 || byte === 19)
41
+ continue;
42
+ if (byte === 27)
43
+ output.push(94, 91);
44
+ else
45
+ output.push(byte);
46
+ }
47
+ if (output.length && output.at(-1) !== 10)
48
+ output.push(10);
49
+ const value = Uint8Array.from(output);
50
+ if (value.length > budget.limits.maxTextBytes - budget.textBytes)
51
+ fail("text output limit exceeded");
52
+ budget.textBytes += value.length;
53
+ await writeBytes(budget.context.stdout, value, budget.context.signal);
54
+ }
55
+ export function createUnzipCommand(options = {}) {
56
+ const limits = settings(options);
57
+ return { name: "unzip", description: "List and safely extract ZIP archives in the virtual filesystem", async execute(original) {
58
+ original.signal.throwIfAborted();
59
+ const controller = new AbortController();
60
+ const context = { ...original, signal: AbortSignal.any([original.signal, controller.signal]) };
61
+ const extraction = new Extraction(context, limits);
62
+ let answers;
63
+ let closing;
64
+ const close = () => closing ??= (async () => {
65
+ controller.abort(new Error("unzip command closed"));
66
+ await extraction.close();
67
+ await answers?.close().catch(() => { });
68
+ })();
69
+ original.registerCleanup?.(close);
70
+ const budget = new Budget(context, limits);
71
+ try {
72
+ const parsed = parseArguments(context, limits);
73
+ const selection = new Selection(parsed.patterns, limits, context.signal);
74
+ let archive = parsed.archive;
75
+ let archiveStat;
76
+ for (const candidate of [archive, `${archive}.zip`, `${archive}.ZIP`]) {
77
+ checkPath(candidate, limits);
78
+ const candidateStat = await extraction.stat(vfsPath(context.cwd, candidate));
79
+ if (candidateStat) {
80
+ archive = candidate;
81
+ archiveStat = candidateStat;
82
+ break;
83
+ }
84
+ }
85
+ if (!archiveStat) {
86
+ await budget.output(`unzip: cannot find or open ${archive}, ${archive}.zip or ${archive}.ZIP.\n`, true);
87
+ return { exitCode: 9 };
88
+ }
89
+ const archivePath = await extraction.operation(() => context.fs.realpath(vfsPath(context.cwd, archive), { signal: context.signal }));
90
+ archiveStat = await extraction.operation(() => context.fs.stat(archivePath, { signal: context.signal }));
91
+ if (archiveStat.type !== "file")
92
+ fail("input archive is not a regular file");
93
+ const bytes = await collectBytes(bounded(extraction.input(archivePath), limits.maxArchiveBytes, context.signal, limits.chunkSize), { signal: context.signal, maxBytes: limits.maxArchiveBytes });
94
+ await budget.output(`Archive: ${filtered(archive)}\n`);
95
+ const zip = await readZipArchive(bytes, limits, context.signal);
96
+ await comment(zip.comment, budget);
97
+ if (!zip.entries.length) {
98
+ await budget.output(`warning [${filtered(archive)}]: zipfile is empty\n`, true);
99
+ return { exitCode: 1 };
100
+ }
101
+ if (parsed.list)
102
+ await budget.output(" Length Date Time Name\n--------- ---------- ----- ----\n");
103
+ const rootRaw = parsed.destination === undefined ? context.cwd : vfsPath(context.cwd, parsed.destination);
104
+ const root = parsed.list ? resolvePath(rootRaw) : await extraction.directory(rootRaw, true);
105
+ answers = new Answers(extraction.source(context.stdin), limits, context.signal);
106
+ let overwrite = parsed.overwrite ? "all" : "ask";
107
+ let exitCode = 0;
108
+ let selected = 0;
109
+ let total = 0;
110
+ let actualTotal = 0;
111
+ const links = [];
112
+ const directories = [];
113
+ for (const entry of zip.entries) {
114
+ await budget.member(entry.size);
115
+ checkPath(entry.name, limits);
116
+ if (!await selection.matches(entry.name))
117
+ continue;
118
+ selected++;
119
+ total += entry.size;
120
+ if (parsed.list) {
121
+ await budget.output(`${String(entry.size).padStart(9)} ${date(entry)} ${filtered(entry.name)}\n`);
122
+ if (entry.comment)
123
+ await comment(entry.comment, budget);
124
+ continue;
125
+ }
126
+ let path = extraction.member(root, entry.name);
127
+ const fileType = entry.mode & 0o170000;
128
+ if (fileType && fileType !== 0o100000 && fileType !== 0o040000 && fileType !== 0o120000)
129
+ fail("unsupported special ZIP entry");
130
+ if (path === root && !entry.directory)
131
+ fail("entry would replace extraction root");
132
+ let shown = parsed.destination === undefined ? entry.name : `${parsed.destination.endsWith("/") ? parsed.destination : `${parsed.destination}/`}${entry.name}`;
133
+ await extraction.parents(root, path, true);
134
+ if (entry.directory) {
135
+ if (entry.size)
136
+ fail("directory has nonempty payload");
137
+ for await (const chunk of readBytes(decodeZipEntry(entry, limits, context.signal), context.signal)) {
138
+ await writeFileOutput(context, chunk, async () => { if (chunk.length)
139
+ fail("directory has nonempty payload"); });
140
+ }
141
+ const existing = await extraction.stat(path);
142
+ if (existing && existing.type !== "directory")
143
+ fail("directory destination is not a directory");
144
+ if (!existing) {
145
+ await extraction.operation(() => context.fs.mkdir(path, { signal: context.signal, mode: 0o755 }));
146
+ await budget.output(` creating: ${filtered(shown)}\n`);
147
+ }
148
+ const identity = await extraction.stat(path);
149
+ if (!identity || identity.type !== "directory")
150
+ fail("directory changed during creation");
151
+ directories.push({ path, entry, identity });
152
+ continue;
153
+ }
154
+ let existing = await extraction.destination(path, archivePath, archiveStat);
155
+ let skip = false;
156
+ let prompting = 0;
157
+ while (existing && overwrite !== "all") {
158
+ if (overwrite === "none") {
159
+ skip = true;
160
+ break;
161
+ }
162
+ if (++prompting > limits.maxMembers)
163
+ fail("overwrite prompt work limit exceeded");
164
+ await budget.output(`replace ${filtered(shown)}? [y]es, [n]o, [A]ll, [N]one, [r]ename: `, true);
165
+ const answer = await answers.read();
166
+ if (answer === undefined) {
167
+ await budget.output(' NULL\n(EOF or read error, treating as "[N]one" ...)\n', true);
168
+ overwrite = "none";
169
+ exitCode = 1;
170
+ skip = true;
171
+ break;
172
+ }
173
+ const choice = answer[0];
174
+ if (choice === "A") {
175
+ overwrite = "all";
176
+ break;
177
+ }
178
+ if (choice === "y" || choice === "Y")
179
+ break;
180
+ if (choice === "n" || choice === "N") {
181
+ if (choice === "N")
182
+ overwrite = "none";
183
+ skip = true;
184
+ break;
185
+ }
186
+ if (choice === "r" || choice === "R") {
187
+ let renamed = "";
188
+ while (!renamed) {
189
+ await budget.output("new name: ", true);
190
+ const value = await answers.read(limits.maxPathBytes);
191
+ if (value === undefined)
192
+ fail("EOF while reading replacement name");
193
+ renamed = value.endsWith("\n") ? value.slice(0, -1) : value;
194
+ }
195
+ path = extraction.member(root, renamed);
196
+ shown = parsed.destination === undefined ? renamed : `${parsed.destination.endsWith("/") ? parsed.destination : `${parsed.destination}/`}${renamed}`;
197
+ await extraction.parents(root, path, true);
198
+ existing = await extraction.destination(path, archivePath, archiveStat);
199
+ continue;
200
+ }
201
+ const response = choice === "\n" || choice === "\r" ? "{ENTER}" : answer.endsWith("\n") ? answer.slice(0, -1) : answer;
202
+ await budget.output(`error: invalid response [${response}]\n`, true);
203
+ }
204
+ if (skip)
205
+ continue;
206
+ const chunks = [];
207
+ let actual = 0;
208
+ for await (const chunk of readBytes(decodeZipEntry(entry, limits, context.signal), context.signal)) {
209
+ if (chunk.length > limits.maxEntryBytes - actual || chunk.length > limits.maxTotalBytes - actualTotal)
210
+ fail("actual decompressed byte limit exceeded");
211
+ actual += chunk.length;
212
+ actualTotal += chunk.length;
213
+ await writeFileOutput(context, chunk, async (bytes) => { chunks.push(Uint8Array.from(bytes)); });
214
+ }
215
+ if (entry.symlink) {
216
+ if (actual > limits.maxPathBytes)
217
+ fail("symlink target byte limit exceeded");
218
+ const target = text(Buffer.concat(chunks));
219
+ await extraction.target(root, path, target);
220
+ if (!context.fs.symlink || context.fs.capabilities.symlinks === false)
221
+ fail("filesystem does not support symlinks");
222
+ links.push({ path, shown, target, existing, entry });
223
+ await budget.output(` linking: ${padded(filtered(shown))} -> ${filtered(target)} \n`);
224
+ }
225
+ else {
226
+ await extraction.publish(root, path, chunks, existing, entry.mode, entry.modified);
227
+ await budget.output(`${entry.method === 0 ? " extracting" : " inflating"}: ${padded(filtered(shown))} \n`);
228
+ }
229
+ }
230
+ if (parsed.list)
231
+ await budget.output(`--------- -------\n${String(total).padStart(9)} ${selected} file${selected === 1 ? "" : "s"}\n`);
232
+ else {
233
+ if (links.length)
234
+ await budget.output("finishing deferred symbolic links:\n");
235
+ for (const link of links) {
236
+ await extraction.parents(root, link.path, false);
237
+ await extraction.target(root, link.path, link.target);
238
+ await extraction.destination(link.path, archivePath, archiveStat);
239
+ await extraction.publish(root, link.path, [], link.existing, link.entry.mode, link.entry.modified, link.target);
240
+ await budget.output(` ${padded(filtered(link.shown))} -> ${filtered(link.target)}\n`);
241
+ }
242
+ for (const { path, entry, identity } of directories.reverse()) {
243
+ await extraction.metadata(root, path, identity, entry.mode, entry.modified);
244
+ }
245
+ for (let index = 0; index < parsed.patterns.length; index++)
246
+ if (!selection.matched.has(index)) {
247
+ await budget.output(`caution: filename not matched: ${filtered(parsed.patterns[index])}\n`, true);
248
+ exitCode = 11;
249
+ }
250
+ }
251
+ return { exitCode: selected ? exitCode : 11 };
252
+ }
253
+ catch (error) {
254
+ original.signal.throwIfAborted();
255
+ const message = display(publicDiagnosticMessage(error, original.onInternalError).slice(0, limits.maxDiagnosticBytes));
256
+ await writeBytes(original.stderr, Buffer.from(`unzip: ${message}\n`).subarray(0, limits.maxDiagnosticBytes), original.signal);
257
+ return { exitCode: 2 };
258
+ }
259
+ finally {
260
+ await close();
261
+ }
262
+ } };
263
+ }
264
+ //# sourceMappingURL=unzip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unzip.js","sourceRoot":"","sources":["../../../src/commands/archive/unzip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAA8D,MAAM,0BAA0B,CAAC;AACxJ,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAA+B,MAAM,eAAe,CAAC;AAChI,OAAO,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,IAAI,CAAC,KAAe;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AAC1J,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,KAAiB,EAAE,MAAc;IACtD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO;IAC1B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACjG,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QACzC,IAAI,IAAI,KAAK,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS;QAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACrG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;IACjC,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkC,EAAE;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,gEAAgE,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;YAC3H,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,OAAO,GAAmB,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC/G,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,OAA4B,CAAC;YACjC,IAAI,OAAkC,CAAC;YACvC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE;gBAC1C,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBACpD,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,EAAE,CAAC;YACL,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC/C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACzE,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC7B,IAAI,WAAiC,CAAC;gBACtC,KAAK,MAAM,SAAS,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC,EAAE,CAAC;oBACtE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC7B,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;oBAC7E,IAAI,aAAa,EAAE,CAAC;wBAAC,OAAO,GAAG,SAAS,CAAC;wBAAC,WAAW,GAAG,aAAa,CAAC;wBAAC,MAAM;oBAAC,CAAC;gBACjF,CAAC;gBACD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,MAAM,CAAC,MAAM,CAAC,+BAA+B,OAAO,KAAK,OAAO,WAAW,OAAO,SAAS,EAAE,IAAI,CAAC,CAAC;oBACzG,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACzB,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACrI,WAAW,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACzG,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM;oBAAE,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;gBACjM,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACxB,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;oBACjF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACzB,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,0EAA0E,CAAC,CAAC;gBACjH,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC1G,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5F,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChF,IAAI,SAAS,GAA2B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzE,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,IAAI,WAAW,GAAG,CAAC,CAAC;gBACpB,MAAM,KAAK,GAAuG,EAAE,CAAC;gBACrH,MAAM,WAAW,GAA4D,EAAE,CAAC;gBAChF,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC9B,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,SAAS;oBACnD,QAAQ,EAAE,CAAC;oBAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;oBAChC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAChB,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrG,IAAI,KAAK,CAAC,OAAO;4BAAE,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBACxD,SAAS;oBACX,CAAC;oBACD,IAAI,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACvC,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ;wBAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBAC/H,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;wBAAE,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACnF,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC/J,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC3C,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpB,IAAI,KAAK,CAAC,IAAI;4BAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;wBACvD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;4BACnG,MAAM,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,MAAM;gCAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnH,CAAC;wBACD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC7C,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW;4BAAE,IAAI,CAAC,0CAA0C,CAAC,CAAC;wBAChG,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;4BAClG,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC3D,CAAC;wBACD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC7C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW;4BAAE,IAAI,CAAC,mCAAmC,CAAC,CAAC;wBAC1F,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;wBAC5C,SAAS;oBACX,CAAC;oBACD,IAAI,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;oBAC5E,IAAI,IAAI,GAAG,KAAK,CAAC;oBACjB,IAAI,SAAS,GAAG,CAAC,CAAC;oBAClB,OAAO,QAAQ,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;wBACvC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;4BAAC,IAAI,GAAG,IAAI,CAAC;4BAAC,MAAM;wBAAC,CAAC;wBACjD,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,UAAU;4BAAE,IAAI,CAAC,sCAAsC,CAAC,CAAC;wBAClF,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,QAAQ,CAAC,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC;wBAChG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;wBACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;4BACzB,MAAM,MAAM,CAAC,MAAM,CAAC,wDAAwD,EAAE,IAAI,CAAC,CAAC;4BACpF,SAAS,GAAG,MAAM,CAAC;4BAAC,QAAQ,GAAG,CAAC,CAAC;4BAAC,IAAI,GAAG,IAAI,CAAC;4BAAC,MAAM;wBACvD,CAAC;wBACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBACzB,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;4BAAC,SAAS,GAAG,KAAK,CAAC;4BAAC,MAAM;wBAAC,CAAC;wBACjD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;4BAAE,MAAM;wBAC5C,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;4BAAC,IAAI,MAAM,KAAK,GAAG;gCAAE,SAAS,GAAG,MAAM,CAAC;4BAAC,IAAI,GAAG,IAAI,CAAC;4BAAC,MAAM;wBAAC,CAAC;wBACrG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;4BACrC,IAAI,OAAO,GAAG,EAAE,CAAC;4BACjB,OAAO,CAAC,OAAO,EAAE,CAAC;gCAChB,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gCACxC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gCACtD,IAAI,KAAK,KAAK,SAAS;oCAAE,IAAI,CAAC,oCAAoC,CAAC,CAAC;gCACpE,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;4BAC9D,CAAC;4BACD,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;4BACxC,KAAK,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,OAAO,EAAE,CAAC;4BACrJ,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;4BAC3C,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;4BACxE,SAAS;wBACX,CAAC;wBACD,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBACvH,MAAM,MAAM,CAAC,MAAM,CAAC,6BAA6B,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC;oBACxE,CAAC;oBACD,IAAI,IAAI;wBAAE,SAAS;oBACnB,MAAM,MAAM,GAAiB,EAAE,CAAC;oBAChC,IAAI,MAAM,GAAG,CAAC,CAAC;oBACf,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBACnG,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG,WAAW;4BAAE,IAAI,CAAC,yCAAyC,CAAC,CAAC;wBACvJ,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;wBAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;wBACpD,MAAM,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjG,CAAC;oBACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAClB,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY;4BAAE,IAAI,CAAC,oCAAoC,CAAC,CAAC;wBAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC3C,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;wBAC5C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,KAAK,KAAK;4BAAE,IAAI,CAAC,sCAAsC,CAAC,CAAC;wBACpH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;wBACrD,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5F,CAAC;yBAAM,CAAC;wBACN,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACnF,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC/G,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,0CAA0C,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,QAAQ,QAAQ,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;qBAC1K,CAAC;oBACJ,IAAI,KAAK,CAAC,MAAM;wBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;oBAC9E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBACjD,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBACtD,MAAM,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;wBAClE,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBAChH,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACzF,CAAC;oBACD,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;wBAC9D,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAC9E,CAAC;oBACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;wBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC/F,MAAM,MAAM,CAAC,MAAM,CAAC,mCAAmC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;4BACpG,QAAQ,GAAG,EAAE,CAAC;wBAChB,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACtH,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9H,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACzB,CAAC;oBAAS,CAAC;gBAAC,MAAM,KAAK,EAAE,CAAC;YAAC,CAAC;QAC9B,CAAC,EAAE,CAAC;AACN,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type ByteSource, type CommandContext, type FileStat } from "../../../contracts/index.js";
2
+ import { type ArchiveLimits } from "../internal.js";
3
+ export declare class ZipScope {
4
+ private readonly original;
5
+ readonly limits: ArchiveLimits;
6
+ readonly context: CommandContext;
7
+ private readonly controller;
8
+ private readonly pending;
9
+ private readonly readers;
10
+ private readonly closedReason;
11
+ private drain;
12
+ private work;
13
+ constructor(original: CommandContext, limits: ArchiveLimits);
14
+ readonly close: () => Promise<void>;
15
+ operation<Value>(action: () => Value | PromiseLike<Value>): Promise<Value>;
16
+ stat(path: string): Promise<FileStat | undefined>;
17
+ private source;
18
+ input(path: string): ByteSource;
19
+ }
20
+ export interface ZipPublication {
21
+ readonly output: string;
22
+ readonly parent: string;
23
+ readonly parentName: string;
24
+ readonly existing: FileStat | undefined;
25
+ readonly bytes: Uint8Array;
26
+ }
27
+ export declare function publishZip(scope: ZipScope, prepared: ZipPublication): Promise<void>;
28
+ //# sourceMappingURL=safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../../../src/commands/archive/zip/safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE7G,OAAO,EAA8C,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEhG,qBAAa,QAAQ;IAQP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAkB,QAAQ,CAAC,MAAM,EAAE,aAAa;IAPrF,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,IAAI,CAAK;gBACY,QAAQ,EAAE,cAAc,EAAW,MAAM,EAAE,aAAa;IAIrF,QAAQ,CAAC,KAAK,QAAO,OAAO,CAAC,IAAI,CAAC,CAYhC;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAW1E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAQvD,OAAO,CAAC,MAAM;IAiBP,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAcvC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FzF"}
@@ -0,0 +1,228 @@
1
+ import { readBytes } from "../../../contracts/index.js";
2
+ import { retainFileSystemCleanup } from "@poe-platform/safe-fs/core";
3
+ import { checkPath, fail, hasIdentity, sameIdentity } from "../internal.js";
4
+ export class ZipScope {
5
+ original;
6
+ limits;
7
+ context;
8
+ controller = new AbortController();
9
+ pending = new Set();
10
+ readers = new Set();
11
+ closedReason = new Error("ZIP command is closed");
12
+ drain;
13
+ work = 0;
14
+ constructor(original, limits) {
15
+ this.original = original;
16
+ this.limits = limits;
17
+ this.context = { ...original, signal: AbortSignal.any([original.signal, this.controller.signal]) };
18
+ original.registerCleanup?.(this.close);
19
+ }
20
+ close = () => {
21
+ if (!this.drain) {
22
+ this.drain = Promise.resolve().then(async () => {
23
+ while (this.pending.size)
24
+ await Promise.allSettled([...this.pending]);
25
+ const results = await Promise.allSettled([...this.readers].map(close => close()));
26
+ const failures = results.filter(result => result.status === "rejected").map(result => result.reason);
27
+ if (failures.length === 1)
28
+ throw failures[0];
29
+ if (failures.length)
30
+ throw new AggregateError(failures, "ZIP reader cleanup failed");
31
+ });
32
+ this.controller.abort(this.original.signal.aborted ? this.original.signal.reason : this.closedReason);
33
+ }
34
+ return this.drain;
35
+ };
36
+ async operation(action) {
37
+ this.context.signal.throwIfAborted();
38
+ if (++this.work > this.limits.maxPatternSteps)
39
+ fail("filesystem work limit exceeded");
40
+ const pending = Promise.resolve().then(() => { this.context.signal.throwIfAborted(); return action(); });
41
+ this.pending.add(pending);
42
+ try {
43
+ const value = await pending;
44
+ this.context.signal.throwIfAborted();
45
+ return value;
46
+ }
47
+ finally {
48
+ this.pending.delete(pending);
49
+ }
50
+ }
51
+ async stat(path) {
52
+ try {
53
+ return await this.operation(() => this.context.fs.lstat(path, { signal: this.context.signal }));
54
+ }
55
+ catch (error) {
56
+ this.context.signal.throwIfAborted();
57
+ if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT")
58
+ return undefined;
59
+ throw error;
60
+ }
61
+ }
62
+ source(source) {
63
+ const iterator = source[Symbol.asyncIterator]();
64
+ let closing;
65
+ const close = () => closing ??= (async () => {
66
+ try {
67
+ await iterator.return?.();
68
+ }
69
+ finally {
70
+ this.readers.delete(close);
71
+ }
72
+ })();
73
+ this.readers.add(close);
74
+ return { [Symbol.asyncIterator]: () => ({
75
+ next: () => this.operation(async () => {
76
+ const result = await iterator.next();
77
+ if (result.done)
78
+ this.readers.delete(close);
79
+ return result;
80
+ }),
81
+ async return() { await close(); return { done: true, value: undefined }; },
82
+ }) };
83
+ }
84
+ async *input(path) {
85
+ const { fs, signal } = this.context;
86
+ const capabilities = await this.operation(() => fs.capabilitiesFor?.(path, { signal }) ?? fs.capabilities);
87
+ if (fs.readStream && capabilities.streamingRead !== false) {
88
+ const source = await this.operation(() => this.source(fs.readStream(path, { signal, chunkSize: this.limits.chunkSize })));
89
+ yield* readBytes(source, signal);
90
+ }
91
+ else {
92
+ const stat = await this.operation(() => fs.stat(path, { signal }));
93
+ if (stat.size > this.limits.maxBufferedFileBytes)
94
+ fail("filesystem lacks streaming reads: buffered file limit exceeded");
95
+ const bytes = await this.operation(() => fs.readFile(path, { signal, maxBytes: this.limits.maxBufferedFileBytes }));
96
+ if (bytes.length > this.limits.maxBufferedFileBytes)
97
+ fail("buffered file limit exceeded");
98
+ yield bytes;
99
+ }
100
+ }
101
+ }
102
+ export async function publishZip(scope, prepared) {
103
+ const { fs, signal } = scope.context;
104
+ const capabilities = await scope.operation(() => fs.capabilitiesFor?.(prepared.output, { signal }) ?? fs.capabilities);
105
+ if (capabilities.atomicRename !== true || capabilities.exclusiveCreate !== true || capabilities.explicitDirectories !== true
106
+ || capabilities.permissions !== true || !fs.rmdir || (prepared.existing ? !fs.chmod : capabilities.atomicRenameNoReplace !== true))
107
+ fail("ZIP publication requires atomic rename, exclusive creation, private directories and mode preservation");
108
+ let directory;
109
+ let temporary = "";
110
+ let identity;
111
+ let published = false;
112
+ let collision = false;
113
+ let failure;
114
+ const checkOwner = async () => {
115
+ const parent = await scope.operation(() => fs.realpath(prepared.parentName, { signal }));
116
+ const owner = directory && await scope.stat(directory.path);
117
+ if (parent !== prepared.parent || !owner || owner.type !== "directory" || !sameIdentity(owner, directory.stat))
118
+ fail("ZIP temporary ownership changed before mutation");
119
+ };
120
+ const close = retainFileSystemCleanup(fs, async (cleanup) => {
121
+ if (!directory || !hasIdentity(directory.stat))
122
+ return;
123
+ const parent = await cleanup.realpath(prepared.parentName);
124
+ const owner = await cleanup.lstat(directory.path);
125
+ if (parent !== prepared.parent || owner.type !== "directory" || !sameIdentity(owner, directory.stat))
126
+ fail("ZIP temporary ownership changed before cleanup");
127
+ if (temporary && !published && !collision) {
128
+ let current;
129
+ try {
130
+ current = await cleanup.lstat(temporary);
131
+ }
132
+ catch (error) {
133
+ if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "ENOENT")
134
+ throw error;
135
+ }
136
+ if (current) {
137
+ if (!identity || !sameIdentity(current, identity) || current.type !== "file" || current.nlink !== 1)
138
+ fail("ZIP temporary file changed before cleanup");
139
+ await cleanup.rm(temporary);
140
+ }
141
+ }
142
+ await cleanup.rmdir(directory.path);
143
+ }, { maxOperations: 16 });
144
+ try {
145
+ for (let attempt = 0; attempt < Math.min(64, scope.limits.maxMembers); attempt++) {
146
+ const path = `${prepared.parent === "/" ? "" : prepared.parent}/.zip-${attempt + 1}`;
147
+ checkPath(path, scope.limits);
148
+ if (path === prepared.output)
149
+ continue;
150
+ try {
151
+ await scope.operation(async () => {
152
+ await fs.mkdir(path, { signal, mode: 0o700 });
153
+ directory = { path, stat: await fs.lstat(path) };
154
+ });
155
+ break;
156
+ }
157
+ catch (error) {
158
+ signal.throwIfAborted();
159
+ if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "EEXIST")
160
+ throw error;
161
+ }
162
+ }
163
+ if (!directory)
164
+ fail("ZIP temporary directory attempt limit exceeded");
165
+ if (directory.stat.type !== "directory" || !hasIdentity(directory.stat) || (directory.stat.mode & 0o777) !== 0o700)
166
+ fail("ZIP temporary directory ownership unavailable");
167
+ temporary = `${directory.path}/archive.zip`;
168
+ checkPath(temporary, scope.limits);
169
+ await checkOwner();
170
+ await scope.operation(async () => {
171
+ let writeFailure;
172
+ try {
173
+ await fs.writeFile(temporary, prepared.bytes, { signal, flag: "wx", ...(prepared.existing ? { mode: prepared.existing.mode & 0o7777 } : {}) });
174
+ }
175
+ catch (error) {
176
+ collision = typeof error === "object" && error !== null && "code" in error && error.code === "EEXIST";
177
+ writeFailure = { reason: error };
178
+ }
179
+ if (!collision) {
180
+ await checkOwner();
181
+ try {
182
+ identity = await fs.lstat(temporary);
183
+ }
184
+ catch (error) {
185
+ if (typeof error !== "object" || error === null || !("code" in error) || error.code !== "ENOENT")
186
+ throw error;
187
+ }
188
+ }
189
+ if (writeFailure)
190
+ throw writeFailure.reason;
191
+ });
192
+ if (!identity || !hasIdentity(identity) || identity.type !== "file" || identity.nlink !== 1 || identity.size !== prepared.bytes.length)
193
+ fail("ZIP staged archive identity or size changed");
194
+ if (prepared.existing) {
195
+ await checkOwner();
196
+ await scope.operation(() => fs.chmod(temporary, prepared.existing.mode & 0o7777, { signal }));
197
+ }
198
+ const parent = await scope.operation(() => fs.realpath(prepared.parentName, { signal }));
199
+ const current = await scope.stat(prepared.output);
200
+ if (parent !== prepared.parent || (prepared.existing ? !current || !sameIdentity(prepared.existing, current)
201
+ || current.type !== "file" || current.nlink !== 1 || current.size !== prepared.existing.size
202
+ || current.mode !== prepared.existing.mode || current.mtimeMs !== prepared.existing.mtimeMs || current.ctimeMs !== prepared.existing.ctimeMs : current !== undefined))
203
+ fail("archive backing entry changed before publication");
204
+ const staging = await scope.stat(temporary);
205
+ const owner = await scope.stat(directory.path);
206
+ if (!staging || !sameIdentity(staging, identity) || staging.type !== "file" || staging.nlink !== 1 || staging.size !== prepared.bytes.length
207
+ || !owner || !sameIdentity(owner, directory.stat) || owner.type !== "directory")
208
+ fail("ZIP temporary ownership changed before publication");
209
+ await scope.operation(async () => {
210
+ await fs.rename(temporary, prepared.output, { signal, ...(!prepared.existing ? { noReplace: true } : {}) });
211
+ published = true;
212
+ });
213
+ }
214
+ catch (error) {
215
+ failure = { reason: error };
216
+ }
217
+ try {
218
+ await close();
219
+ }
220
+ catch (error) {
221
+ if (failure)
222
+ throw new AggregateError([failure.reason, error], "ZIP publication and cleanup failed");
223
+ throw error;
224
+ }
225
+ if (failure)
226
+ throw failure.reason;
227
+ }
228
+ //# sourceMappingURL=safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../../src/commands/archive/zip/safety.ts"],"names":[],"mappings":"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"}