@elaraai/east 0.0.1-beta.3 → 0.0.1-beta.31
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/LICENSE.md +15 -666
- package/README.md +30 -8
- package/dist/src/analyze.d.ts +3 -0
- package/dist/src/analyze.d.ts.map +1 -1
- package/dist/src/analyze.js +76 -15
- package/dist/src/analyze.js.map +1 -1
- package/dist/src/ast.d.ts +37 -33
- package/dist/src/ast.d.ts.map +1 -1
- package/dist/src/ast_to_ir.d.ts +6 -0
- package/dist/src/ast_to_ir.d.ts.map +1 -1
- package/dist/src/ast_to_ir.js +135 -101
- package/dist/src/ast_to_ir.js.map +1 -1
- package/dist/src/builtins.d.ts +1 -1
- package/dist/src/builtins.d.ts.map +1 -1
- package/dist/src/builtins.js +32 -0
- package/dist/src/builtins.js.map +1 -1
- package/dist/src/comparison.d.ts.map +1 -1
- package/dist/src/comparison.js +12 -4
- package/dist/src/comparison.js.map +1 -1
- package/dist/src/compile.d.ts +26 -1
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +388 -257
- package/dist/src/compile.js.map +1 -1
- package/dist/src/datetime_format/types.d.ts +23 -23
- package/dist/src/eastir.d.ts +4 -0
- package/dist/src/eastir.d.ts.map +1 -1
- package/dist/src/eastir.js +27 -7
- package/dist/src/eastir.js.map +1 -1
- package/dist/src/error.d.ts +12 -1
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +31 -1
- package/dist/src/error.js.map +1 -1
- package/dist/src/expr/array.d.ts +109 -1
- package/dist/src/expr/array.d.ts.map +1 -1
- package/dist/src/expr/array.js +204 -44
- package/dist/src/expr/array.js.map +1 -1
- package/dist/src/expr/ast.d.ts +1 -1
- package/dist/src/expr/ast.d.ts.map +1 -1
- package/dist/src/expr/ast.js +16 -28
- package/dist/src/expr/ast.js.map +1 -1
- package/dist/src/expr/asyncfunction.js +1 -1
- package/dist/src/expr/asyncfunction.js.map +1 -1
- package/dist/src/expr/blob.d.ts +73 -1
- package/dist/src/expr/blob.d.ts.map +1 -1
- package/dist/src/expr/blob.js +97 -7
- package/dist/src/expr/blob.js.map +1 -1
- package/dist/src/expr/block.d.ts +232 -12
- package/dist/src/expr/block.d.ts.map +1 -1
- package/dist/src/expr/block.js +646 -140
- package/dist/src/expr/block.js.map +1 -1
- package/dist/src/expr/boolean.d.ts +44 -0
- package/dist/src/expr/boolean.d.ts.map +1 -1
- package/dist/src/expr/boolean.js +57 -5
- package/dist/src/expr/boolean.js.map +1 -1
- package/dist/src/expr/datetime.d.ts +135 -0
- package/dist/src/expr/datetime.d.ts.map +1 -1
- package/dist/src/expr/datetime.js +183 -33
- package/dist/src/expr/datetime.js.map +1 -1
- package/dist/src/expr/dict.d.ts +42 -0
- package/dist/src/expr/dict.d.ts.map +1 -1
- package/dist/src/expr/dict.js +105 -55
- package/dist/src/expr/dict.js.map +1 -1
- package/dist/src/expr/expr.d.ts +1 -1
- package/dist/src/expr/expr.d.ts.map +1 -1
- package/dist/src/expr/expr.js.map +1 -1
- package/dist/src/expr/float.d.ts +153 -0
- package/dist/src/expr/float.d.ts.map +1 -1
- package/dist/src/expr/float.js +190 -16
- package/dist/src/expr/float.js.map +1 -1
- package/dist/src/expr/function.d.ts +7 -2
- package/dist/src/expr/function.d.ts.map +1 -1
- package/dist/src/expr/function.js +1 -1
- package/dist/src/expr/function.js.map +1 -1
- package/dist/src/expr/index.d.ts +202 -2
- package/dist/src/expr/index.d.ts.map +1 -1
- package/dist/src/expr/index.js +207 -2
- package/dist/src/expr/index.js.map +1 -1
- package/dist/src/expr/integer.d.ts +180 -0
- package/dist/src/expr/integer.d.ts.map +1 -1
- package/dist/src/expr/integer.js +188 -17
- package/dist/src/expr/integer.js.map +1 -1
- package/dist/src/expr/libs/blob.js +2 -2
- package/dist/src/expr/libs/blob.js.map +1 -1
- package/dist/src/expr/libs/integer.d.ts +19 -0
- package/dist/src/expr/libs/integer.d.ts.map +1 -1
- package/dist/src/expr/libs/integer.js +47 -0
- package/dist/src/expr/libs/integer.js.map +1 -1
- package/dist/src/expr/libs/string.js +1 -1
- package/dist/src/expr/libs/string.js.map +1 -1
- package/dist/src/expr/recursive.d.ts +83 -0
- package/dist/src/expr/recursive.d.ts.map +1 -0
- package/dist/src/expr/recursive.js +99 -0
- package/dist/src/expr/recursive.js.map +1 -0
- package/dist/src/expr/ref.js +3 -3
- package/dist/src/expr/ref.js.map +1 -1
- package/dist/src/expr/set.d.ts +44 -2
- package/dist/src/expr/set.d.ts.map +1 -1
- package/dist/src/expr/set.js +97 -47
- package/dist/src/expr/set.js.map +1 -1
- package/dist/src/expr/string.d.ts +134 -0
- package/dist/src/expr/string.d.ts.map +1 -1
- package/dist/src/expr/string.js +172 -22
- package/dist/src/expr/string.js.map +1 -1
- package/dist/src/expr/struct.d.ts +1 -1
- package/dist/src/expr/struct.d.ts.map +1 -1
- package/dist/src/expr/struct.js +1 -1
- package/dist/src/expr/struct.js.map +1 -1
- package/dist/src/expr/types.d.ts +7 -6
- package/dist/src/expr/types.d.ts.map +1 -1
- package/dist/src/expr/variant.d.ts +123 -1
- package/dist/src/expr/variant.d.ts.map +1 -1
- package/dist/src/expr/variant.js +66 -2
- package/dist/src/expr/variant.js.map +1 -1
- package/dist/src/fuzz.d.ts +36 -2
- package/dist/src/fuzz.d.ts.map +1 -1
- package/dist/src/fuzz.js +344 -77
- package/dist/src/fuzz.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +12 -0
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +13 -0
- package/dist/src/internal.js.map +1 -1
- package/dist/src/ir.d.ts +1551 -1505
- package/dist/src/ir.d.ts.map +1 -1
- package/dist/src/ir.js +49 -34
- package/dist/src/ir.js.map +1 -1
- package/dist/src/location.d.ts +30 -10
- package/dist/src/location.d.ts.map +1 -1
- package/dist/src/location.js +70 -28
- package/dist/src/location.js.map +1 -1
- package/dist/src/patch/apply.d.ts +15 -0
- package/dist/src/patch/apply.d.ts.map +1 -0
- package/dist/src/patch/apply.js +380 -0
- package/dist/src/patch/apply.js.map +1 -0
- package/dist/src/patch/compose.d.ts +15 -0
- package/dist/src/patch/compose.d.ts.map +1 -0
- package/dist/src/patch/compose.js +480 -0
- package/dist/src/patch/compose.js.map +1 -0
- package/dist/src/patch/diff.d.ts +15 -0
- package/dist/src/patch/diff.d.ts.map +1 -0
- package/dist/src/patch/diff.js +328 -0
- package/dist/src/patch/diff.js.map +1 -0
- package/dist/src/patch/fuzz.d.ts +73 -0
- package/dist/src/patch/fuzz.d.ts.map +1 -0
- package/dist/src/patch/fuzz.js +159 -0
- package/dist/src/patch/fuzz.js.map +1 -0
- package/dist/src/patch/index.d.ts +18 -0
- package/dist/src/patch/index.d.ts.map +1 -0
- package/dist/src/patch/index.js +20 -0
- package/dist/src/patch/index.js.map +1 -0
- package/dist/src/patch/invert.d.ts +15 -0
- package/dist/src/patch/invert.d.ts.map +1 -0
- package/dist/src/patch/invert.js +302 -0
- package/dist/src/patch/invert.js.map +1 -0
- package/dist/src/patch/type_of_patch.d.ts +17 -0
- package/dist/src/patch/type_of_patch.d.ts.map +1 -0
- package/dist/src/patch/type_of_patch.js +143 -0
- package/dist/src/patch/type_of_patch.js.map +1 -0
- package/dist/src/patch/types.d.ts +166 -0
- package/dist/src/patch/types.d.ts.map +1 -0
- package/dist/src/patch/types.js +69 -0
- package/dist/src/patch/types.js.map +1 -0
- package/dist/src/platform.d.ts +6 -0
- package/dist/src/platform.d.ts.map +1 -1
- package/dist/src/serialization/beast.d.ts.map +1 -1
- package/dist/src/serialization/beast.js +53 -18
- package/dist/src/serialization/beast.js.map +1 -1
- package/dist/src/serialization/beast2.d.ts +39 -3
- package/dist/src/serialization/beast2.d.ts.map +1 -1
- package/dist/src/serialization/beast2.js +241 -18
- package/dist/src/serialization/beast2.js.map +1 -1
- package/dist/src/serialization/csv.d.ts +139 -0
- package/dist/src/serialization/csv.d.ts.map +1 -0
- package/dist/src/serialization/csv.js +615 -0
- package/dist/src/serialization/csv.js.map +1 -0
- package/dist/src/serialization/index.d.ts +2 -1
- package/dist/src/serialization/index.d.ts.map +1 -1
- package/dist/src/serialization/index.js +2 -1
- package/dist/src/serialization/index.js.map +1 -1
- package/dist/src/type_of_type.d.ts +45 -34
- package/dist/src/type_of_type.d.ts.map +1 -1
- package/dist/src/type_of_type.js +62 -1
- package/dist/src/type_of_type.js.map +1 -1
- package/dist/src/types.d.ts +8 -8
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +4 -4
- package/dist/src/types.js.map +1 -1
- package/package.json +4 -5
|
@@ -8,6 +8,10 @@ import { isVariant, variant } from "../containers/variant.js";
|
|
|
8
8
|
import { BufferWriter, readVarint, readZigzag, readFloat64LE, readStringUtf8Varint, } from "./binary-utils.js";
|
|
9
9
|
import { printFor } from "./east.js";
|
|
10
10
|
import { ref } from "../containers/ref.js";
|
|
11
|
+
import { EAST_IR_SYMBOL, EAST_CAPTURES_SYMBOL, compile_internal } from "../compile.js";
|
|
12
|
+
import { InternalError } from "../error.js";
|
|
13
|
+
import { IRType } from "../ir.js";
|
|
14
|
+
import { analyzeIR } from "../analyze.js";
|
|
11
15
|
const printTypeValue = printFor(EastTypeValueType);
|
|
12
16
|
const isTypeValueEqual = equalFor(EastTypeValueType);
|
|
13
17
|
// =============================================================================
|
|
@@ -168,16 +172,78 @@ export function encodeBeast2ValueToBufferFor(type, typeCtx = []) {
|
|
|
168
172
|
return ret;
|
|
169
173
|
}
|
|
170
174
|
else if (type.type === "Function") {
|
|
171
|
-
|
|
175
|
+
return (value, writer, ctx = { refs: new Map() }) => {
|
|
176
|
+
// Get IR from function
|
|
177
|
+
const ir = value[EAST_IR_SYMBOL];
|
|
178
|
+
if (!ir) {
|
|
179
|
+
throw new Error(`Cannot serialize function: no IR attached. ` +
|
|
180
|
+
`Functions must be compiled from East IR to be serializable.`);
|
|
181
|
+
}
|
|
182
|
+
// Serialize the IR
|
|
183
|
+
irEncoder(ir, writer, ctx);
|
|
184
|
+
// Serialize capture values
|
|
185
|
+
const captures = value[EAST_CAPTURES_SYMBOL];
|
|
186
|
+
const captureCount = ir.value.captures.length;
|
|
187
|
+
// Write number of captures
|
|
188
|
+
writer.writeVarint(captureCount);
|
|
189
|
+
// Serialize each capture value using its type from the IR
|
|
190
|
+
for (const captureVar of ir.value.captures) {
|
|
191
|
+
const name = captureVar.value.name;
|
|
192
|
+
const captureType = captureVar.value.type;
|
|
193
|
+
// Captured variables are stored as variants - extract the value
|
|
194
|
+
if (!captures) {
|
|
195
|
+
throw new InternalError(`Function has captures in IR but no EAST_CAPTURES_SYMBOL`);
|
|
196
|
+
}
|
|
197
|
+
const captureEntry = captures[name];
|
|
198
|
+
if (!captureEntry) {
|
|
199
|
+
throw new InternalError(`Capture '${name}' not found in function's capture context`);
|
|
200
|
+
}
|
|
201
|
+
const captureValue = captureEntry.value;
|
|
202
|
+
// Get encoder for this capture's type and encode the value
|
|
203
|
+
const captureEncoder = encodeBeast2ValueToBufferFor(captureType, typeCtx);
|
|
204
|
+
captureEncoder(captureValue, writer, ctx);
|
|
205
|
+
}
|
|
206
|
+
};
|
|
172
207
|
}
|
|
173
208
|
else if (type.type === "AsyncFunction") {
|
|
174
|
-
|
|
209
|
+
return (value, writer, ctx = { refs: new Map() }) => {
|
|
210
|
+
// Get IR from function
|
|
211
|
+
const ir = value[EAST_IR_SYMBOL];
|
|
212
|
+
if (!ir) {
|
|
213
|
+
throw new Error(`Cannot serialize async function: no IR attached. ` +
|
|
214
|
+
`Functions must be compiled from East IR to be serializable.`);
|
|
215
|
+
}
|
|
216
|
+
// Serialize the IR
|
|
217
|
+
irEncoder(ir, writer, ctx);
|
|
218
|
+
// Serialize capture values
|
|
219
|
+
const captures = value[EAST_CAPTURES_SYMBOL];
|
|
220
|
+
const captureCount = ir.value.captures.length;
|
|
221
|
+
// Write number of captures
|
|
222
|
+
writer.writeVarint(captureCount);
|
|
223
|
+
// Serialize each capture value using its type from the IR
|
|
224
|
+
for (const captureVar of ir.value.captures) {
|
|
225
|
+
const name = captureVar.value.name;
|
|
226
|
+
const captureType = captureVar.value.type;
|
|
227
|
+
// Captured variables are stored as variants - extract the value
|
|
228
|
+
if (!captures) {
|
|
229
|
+
throw new InternalError(`AsyncFunction has captures in IR but no EAST_CAPTURES_SYMBOL`);
|
|
230
|
+
}
|
|
231
|
+
const captureEntry = captures[name];
|
|
232
|
+
if (!captureEntry) {
|
|
233
|
+
throw new InternalError(`Capture '${name}' not found in async function's capture context`);
|
|
234
|
+
}
|
|
235
|
+
const captureValue = captureEntry.value;
|
|
236
|
+
// Get encoder for this capture's type and encode the value
|
|
237
|
+
const captureEncoder = encodeBeast2ValueToBufferFor(captureType, typeCtx);
|
|
238
|
+
captureEncoder(captureValue, writer, ctx);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
175
241
|
}
|
|
176
242
|
else {
|
|
177
243
|
throw new Error(`Unhandled type ${type.type}`);
|
|
178
244
|
}
|
|
179
245
|
}
|
|
180
|
-
export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
246
|
+
export function decodeBeast2ValueFor(type, typeCtx = [], options) {
|
|
181
247
|
// Convert EastType to EastTypeValue if necessary
|
|
182
248
|
if (!isVariant(type)) {
|
|
183
249
|
type = toEastTypeValue(type);
|
|
@@ -239,13 +305,13 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
239
305
|
}
|
|
240
306
|
// Inline ref
|
|
241
307
|
const result = ref(undefined);
|
|
242
|
-
ctx.refs.set(
|
|
308
|
+
ctx.refs.set(newOffset, result);
|
|
243
309
|
const [value, nextOffset] = valueDecoder(buffer, newOffset, ctx);
|
|
244
310
|
result.value = value;
|
|
245
311
|
return [result, nextOffset];
|
|
246
312
|
};
|
|
247
313
|
typeCtx.push(ret);
|
|
248
|
-
valueDecoder = decodeBeast2ValueFor(type.value, typeCtx);
|
|
314
|
+
valueDecoder = decodeBeast2ValueFor(type.value, typeCtx, options);
|
|
249
315
|
typeCtx.pop();
|
|
250
316
|
return ret;
|
|
251
317
|
}
|
|
@@ -263,7 +329,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
263
329
|
}
|
|
264
330
|
// Inline array
|
|
265
331
|
const result = [];
|
|
266
|
-
ctx.refs.set(
|
|
332
|
+
ctx.refs.set(newOffset, result);
|
|
267
333
|
const [length, lengthOffset] = readVarint(buffer, newOffset);
|
|
268
334
|
let currentOffset = lengthOffset;
|
|
269
335
|
for (let i = 0; i < length; i++) {
|
|
@@ -274,12 +340,12 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
274
340
|
return [result, currentOffset];
|
|
275
341
|
};
|
|
276
342
|
typeCtx.push(ret);
|
|
277
|
-
valueDecoder = decodeBeast2ValueFor(type.value, typeCtx);
|
|
343
|
+
valueDecoder = decodeBeast2ValueFor(type.value, typeCtx, options);
|
|
278
344
|
typeCtx.pop();
|
|
279
345
|
return ret;
|
|
280
346
|
}
|
|
281
347
|
else if (type.type === "Set") {
|
|
282
|
-
const keyDecoder = decodeBeast2ValueFor(type.value, typeCtx);
|
|
348
|
+
const keyDecoder = decodeBeast2ValueFor(type.value, typeCtx, options);
|
|
283
349
|
return (buffer, offset, ctx = { refs: new Map() }) => {
|
|
284
350
|
const [refOrLength, newOffset] = readVarint(buffer, offset);
|
|
285
351
|
// Check if this is a backreference
|
|
@@ -292,7 +358,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
292
358
|
}
|
|
293
359
|
// Inline set
|
|
294
360
|
const result = new Set();
|
|
295
|
-
ctx.refs.set(
|
|
361
|
+
ctx.refs.set(newOffset, result);
|
|
296
362
|
const [length, lengthOffset] = readVarint(buffer, newOffset);
|
|
297
363
|
let currentOffset = lengthOffset;
|
|
298
364
|
for (let i = 0; i < length; i++) {
|
|
@@ -304,7 +370,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
304
370
|
};
|
|
305
371
|
}
|
|
306
372
|
else if (type.type === "Dict") {
|
|
307
|
-
const keyDecoder = decodeBeast2ValueFor(type.value.key, typeCtx);
|
|
373
|
+
const keyDecoder = decodeBeast2ValueFor(type.value.key, typeCtx, options);
|
|
308
374
|
let valueDecoder;
|
|
309
375
|
const ret = (buffer, offset, ctx = { refs: new Map() }) => {
|
|
310
376
|
const [refOrLength, newOffset] = readVarint(buffer, offset);
|
|
@@ -318,7 +384,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
318
384
|
}
|
|
319
385
|
// Inline dict
|
|
320
386
|
const result = new Map();
|
|
321
|
-
ctx.refs.set(
|
|
387
|
+
ctx.refs.set(newOffset, result);
|
|
322
388
|
const [length, lengthOffset] = readVarint(buffer, newOffset);
|
|
323
389
|
let currentOffset = lengthOffset;
|
|
324
390
|
for (let i = 0; i < length; i++) {
|
|
@@ -330,7 +396,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
330
396
|
return [result, currentOffset];
|
|
331
397
|
};
|
|
332
398
|
typeCtx.push(ret);
|
|
333
|
-
valueDecoder = decodeBeast2ValueFor(type.value.value, typeCtx);
|
|
399
|
+
valueDecoder = decodeBeast2ValueFor(type.value.value, typeCtx, options);
|
|
334
400
|
typeCtx.pop();
|
|
335
401
|
return ret;
|
|
336
402
|
}
|
|
@@ -349,7 +415,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
349
415
|
};
|
|
350
416
|
typeCtx.push(ret);
|
|
351
417
|
for (const { name, type: fieldType } of type.value) {
|
|
352
|
-
fieldDecoders.push([name, decodeBeast2ValueFor(fieldType, typeCtx)]);
|
|
418
|
+
fieldDecoders.push([name, decodeBeast2ValueFor(fieldType, typeCtx, options)]);
|
|
353
419
|
}
|
|
354
420
|
typeCtx.pop();
|
|
355
421
|
return ret;
|
|
@@ -370,7 +436,7 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
370
436
|
};
|
|
371
437
|
typeCtx.push(ret);
|
|
372
438
|
for (const { name, type: caseType } of type.value) {
|
|
373
|
-
caseDecoders.push([name, decodeBeast2ValueFor(caseType, typeCtx)]);
|
|
439
|
+
caseDecoders.push([name, decodeBeast2ValueFor(caseType, typeCtx, options)]);
|
|
374
440
|
}
|
|
375
441
|
typeCtx.pop();
|
|
376
442
|
return ret;
|
|
@@ -383,10 +449,128 @@ export function decodeBeast2ValueFor(type, typeCtx = []) {
|
|
|
383
449
|
return ret;
|
|
384
450
|
}
|
|
385
451
|
else if (type.type === "Function") {
|
|
386
|
-
|
|
452
|
+
// Convert platform to internal format
|
|
453
|
+
const platform = options?.platform ?? [];
|
|
454
|
+
const platformFns = Object.fromEntries(platform.map(fn => [fn.name, fn.fn]));
|
|
455
|
+
const asyncPlatformFns = new Set(platform.filter(fn => fn.type === 'async').map(fn => fn.name));
|
|
456
|
+
return (buffer, offset, ctx = { refs: new Map() }) => {
|
|
457
|
+
// Decode the IR
|
|
458
|
+
const [ir, newOffset] = irDecoder(buffer, offset, ctx);
|
|
459
|
+
let currentOffset = newOffset;
|
|
460
|
+
// Validate it's a FunctionIR
|
|
461
|
+
if (ir.type !== "Function") {
|
|
462
|
+
throw new Error(`Expected Function IR, got ${ir.type} at offset ${offset}`);
|
|
463
|
+
}
|
|
464
|
+
// Decode capture count
|
|
465
|
+
const [captureCount, offsetAfterCount] = readVarint(buffer, currentOffset);
|
|
466
|
+
currentOffset = offsetAfterCount;
|
|
467
|
+
if (captureCount !== ir.value.captures.length) {
|
|
468
|
+
throw new Error(`Capture count mismatch: IR has ${ir.value.captures.length} captures, ` +
|
|
469
|
+
`but serialized data has ${captureCount}`);
|
|
470
|
+
}
|
|
471
|
+
// Decode capture values
|
|
472
|
+
const captureContext = {};
|
|
473
|
+
for (const captureVar of ir.value.captures) {
|
|
474
|
+
const name = captureVar.value.name;
|
|
475
|
+
const captureType = captureVar.value.type;
|
|
476
|
+
// Get decoder for this capture's type and decode the value
|
|
477
|
+
const captureDecoder = decodeBeast2ValueFor(captureType, typeCtx, options);
|
|
478
|
+
const [captureValue, nextOffset] = captureDecoder(buffer, currentOffset, ctx);
|
|
479
|
+
currentOffset = nextOffset;
|
|
480
|
+
// Wrap captures in appropriate variants
|
|
481
|
+
captureContext[name] = captureVar.value.mutable
|
|
482
|
+
? variant("boxed", captureValue)
|
|
483
|
+
: variant("value", captureValue);
|
|
484
|
+
}
|
|
485
|
+
// Build variable context from captures for analyzeIR
|
|
486
|
+
const variableContext = {};
|
|
487
|
+
for (const captureVar of ir.value.captures) {
|
|
488
|
+
variableContext[captureVar.value.name] = {
|
|
489
|
+
type: captureVar.value.type,
|
|
490
|
+
mutable: captureVar.value.mutable,
|
|
491
|
+
definedBy: captureVar,
|
|
492
|
+
captured: true // Already captured from outer scope
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
// Build type context for compile_internal
|
|
496
|
+
const typeContext = {};
|
|
497
|
+
for (const captureVar of ir.value.captures) {
|
|
498
|
+
typeContext[captureVar.value.name] = captureVar.value.type;
|
|
499
|
+
}
|
|
500
|
+
// Analyze and compile the function with capture context
|
|
501
|
+
let fn;
|
|
502
|
+
try {
|
|
503
|
+
const analyzedIR = analyzeIR(ir, platform, variableContext);
|
|
504
|
+
const compiled = compile_internal(analyzedIR, typeContext, platformFns, asyncPlatformFns, platform, true, new Set());
|
|
505
|
+
fn = compiled(captureContext);
|
|
506
|
+
}
|
|
507
|
+
catch (e) {
|
|
508
|
+
throw new Error(`Failed to compile decoded function: ${e.message}`);
|
|
509
|
+
}
|
|
510
|
+
return [fn, currentOffset];
|
|
511
|
+
};
|
|
387
512
|
}
|
|
388
513
|
else if (type.type === "AsyncFunction") {
|
|
389
|
-
|
|
514
|
+
// Convert platform to internal format
|
|
515
|
+
const platform = options?.platform ?? [];
|
|
516
|
+
const platformFns = Object.fromEntries(platform.map(fn => [fn.name, fn.fn]));
|
|
517
|
+
const asyncPlatformFns = new Set(platform.filter(fn => fn.type === 'async').map(fn => fn.name));
|
|
518
|
+
return (buffer, offset, ctx = { refs: new Map() }) => {
|
|
519
|
+
// Decode the IR
|
|
520
|
+
const [ir, newOffset] = irDecoder(buffer, offset, ctx);
|
|
521
|
+
let currentOffset = newOffset;
|
|
522
|
+
// Validate it's an AsyncFunctionIR
|
|
523
|
+
if (ir.type !== "AsyncFunction") {
|
|
524
|
+
throw new Error(`Expected AsyncFunction IR, got ${ir.type} at offset ${offset}`);
|
|
525
|
+
}
|
|
526
|
+
// Decode capture count
|
|
527
|
+
const [captureCount, offsetAfterCount] = readVarint(buffer, currentOffset);
|
|
528
|
+
currentOffset = offsetAfterCount;
|
|
529
|
+
if (captureCount !== ir.value.captures.length) {
|
|
530
|
+
throw new Error(`Capture count mismatch: IR has ${ir.value.captures.length} captures, ` +
|
|
531
|
+
`but serialized data has ${captureCount}`);
|
|
532
|
+
}
|
|
533
|
+
// Decode capture values
|
|
534
|
+
const captureContext = {};
|
|
535
|
+
for (const captureVar of ir.value.captures) {
|
|
536
|
+
const name = captureVar.value.name;
|
|
537
|
+
const captureType = captureVar.value.type;
|
|
538
|
+
// Get decoder for this capture's type and decode the value
|
|
539
|
+
const captureDecoder = decodeBeast2ValueFor(captureType, typeCtx, options);
|
|
540
|
+
const [captureValue, nextOffset] = captureDecoder(buffer, currentOffset, ctx);
|
|
541
|
+
currentOffset = nextOffset;
|
|
542
|
+
// Wrap captures in appropriate variants
|
|
543
|
+
captureContext[name] = captureVar.value.mutable
|
|
544
|
+
? variant("boxed", captureValue)
|
|
545
|
+
: variant("value", captureValue);
|
|
546
|
+
}
|
|
547
|
+
// Build variable context from captures for analyzeIR
|
|
548
|
+
const variableContext = {};
|
|
549
|
+
for (const captureVar of ir.value.captures) {
|
|
550
|
+
variableContext[captureVar.value.name] = {
|
|
551
|
+
type: captureVar.value.type,
|
|
552
|
+
mutable: captureVar.value.mutable,
|
|
553
|
+
definedBy: captureVar,
|
|
554
|
+
captured: true // Already captured from outer scope
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
// Build type context for compile_internal
|
|
558
|
+
const typeContext = {};
|
|
559
|
+
for (const captureVar of ir.value.captures) {
|
|
560
|
+
typeContext[captureVar.value.name] = captureVar.value.type;
|
|
561
|
+
}
|
|
562
|
+
// Analyze and compile the function with capture context
|
|
563
|
+
let fn;
|
|
564
|
+
try {
|
|
565
|
+
const analyzedIR = analyzeIR(ir, platform, variableContext);
|
|
566
|
+
const compiled = compile_internal(analyzedIR, typeContext, platformFns, asyncPlatformFns, platform, true, new Set());
|
|
567
|
+
fn = compiled(captureContext);
|
|
568
|
+
}
|
|
569
|
+
catch (e) {
|
|
570
|
+
throw new Error(`Failed to compile decoded async function: ${e.message}`);
|
|
571
|
+
}
|
|
572
|
+
return [fn, currentOffset];
|
|
573
|
+
};
|
|
390
574
|
}
|
|
391
575
|
else {
|
|
392
576
|
throw new Error(`Unhandled type ${type.type}`);
|
|
@@ -416,6 +600,10 @@ export function encodeBeast2ValueFor(type) {
|
|
|
416
600
|
export const MAGIC_BYTES = new Uint8Array([0x89, 0x45, 0x61, 0x73, 0x74, 0x0D, 0x0A, 0x01]);
|
|
417
601
|
const typeEncoder = encodeBeast2ValueToBufferFor(EastTypeValueType);
|
|
418
602
|
const typeDecoder = decodeBeast2ValueFor(EastTypeValueType);
|
|
603
|
+
// IR encoder/decoder for function serialization
|
|
604
|
+
const IRTypeValue = toEastTypeValue(IRType);
|
|
605
|
+
const irEncoder = encodeBeast2ValueToBufferFor(IRTypeValue);
|
|
606
|
+
const irDecoder = decodeBeast2ValueFor(IRTypeValue);
|
|
419
607
|
export function encodeBeast2For(type) {
|
|
420
608
|
// Convert EastType to EastTypeValue if necessary
|
|
421
609
|
if (!isVariant(type)) {
|
|
@@ -459,12 +647,12 @@ export function decodeBeast2(data) {
|
|
|
459
647
|
}
|
|
460
648
|
return { type, value };
|
|
461
649
|
}
|
|
462
|
-
export function decodeBeast2For(type) {
|
|
650
|
+
export function decodeBeast2For(type, options) {
|
|
463
651
|
// Convert EastType to EastTypeValue if necessary
|
|
464
652
|
if (!isVariant(type)) {
|
|
465
653
|
type = toEastTypeValue(type);
|
|
466
654
|
}
|
|
467
|
-
const valueDecoder = decodeBeast2ValueFor(type);
|
|
655
|
+
const valueDecoder = decodeBeast2ValueFor(type, [], options);
|
|
468
656
|
return (data) => {
|
|
469
657
|
// Verify magic bytes
|
|
470
658
|
if (data.length < MAGIC_BYTES.length) {
|
|
@@ -492,4 +680,39 @@ export function decodeBeast2For(type) {
|
|
|
492
680
|
return value;
|
|
493
681
|
};
|
|
494
682
|
}
|
|
683
|
+
// =============================================================================
|
|
684
|
+
// Function serialization helpers
|
|
685
|
+
// =============================================================================
|
|
686
|
+
// Re-export for convenience
|
|
687
|
+
export { EAST_IR_SYMBOL, EAST_CAPTURES_SYMBOL } from "../compile.js";
|
|
688
|
+
import { EastIR, AsyncEastIR } from "../eastir.js";
|
|
689
|
+
/**
|
|
690
|
+
* Compile a deserialized FunctionIR to an executable function.
|
|
691
|
+
*
|
|
692
|
+
* @param ir - The FunctionIR returned from BEAST2 deserialization
|
|
693
|
+
* @param platform - Platform functions required for execution
|
|
694
|
+
* @returns Compiled JavaScript function
|
|
695
|
+
*
|
|
696
|
+
* @example
|
|
697
|
+
* ```ts
|
|
698
|
+
* const funcType = FunctionType([IntegerType], IntegerType);
|
|
699
|
+
* const data = encodeBeast2For(funcType)(myCompiledFunc);
|
|
700
|
+
* const ir = decodeBeast2For(funcType)(data);
|
|
701
|
+
* const recompiled = compileFunctionIR(ir, []);
|
|
702
|
+
* const result = recompiled(42n);
|
|
703
|
+
* ```
|
|
704
|
+
*/
|
|
705
|
+
export function compileFunctionIR(ir, platform) {
|
|
706
|
+
return new EastIR(ir).compile(platform);
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
* Compile a deserialized AsyncFunctionIR to an executable async function.
|
|
710
|
+
*
|
|
711
|
+
* @param ir - The AsyncFunctionIR returned from BEAST2 deserialization
|
|
712
|
+
* @param platform - Platform functions required for execution
|
|
713
|
+
* @returns Compiled JavaScript async function
|
|
714
|
+
*/
|
|
715
|
+
export function compileAsyncFunctionIR(ir, platform) {
|
|
716
|
+
return new AsyncEastIR(ir).compile(platform);
|
|
717
|
+
}
|
|
495
718
|
//# sourceMappingURL=beast2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beast2.js","sourceRoot":"","sources":["../../../src/serialization/beast2.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"beast2.js","sourceRoot":"","sources":["../../../src/serialization/beast2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAsB,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAuB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAyC,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAoC,CAAC;AACtF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,iBAAiB,CAAsD,CAAC;AAuC1G,gFAAgF;AAChF,+DAA+D;AAC/D,gFAAgF;AAEhF,MAAM,UAAU,4BAA4B,CAAC,IAAmB,EAAE,UAAmC,EAAE;IACrG,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAU,EAAE,OAAqB,EAAE,IAA0B,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA,CAAA,CAAC,CAAC;IAC3I,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,CAAO,EAAE,OAAqB,EAAE,IAA0B,EAAE,EAAE,GAAiC,CAAC,CAAC;IAC3G,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,CAAU,EAAE,MAAoB,EAAE,IAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,CAAS,EAAE,MAAoB,EAAE,IAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,CAAS,EAAE,MAAoB,EAAE,IAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,CAAC,CAAS,EAAE,MAAoB,EAAE,IAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,CAAO,EAAE,MAAoB,EAAE,IAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChH,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,CAAa,EAAE,MAAoB,EAAE,IAA0B,EAAE,EAAE;YACzE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC/B,IAAI,YAAmF,CAAC;QACxF,MAAM,GAAG,GAAG,CAAC,CAAW,EAAE,MAAoB,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YAChG,0BAA0B;YAC1B,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;gBAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,mCAAmC;YACnC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACtC,kBAAkB;YAClB,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,YAAmF,CAAC;QACxF,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,MAAoB,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YAC7F,0BAA0B;YAC1B,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;gBAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,mCAAmC;YACnC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACtC,kBAAkB;YAClB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;gBACrB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,CAAC,CAAW,EAAE,MAAoB,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YAC3F,0BAA0B;YAC1B,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;gBAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,mCAAmC;YACnC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACtC,kBAAkB;YAClB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;gBACpB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACzE,IAAI,YAAmF,CAAC;QACxF,MAAM,GAAG,GAAG,CAAC,CAAgB,EAAE,MAAoB,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YACrG,0BAA0B;YAC1B,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;gBAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,mCAAmC;YACnC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACtC,kBAAkB;YAClB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC3B,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,aAAa,GAAsF,EAAE,CAAC;QAC5G,MAAM,GAAG,GAAG,CAAC,CAAsB,EAAE,MAAoB,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YAC3G,gBAAgB;YAChB,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;gBACzC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACnD,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,YAAY,GAA0F,EAAE,CAAC;QAC/G,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,MAAoB,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YAC3F,uBAAuB;YACvB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAc,CAAC;YAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAE,CAAC,CAAC,qBAAqB;YACtD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC7B,YAAY,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClD,YAAY,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,KAAU,EAAE,MAAoB,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YAC1F,uBAAuB;YACvB,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,CAA2B,CAAC;YAE3D,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,KAAK,CACb,6CAA6C;oBAC7C,6DAA6D,CAC9D,CAAC;YACJ,CAAC;YAED,mBAAmB;YACnB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAE3B,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAA+B,CAAC;YAC3E,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAE9C,2BAA2B;YAC3B,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAEjC,0DAA0D;YAC1D,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBAE1C,gEAAgE;gBAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,aAAa,CAAC,yDAAyD,CAAC,CAAC;gBACrF,CAAC;gBACD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,IAAI,aAAa,CAAC,YAAY,IAAI,2CAA2C,CAAC,CAAC;gBACvF,CAAC;gBACD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;gBAExC,2DAA2D;gBAC3D,MAAM,cAAc,GAAG,4BAA4B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC1E,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACzC,OAAO,CAAC,KAAU,EAAE,MAAoB,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YAC1F,uBAAuB;YACvB,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,CAAgC,CAAC;YAEhE,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,KAAK,CACb,mDAAmD;oBACnD,6DAA6D,CAC9D,CAAC;YACJ,CAAC;YAED,mBAAmB;YACnB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAE3B,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAA+B,CAAC;YAC3E,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAE9C,2BAA2B;YAC3B,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAEjC,0DAA0D;YAC1D,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBAE1C,gEAAgE;gBAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,aAAa,CAAC,8DAA8D,CAAC,CAAC;gBAC1F,CAAC;gBACD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,IAAI,aAAa,CAAC,YAAY,IAAI,iDAAiD,CAAC,CAAC;gBAC7F,CAAC;gBACD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;gBAExC,2DAA2D;gBAC3D,MAAM,cAAc,GAAG,4BAA4B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC1E,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,kBAAmB,IAAsC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAA8B,EAAE,UAAmC,EAAE,EAAE,OAA6B;IACvI,iDAAiD;IACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAmB,EAAE,OAAe,EAAE,IAA0B,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA,CAAA,CAAC,CAAC;IAC9I,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,OAAmB,EAAE,MAAc,EAAE,IAA0B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7F,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,IAA0B,EAAE,EAAE;YACxE,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,8CAA8C,MAAM,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,IAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxG,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,IAA0B,EAAE,EAAE;YACxE,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/E,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,IAA0B,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClH,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,IAA0B,EAAE,EAAE;YACxE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,IAA0B,EAAE,EAAE;YACxE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,YAAY,MAAM,EAAE,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC/B,IAAI,YAA8F,CAAC;QACnG,MAAM,GAAG,GAAG,CAAC,MAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAiB,EAAE;YAChH,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5D,mCAAmC;YACnC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,YAAY,YAAY,EAAE,CAAC,CAAC;gBACzF,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YACD,aAAa;YACb,MAAM,MAAM,GAAa,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9B,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,YAA8F,CAAC;QACnG,MAAM,GAAG,GAAG,CAAC,MAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAiB,EAAE;YAChH,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5D,mCAAmC;YACnC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,YAAY,YAAY,EAAE,CAAC,CAAC;gBACzF,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YACD,eAAe;YACf,MAAM,MAAM,GAAU,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,aAAa,GAAG,YAAY,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBACrE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,aAAa,GAAG,UAAU,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;YAC5F,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5D,mCAAmC;YACnC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,YAAY,YAAY,EAAE,CAAC,CAAC;gBACzF,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YACD,aAAa;YACb,MAAM,MAAM,GAAG,IAAI,GAAG,EAAO,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,aAAa,GAAG,YAAY,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBACjE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,aAAa,GAAG,UAAU,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,YAA8F,CAAC;QACnG,MAAM,GAAG,GAAG,CAAC,MAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAiB,EAAE;YAChH,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5D,mCAAmC;YACnC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,YAAY,YAAY,EAAE,CAAC,CAAC;gBACzF,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YACD,cAAc;YACd,MAAM,MAAM,GAAG,IAAI,GAAG,EAAY,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,aAAa,GAAG,YAAY,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBAChE,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAClE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACvB,aAAa,GAAG,WAAW,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,aAAa,GAAiG,EAAE,CAAC;QACvH,MAAM,GAAG,GAAG,CAAC,MAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAiB,EAAE;YAChH,uBAAuB;YACvB,MAAM,MAAM,GAAwB,EAAE,CAAC;YACvC,IAAI,aAAa,GAAG,MAAM,CAAC;YAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;gBACzC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBAChE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;gBAClB,aAAa,GAAG,UAAU,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACnD,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,YAAY,GAAiG,EAAE,CAAC;QACtH,MAAM,GAAG,GAAG,CAAC,MAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAiB,EAAE;YAChH,iBAAiB;YACjB,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,cAAc,MAAM,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAE,CAAC;YACxD,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAgB,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAChE,CAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YACzB,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClD,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpC,sCAAsC;QACtC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhG,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAiB,EAAE;YAC3G,gBAAgB;YAChB,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YACvD,IAAI,aAAa,GAAG,SAAS,CAAC;YAE9B,6BAA6B;YAC7B,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,6BAA6B,EAAE,CAAC,IAAI,cAAc,MAAM,EAAE,CAC3D,CAAC;YACJ,CAAC;YAED,uBAAuB;YACvB,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAC3E,aAAa,GAAG,gBAAgB,CAAC;YAEjC,IAAI,YAAY,KAAK,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACb,kCAAkC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,aAAa;oBACvE,2BAA2B,YAAY,EAAE,CAC1C,CAAC;YACJ,CAAC;YAED,wBAAwB;YACxB,MAAM,cAAc,GAAmB,EAAE,CAAC;YAC1C,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBAE1C,2DAA2D;gBAC3D,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC3E,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC9E,aAAa,GAAG,UAAU,CAAC;gBAE3B,wCAAwC;gBACxC,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO;oBAC7C,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC;oBAChC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACrC,CAAC;YAED,qDAAqD;YACrD,MAAM,eAAe,GAAiG,EAAE,CAAC;YACzH,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;oBACvC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;oBAC3B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;oBACjC,SAAS,EAAE,UAAU;oBACrB,QAAQ,EAAE,IAAI,CAAE,oCAAoC;iBACrD,CAAC;YACJ,CAAC;YAED,0CAA0C;YAC1C,MAAM,WAAW,GAAkC,EAAE,CAAC;YACtD,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7D,CAAC;YAED,wDAAwD;YACxD,IAAI,EAAO,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBACrH,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,uCAAwC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,CAAC;YAED,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACzC,sCAAsC;QACtC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhG,OAAO,CAAC,MAAkB,EAAE,MAAc,EAAE,MAA2B,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,EAAiB,EAAE;YAC3G,gBAAgB;YAChB,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YACvD,IAAI,aAAa,GAAG,SAAS,CAAC;YAE9B,mCAAmC;YACnC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,kCAAkC,EAAE,CAAC,IAAI,cAAc,MAAM,EAAE,CAChE,CAAC;YACJ,CAAC;YAED,uBAAuB;YACvB,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAC3E,aAAa,GAAG,gBAAgB,CAAC;YAEjC,IAAI,YAAY,KAAK,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACb,kCAAkC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,aAAa;oBACvE,2BAA2B,YAAY,EAAE,CAC1C,CAAC;YACJ,CAAC;YAED,wBAAwB;YACxB,MAAM,cAAc,GAAmB,EAAE,CAAC;YAC1C,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBAE1C,2DAA2D;gBAC3D,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC3E,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC9E,aAAa,GAAG,UAAU,CAAC;gBAE3B,wCAAwC;gBACxC,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO;oBAC7C,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC;oBAChC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACrC,CAAC;YAED,qDAAqD;YACrD,MAAM,eAAe,GAAiG,EAAE,CAAC;YACzH,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;oBACvC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;oBAC3B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;oBACjC,SAAS,EAAE,UAAU;oBACrB,QAAQ,EAAE,IAAI,CAAE,oCAAoC;iBACrD,CAAC;YACJ,CAAC;YAED,0CAA0C;YAC1C,MAAM,WAAW,GAAkC,EAAE,CAAC;YACtD,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7D,CAAC;YAED,wDAAwD;YACxD,IAAI,EAAO,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBACrH,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,6CAA8C,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACvF,CAAC;YAED,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,kBAAmB,IAAsC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,oBAAoB,CAAC,IAA8B;IACjE,iDAAiD;IACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,OAAO,GAAG,4BAA4B,CAAC,IAAqB,CAAC,CAAC;IACpE,OAAO,CAAC,KAAU,EAAc,EAAE;QAChC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,GAAwB,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,0DAA0D;AAC1D,gFAAgF;AAEhF,+BAA+B;AAC/B,+CAA+C;AAC/C,6DAA6D;AAC7D,qDAAqD;AACrD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5F,MAAM,WAAW,GAAG,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;AACpE,MAAM,WAAW,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAE5D,gDAAgD;AAChD,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,SAAS,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;AAC5D,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAIpD,MAAM,UAAU,eAAe,CAAC,IAA8B;IAC5D,iDAAiD;IACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,IAAqB,CAAC,CAAC;IAEzE,OAAO,CAAC,KAAU,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAElC,8BAA8B;QAC9B,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAE/B,oBAAoB;QACpB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAE/C,cAAc;QACd,MAAM,GAAG,GAAwB,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QACrD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAEjC,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,qBAAqB;IACrB,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,gBAAgB,WAAW,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1I,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAChC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE3C,eAAe;IACf,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,GAAG,GAAwB,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACrD,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IAEvE,8BAA8B;IAC9B,IAAI,cAAc,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,cAAc,KAAK,IAAI,CAAC,MAAM,GAAG,cAAc,mBAAmB,CAAC,CAAC;IACrI,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAID,MAAM,UAAU,eAAe,CAAC,IAA8B,EAAE,OAA6B;IAC3F,iDAAiD;IACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAqB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAE9E,OAAO,CAAC,IAAgB,EAAE,EAAE;QAC1B,qBAAqB;QACrB,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;QAC3E,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,gBAAgB,WAAW,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1I,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QAChC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE/D,oCAAoC;QACpC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAqB,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,CAAC,IAAqB,CAAC,SAAS,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1H,CAAC;QAED,eAAe;QACf,MAAM,GAAG,GAAwB,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QACrD,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;QAEvE,8BAA8B;QAC9B,IAAI,cAAc,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,cAAc,KAAK,IAAI,CAAC,MAAM,GAAG,cAAc,mBAAmB,CAAC,CAAC;QACrI,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAc,EACd,QAA4B;IAE5B,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAsB,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAmB,EACnB,QAA4B;IAE5B,OAAO,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAA+B,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*
|
|
5
|
+
* CSV serialization following RFC 4180 (Common Format and MIME Type for CSV Files).
|
|
6
|
+
* @see https://www.rfc-editor.org/rfc/rfc4180
|
|
7
|
+
*/
|
|
8
|
+
import type { ValueTypeOf, ArrayType } from "../types.js";
|
|
9
|
+
import { StructType, OptionType, StringType, BooleanType, DictType } from "../types.js";
|
|
10
|
+
import type { EastTypeValue } from "../type_of_type.js";
|
|
11
|
+
/**
|
|
12
|
+
* Configuration options for CSV parsing.
|
|
13
|
+
* All properties are optional with sensible defaults.
|
|
14
|
+
*/
|
|
15
|
+
export type CsvParseOptions = {
|
|
16
|
+
/** Field delimiter (default: ",") */
|
|
17
|
+
delimiter?: string;
|
|
18
|
+
/** Quote character (default: '"') */
|
|
19
|
+
quoteChar?: string;
|
|
20
|
+
/** Escape character (default: '"' for doubled quotes) */
|
|
21
|
+
escapeChar?: string;
|
|
22
|
+
/** Line ending - auto-detects if not provided */
|
|
23
|
+
newline?: string;
|
|
24
|
+
/** Whether first row is headers (default: true) */
|
|
25
|
+
hasHeader?: boolean;
|
|
26
|
+
/** String values to treat as null (default: [""]) */
|
|
27
|
+
nullStrings?: string[];
|
|
28
|
+
/** Skip rows that are entirely empty (default: true) */
|
|
29
|
+
skipEmptyLines?: boolean;
|
|
30
|
+
/** Trim whitespace from field values (default: false) */
|
|
31
|
+
trimFields?: boolean;
|
|
32
|
+
/** Map CSV headers to struct field names */
|
|
33
|
+
columnMapping?: Map<string, string>;
|
|
34
|
+
/** Error on schema mismatch (default: false) */
|
|
35
|
+
strict?: boolean;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Configuration options for CSV serialization.
|
|
39
|
+
* All properties are optional with sensible defaults.
|
|
40
|
+
*/
|
|
41
|
+
export type CsvSerializeOptions = {
|
|
42
|
+
/** Field delimiter (default: ",") */
|
|
43
|
+
delimiter?: string;
|
|
44
|
+
/** Quote character (default: '"') */
|
|
45
|
+
quoteChar?: string;
|
|
46
|
+
/** Escape character (default: '"') */
|
|
47
|
+
escapeChar?: string;
|
|
48
|
+
/** Line ending (default: "\r\n") */
|
|
49
|
+
newline?: string;
|
|
50
|
+
/** Include header row (default: true) */
|
|
51
|
+
includeHeader?: boolean;
|
|
52
|
+
/** String to output for null/none values (default: "") */
|
|
53
|
+
nullString?: string;
|
|
54
|
+
/** Always quote all fields (default: false) */
|
|
55
|
+
alwaysQuote?: boolean;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* East type for CSV parse configuration.
|
|
59
|
+
*/
|
|
60
|
+
export declare const CsvParseConfigType: StructType<{
|
|
61
|
+
readonly delimiter: OptionType<StringType>;
|
|
62
|
+
readonly quoteChar: OptionType<StringType>;
|
|
63
|
+
readonly escapeChar: OptionType<StringType>;
|
|
64
|
+
readonly newline: OptionType<StringType>;
|
|
65
|
+
readonly hasHeader: OptionType<BooleanType>;
|
|
66
|
+
readonly nullStrings: OptionType<ArrayType<StringType>>;
|
|
67
|
+
readonly skipEmptyLines: OptionType<BooleanType>;
|
|
68
|
+
readonly trimFields: OptionType<BooleanType>;
|
|
69
|
+
readonly columnMapping: OptionType<DictType<StringType, StringType>>;
|
|
70
|
+
readonly strict: OptionType<BooleanType>;
|
|
71
|
+
}>;
|
|
72
|
+
export type CsvParseConfigType = typeof CsvParseConfigType;
|
|
73
|
+
/**
|
|
74
|
+
* East type for CSV serialize configuration.
|
|
75
|
+
*/
|
|
76
|
+
export declare const CsvSerializeConfigType: StructType<{
|
|
77
|
+
readonly delimiter: OptionType<StringType>;
|
|
78
|
+
readonly quoteChar: OptionType<StringType>;
|
|
79
|
+
readonly escapeChar: OptionType<StringType>;
|
|
80
|
+
readonly newline: OptionType<StringType>;
|
|
81
|
+
readonly includeHeader: OptionType<BooleanType>;
|
|
82
|
+
readonly nullString: OptionType<StringType>;
|
|
83
|
+
readonly alwaysQuote: OptionType<BooleanType>;
|
|
84
|
+
}>;
|
|
85
|
+
export type CsvSerializeConfigType = typeof CsvSerializeConfigType;
|
|
86
|
+
/**
|
|
87
|
+
* Converts TypeScript CsvParseOptions to an East config value.
|
|
88
|
+
*/
|
|
89
|
+
export declare function csvParseOptionsToValue(options?: CsvParseOptions): ValueTypeOf<CsvParseConfigType>;
|
|
90
|
+
/**
|
|
91
|
+
* Converts TypeScript CsvSerializeOptions to an East config value.
|
|
92
|
+
*/
|
|
93
|
+
export declare function csvSerializeOptionsToValue(options?: CsvSerializeOptions): ValueTypeOf<CsvSerializeConfigType>;
|
|
94
|
+
/**
|
|
95
|
+
* Extracts resolved options from an East config value, applying defaults.
|
|
96
|
+
*/
|
|
97
|
+
export declare function resolveParseConfig(config: ValueTypeOf<CsvParseConfigType>): Required<Omit<CsvParseOptions, 'columnMapping'>> & {
|
|
98
|
+
columnMapping: Map<string, string>;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Extracts resolved options from an East config value, applying defaults.
|
|
102
|
+
*/
|
|
103
|
+
export declare function resolveSerializeConfig(config: ValueTypeOf<CsvSerializeConfigType>): Required<CsvSerializeOptions>;
|
|
104
|
+
/**
|
|
105
|
+
* Location information for CSV parsing errors.
|
|
106
|
+
*/
|
|
107
|
+
export interface CsvLocation {
|
|
108
|
+
/** 1-indexed row number (excluding header) */
|
|
109
|
+
row: number;
|
|
110
|
+
/** 0-indexed column index */
|
|
111
|
+
column: number;
|
|
112
|
+
/** Column header name if available */
|
|
113
|
+
columnName?: string;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Error thrown during CSV parsing with location information.
|
|
117
|
+
*/
|
|
118
|
+
export declare class CsvError extends Error {
|
|
119
|
+
location?: CsvLocation | undefined;
|
|
120
|
+
constructor(message: string, location?: CsvLocation | undefined);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Creates a type-specialized CSV decoder for Array<Struct>.
|
|
124
|
+
*
|
|
125
|
+
* @param structType - The struct type for each row
|
|
126
|
+
* @param config - Configuration as East value (from CsvParseConfigType)
|
|
127
|
+
* @param frozen - Whether to freeze the decoded values
|
|
128
|
+
*/
|
|
129
|
+
export declare function decodeCsvFor(structType: EastTypeValue, config?: ValueTypeOf<CsvParseConfigType>, frozen?: boolean): (blob: Uint8Array) => any;
|
|
130
|
+
export declare function decodeCsvFor<T extends StructType>(structType: T, config?: ValueTypeOf<CsvParseConfigType>, frozen?: boolean): (blob: Uint8Array) => ValueTypeOf<ArrayType<T>>;
|
|
131
|
+
/**
|
|
132
|
+
* Creates a type-specialized CSV encoder for Array<Struct>.
|
|
133
|
+
*
|
|
134
|
+
* @param structType - The struct type for each row
|
|
135
|
+
* @param config - Configuration as East value (from CsvSerializeConfigType)
|
|
136
|
+
*/
|
|
137
|
+
export declare function encodeCsvFor(structType: EastTypeValue, config?: ValueTypeOf<CsvSerializeConfigType>): (value: any[]) => Uint8Array;
|
|
138
|
+
export declare function encodeCsvFor<T extends StructType>(structType: T, config?: ValueTypeOf<CsvSerializeConfigType>): (value: ValueTypeOf<ArrayType<T>>) => Uint8Array;
|
|
139
|
+
//# sourceMappingURL=csv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/serialization/csv.ts"],"names":[],"mappings":"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"}
|