@volter/browser-wali 0.1.10 → 0.1.12
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/bulk-memory.d.ts +23 -0
- package/dist/bulk-memory.d.ts.map +1 -0
- package/dist/bulk-memory.js +50 -0
- package/dist/bulk-memory.js.map +1 -0
- package/dist/coherent-file-locks.d.ts +4 -1
- package/dist/coherent-file-locks.d.ts.map +1 -1
- package/dist/coherent-file-locks.js +24 -1
- package/dist/coherent-file-locks.js.map +1 -1
- package/dist/descriptors.d.ts +18 -1
- package/dist/descriptors.d.ts.map +1 -1
- package/dist/descriptors.js +51 -6
- package/dist/descriptors.js.map +1 -1
- package/dist/filesystem-host.d.ts +81 -0
- package/dist/filesystem-host.d.ts.map +1 -0
- package/dist/filesystem-host.js +849 -0
- package/dist/filesystem-host.js.map +1 -0
- package/dist/filesystem-protocol.d.ts +49 -1
- package/dist/filesystem-protocol.d.ts.map +1 -1
- package/dist/filesystem-protocol.js +17 -0
- package/dist/filesystem-protocol.js.map +1 -1
- package/dist/filesystem-remote.d.ts +72 -18
- package/dist/filesystem-remote.d.ts.map +1 -1
- package/dist/filesystem-remote.js +271 -40
- package/dist/filesystem-remote.js.map +1 -1
- package/dist/filesystem-worker.js +8 -502
- package/dist/filesystem-worker.js.map +1 -1
- package/dist/filesystem.d.ts +9 -0
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +209 -61
- package/dist/filesystem.js.map +1 -1
- package/dist/host-idle.d.ts +29 -0
- package/dist/host-idle.d.ts.map +1 -0
- package/dist/host-idle.js +68 -0
- package/dist/host-idle.js.map +1 -0
- package/dist/host.d.ts +1 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +1 -3
- package/dist/host.js.map +1 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +79 -18
- package/dist/memory.js.map +1 -1
- package/dist/module-layout.d.ts +6 -0
- package/dist/module-layout.d.ts.map +1 -1
- package/dist/module-layout.js +26 -3
- package/dist/module-layout.js.map +1 -1
- package/dist/monotonic-clock.d.ts +9 -0
- package/dist/monotonic-clock.d.ts.map +1 -1
- package/dist/monotonic-clock.js +11 -0
- package/dist/monotonic-clock.js.map +1 -1
- package/dist/network-worker.js +7 -2
- package/dist/network-worker.js.map +1 -1
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +11 -8
- package/dist/network.js.map +1 -1
- package/dist/process-bridge.d.ts.map +1 -1
- package/dist/process-bridge.js +25 -5
- package/dist/process-bridge.js.map +1 -1
- package/dist/program.d.ts +5 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +13 -12
- package/dist/program.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +75 -9
- package/dist/runtime.js.map +1 -1
- package/dist/shared-file-layer.d.ts +69 -0
- package/dist/shared-file-layer.d.ts.map +1 -0
- package/dist/shared-file-layer.js +299 -0
- package/dist/shared-file-layer.js.map +1 -0
- package/dist/shared-pipes.d.ts +7 -0
- package/dist/shared-pipes.d.ts.map +1 -1
- package/dist/shared-pipes.js +56 -17
- package/dist/shared-pipes.js.map +1 -1
- package/dist/signals.d.ts +2 -0
- package/dist/signals.d.ts.map +1 -1
- package/dist/signals.js +5 -1
- package/dist/signals.js.map +1 -1
- package/dist/snapshot-filesystem.d.ts +36 -3
- package/dist/snapshot-filesystem.d.ts.map +1 -1
- package/dist/snapshot-filesystem.js +204 -19
- package/dist/snapshot-filesystem.js.map +1 -1
- package/dist/stdin.d.ts.map +1 -1
- package/dist/stdin.js +3 -2
- package/dist/stdin.js.map +1 -1
- package/dist/symlink.d.ts.map +1 -1
- package/dist/symlink.js +91 -1
- package/dist/symlink.js.map +1 -1
- package/dist/system.d.ts.map +1 -1
- package/dist/system.js +17 -6
- package/dist/system.js.map +1 -1
- package/dist/thread-coordinator-worker.d.ts +1 -25
- package/dist/thread-coordinator-worker.d.ts.map +1 -1
- package/dist/thread-coordinator-worker.js +29 -2
- package/dist/thread-coordinator-worker.js.map +1 -1
- package/dist/thread-worker.js +13 -8
- package/dist/thread-worker.js.map +1 -1
- package/dist/threads.d.ts +4 -0
- package/dist/threads.d.ts.map +1 -1
- package/dist/threads.js +72 -43
- package/dist/threads.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/websocket-peer.d.ts.map +1 -1
- package/dist/websocket-peer.js +2 -1
- package/dist/websocket-peer.js.map +1 -1
- package/dist/worker-program-protocol.d.ts +26 -0
- package/dist/worker-program-protocol.d.ts.map +1 -1
- package/dist/worker-program-worker.js +26 -8
- package/dist/worker-program-worker.js.map +1 -1
- package/dist/worker-program.d.ts +43 -0
- package/dist/worker-program.d.ts.map +1 -1
- package/dist/worker-program.js +198 -24
- package/dist/worker-program.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { takeStandbyWorker } from "./worker-standby.js";
|
|
|
2
2
|
import { encodeBase64, decodeBase64 } from "@volter/browser-runtime/browser-base64.js";
|
|
3
3
|
import { FILESYSTEM_ROOT_PAYLOAD_BYTES, FILESYSTEM_SNAPSHOT_CHUNK_BYTES, FilesystemOperation, } from "./filesystem-protocol.js";
|
|
4
4
|
import { pageWorker } from "@volter/browser-runtime/page-workers.js";
|
|
5
|
+
import { BrowserFileLockClient } from "@volter/browser-runtime/browser-file-locks.js";
|
|
5
6
|
export class WaliFilesystemClient {
|
|
6
7
|
channel;
|
|
7
8
|
control;
|
|
@@ -9,10 +10,54 @@ export class WaliFilesystemClient {
|
|
|
9
10
|
encoder = new TextEncoder();
|
|
10
11
|
decoder = new TextDecoder();
|
|
11
12
|
nextRequestId = 1;
|
|
13
|
+
bell;
|
|
14
|
+
wakeMemory;
|
|
15
|
+
/**
|
|
16
|
+
* A syscall's handler to call with nothing between, when the host is this
|
|
17
|
+
* thread's (ADR-0046); undefined for one that must go through `syscall` (a
|
|
18
|
+
* lock that may block, or a host elsewhere).
|
|
19
|
+
*/
|
|
20
|
+
directSyscall(name) {
|
|
21
|
+
const local = this.channel.local;
|
|
22
|
+
if (!local || name === "SYS_flock" || name === "SYS_fcntl")
|
|
23
|
+
return undefined;
|
|
24
|
+
return (args) => {
|
|
25
|
+
const { imports, errno } = local.handlers();
|
|
26
|
+
const handler = imports[name];
|
|
27
|
+
if (!handler)
|
|
28
|
+
throw remoteError(-38);
|
|
29
|
+
let result;
|
|
30
|
+
try {
|
|
31
|
+
result = handler(...args);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw remoteError(errno(error));
|
|
35
|
+
}
|
|
36
|
+
return typeof result === "bigint" ? result : BigInt(result ?? 0);
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Whether the host on this thread holds `fd` as one of its own files, which
|
|
41
|
+
* is exactly when every layer above the router passes a call on `fd` to the
|
|
42
|
+
* router and the router calls the host's handler (`ownedFileImports`).
|
|
43
|
+
* False where the host is in another realm.
|
|
44
|
+
*/
|
|
45
|
+
ownsLocalFile(fd) {
|
|
46
|
+
const local = this.channel.local;
|
|
47
|
+
return local !== undefined && local.handlers().owns(fd);
|
|
48
|
+
}
|
|
49
|
+
/** The host's handlers on this thread, as `directSyscall` calls them; undefined where the host is elsewhere. */
|
|
50
|
+
localHandlers() {
|
|
51
|
+
const local = this.channel.local;
|
|
52
|
+
return local ? () => local.handlers() : undefined;
|
|
53
|
+
}
|
|
54
|
+
/** The program's memory, whose futex word a main thread holding the filesystem publishes while it waits (ADR-0046). */
|
|
55
|
+
wakeThrough(memory) { this.wakeMemory = memory; }
|
|
12
56
|
constructor(channel) {
|
|
13
57
|
this.channel = channel;
|
|
14
58
|
this.control = new Int32Array(channel.control);
|
|
15
59
|
this.payload = new Uint8Array(channel.payload);
|
|
60
|
+
this.bell = channel.doorbell ? new Int32Array(channel.doorbell) : undefined;
|
|
16
61
|
}
|
|
17
62
|
attachMemory(memory) { this.channel.port.postMessage({ memory }); }
|
|
18
63
|
copyForExec(stdio) { return this.call(FilesystemOperation.CopyForExec, { stdio }).process; }
|
|
@@ -25,9 +70,14 @@ export class WaliFilesystemClient {
|
|
|
25
70
|
const sharedPipes = this.channel.sharedPipes && { ...this.channel.sharedPipes,
|
|
26
71
|
table: process === undefined ? this.channel.sharedPipes.table : new SharedArrayBuffer(65_536 * 4) };
|
|
27
72
|
const release = process === undefined ? undefined : new MessageChannel();
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
73
|
+
const attach = { ...channel.server, ...(process === undefined ? {} : { process }), ...(sharedPipes ? { sharedPipes } : {}), ...(release ? { releasePort: release.port2 } : {}) };
|
|
74
|
+
if (this.channel.local)
|
|
75
|
+
this.channel.local.attach(attach);
|
|
76
|
+
else
|
|
77
|
+
this.channel.port.postMessage({ kind: "attach", ...attach }, [channel.server.port, ...(release ? [release.port2] : [])]);
|
|
78
|
+
const doorbell = this.channel.local?.doorbell ?? this.channel.doorbell;
|
|
79
|
+
return { ...channel.client, ...(sharedPipes ? { sharedPipes } : {}), ...(release ? { releasePort: release.port1 } : {}),
|
|
80
|
+
...(doorbell ? { doorbell } : {}) };
|
|
31
81
|
}
|
|
32
82
|
copyForExecChannel(stdio) {
|
|
33
83
|
return this.createChannel(FILESYSTEM_ROOT_PAYLOAD_BYTES, this.copyForExec(stdio));
|
|
@@ -139,25 +189,59 @@ export class WaliFilesystemClient {
|
|
|
139
189
|
}
|
|
140
190
|
}
|
|
141
191
|
syscall(name, args) {
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
192
|
+
const local = this.channel.local;
|
|
193
|
+
if (local) {
|
|
194
|
+
// The host is this thread's (ADR-0046): called, as a one-thread program's filesystem is.
|
|
195
|
+
for (;;) {
|
|
196
|
+
const result = local.syscall(name, args);
|
|
197
|
+
if (typeof result === "bigint")
|
|
198
|
+
return result;
|
|
199
|
+
if (result !== undefined)
|
|
200
|
+
throw remoteError(result.failed);
|
|
201
|
+
// Deferred: a blocking lock another holder has. The wait is the lock's
|
|
202
|
+
// and is counted with the lock requests (the profile's `locks`).
|
|
203
|
+
const began = performance.now();
|
|
204
|
+
local.idle();
|
|
205
|
+
BrowserFileLockClient.waited.ms += performance.now() - began;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
let encodedName = this.names.get(name);
|
|
209
|
+
if (!encodedName) {
|
|
210
|
+
encodedName = this.encoder.encode(name);
|
|
211
|
+
this.names.set(name, encodedName);
|
|
212
|
+
}
|
|
213
|
+
const view = this.view ??= new DataView(this.payload.buffer, this.payload.byteOffset, this.payload.byteLength);
|
|
214
|
+
this.payload[0] = args.length;
|
|
215
|
+
this.payload[1] = encodedName.byteLength;
|
|
216
|
+
for (let index = 0; index < args.length; index += 1)
|
|
217
|
+
view.setBigInt64(8 + index * 8, BigInt(args[index]), true);
|
|
218
|
+
this.payload.set(encodedName, 8 + args.length * 8);
|
|
219
|
+
// No deadline for a main thread's host (ADR-0046): it answers when the
|
|
220
|
+
// main thread next enters the host, as Emscripten's proxied calls do, and
|
|
221
|
+
// a program whose main thread is gone has ended.
|
|
222
|
+
this.exchange(FilesystemOperation.SyscallBinary, 8 + args.length * 8 + encodedName.byteLength, isBlockingFileLock(name, args) || this.bell ? null : 30_000);
|
|
223
|
+
return view.getBigInt64(0, true);
|
|
147
224
|
}
|
|
225
|
+
names = new Map();
|
|
226
|
+
/** The last answer's result, for operations that answer more than an errno. */
|
|
227
|
+
lastResult = 0;
|
|
228
|
+
view;
|
|
148
229
|
/** Chunked for the same reason as readFileSync: a mapping of a large file is one RPC per piece, never one answer. */
|
|
149
230
|
readForMapping(fd, offset, length) {
|
|
150
231
|
const out = new Uint8Array(length);
|
|
232
|
+
const view = this.view ??= new DataView(this.payload.buffer, this.payload.byteOffset, this.payload.byteLength);
|
|
151
233
|
let filled = 0;
|
|
152
234
|
while (filled < length) {
|
|
153
|
-
const piece = Math.min(
|
|
154
|
-
|
|
155
|
-
|
|
235
|
+
const piece = Math.min(this.payload.byteLength, length - filled);
|
|
236
|
+
view.setInt32(0, fd, true);
|
|
237
|
+
view.setFloat64(8, offset + filled, true);
|
|
238
|
+
view.setInt32(16, piece, true);
|
|
239
|
+
const received = this.exchange(FilesystemOperation.ReadForMappingBinary, 20, 30_000);
|
|
240
|
+
if (this.lastResult === 1)
|
|
156
241
|
return filled === 0 ? undefined : out.subarray(0, filled);
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
if (chunk.byteLength < piece)
|
|
242
|
+
out.set(this.payload.subarray(0, received), filled);
|
|
243
|
+
filled += received;
|
|
244
|
+
if (received < piece)
|
|
161
245
|
break;
|
|
162
246
|
}
|
|
163
247
|
return filled === length ? out : out.subarray(0, filled);
|
|
@@ -166,24 +250,69 @@ export class WaliFilesystemClient {
|
|
|
166
250
|
return this.call(FilesystemOperation.MappingPath, { fd }).path;
|
|
167
251
|
}
|
|
168
252
|
writeForMapping(path, offset, value) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
253
|
+
const encodedPath = this.encoder.encode(path);
|
|
254
|
+
if (16 + encodedPath.byteLength + value.byteLength > this.payload.byteLength) {
|
|
255
|
+
return this.call(FilesystemOperation.WriteForMapping, {
|
|
256
|
+
path, offset, content: encodeBase64(value),
|
|
257
|
+
}).written;
|
|
258
|
+
}
|
|
259
|
+
const view = this.view ??= new DataView(this.payload.buffer, this.payload.byteOffset, this.payload.byteLength);
|
|
260
|
+
view.setFloat64(0, offset, true);
|
|
261
|
+
view.setUint32(8, encodedPath.byteLength, true);
|
|
262
|
+
view.setUint32(12, value.byteLength, true);
|
|
263
|
+
this.payload.set(encodedPath, 16);
|
|
264
|
+
this.payload.set(value, 16 + encodedPath.byteLength);
|
|
265
|
+
this.exchange(FilesystemOperation.WriteForMappingBinary, 16 + encodedPath.byteLength + value.byteLength, 30_000);
|
|
266
|
+
return this.payload[0] === 1;
|
|
172
267
|
}
|
|
173
268
|
call(operation, input = {}, timeoutMs = 30_000) {
|
|
174
269
|
const encoded = this.encoder.encode(JSON.stringify(input));
|
|
175
270
|
if (encoded.byteLength > this.payload.byteLength)
|
|
176
271
|
throw remoteError(-90);
|
|
272
|
+
if (Atomics.load(this.control, 0) !== 0)
|
|
273
|
+
throw new Error("Concurrent WALI filesystem RPC on one channel.");
|
|
274
|
+
this.payload.set(encoded);
|
|
275
|
+
const outputLength = this.exchange(operation, encoded.byteLength, timeoutMs);
|
|
276
|
+
return outputLength > 0
|
|
277
|
+
? JSON.parse(this.decoder.decode(this.payload.slice(0, outputLength)))
|
|
278
|
+
: undefined;
|
|
279
|
+
}
|
|
280
|
+
/** One request whose input is already in the payload: its answer's length, the answer left in the payload. */
|
|
281
|
+
exchange(operation, inputLength, timeoutMs) {
|
|
177
282
|
if (Atomics.load(this.control, 0) !== 0)
|
|
178
283
|
throw new Error("Concurrent WALI filesystem RPC on one channel.");
|
|
179
284
|
const requestId = this.nextRequestId;
|
|
180
285
|
this.nextRequestId = requestId >= 0x3fff_fffd ? 1 : requestId + 2;
|
|
181
286
|
this.control.fill(0);
|
|
182
|
-
this.payload.set(encoded);
|
|
183
287
|
Atomics.store(this.control, 1, operation);
|
|
184
|
-
Atomics.store(this.control, 3,
|
|
288
|
+
Atomics.store(this.control, 3, inputLength);
|
|
185
289
|
Atomics.store(this.control, 0, requestId);
|
|
186
|
-
this.channel.
|
|
290
|
+
const local = this.channel.local;
|
|
291
|
+
if (local) {
|
|
292
|
+
// Answered here, by the host this realm runs (ADR-0046). A request a
|
|
293
|
+
// held lock defers waits for its holder, which other threads' requests,
|
|
294
|
+
// answered meanwhile, may be.
|
|
295
|
+
for (;;) {
|
|
296
|
+
local.serveNow();
|
|
297
|
+
if (Atomics.load(this.control, 0) === requestId + 1)
|
|
298
|
+
break;
|
|
299
|
+
local.idle();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
else if (this.bell) {
|
|
303
|
+
// A host on the program's main thread (ADR-0046) reads no messages
|
|
304
|
+
// while the program runs; it is rung, and the futex word it waits on,
|
|
305
|
+
// if any, is woken (review of c96148c: a message per request queued
|
|
306
|
+
// there for the whole run).
|
|
307
|
+
Atomics.add(this.bell, 0, 1);
|
|
308
|
+
Atomics.notify(this.bell, 0);
|
|
309
|
+
const word = Atomics.load(this.bell, 1);
|
|
310
|
+
if (word !== 0 && this.wakeMemory)
|
|
311
|
+
Atomics.notify(new Int32Array(this.wakeMemory.buffer), word - 1);
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
this.channel.port.postMessage(requestId);
|
|
315
|
+
}
|
|
187
316
|
const deadline = timeoutMs === null ? undefined : Date.now() + timeoutMs;
|
|
188
317
|
for (;;) {
|
|
189
318
|
const state = Atomics.load(this.control, 0);
|
|
@@ -201,13 +330,11 @@ export class WaliFilesystemClient {
|
|
|
201
330
|
}
|
|
202
331
|
const result = Atomics.load(this.control, 2);
|
|
203
332
|
const outputLength = Atomics.load(this.control, 4);
|
|
204
|
-
const output = outputLength > 0
|
|
205
|
-
? JSON.parse(this.decoder.decode(this.payload.slice(0, outputLength)))
|
|
206
|
-
: undefined;
|
|
207
333
|
Atomics.store(this.control, 0, 0);
|
|
208
334
|
if (result < 0)
|
|
209
335
|
throw remoteError(result);
|
|
210
|
-
|
|
336
|
+
this.lastResult = result;
|
|
337
|
+
return outputLength;
|
|
211
338
|
}
|
|
212
339
|
}
|
|
213
340
|
function isBlockingFileLock(name, args) {
|
|
@@ -220,15 +347,55 @@ function isBlockingFileLock(name, args) {
|
|
|
220
347
|
const command = Number(args[1] ?? 0);
|
|
221
348
|
return command === 7 || command === 38;
|
|
222
349
|
}
|
|
350
|
+
/** How long a blocked main thread waits for a ring before it owes the host again (ADR-0046). */
|
|
351
|
+
const IN_THREAD_IDLE_MS = 5;
|
|
223
352
|
export class WaliFilesystemCoordinator {
|
|
224
|
-
|
|
353
|
+
sink;
|
|
225
354
|
root;
|
|
226
355
|
sharedPipes;
|
|
227
|
-
constructor(
|
|
228
|
-
this.
|
|
356
|
+
constructor(sink, root, sharedPipes) {
|
|
357
|
+
this.sink = sink;
|
|
229
358
|
this.root = root;
|
|
230
359
|
this.sharedPipes = sharedPipes;
|
|
231
360
|
}
|
|
361
|
+
/**
|
|
362
|
+
* The host on this realm's main thread (ADR-0046): the realm's own file
|
|
363
|
+
* syscalls are calls, and other threads' requests are answered when it
|
|
364
|
+
* enters the host (`pump`).
|
|
365
|
+
*/
|
|
366
|
+
static async createInThread(snapshot, options) {
|
|
367
|
+
const host = await import("./filesystem-host.js");
|
|
368
|
+
const doorbell = new SharedArrayBuffer(2 * Int32Array.BYTES_PER_ELEMENT);
|
|
369
|
+
const bell = new Int32Array(doorbell);
|
|
370
|
+
host.hostInThread(doorbell);
|
|
371
|
+
await host.initializeHost({ kind: "initialize", snapshot, ...options });
|
|
372
|
+
const rootChannel = createChannel(FILESYSTEM_ROOT_PAYLOAD_BYTES);
|
|
373
|
+
const entry = host.attachChannel({ ...rootChannel.server, ...(options.sharedPipes ? { sharedPipes: options.sharedPipes } : {}) });
|
|
374
|
+
const root = new WaliFilesystemClient({
|
|
375
|
+
...rootChannel.client,
|
|
376
|
+
...(options.sharedPipes ? { sharedPipes: options.sharedPipes } : {}),
|
|
377
|
+
local: {
|
|
378
|
+
doorbell,
|
|
379
|
+
serveNow: () => host.serveNow(entry),
|
|
380
|
+
attach: (channel) => { host.attachChannel(channel); },
|
|
381
|
+
syscall: (name, args) => host.syscallNow(entry, name, args),
|
|
382
|
+
handlers: () => host.handlersNow(entry),
|
|
383
|
+
idle: () => {
|
|
384
|
+
host.pumpHost(true);
|
|
385
|
+
Atomics.wait(bell, 0, Atomics.load(bell, 0), IN_THREAD_IDLE_MS);
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
});
|
|
389
|
+
const sink = { attach: (channel) => { host.attachChannel(channel); }, terminate: () => host.resetHost(), doorbell, host };
|
|
390
|
+
return new WaliFilesystemCoordinator(sink, root, options.sharedPipes);
|
|
391
|
+
}
|
|
392
|
+
/** The program is about to run on this thread: the host's port is read no longer (ADR-0046). */
|
|
393
|
+
closePort() { this.sink.host?.closeHostPort(); }
|
|
394
|
+
/** What the main thread owes while it is in the host, when the host runs here (ADR-0046). */
|
|
395
|
+
pump(blocking = false) { if (this.sink.host?.hostWaiting() || blocking)
|
|
396
|
+
this.sink.host?.pumpHost(blocking); }
|
|
397
|
+
/** The word a blocked main thread waits on, so a request wakes it, when the host runs here. */
|
|
398
|
+
doorbell() { return this.sink.doorbell ? new Int32Array(this.sink.doorbell) : undefined; }
|
|
232
399
|
static async create(snapshot, options) {
|
|
233
400
|
const worker = takeStandbyWorker("filesystem", () => pageWorker(new Worker(new URL("./filesystem-worker.js", import.meta.url), {
|
|
234
401
|
type: "module", name: "wali-filesystem",
|
|
@@ -255,14 +422,18 @@ export class WaliFilesystemCoordinator {
|
|
|
255
422
|
});
|
|
256
423
|
const rootChannel = createChannel(FILESYSTEM_ROOT_PAYLOAD_BYTES);
|
|
257
424
|
worker.postMessage({ kind: "attach", ...rootChannel.server }, [rootChannel.server.port]);
|
|
258
|
-
|
|
425
|
+
const sink = {
|
|
426
|
+
attach: (channel, transfer) => worker.postMessage({ kind: "attach", ...channel }, transfer),
|
|
427
|
+
terminate: () => worker.terminate(),
|
|
428
|
+
};
|
|
429
|
+
return new WaliFilesystemCoordinator(sink, new WaliFilesystemClient({ ...rootChannel.client, ...(options.sharedPipes ? { sharedPipes: options.sharedPipes } : {}) }), options.sharedPipes);
|
|
259
430
|
}
|
|
260
431
|
createChannel(payloadBytes, process = 0) {
|
|
261
432
|
const channel = createChannel(payloadBytes);
|
|
262
433
|
const sharedPipes = this.sharedPipes && { ...this.sharedPipes,
|
|
263
434
|
table: process === 0 ? this.sharedPipes.table : new SharedArrayBuffer(65_536 * 4) };
|
|
264
|
-
this.
|
|
265
|
-
return { ...channel.client, ...(sharedPipes ? { sharedPipes } : {}) };
|
|
435
|
+
this.sink.attach({ process, ...channel.server, ...(sharedPipes ? { sharedPipes } : {}) }, [channel.server.port]);
|
|
436
|
+
return { ...channel.client, ...(sharedPipes ? { sharedPipes } : {}), ...(this.sink.doorbell ? { doorbell: this.sink.doorbell } : {}) };
|
|
266
437
|
}
|
|
267
438
|
copyForExec() {
|
|
268
439
|
return this.createChannel(FILESYSTEM_ROOT_PAYLOAD_BYTES, this.root.copyForExec());
|
|
@@ -271,9 +442,11 @@ export class WaliFilesystemCoordinator {
|
|
|
271
442
|
snapshot() { return this.root.toSnapshot(); }
|
|
272
443
|
finalSnapshot() { return this.root.finalSnapshot(); }
|
|
273
444
|
replaceSnapshot(snapshot) { this.root.replaceSnapshot(snapshot); }
|
|
274
|
-
terminate() { this.
|
|
445
|
+
terminate() { this.sink.terminate(); }
|
|
275
446
|
}
|
|
276
447
|
const SHARED_FILE_FD_LIMIT = 10_000;
|
|
448
|
+
/** fcntl's lock commands (F_GETLK, F_SETLK, F_SETLKW and their OFD forms): the ones that may wait on another holder. */
|
|
449
|
+
const FCNTL_LOCKS = new Set([5, 6, 7, 36, 37, 38]);
|
|
277
450
|
const PATH_SYSCALLS = new Set([
|
|
278
451
|
"SYS_open", "SYS_openat", "SYS_stat", "SYS_lstat", "SYS_newfstatat", "SYS_access",
|
|
279
452
|
"SYS_faccessat", "SYS_faccessat2", "SYS_chmod", "SYS_fchmodat", "SYS_chdir", "SYS_getcwd",
|
|
@@ -297,23 +470,81 @@ export class WaliSharedFileDescriptorHost {
|
|
|
297
470
|
this.stdioAliasRegistry = stdioAliasRegistry;
|
|
298
471
|
this.descriptorState = descriptorState;
|
|
299
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* ONE OWNERSHIP QUESTION PER CALL, THEN THE OWNER (2026-09-28). A call on a
|
|
475
|
+
* descriptor walked every layer above the router -- network, events, pipes
|
|
476
|
+
* -- each asking whether the descriptor was its own, before the router
|
|
477
|
+
* called the host's handler: the multi-realm composition, paid on every
|
|
478
|
+
* call by a program whose host is on its own thread. Where the host on
|
|
479
|
+
* this thread holds `fd` as one of its files, each of those layers passes
|
|
480
|
+
* the call on and the router calls `direct`; so these call `direct` at
|
|
481
|
+
* once, the same closure, and every other descriptor takes `layered`,
|
|
482
|
+
* the composed handler, as before. A kernel's file table points each open
|
|
483
|
+
* file at its operations; this is that, for the files.
|
|
484
|
+
*/
|
|
485
|
+
ownedFileImports(layered) {
|
|
486
|
+
const imports = {};
|
|
487
|
+
for (const name of FD_SYSCALLS) {
|
|
488
|
+
// fcntl's commands other than the locks cannot wait (musl's open sends
|
|
489
|
+
// F_SETFD after every O_CLOEXEC), so they come here too; the locks
|
|
490
|
+
// keep the deferring path. flock is always a lock.
|
|
491
|
+
const commands = name === "SYS_fcntl";
|
|
492
|
+
const direct = commands ? undefined : this.client.directSyscall(name);
|
|
493
|
+
const through = layered[name];
|
|
494
|
+
if ((!direct && !commands) || !through || name === "SYS_flock")
|
|
495
|
+
continue;
|
|
496
|
+
const local = this.client.localHandlers();
|
|
497
|
+
if (!local)
|
|
498
|
+
continue;
|
|
499
|
+
// `direct`'s body, with the host's handlers looked up once for both the question and the call.
|
|
500
|
+
imports[name] = (...args) => {
|
|
501
|
+
const fd = Number(args[0]);
|
|
502
|
+
if (fd < 3 || fd >= SHARED_FILE_FD_LIMIT || (commands && FCNTL_LOCKS.has(Number(args[1]))))
|
|
503
|
+
return through(...args);
|
|
504
|
+
const { imports: handlers, errno, owns } = local();
|
|
505
|
+
if (!owns(fd))
|
|
506
|
+
return through(...args);
|
|
507
|
+
const handler = handlers[name];
|
|
508
|
+
if (!handler)
|
|
509
|
+
throw remoteError(-38);
|
|
510
|
+
let result;
|
|
511
|
+
try {
|
|
512
|
+
result = handler(...args);
|
|
513
|
+
}
|
|
514
|
+
catch (error) {
|
|
515
|
+
throw remoteError(errno(error));
|
|
516
|
+
}
|
|
517
|
+
return typeof result === "bigint" ? result : BigInt(result ?? 0);
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
return imports;
|
|
521
|
+
}
|
|
300
522
|
imports(fallback) {
|
|
301
523
|
const imports = {};
|
|
302
524
|
for (const name of PATH_SYSCALLS) {
|
|
303
|
-
|
|
525
|
+
// Called, when the host is this thread's: no client and no channel between (ADR-0046).
|
|
526
|
+
const direct = this.client.directSyscall(name);
|
|
527
|
+
imports[name] = direct ? (...args) => direct(args) : (...args) => this.client.syscall(name, args);
|
|
304
528
|
}
|
|
529
|
+
// Made once, not for every call: two views of the shared tables and the
|
|
530
|
+
// stream calls' names were allocated per syscall (2026-09-27).
|
|
531
|
+
const table = this.descriptorState ? new Int32Array(this.descriptorState.table) : undefined;
|
|
532
|
+
const descriptions = this.descriptorState ? new Int32Array(this.descriptorState.descriptions) : undefined;
|
|
305
533
|
for (const name of FD_SYSCALLS) {
|
|
534
|
+
const direct = this.client.directSyscall(name);
|
|
535
|
+
const streamCall = name === "SYS_read" || name === "SYS_readv" || name === "SYS_write" || name === "SYS_writev" || name === "SYS_fstat";
|
|
536
|
+
const writes = name === "SYS_write" || name === "SYS_writev";
|
|
306
537
|
imports[name] = (...args) => {
|
|
307
538
|
const fd = Number(args[0]);
|
|
308
|
-
if (
|
|
309
|
-
const id = Atomics.load(
|
|
310
|
-
const stream = Atomics.load(
|
|
311
|
-
if (stream &&
|
|
312
|
-
if (
|
|
539
|
+
if (table && descriptions && fd >= 0 && fd < 20_000) {
|
|
540
|
+
const id = Atomics.load(table, fd);
|
|
541
|
+
const stream = Atomics.load(descriptions, id * 3 + 2);
|
|
542
|
+
if (stream && streamCall) {
|
|
543
|
+
if (writes)
|
|
313
544
|
this.client.prepareSpawn();
|
|
314
545
|
return fallback[name]?.(...args) ?? -9n;
|
|
315
546
|
}
|
|
316
|
-
return this.client.syscall(name, args);
|
|
547
|
+
return direct ? direct(args) : this.client.syscall(name, args);
|
|
317
548
|
}
|
|
318
549
|
const alias = this.stdioAliasRegistry && fd >= 0 && fd < this.stdioAliasRegistry.length
|
|
319
550
|
? Atomics.load(this.stdioAliasRegistry, fd)
|
|
@@ -330,7 +561,7 @@ export class WaliSharedFileDescriptorHost {
|
|
|
330
561
|
this.client.prepareSpawn();
|
|
331
562
|
return fallback[name]?.(...args) ?? -9n;
|
|
332
563
|
}
|
|
333
|
-
return this.client.syscall(name, args);
|
|
564
|
+
return direct ? direct(args) : this.client.syscall(name, args);
|
|
334
565
|
};
|
|
335
566
|
}
|
|
336
567
|
return { ...fallback, ...imports };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem-remote.js","sourceRoot":"","sources":["../src/filesystem-remote.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filesystem-remote.js","sourceRoot":"","sources":["../src/filesystem-remote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,GAEpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAqBtF,MAAM,OAAO,oBAAoB;IAiDF;IAhDZ,OAAO,CAAa;IACpB,OAAO,CAAa;IACpB,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAC5B,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IACrC,aAAa,GAAG,CAAC,CAAC;IAET,IAAI,CAAyB;IACtC,UAAU,CAAiC;IAEnD;;;;OAIG;IACH,aAAa,CAAC,IAAY;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO,SAAS,CAAC;QAC7E,OAAO,CAAC,IAAI,EAAE,EAAE;YACd,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO;gBAAE,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,MAA8B,CAAC;YACnC,IAAI,CAAC;gBAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAAC,CAAC;YAClC,OAAO,KAAK,EAAE,CAAC;gBAAC,MAAM,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAAC,CAAC;YAClD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,EAAU;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,gHAAgH;IAChH,aAAa;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IAED,uHAAuH;IACvH,WAAW,CAAC,MAA0B,IAAU,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;IAE3E,YAA6B,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QACzD,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC;IAED,YAAY,CAAC,MAA0B,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,WAAW,CAAC,KAAgB,IAAY,OAAO,IAAI,CAAC,IAAI,CAAsB,mBAAmB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACpI,uBAAuB,KAAa,OAAO,IAAI,CAAC,IAAI,CAAS,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3F,kBAAkB;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,IAAI,CAAC,IAAI,CAAsB,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IACpI,CAAC;IACD,aAAa,CAAC,YAAoB,EAAE,OAAgB;QAClD,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;YAC3E,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACjL,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;YACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9H,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrH,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACxC,CAAC;IACD,kBAAkB,CAAC,KAAe;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,YAAY,KAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAErE,UAAU,CAAC,IAAY,IAAa,OAAO,IAAI,CAAC,IAAI,CAAU,mBAAmB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtG,QAAQ,CAAC,IAAY,IAAkB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAa,mBAAmB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvH,SAAS,CAAC,IAAY,IAAkB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAa,mBAAmB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzH,+EAA+E;IAC/E,YAAY,CAAC,IAAY;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACtC,IAAI,IAAI,IAAI,+BAA+B,EAAE,CAAC;YAC5C,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAsB,mBAAmB,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACtG,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,+BAA+B,EAAE,CAAC;YAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;YACzG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvB,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,GAAG,MAAM,CAAC;gBAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QACrI,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,IAAY,IAAyB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrF,aAAa,CAAC,IAAY,EAAE,MAAc,EAAE,MAAc;QACxD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YACzE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAsB,mBAAmB,CAAC,SAAS,EAAE;gBACvF,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK;aAC7C,CAAC,CAAC,OAAO,CAAC,CAAC;YACZ,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;YAC3B,IAAI,KAAK,CAAC,UAAU,GAAG,KAAK;gBAAE,MAAM;QACtC,CAAC;QACD,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IACD,cAAc,CAAC,IAAY,EAAE,MAAc,EAAE,IAAgB;QAC3D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,+BAA+B,EAAE,CAAC;YACxI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;gBACxC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;gBAC9B,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,+BAA+B,CAAC,CAAC;aACzF,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;gBAAE,MAAM;QACnC,CAAC;IACH,CAAC;IACD,aAAa,CAAC,IAAY,EAAE,IAAyB;QACnD,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,IAAI,KAAK,CAAC,UAAU,IAAI,+BAA+B,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,SAAS,CAAC,IAAY,EAAE,OAAiC;QACvD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,WAAW,CAAC,IAAY,IAAc,OAAO,IAAI,CAAC,IAAI,CAAW,mBAAmB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1G,UAAU,CAAC,IAAY,IAAU,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,SAAS,CAAC,IAAY,IAAU,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,UAAU,CAAC,IAAY,EAAE,EAAU,IAAU,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACnG,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAA8B,CAAC;IAC1H,CAAC;IACD,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAA8B,CAAC;IAC/H,CAAC;IACO,WAAW,CAAC,aAAkC;QACpD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAqB,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,+BAA+B,EAAE,CAAC;YAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YAC5E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAsB,mBAAmB,CAAC,aAAa,EAAE;gBACpF,MAAM;gBACN,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ;gBAAE,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,YAAY,KAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrE,eAAe,CAAC,KAAkE;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACpF,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,IAAI,+BAA+B,EAAE,CAAC;YAC5F,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE;gBAClD,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,+BAA+B,CAAC,CAAC;aAClG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,eAAe,CAAC,QAAmC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACpF,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,IAAI,+BAA+B,EAAE,CAAC;YAC5F,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,+BAA+B,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE;gBAClD,MAAM;gBACN,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAY,EAAE,IAA4B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,yFAAyF;YACzF,SAAS,CAAC;gBACR,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,OAAO,MAAM,KAAK,QAAQ;oBAAE,OAAO,MAAM,CAAC;gBAC9C,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC3D,uEAAuE;gBACvE,iEAAiE;gBACjE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,qBAAqB,CAAC,MAAM,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;YAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAAC,CAAC;QACjG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/G,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC;QACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnD,uEAAuE;QACvE,0EAA0E;QAC1E,iDAAiD;QACjD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5J,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACgB,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACvD,+EAA+E;IACvE,UAAU,GAAG,CAAC,CAAC;IACf,IAAI,CAAuB;IACnC,qHAAqH;IACrH,cAAc,CAAC,EAAU,EAAE,MAAc,EAAE,MAAc;QACvD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/G,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YACrF,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;gBAAE,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACrF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,IAAI,QAAQ,CAAC;YACnB,IAAI,QAAQ,GAAG,KAAK;gBAAE,MAAM;QAC9B,CAAC;QACD,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IACD,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,IAAI,CAAoB,mBAAmB,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;IACpF,CAAC;IACD,eAAe,CAAC,IAAY,EAAE,MAAc,EAAE,KAAiB;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,EAAE,GAAG,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC7E,OAAO,IAAI,CAAC,IAAI,CAAuB,mBAAmB,CAAC,eAAe,EAAE;gBAC1E,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;aAC3C,CAAC,CAAC,OAAO,CAAC;QACb,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/G,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,EAAE,GAAG,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjH,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEO,IAAI,CACV,SAA8B,EAC9B,QAAiC,EAAE,EACnC,YAA2B,MAAM;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC3G,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7E,OAAO,YAAY,GAAG,CAAC;YACrB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAM;YAC3E,CAAC,CAAC,SAAc,CAAC;IACrB,CAAC;IAED,8GAA8G;IACtG,QAAQ,CAAC,SAA8B,EAAE,WAAmB,EAAE,SAAwB;QAC5F,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC3G,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,qEAAqE;YACrE,wEAAwE;YACxE,8BAA8B;YAC9B,SAAS,CAAC;gBACR,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC;oBAAE,MAAM;gBAC3D,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,mEAAmE;YACnE,sEAAsE;YACtE,oEAAoE;YACpE,4BAA4B;YAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QACtG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACzE,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5C,IAAI,KAAK,KAAK,SAAS,GAAG,CAAC;gBAAE,MAAM;YACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,gBAAgB,SAAS,GAAG,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,SAAS,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1F,IAAI,SAAS,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS;mBACrC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1E,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,IAA4B;IACpE,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,OAAO,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,EAAE,CAAC;AACzC,CAAC;AAED,gGAAgG;AAChG,MAAM,iBAAiB,GAAG,CAAC,CAAC;AA8B5B,MAAM,OAAO,yBAAyB;IACC;IAAiC;IAA6C;IAAnH,YAAqC,IAAc,EAAmB,IAA0B,EAAmB,WAA6D;QAA3I,SAAI,GAAJ,IAAI,CAAU;QAAmB,SAAI,GAAJ,IAAI,CAAsB;QAAmB,gBAAW,GAAX,WAAW,CAAkD;IAAG,CAAC;IAEpL;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAmC,EAAE,OAA2B;QAC1F,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,aAAa,CAAC,6BAA6B,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClI,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC;YACpC,GAAG,WAAW,CAAC,MAAM;YACrB,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,KAAK,EAAE;gBACL,QAAQ;gBACR,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;gBAC3D,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBACvC,IAAI,EAAE,GAAG,EAAE;oBACT,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;gBAClE,CAAC;aACF;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAa,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACpI,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,gGAAgG;IAChG,SAAS,KAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAEtD,6FAA6F;IAC7F,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnH,+FAA+F;IAC/F,QAAQ,KAA6B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAElH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAmC,EAAE,OAA2B;QAClF,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC7H,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB;SACxC,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,SAAS,GAAG,CAAC,KAAuD,EAAQ,EAAE;gBAClF,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAAC,OAAO,EAAE,CAAC;gBAAC,CAAC;gBACjG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAC,CAAC;YAC/H,CAAC,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7G,MAAM,SAAS,GAAG;gBAChB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAAC,6BAA6B,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,MAAM,IAAI,GAAa;YACrB,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,QAAQ,CAAC;YAC3F,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;SACpC,CAAC;QACF,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,IAAI,oBAAoB,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7L,CAAC;IAED,aAAa,CAAC,YAAoB,EAAE,OAAO,GAAG,CAAC;QAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW;YAC3D,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACtF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACjH,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACzI,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,UAAU,KAA2B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,QAAQ,KAAgC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACxE,aAAa,KAAgC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAChF,eAAe,CAAC,QAAmC,IAAU,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnG,SAAS,KAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;CAC7C;AAED,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,wHAAwH;AACxH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY;IACjF,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY;IACzF,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc;IACnF,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB;IAC/F,kBAAkB,EAAE,mBAAmB;CACxC,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY;IAC9F,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,uBAAuB;IAC5F,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB;IACxF,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe;CAC3D,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,OAAO,4BAA4B;IAEpB;IACA;IACA;IAHnB,YACmB,MAA4B,EAC5B,kBAA+B,EAC/B,eAAiE;QAFjE,WAAM,GAAN,MAAM,CAAsB;QAC5B,uBAAkB,GAAlB,kBAAkB,CAAa;QAC/B,oBAAe,GAAf,eAAe,CAAkD;IACjF,CAAC;IAEJ;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,OAAoD;QACnE,MAAM,OAAO,GAAsC,EAAE,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,uEAAuE;YACvE,mEAAmE;YACnE,mDAAmD;YACnD,MAAM,QAAQ,GAAG,IAAI,KAAK,WAAW,CAAC;YACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,WAAW;gBAAE,SAAS;YACzE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,+FAA+F;YAC/F,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;gBAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,oBAAoB,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO;oBAAE,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,MAA8B,CAAC;gBACnC,IAAI,CAAC;oBAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAClC,OAAO,KAAK,EAAE,CAAC;oBAAC,MAAM,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAClD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,QAA2C;QACjD,MAAM,OAAO,GAAsC,EAAE,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,uFAAuF;YACvF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpG,CAAC;QACD,wEAAwE;QACxE,+DAA+D;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1G,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,WAAW,CAAC;YACxI,MAAM,MAAM,GAAG,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,YAAY,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;gBAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,KAAK,IAAI,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;oBACpD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACnC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtD,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;wBACzB,IAAI,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;wBACvC,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,CAAC;oBACD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjE,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM;oBACrF,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBAC3C,CAAC,CAAC,CAAC,CAAC,CAAC;gBACP,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,oBAAoB,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBACtF,qEAAqE;oBACrE,gEAAgE;oBAChE,mEAAmE;oBACnE,uEAAuE;oBACvE,qEAAqE;oBACrE,oEAAoE;oBACpE,iEAAiE;oBACjE,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,YAAY;wBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC9E,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,CAAC;gBACD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,EAAU,EAAE,MAAc,EAAE,MAAc;QACvD,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,oBAAoB;YAAE,OAAO;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,oBAAoB;YAAE,OAAO;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,MAAc,EAAE,KAAiB;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;CACF;AAED,SAAS,aAAa,CAAC,YAAoB;IACzC,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACpD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACpB,OAAO;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;QAC/C,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAgB;IACnC,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI;QACvB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS;QACjC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI;QAChD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;KAC7H,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAmB,KAAQ,EAAE,GAAG,IAAoB;IACnE,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAe,CAAC;AACtH,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,IAAI,GAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS;QAChF,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ;QAClF,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAA6B,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IACjH,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC"}
|