poe-code 15.0.5 → 15.0.6
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/dist/metafile.json +1 -1
- package/package.json +1 -1
- package/packages/safe-bash/dist/commands/archive/index.d.ts +2 -0
- package/packages/safe-bash/dist/commands/archive/index.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/archive/index.js +11 -3
- package/packages/safe-bash/dist/commands/archive/index.js.map +1 -1
- package/packages/safe-bash/dist/commands/archive/unzip/arguments.d.ts +32 -0
- package/packages/safe-bash/dist/commands/archive/unzip/arguments.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/archive/unzip/arguments.js +214 -0
- package/packages/safe-bash/dist/commands/archive/unzip/arguments.js.map +1 -0
- package/packages/safe-bash/dist/commands/archive/unzip/safety.d.ts +28 -0
- package/packages/safe-bash/dist/commands/archive/unzip/safety.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/archive/unzip/safety.js +288 -0
- package/packages/safe-bash/dist/commands/archive/unzip/safety.js.map +1 -0
- package/packages/safe-bash/dist/commands/archive/unzip.d.ts +4 -0
- package/packages/safe-bash/dist/commands/archive/unzip.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/archive/unzip.js +264 -0
- package/packages/safe-bash/dist/commands/archive/unzip.js.map +1 -0
- package/packages/safe-bash/dist/commands/archive/zip/safety.d.ts +28 -0
- package/packages/safe-bash/dist/commands/archive/zip/safety.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/archive/zip/safety.js +228 -0
- package/packages/safe-bash/dist/commands/archive/zip/safety.js.map +1 -0
- package/packages/safe-bash/dist/commands/archive/zip-format.d.ts +39 -0
- package/packages/safe-bash/dist/commands/archive/zip-format.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/archive/zip-format.js +509 -0
- package/packages/safe-bash/dist/commands/archive/zip-format.js.map +1 -0
- package/packages/safe-bash/dist/commands/archive/zip.d.ts +4 -0
- package/packages/safe-bash/dist/commands/archive/zip.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/archive/zip.js +290 -0
- package/packages/safe-bash/dist/commands/archive/zip.js.map +1 -0
- package/packages/safe-bash/dist/commands/bytes/compression/codec.d.ts +1 -1
- package/packages/safe-bash/dist/commands/bytes/compression/codec.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/bytes/compression/codec.js +2 -2
- package/packages/safe-bash/dist/commands/bytes/compression/codec.js.map +1 -1
- package/packages/safe-bash/dist/core.browser.js +1937 -389
- package/packages/safe-bash/dist/core.browser.js.map +4 -4
- package/packages/safe-bash/dist/shell/runtime.d.ts +1 -0
- package/packages/safe-bash/dist/shell/runtime.d.ts.map +1 -1
- package/packages/safe-bash/dist/shell/runtime.js +4 -1
- package/packages/safe-bash/dist/shell/runtime.js.map +1 -1
- package/packages/safe-fs/dist/core.d.ts +2 -1
- package/packages/safe-fs/dist/fs/scoped.d.ts +12 -2
- package/packages/safe-fs/dist/index.d.ts +2 -1
- package/packages/safe-js/dist/browser/chunks/{chunk-GQOAEEHU.js → chunk-3EJ7BQOJ.js} +89 -5
- package/packages/safe-js/dist/browser/chunks/{chunk-GQOAEEHU.js.map → chunk-3EJ7BQOJ.js.map} +3 -3
- package/packages/safe-js/dist/browser/safe-fs-core.js +3 -1
- package/packages/safe-js/dist/browser/safe-fs.js +3 -1
- package/packages/safe-js/dist/chunks/{chunk-DIISVPWF.js → chunk-742TUUOL.js} +89 -5
- package/packages/safe-js/dist/chunks/{chunk-DIISVPWF.js.map → chunk-742TUUOL.js.map} +3 -3
- package/packages/safe-js/dist/chunks/{chunk-L6LDJNBY.js → chunk-NMX3FJ3X.js} +3 -3
- package/packages/safe-js/dist/chunks/{chunk-CAWKMCKD.js → chunk-UVHJFEFO.js} +2 -2
- package/packages/safe-js/dist/cli.js +3 -3
- package/packages/safe-js/dist/index.js +3 -3
- package/packages/safe-js/dist/safe-fs-core.js +3 -1
- package/packages/safe-js/dist/safe-fs-core.js.map +1 -1
- package/packages/safe-js/dist/safe-fs-node.js +4 -2
- package/packages/safe-js/dist/safe-fs.js +4 -2
- /package/packages/safe-js/dist/chunks/{chunk-L6LDJNBY.js.map → chunk-NMX3FJ3X.js.map} +0 -0
- /package/packages/safe-js/dist/chunks/{chunk-CAWKMCKD.js.map → chunk-UVHJFEFO.js.map} +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { readBytes } from "../../../contracts/index.js";
|
|
2
|
+
import { retainFileSystemCleanup } from "poe-code/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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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ByteSource } from "../../contracts/index.js";
|
|
2
|
+
import { type ArchiveLimits } from "./internal.js";
|
|
3
|
+
export interface ZipEntry {
|
|
4
|
+
name: string;
|
|
5
|
+
data: Uint8Array;
|
|
6
|
+
size: number;
|
|
7
|
+
method: number;
|
|
8
|
+
crc32: number;
|
|
9
|
+
modified: Date;
|
|
10
|
+
mode: number;
|
|
11
|
+
directory: boolean;
|
|
12
|
+
symlink: boolean;
|
|
13
|
+
rawName?: Uint8Array;
|
|
14
|
+
localName?: Uint8Array;
|
|
15
|
+
comment?: Uint8Array;
|
|
16
|
+
localExtra?: Uint8Array;
|
|
17
|
+
centralExtra?: Uint8Array;
|
|
18
|
+
flags?: number;
|
|
19
|
+
versionMadeBy?: number;
|
|
20
|
+
internalAttributes?: number;
|
|
21
|
+
externalAttributes?: number;
|
|
22
|
+
dosTime?: number;
|
|
23
|
+
dosDate?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface ZipArchive {
|
|
26
|
+
entries: readonly ZipEntry[];
|
|
27
|
+
comment: Uint8Array;
|
|
28
|
+
}
|
|
29
|
+
export declare function crc32(bytes: Uint8Array, previous?: number): number;
|
|
30
|
+
export declare function readZipArchive(bytes: Uint8Array, limits: ArchiveLimits, signal: AbortSignal): Promise<ZipArchive>;
|
|
31
|
+
export declare function decodeZipEntry(entry: ZipEntry, limits: ArchiveLimits, signal: AbortSignal): ByteSource;
|
|
32
|
+
export declare function makeZipEntry(name: string, bytes: Uint8Array, attributes: {
|
|
33
|
+
modified: Date;
|
|
34
|
+
mode: number;
|
|
35
|
+
directory: boolean;
|
|
36
|
+
symlink: boolean;
|
|
37
|
+
}, limits: ArchiveLimits, signal: AbortSignal): Promise<ZipEntry>;
|
|
38
|
+
export declare function writeZipArchive(archive: ZipArchive, limits: ArchiveLimits, signal: AbortSignal): Promise<Uint8Array>;
|
|
39
|
+
//# sourceMappingURL=zip-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-format.d.ts","sourceRoot":"","sources":["../../../src/commands/archive/zip-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB;AAUD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,SAAI,GAAG,MAAM,CAI7D;AA8HD,wBAAsB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA+HvH;AAED,wBAAuB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAwB7G;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkCrN;AAmBD,wBAAsB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAmG1H"}
|