@kubb/core 3.13.0 → 3.13.1
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/{chunk-CLU63TLC.cjs → chunk-5FMXBQIM.cjs} +8 -8
- package/dist/{chunk-CLU63TLC.cjs.map → chunk-5FMXBQIM.cjs.map} +1 -1
- package/dist/{chunk-XNJUQ6V7.cjs → chunk-AHJUF7XY.cjs} +13 -13
- package/dist/{chunk-XNJUQ6V7.cjs.map → chunk-AHJUF7XY.cjs.map} +1 -1
- package/dist/{chunk-VR54DKPH.cjs → chunk-BGQLAB22.cjs} +17 -17
- package/dist/{chunk-VR54DKPH.cjs.map → chunk-BGQLAB22.cjs.map} +1 -1
- package/dist/{chunk-3DJZNQO4.js → chunk-GENFDSKH.js} +6 -3
- package/dist/chunk-GENFDSKH.js.map +1 -0
- package/dist/{chunk-W7T2TGIO.cjs → chunk-SWGRVXDA.cjs} +51 -48
- package/dist/chunk-SWGRVXDA.cjs.map +1 -0
- package/dist/{chunk-R2G6M7CO.cjs → chunk-XYYJ47OY.cjs} +4 -4
- package/dist/{chunk-R2G6M7CO.cjs.map → chunk-XYYJ47OY.cjs.map} +1 -1
- package/dist/fs.cjs +9 -9
- package/dist/index.cjs +42 -42
- package/dist/index.js +2 -2
- package/dist/logger.cjs +7 -7
- package/dist/mocks.cjs +10 -10
- package/dist/mocks.js +1 -1
- package/dist/{prompt-QQ4LC2QP.cjs → prompt-D3TJH7LL.cjs} +4 -4
- package/dist/{prompt-QQ4LC2QP.cjs.map → prompt-D3TJH7LL.cjs.map} +1 -1
- package/dist/transformers.cjs +22 -22
- package/dist/utils.cjs +19 -19
- package/dist/utils.js +1 -1
- package/package.json +4 -4
- package/src/utils/TreeNode.ts +4 -1
- package/dist/chunk-3DJZNQO4.js.map +0 -1
- package/dist/chunk-W7T2TGIO.cjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkBGQLAB22_cjs = require('./chunk-BGQLAB22.cjs');
|
|
4
|
+
var chunk5FMXBQIM_cjs = require('./chunk-5FMXBQIM.cjs');
|
|
5
|
+
var chunkXYYJ47OY_cjs = require('./chunk-XYYJ47OY.cjs');
|
|
6
6
|
var path = require('path');
|
|
7
7
|
var hash = require('object-hash');
|
|
8
8
|
var remeda = require('remeda');
|
|
@@ -13,9 +13,9 @@ var path__default = /*#__PURE__*/_interopDefault(path);
|
|
|
13
13
|
var hash__default = /*#__PURE__*/_interopDefault(hash);
|
|
14
14
|
|
|
15
15
|
// ../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js
|
|
16
|
-
var require_eventemitter3 =
|
|
16
|
+
var require_eventemitter3 = chunkXYYJ47OY_cjs.__commonJS({
|
|
17
17
|
"../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js"(exports, module) {
|
|
18
|
-
|
|
18
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
19
19
|
var has = Object.prototype.hasOwnProperty;
|
|
20
20
|
var prefix = "~";
|
|
21
21
|
function Events() {
|
|
@@ -175,10 +175,10 @@ var require_eventemitter3 = chunkR2G6M7CO_cjs.__commonJS({
|
|
|
175
175
|
});
|
|
176
176
|
|
|
177
177
|
// src/utils/index.ts
|
|
178
|
-
|
|
178
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
179
179
|
|
|
180
180
|
// src/utils/FunctionParams.ts
|
|
181
|
-
|
|
181
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
182
182
|
var FunctionParams = class _FunctionParams {
|
|
183
183
|
#items = [];
|
|
184
184
|
constructor() {
|
|
@@ -199,7 +199,7 @@ var FunctionParams = class _FunctionParams {
|
|
|
199
199
|
return this;
|
|
200
200
|
}
|
|
201
201
|
static #orderItems(items) {
|
|
202
|
-
return
|
|
202
|
+
return chunkBGQLAB22_cjs.orderBy(
|
|
203
203
|
items.filter(Boolean),
|
|
204
204
|
[
|
|
205
205
|
(v) => {
|
|
@@ -227,7 +227,7 @@ var FunctionParams = class _FunctionParams {
|
|
|
227
227
|
acc.push(`${type}${rest.default ? ` = ${rest.default}` : ""}`);
|
|
228
228
|
return acc;
|
|
229
229
|
}
|
|
230
|
-
const parameterName = name.startsWith("{") ? name :
|
|
230
|
+
const parameterName = name.startsWith("{") ? name : chunkBGQLAB22_cjs.camelCase(name);
|
|
231
231
|
if (type) {
|
|
232
232
|
if (required) {
|
|
233
233
|
acc.push(`${parameterName}: ${type}${rest.default ? ` = ${rest.default}` : ""}`);
|
|
@@ -282,7 +282,7 @@ var FunctionParams = class _FunctionParams {
|
|
|
282
282
|
};
|
|
283
283
|
|
|
284
284
|
// src/utils/promise.ts
|
|
285
|
-
|
|
285
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
286
286
|
function isPromise(result) {
|
|
287
287
|
return !!result && typeof result?.then === "function";
|
|
288
288
|
}
|
|
@@ -294,7 +294,7 @@ function isPromiseRejectedResult(result) {
|
|
|
294
294
|
}
|
|
295
295
|
|
|
296
296
|
// src/utils/renderTemplate.ts
|
|
297
|
-
|
|
297
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
298
298
|
function renderTemplate(template, data = void 0) {
|
|
299
299
|
if (!data || !Object.keys(data).length) {
|
|
300
300
|
return template.replace(/{{(.*?)}}/g, "");
|
|
@@ -319,7 +319,7 @@ function renderTemplate(template, data = void 0) {
|
|
|
319
319
|
}
|
|
320
320
|
|
|
321
321
|
// src/utils/timeout.ts
|
|
322
|
-
|
|
322
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
323
323
|
async function timeout(ms) {
|
|
324
324
|
return new Promise((resolve) => {
|
|
325
325
|
setTimeout(() => {
|
|
@@ -329,7 +329,7 @@ async function timeout(ms) {
|
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
// src/utils/uniqueName.ts
|
|
332
|
-
|
|
332
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
333
333
|
function getUniqueName(originalName, data) {
|
|
334
334
|
let used = data[originalName] || 0;
|
|
335
335
|
if (used) {
|
|
@@ -350,7 +350,7 @@ function setUniqueName(originalName, data) {
|
|
|
350
350
|
}
|
|
351
351
|
|
|
352
352
|
// src/utils/URLPath.ts
|
|
353
|
-
|
|
353
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
354
354
|
var URLPath = class {
|
|
355
355
|
path;
|
|
356
356
|
#options;
|
|
@@ -421,9 +421,9 @@ var URLPath = class {
|
|
|
421
421
|
if (found) {
|
|
422
422
|
newPath = found.reduce((prev, path2) => {
|
|
423
423
|
const pathWithoutBrackets = path2.replaceAll("{", "").replaceAll("}", "");
|
|
424
|
-
let param =
|
|
424
|
+
let param = chunkBGQLAB22_cjs.isValidVarName(pathWithoutBrackets) ? pathWithoutBrackets : chunkBGQLAB22_cjs.camelCase(pathWithoutBrackets);
|
|
425
425
|
if (this.#options.casing === "camelcase") {
|
|
426
|
-
param =
|
|
426
|
+
param = chunkBGQLAB22_cjs.camelCase(param);
|
|
427
427
|
}
|
|
428
428
|
return prev.replace(path2, `\${${replacer ? replacer(param) : param}}`);
|
|
429
429
|
}, this.path);
|
|
@@ -439,9 +439,9 @@ var URLPath = class {
|
|
|
439
439
|
const params = {};
|
|
440
440
|
found.forEach((item) => {
|
|
441
441
|
item = item.replaceAll("{", "").replaceAll("}", "");
|
|
442
|
-
let param =
|
|
442
|
+
let param = chunkBGQLAB22_cjs.isValidVarName(item) ? item : chunkBGQLAB22_cjs.camelCase(item);
|
|
443
443
|
if (this.#options.casing === "camelcase") {
|
|
444
|
-
param =
|
|
444
|
+
param = chunkBGQLAB22_cjs.camelCase(param);
|
|
445
445
|
}
|
|
446
446
|
const key = replacer ? replacer(param) : param;
|
|
447
447
|
params[key] = key;
|
|
@@ -458,20 +458,20 @@ var URLPath = class {
|
|
|
458
458
|
};
|
|
459
459
|
|
|
460
460
|
// src/utils/parser.ts
|
|
461
|
-
|
|
461
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
462
462
|
|
|
463
463
|
// src/FileManager.ts
|
|
464
|
-
|
|
464
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
465
465
|
|
|
466
466
|
// ../../node_modules/.pnpm/p-queue@8.1.0/node_modules/p-queue/dist/index.js
|
|
467
|
-
|
|
467
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
468
468
|
|
|
469
469
|
// ../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs
|
|
470
|
-
|
|
471
|
-
var import_index =
|
|
470
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
471
|
+
var import_index = chunkXYYJ47OY_cjs.__toESM(require_eventemitter3(), 1);
|
|
472
472
|
|
|
473
473
|
// ../../node_modules/.pnpm/p-timeout@6.1.3/node_modules/p-timeout/index.js
|
|
474
|
-
|
|
474
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
475
475
|
var TimeoutError = class extends Error {
|
|
476
476
|
constructor(message) {
|
|
477
477
|
super(message);
|
|
@@ -560,10 +560,10 @@ function pTimeout(promise, options) {
|
|
|
560
560
|
}
|
|
561
561
|
|
|
562
562
|
// ../../node_modules/.pnpm/p-queue@8.1.0/node_modules/p-queue/dist/priority-queue.js
|
|
563
|
-
|
|
563
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
564
564
|
|
|
565
565
|
// ../../node_modules/.pnpm/p-queue@8.1.0/node_modules/p-queue/dist/lower-bound.js
|
|
566
|
-
|
|
566
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
567
567
|
function lowerBound(array, value, comparator) {
|
|
568
568
|
let first = 0;
|
|
569
569
|
let count = array.length;
|
|
@@ -956,10 +956,10 @@ var PQueue = class extends import_index.default {
|
|
|
956
956
|
};
|
|
957
957
|
|
|
958
958
|
// src/BarrelManager.ts
|
|
959
|
-
|
|
959
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
960
960
|
|
|
961
961
|
// src/utils/TreeNode.ts
|
|
962
|
-
|
|
962
|
+
chunkXYYJ47OY_cjs.init_cjs_shims();
|
|
963
963
|
var TreeNode = class _TreeNode {
|
|
964
964
|
data;
|
|
965
965
|
parent;
|
|
@@ -1072,7 +1072,10 @@ var normalizePath = (p) => p.replace(/\\/g, "/");
|
|
|
1072
1072
|
function buildDirectoryTree(files, rootFolder = "") {
|
|
1073
1073
|
const normalizedRootFolder = normalizePath(rootFolder);
|
|
1074
1074
|
const rootPrefix = normalizedRootFolder.endsWith("/") ? normalizedRootFolder : `${normalizedRootFolder}/`;
|
|
1075
|
-
const filteredFiles = files.filter((file) =>
|
|
1075
|
+
const filteredFiles = files.filter((file) => {
|
|
1076
|
+
const normalizedFilePath = normalizePath(file.path);
|
|
1077
|
+
return rootFolder ? normalizedFilePath.startsWith(rootPrefix) && !normalizedFilePath.endsWith(".json") : !normalizedFilePath.endsWith(".json");
|
|
1078
|
+
});
|
|
1076
1079
|
if (filteredFiles.length === 0) {
|
|
1077
1080
|
return null;
|
|
1078
1081
|
}
|
|
@@ -1169,7 +1172,7 @@ File: ${JSON.stringify(item.data.file, void 0, 2)}`
|
|
|
1169
1172
|
if (isSubExport) {
|
|
1170
1173
|
barrelFile.exports.push({
|
|
1171
1174
|
name: [source.name],
|
|
1172
|
-
path:
|
|
1175
|
+
path: chunk5FMXBQIM_cjs.getRelativePath(treeNode.parent?.data.path, item.data.path),
|
|
1173
1176
|
isTypeOnly: source.isTypeOnly
|
|
1174
1177
|
});
|
|
1175
1178
|
} else {
|
|
@@ -1192,13 +1195,13 @@ File: ${JSON.stringify(item.data.file, void 0, 2)}`
|
|
|
1192
1195
|
logger?.emit("debug", {
|
|
1193
1196
|
date: /* @__PURE__ */ new Date(),
|
|
1194
1197
|
logs: [
|
|
1195
|
-
`Generating barrelFile '${
|
|
1198
|
+
`Generating barrelFile '${chunk5FMXBQIM_cjs.getRelativePath(root, barrelFile.path)}' for '${chunk5FMXBQIM_cjs.getRelativePath(root, treeNode.data?.path)}' with ${barrelFile.sources.length} indexable exports: '${barrelFile.sources?.map((source) => source.name).join(", ")}'`
|
|
1196
1199
|
]
|
|
1197
1200
|
});
|
|
1198
1201
|
logger?.emit("debug", {
|
|
1199
1202
|
date: /* @__PURE__ */ new Date(),
|
|
1200
1203
|
logs: [
|
|
1201
|
-
`Generated barrelFile '${
|
|
1204
|
+
`Generated barrelFile '${chunk5FMXBQIM_cjs.getRelativePath(root, barrelFile.path)}' for '${chunk5FMXBQIM_cjs.getRelativePath(root, treeNode.data?.path)}' with exports: '${cachedFiles.get(barrelFile.path)?.sources?.map((source) => source.name).join(", ")}'`
|
|
1202
1205
|
]
|
|
1203
1206
|
});
|
|
1204
1207
|
if (previousBarrelFile) {
|
|
@@ -1222,13 +1225,13 @@ var FileManager = class {
|
|
|
1222
1225
|
return [...this.#filesByPath.values()];
|
|
1223
1226
|
}
|
|
1224
1227
|
get orderedFiles() {
|
|
1225
|
-
return
|
|
1228
|
+
return chunkBGQLAB22_cjs.orderBy(
|
|
1226
1229
|
[...this.#filesByPath.values()],
|
|
1227
1230
|
[
|
|
1228
1231
|
(v) => v?.meta && "pluginKey" in v.meta && !v.meta.pluginKey,
|
|
1229
1232
|
(v) => v.path.length,
|
|
1230
|
-
(v) =>
|
|
1231
|
-
(v) =>
|
|
1233
|
+
(v) => chunk5FMXBQIM_cjs.trimExtName(v.path).endsWith("index"),
|
|
1234
|
+
(v) => chunk5FMXBQIM_cjs.trimExtName(v.baseName),
|
|
1232
1235
|
(v) => v.path.split(".").pop()
|
|
1233
1236
|
]
|
|
1234
1237
|
);
|
|
@@ -1287,7 +1290,7 @@ var FileManager = class {
|
|
|
1287
1290
|
}
|
|
1288
1291
|
const barrelManager = new BarrelManager({ logger });
|
|
1289
1292
|
const pathToBuildFrom = path.join(root, output.path);
|
|
1290
|
-
if (
|
|
1293
|
+
if (chunk5FMXBQIM_cjs.trimExtName(pathToBuildFrom).endsWith("index")) {
|
|
1291
1294
|
logger?.emit("warning", "Output has the same fileName as the barrelFiles, please disable barrel generation");
|
|
1292
1295
|
return [];
|
|
1293
1296
|
}
|
|
@@ -1313,10 +1316,10 @@ var FileManager = class {
|
|
|
1313
1316
|
});
|
|
1314
1317
|
}
|
|
1315
1318
|
async write(...params) {
|
|
1316
|
-
return
|
|
1319
|
+
return chunk5FMXBQIM_cjs.write(...params);
|
|
1317
1320
|
}
|
|
1318
1321
|
async read(...params) {
|
|
1319
|
-
return
|
|
1322
|
+
return chunk5FMXBQIM_cjs.read(...params);
|
|
1320
1323
|
}
|
|
1321
1324
|
// statics
|
|
1322
1325
|
static getMode(path2) {
|
|
@@ -1346,12 +1349,12 @@ function combineSources(sources) {
|
|
|
1346
1349
|
return remeda.uniqueBy(sources, (obj) => [obj.name, obj.isExportable, obj.isTypeOnly]);
|
|
1347
1350
|
}
|
|
1348
1351
|
function combineExports(exports) {
|
|
1349
|
-
return
|
|
1352
|
+
return chunkBGQLAB22_cjs.orderBy(exports, [
|
|
1350
1353
|
(v) => !!Array.isArray(v.name),
|
|
1351
1354
|
(v) => !v.isTypeOnly,
|
|
1352
1355
|
(v) => v.path,
|
|
1353
1356
|
(v) => !!v.name,
|
|
1354
|
-
(v) => Array.isArray(v.name) ?
|
|
1357
|
+
(v) => Array.isArray(v.name) ? chunkBGQLAB22_cjs.orderBy(v.name) : v.name
|
|
1355
1358
|
]).reduce(
|
|
1356
1359
|
(prev, curr) => {
|
|
1357
1360
|
const name = curr.name;
|
|
@@ -1385,12 +1388,12 @@ function combineExports(exports) {
|
|
|
1385
1388
|
);
|
|
1386
1389
|
}
|
|
1387
1390
|
function combineImports(imports, exports, source) {
|
|
1388
|
-
return
|
|
1391
|
+
return chunkBGQLAB22_cjs.orderBy(imports, [
|
|
1389
1392
|
(v) => !!Array.isArray(v.name),
|
|
1390
1393
|
(v) => !v.isTypeOnly,
|
|
1391
1394
|
(v) => v.path,
|
|
1392
1395
|
(v) => !!v.name,
|
|
1393
|
-
(v) => Array.isArray(v.name) ?
|
|
1396
|
+
(v) => Array.isArray(v.name) ? chunkBGQLAB22_cjs.orderBy(v.name) : v.name
|
|
1394
1397
|
]).reduce(
|
|
1395
1398
|
(prev, curr) => {
|
|
1396
1399
|
let name = Array.isArray(curr.name) ? [...new Set(curr.name)] : curr.name;
|
|
@@ -1441,10 +1444,10 @@ function combineImports(imports, exports, source) {
|
|
|
1441
1444
|
}
|
|
1442
1445
|
var queue = new PQueue({ concurrency: 100 });
|
|
1443
1446
|
async function processFiles({ dryRun, root, extension, logger, files }) {
|
|
1444
|
-
const orderedFiles =
|
|
1447
|
+
const orderedFiles = chunkBGQLAB22_cjs.orderBy(files, [
|
|
1445
1448
|
(v) => v?.meta && "pluginKey" in v.meta && !v.meta.pluginKey,
|
|
1446
1449
|
(v) => v.path.length,
|
|
1447
|
-
(v) =>
|
|
1450
|
+
(v) => chunk5FMXBQIM_cjs.trimExtName(v.path).endsWith("index")
|
|
1448
1451
|
]);
|
|
1449
1452
|
logger?.emit("debug", {
|
|
1450
1453
|
date: /* @__PURE__ */ new Date(),
|
|
@@ -1459,7 +1462,7 @@ async function processFiles({ dryRun, root, extension, logger, files }) {
|
|
|
1459
1462
|
const message = file ? `Writing ${path.relative(root, file.path)}` : "";
|
|
1460
1463
|
const extname2 = extension?.[file.extname] || void 0;
|
|
1461
1464
|
const source = await getSource(file, { logger, extname: extname2 });
|
|
1462
|
-
await
|
|
1465
|
+
await chunk5FMXBQIM_cjs.write(file.path, source, { sanity: false });
|
|
1463
1466
|
logger?.emit("progressed", { id: "files", message });
|
|
1464
1467
|
});
|
|
1465
1468
|
});
|
|
@@ -1551,7 +1554,7 @@ var typeScriptParser = createFileParser({
|
|
|
1551
1554
|
const module = await import('@kubb/parser-ts');
|
|
1552
1555
|
const source = file.sources.map((item) => item.value).join("\n\n");
|
|
1553
1556
|
const importNodes = file.imports.map((item) => {
|
|
1554
|
-
const importPath = item.root ?
|
|
1557
|
+
const importPath = item.root ? chunk5FMXBQIM_cjs.getRelativePath(item.root, item.path) : item.path;
|
|
1555
1558
|
const hasExtname = !!path__default.default.extname(importPath);
|
|
1556
1559
|
return module.factory.createImportDeclaration({
|
|
1557
1560
|
name: item.name,
|
|
@@ -1629,5 +1632,5 @@ exports.processFiles = processFiles;
|
|
|
1629
1632
|
exports.renderTemplate = renderTemplate;
|
|
1630
1633
|
exports.setUniqueName = setUniqueName;
|
|
1631
1634
|
exports.timeout = timeout;
|
|
1632
|
-
//# sourceMappingURL=chunk-
|
|
1633
|
-
//# sourceMappingURL=chunk-
|
|
1635
|
+
//# sourceMappingURL=chunk-SWGRVXDA.cjs.map
|
|
1636
|
+
//# sourceMappingURL=chunk-SWGRVXDA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js","../src/utils/index.ts","../src/utils/FunctionParams.ts","../src/utils/promise.ts","../src/utils/renderTemplate.ts","../src/utils/timeout.ts","../src/utils/uniqueName.ts","../src/utils/URLPath.ts","../src/utils/parser.ts","../src/FileManager.ts","../../../node_modules/.pnpm/p-queue@8.1.0/node_modules/p-queue/dist/index.js","../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs","../../../node_modules/.pnpm/p-timeout@6.1.3/node_modules/p-timeout/index.js","../../../node_modules/.pnpm/p-queue@8.1.0/node_modules/p-queue/dist/priority-queue.js","../../../node_modules/.pnpm/p-queue@8.1.0/node_modules/p-queue/dist/lower-bound.js","../src/BarrelManager.ts","../src/utils/TreeNode.ts"],"names":["__commonJS","init_cjs_shims","EventEmitter","orderBy","camelCase","item","path","isValidVarName","__toESM","join","getRelativePath","trimExtName","write","read","extname","uniqueBy","isDeepEqual","name","relative","hash"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAA,qBAAA,GAAAA,4BAAA,CAAA;AAAA,EAAA,kFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAAC,gCAAA,EAAA;AAEA,IAAI,IAAA,GAAA,GAAM,OAAO,SAAU,CAAA,cAAA;AAA3B,IAAA,IACI,MAAS,GAAA,GAAA;AASb,IAAA,SAAS,MAAS,GAAA;AAAA;AASlB,IAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,MAAO,MAAA,CAAA,SAAA,mBAAmB,MAAA,CAAA,MAAA,CAAO,IAAI,CAAA;AAMrC,MAAA,IAAI,CAAC,IAAI,MAAO,EAAA,CAAE,WAAoB,MAAA,GAAA,KAAA;AAAA;AAYxC,IAAS,SAAA,EAAA,CAAG,EAAI,EAAA,OAAA,EAAS,IAAM,EAAA;AAC7B,MAAA,IAAA,CAAK,EAAK,GAAA,EAAA;AACV,MAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,MAAA,IAAA,CAAK,OAAO,IAAQ,IAAA,KAAA;AAAA;AActB,IAAA,SAAS,WAAY,CAAA,OAAA,EAAS,KAAO,EAAA,EAAA,EAAI,SAAS,IAAM,EAAA;AACtD,MAAI,IAAA,OAAO,OAAO,UAAY,EAAA;AAC5B,QAAM,MAAA,IAAI,UAAU,iCAAiC,CAAA;AAAA;AAGvD,MAAI,IAAA,QAAA,GAAW,IAAI,EAAA,CAAG,EAAI,EAAA,OAAA,IAAW,OAAS,EAAA,IAAI,CAC9C,EAAA,GAAA,GAAM,MAAS,GAAA,MAAA,GAAS,KAAQ,GAAA,KAAA;AAEpC,MAAI,IAAA,CAAC,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA,UAAW,OAAQ,CAAA,GAAG,CAAI,GAAA,QAAA,EAAU,OAAQ,CAAA,YAAA,EAAA;AAAA,WAC3D,IAAA,CAAC,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAE,EAAI,EAAA,OAAA,CAAQ,OAAQ,CAAA,GAAG,CAAE,CAAA,IAAA,CAAK,QAAQ,CAAA;AAAA,WAChE,OAAA,CAAQ,QAAQ,GAAG,CAAA,GAAI,CAAC,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA;AAE3D,MAAO,OAAA,OAAA;AAAA;AAUT,IAAS,SAAA,UAAA,CAAW,SAAS,GAAK,EAAA;AAChC,MAAA,IAAI,EAAE,OAAQ,CAAA,YAAA,KAAiB,GAAW,OAAA,CAAA,OAAA,GAAU,IAAI,MAAO,EAAA;AAAA,WAC1D,OAAO,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA;AAUjC,IAAA,SAASC,aAAe,GAAA;AACtB,MAAK,IAAA,CAAA,OAAA,GAAU,IAAI,MAAO,EAAA;AAC1B,MAAA,IAAA,CAAK,YAAe,GAAA,CAAA;AAAA;AAUtB,IAAAA,aAAa,CAAA,SAAA,CAAU,UAAa,GAAA,SAAS,UAAa,GAAA;AACxD,MAAI,IAAA,KAAA,GAAQ,EAAC,EACT,MACA,EAAA,IAAA;AAEJ,MAAI,IAAA,IAAA,CAAK,YAAiB,KAAA,CAAA,EAAU,OAAA,KAAA;AAEpC,MAAK,KAAA,IAAA,IAAS,MAAS,GAAA,IAAA,CAAK,OAAU,EAAA;AACpC,QAAA,IAAI,GAAI,CAAA,IAAA,CAAK,MAAQ,EAAA,IAAI,CAAG,EAAA,KAAA,CAAM,IAAK,CAAA,MAAA,GAAS,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA,GAAI,IAAI,CAAA;AAAA;AAGtE,MAAA,IAAI,OAAO,qBAAuB,EAAA;AAChC,QAAA,OAAO,KAAM,CAAA,MAAA,CAAO,MAAO,CAAA,qBAAA,CAAsB,MAAM,CAAC,CAAA;AAAA;AAG1D,MAAO,OAAA,KAAA;AAAA,KACT;AASA,IAAAA,aAAa,CAAA,SAAA,CAAU,SAAY,GAAA,SAAS,UAAU,KAAO,EAAA;AAC3D,MAAI,IAAA,GAAA,GAAM,SAAS,MAAS,GAAA,KAAA,GAAQ,OAChC,QAAW,GAAA,IAAA,CAAK,QAAQ,GAAG,CAAA;AAE/B,MAAI,IAAA,CAAC,QAAU,EAAA,OAAO,EAAC;AACvB,MAAA,IAAI,QAAS,CAAA,EAAA,EAAW,OAAA,CAAC,SAAS,EAAE,CAAA;AAEpC,MAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,MAAQ,EAAA,EAAA,GAAK,IAAI,KAAA,CAAM,CAAC,CAAA,EAAG,CAAI,GAAA,CAAA,EAAG,CAAK,EAAA,EAAA;AAClE,QAAA,EAAA,CAAG,CAAC,CAAA,GAAI,QAAS,CAAA,CAAC,CAAE,CAAA,EAAA;AAAA;AAGtB,MAAO,OAAA,EAAA;AAAA,KACT;AASA,IAAAA,aAAa,CAAA,SAAA,CAAU,aAAgB,GAAA,SAAS,cAAc,KAAO,EAAA;AACnE,MAAI,IAAA,GAAA,GAAM,SAAS,MAAS,GAAA,KAAA,GAAQ,OAChC,SAAY,GAAA,IAAA,CAAK,QAAQ,GAAG,CAAA;AAEhC,MAAI,IAAA,CAAC,WAAkB,OAAA,CAAA;AACvB,MAAI,IAAA,SAAA,CAAU,IAAW,OAAA,CAAA;AACzB,MAAA,OAAO,SAAU,CAAA,MAAA;AAAA,KACnB;AASA,IAAAA,aAAAA,CAAa,SAAU,CAAA,IAAA,GAAO,SAAS,IAAA,CAAK,OAAO,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA;AACrE,MAAI,IAAA,GAAA,GAAM,MAAS,GAAA,MAAA,GAAS,KAAQ,GAAA,KAAA;AAEpC,MAAA,IAAI,CAAC,IAAA,CAAK,OAAQ,CAAA,GAAG,GAAU,OAAA,KAAA;AAE/B,MAAI,IAAA,SAAA,GAAY,KAAK,OAAQ,CAAA,GAAG,GAC5B,GAAM,GAAA,SAAA,CAAU,QAChB,IACA,EAAA,CAAA;AAEJ,MAAA,IAAI,UAAU,EAAI,EAAA;AAChB,QAAI,IAAA,SAAA,CAAU,MAAW,IAAA,CAAA,cAAA,CAAe,OAAO,SAAU,CAAA,EAAA,EAAI,QAAW,IAAI,CAAA;AAE5E,QAAA,QAAQ,GAAK;AAAA,UACX,KAAK,CAAA;AAAG,YAAA,OAAO,SAAU,CAAA,EAAA,CAAG,IAAK,CAAA,SAAA,CAAU,OAAO,CAAG,EAAA,IAAA;AAAA,UACrD,KAAK,CAAA;AAAG,YAAA,OAAO,UAAU,EAAG,CAAA,IAAA,CAAK,SAAU,CAAA,OAAA,EAAS,EAAE,CAAG,EAAA,IAAA;AAAA,UACzD,KAAK,CAAA;AAAG,YAAA,OAAO,UAAU,EAAG,CAAA,IAAA,CAAK,UAAU,OAAS,EAAA,EAAA,EAAI,EAAE,CAAG,EAAA,IAAA;AAAA,UAC7D,KAAK,CAAA;AAAG,YAAO,OAAA,SAAA,CAAU,GAAG,IAAK,CAAA,SAAA,CAAU,SAAS,EAAI,EAAA,EAAA,EAAI,EAAE,CAAG,EAAA,IAAA;AAAA,UACjE,KAAK,CAAA;AAAG,YAAO,OAAA,SAAA,CAAU,GAAG,IAAK,CAAA,SAAA,CAAU,SAAS,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAE,CAAG,EAAA,IAAA;AAAA,UACrE,KAAK,CAAA;AAAG,YAAO,OAAA,SAAA,CAAU,EAAG,CAAA,IAAA,CAAK,SAAU,CAAA,OAAA,EAAS,IAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAE,CAAG,EAAA,IAAA;AAAA;AAG3E,QAAK,KAAA,CAAA,GAAI,CAAG,EAAA,IAAA,GAAO,IAAI,KAAA,CAAM,MAAK,CAAC,CAAA,EAAG,CAAI,GAAA,GAAA,EAAK,CAAK,EAAA,EAAA;AAClD,UAAA,IAAA,CAAK,CAAI,GAAA,CAAC,CAAI,GAAA,SAAA,CAAU,CAAC,CAAA;AAAA;AAG3B,QAAA,SAAA,CAAU,EAAG,CAAA,KAAA,CAAM,SAAU,CAAA,OAAA,EAAS,IAAI,CAAA;AAAA,OACrC,MAAA;AACL,QAAI,IAAA,MAAA,GAAS,UAAU,MACnB,EAAA,CAAA;AAEJ,QAAA,KAAK,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AAC3B,UAAA,IAAI,SAAU,CAAA,CAAC,CAAE,CAAA,IAAA,EAAW,IAAA,CAAA,cAAA,CAAe,KAAO,EAAA,SAAA,CAAU,CAAC,CAAA,CAAE,EAAI,EAAA,MAAA,EAAW,IAAI,CAAA;AAElF,UAAA,QAAQ,GAAK;AAAA,YACX,KAAK,CAAA;AAAG,cAAA,SAAA,CAAU,CAAC,CAAE,CAAA,EAAA,CAAG,KAAK,SAAU,CAAA,CAAC,EAAE,OAAO,CAAA;AAAG,cAAA;AAAA,YACpD,KAAK,CAAA;AAAG,cAAU,SAAA,CAAA,CAAC,EAAE,EAAG,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA,CAAE,SAAS,EAAE,CAAA;AAAG,cAAA;AAAA,YACxD,KAAK,CAAA;AAAG,cAAU,SAAA,CAAA,CAAC,EAAE,EAAG,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA,CAAE,OAAS,EAAA,EAAA,EAAI,EAAE,CAAA;AAAG,cAAA;AAAA,YAC5D,KAAK,CAAA;AAAG,cAAU,SAAA,CAAA,CAAC,CAAE,CAAA,EAAA,CAAG,IAAK,CAAA,SAAA,CAAU,CAAC,CAAE,CAAA,OAAA,EAAS,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA;AAAG,cAAA;AAAA,YAChE;AACE,cAAA,IAAI,CAAC,IAAA,EAAW,KAAA,CAAA,GAAI,CAAG,EAAA,IAAA,GAAO,IAAI,KAAA,CAAM,GAAK,GAAA,CAAC,CAAG,EAAA,CAAA,GAAI,KAAK,CAAK,EAAA,EAAA;AAC7D,gBAAA,IAAA,CAAK,CAAI,GAAA,CAAC,CAAI,GAAA,SAAA,CAAU,CAAC,CAAA;AAAA;AAG3B,cAAU,SAAA,CAAA,CAAC,EAAE,EAAG,CAAA,KAAA,CAAM,UAAU,CAAC,CAAA,CAAE,SAAS,IAAI,CAAA;AAAA;AACpD;AACF;AAGF,MAAO,OAAA,IAAA;AAAA,KACT;AAWA,IAAAA,cAAa,SAAU,CAAA,EAAA,GAAK,SAAS,EAAG,CAAA,KAAA,EAAO,IAAI,OAAS,EAAA;AAC1D,MAAA,OAAO,WAAY,CAAA,IAAA,EAAM,KAAO,EAAA,EAAA,EAAI,SAAS,KAAK,CAAA;AAAA,KACpD;AAWA,IAAAA,cAAa,SAAU,CAAA,IAAA,GAAO,SAAS,IAAK,CAAA,KAAA,EAAO,IAAI,OAAS,EAAA;AAC9D,MAAA,OAAO,WAAY,CAAA,IAAA,EAAM,KAAO,EAAA,EAAA,EAAI,SAAS,IAAI,CAAA;AAAA,KACnD;AAYA,IAAAA,aAAAA,CAAa,UAAU,cAAiB,GAAA,SAAS,eAAe,KAAO,EAAA,EAAA,EAAI,SAAS,IAAM,EAAA;AACxF,MAAI,IAAA,GAAA,GAAM,MAAS,GAAA,MAAA,GAAS,KAAQ,GAAA,KAAA;AAEpC,MAAA,IAAI,CAAC,IAAA,CAAK,OAAQ,CAAA,GAAG,GAAU,OAAA,IAAA;AAC/B,MAAA,IAAI,CAAC,EAAI,EAAA;AACP,QAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AACpB,QAAO,OAAA,IAAA;AAAA;AAGT,MAAI,IAAA,SAAA,GAAY,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAA;AAEhC,MAAA,IAAI,UAAU,EAAI,EAAA;AAChB,QACE,IAAA,SAAA,CAAU,EAAO,KAAA,EAAA,KAChB,CAAC,IAAA,IAAQ,SAAU,CAAA,IAAA,CAAA,KACnB,CAAC,OAAA,IAAW,SAAU,CAAA,OAAA,KAAY,OACnC,CAAA,EAAA;AACA,UAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA;AACtB,OACK,MAAA;AACL,QAAS,KAAA,IAAA,CAAA,GAAI,CAAG,EAAA,MAAA,GAAS,EAAC,EAAG,SAAS,SAAU,CAAA,MAAA,EAAQ,CAAI,GAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AACvE,UAAA,IACE,UAAU,CAAC,CAAA,CAAE,EAAO,KAAA,EAAA,IACnB,QAAQ,CAAC,SAAA,CAAU,CAAC,CAAA,CAAE,QACtB,OAAW,IAAA,SAAA,CAAU,CAAC,CAAA,CAAE,YAAY,OACrC,EAAA;AACA,YAAO,MAAA,CAAA,IAAA,CAAK,SAAU,CAAA,CAAC,CAAC,CAAA;AAAA;AAC1B;AAMF,QAAI,IAAA,MAAA,CAAO,MAAQ,EAAA,IAAA,CAAK,OAAQ,CAAA,GAAG,CAAI,GAAA,MAAA,CAAO,MAAW,KAAA,CAAA,GAAI,MAAO,CAAA,CAAC,CAAI,GAAA,MAAA;AAAA,aACpE,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA;AAG3B,MAAO,OAAA,IAAA;AAAA,KACT;AASA,IAAAA,aAAa,CAAA,SAAA,CAAU,kBAAqB,GAAA,SAAS,mBAAmB,KAAO,EAAA;AAC7E,MAAI,IAAA,GAAA;AAEJ,MAAA,IAAI,KAAO,EAAA;AACT,QAAM,GAAA,GAAA,MAAA,GAAS,SAAS,KAAQ,GAAA,KAAA;AAChC,QAAA,IAAI,KAAK,OAAQ,CAAA,GAAG,CAAG,EAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA,OACtC,MAAA;AACL,QAAK,IAAA,CAAA,OAAA,GAAU,IAAI,MAAO,EAAA;AAC1B,QAAA,IAAA,CAAK,YAAe,GAAA,CAAA;AAAA;AAGtB,MAAO,OAAA,IAAA;AAAA,KACT;AAKA,IAAAA,aAAa,CAAA,SAAA,CAAU,GAAMA,GAAAA,aAAAA,CAAa,SAAU,CAAA,cAAA;AACpD,IAAAA,aAAa,CAAA,SAAA,CAAU,WAAcA,GAAAA,aAAAA,CAAa,SAAU,CAAA,EAAA;AAK5D,IAAAA,cAAa,QAAW,GAAA,MAAA;AAKxB,IAAAA,cAAa,YAAeA,GAAAA,aAAAA;AAK5B,IAAI,IAAA,WAAA,KAAgB,OAAO,MAAQ,EAAA;AACjC,MAAA,MAAA,CAAO,OAAUA,GAAAA,aAAAA;AAAA;AACnB;AAAA,CAAA,CAAA;;;AC/UAD,gCAAA,EAAA;;;ACAAA,gCAAA,EAAA;AAuCa,IAAA,cAAA,GAAN,MAAM,eAAe,CAAA;AAAA,EAC1B,SAAyD,EAAC;AAAA,EAC1D,WAAc,GAAA;AACZ,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,IAAI,KAA6B,GAAA;AAC/B,IAAO,OAAA,IAAA,CAAK,OAAO,IAAK,EAAA;AAAA;AAC1B,EAEA,IAAI,IAAkH,EAAA;AACpH,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAO,OAAA,IAAA;AAAA;AAGT,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAG,EAAA;AACvB,MAAK,IAAA,CAAA,MAAA,CAAO,OAAO,CAAA,CAAE,OAAQ,CAAA,CAAC,OAAO,IAAK,CAAA,MAAA,CAAO,IAAK,CAAA,EAAE,CAAC,CAAA;AACzD,MAAO,OAAA,IAAA;AAAA;AAET,IAAK,IAAA,CAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAErB,IAAO,OAAA,IAAA;AAAA;AACT,EACA,OAAO,YAAY,KAAuD,EAAA;AACxE,IAAO,OAAAE,yBAAA;AAAA,MACL,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,MACpB;AAAA,QACE,CAAC,CAAM,KAAA;AACL,UAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACpB,YAAO,OAAA,MAAA;AAAA;AAET,UAAA,OAAO,CAAC,CAAE,CAAA,OAAA;AAAA,SACZ;AAAA,QACA,CAAC,CAAM,KAAA;AACL,UAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACpB,YAAO,OAAA,MAAA;AAAA;AAET,UAAA,OAAO,EAAE,QAAY,IAAA,IAAA;AAAA;AACvB,OACF;AAAA,MACA,CAAC,QAAQ,MAAM;AAAA,KACjB;AAAA;AACF,EAEA,OAAO,UAAW,CAAA,GAAA,EAAe,IAAyB,EAAA;AACxD,IAAM,MAAA,EAAE,UAAU,IAAM,EAAA,IAAA,EAAM,MAAM,QAAW,GAAA,IAAA,EAAM,GAAG,IAAA,EAAS,GAAA,IAAA;AAEjE,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAO,OAAA,GAAA;AAAA;AAGT,IAAA,IAAI,CAAC,IAAM,EAAA;AAET,MAAI,GAAA,CAAA,IAAA,CAAK,CAAG,EAAA,IAAI,CAAG,EAAA,IAAA,CAAK,OAAU,GAAA,CAAA,GAAA,EAAM,IAAK,CAAA,OAAO,CAAK,CAAA,GAAA,EAAE,CAAE,CAAA,CAAA;AAE7D,MAAO,OAAA,GAAA;AAAA;AAGT,IAAA,MAAM,gBAAgB,IAAK,CAAA,UAAA,CAAW,GAAG,CAAI,GAAA,IAAA,GAAOC,4BAAU,IAAI,CAAA;AAElE,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,GAAA,CAAI,IAAK,CAAA,CAAA,EAAG,aAAa,CAAA,EAAA,EAAK,IAAI,CAAA,EAAG,IAAK,CAAA,OAAA,GAAU,CAAM,GAAA,EAAA,IAAA,CAAK,OAAO,CAAA,CAAA,GAAK,EAAE,CAAE,CAAA,CAAA;AAAA,OAC1E,MAAA;AACL,QAAA,GAAA,CAAI,IAAK,CAAA,CAAA,EAAG,aAAa,CAAA,GAAA,EAAM,IAAI,CAAE,CAAA,CAAA;AAAA;AACvC,KACK,MAAA;AACL,MAAI,GAAA,CAAA,IAAA,CAAK,CAAG,EAAA,aAAa,CAAE,CAAA,CAAA;AAAA;AAG7B,IAAO,OAAA,GAAA;AAAA;AACT,EAEA,OAAO,SAAS,KAA+C,EAAA;AAC7D,IAAA,IAAI,OAAiB,EAAC;AACtB,IAAA,IAAI,OAAiB,EAAC;AAEtB,IAAA,MAAM,OAAU,GAAA,KAAA,CAAM,KAAM,CAAA,CAAC,IAAS,KAAA,IAAA,CAAK,OAAO,CAAA,GAAI,KAAM,CAAA,EAAA,CAAG,CAAC,CAAA,EAAG,OAAU,GAAA,IAAA;AAC7E,IAAA,MAAM,WAAW,KAAM,CAAA,KAAA,CAAM,CAAC,IAAS,KAAA,IAAA,CAAK,QAAQ,CAAK,IAAA,IAAA;AAEzD,IAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACtB,MAAO,IAAA,GAAA,eAAA,CAAe,WAAW,IAAM,EAAA,EAAE,GAAG,IAAM,EAAA,IAAA,EAAM,QAAW,CAAA;AACnE,MAAA,IAAI,MAAM,IAAK,CAAA,CAACC,KAASA,KAAAA,KAAAA,CAAK,IAAI,CAAG,EAAA;AACnC,QAAO,IAAA,GAAA,eAAA,CAAe,UAAW,CAAA,IAAA,EAAM,IAAI,CAAA;AAAA;AAC7C,KACD,CAAA;AAED,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,CAAA,EAAA,EAAK,IAAK,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,MAC1B,IAAA,EAAM,KAAK,MAAS,GAAA,CAAA,EAAA,EAAK,KAAK,IAAK,CAAA,IAAI,CAAC,CAAO,EAAA,CAAA,GAAA,MAAA;AAAA,MAC/C,OAAA;AAAA,MACA;AAAA,KACF;AAAA;AACF,EAEA,OAAO,SAAS,KAA4D,EAAA;AAC1E,IAAM,MAAA,UAAA,GAAa,eAAe,CAAA,WAAA,CAAY,KAAK,CAAA;AAEnD,IAAA,OAAO,UACJ,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,IAAS,KAAA;AACrB,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAG,EAAA;AACvB,QAAI,IAAA,IAAA,CAAK,UAAU,CAAG,EAAA;AACpB,UAAO,OAAA,GAAA;AAAA;AAET,QAAM,MAAA,QAAA,GAAW,eAAe,CAAA,WAAA,CAAY,IAAI,CAAA;AAChD,QAAM,MAAA,UAAA,GAAa,eAAe,CAAA,QAAA,CAAS,QAAQ,CAAA;AAEnD,QAAO,OAAA,eAAA,CAAe,UAAW,CAAA,GAAA,EAAK,UAAU,CAAA;AAAA;AAGlD,MAAO,OAAA,eAAA,CAAe,UAAW,CAAA,GAAA,EAAK,IAAI,CAAA;AAAA,KACzC,EAAA,EAAc,CAAA,CAChB,KAAK,IAAI,CAAA;AAAA;AACd,EAEA,QAA8B,GAAA;AAC5B,IAAA,MAAM,QAAQ,eAAe,CAAA,WAAA,CAAY,IAAK,CAAA,MAAM,EAAE,IAAK,EAAA;AAE3D,IAAO,OAAA,eAAA,CAAe,SAAS,KAAK,CAAA;AAAA;AACtC,EAEA,QAAmB,GAAA;AACjB,IAAA,MAAM,KAAQ,GAAA,eAAA,CAAe,WAAY,CAAA,IAAA,CAAK,MAAM,CAAA;AAEpD,IAAO,OAAA,eAAA,CAAe,SAAS,KAAK,CAAA;AAAA;AAExC;;;ACrKAJ,gCAAA,EAAA;AAEO,SAAS,UAAa,MAAkD,EAAA;AAC7E,EAAA,OAAO,CAAC,CAAC,MAAU,IAAA,OAAQ,QAA6B,IAAS,KAAA,UAAA;AACnE;AAEO,SAAS,yBAAsC,MAA4E,EAAA;AAChI,EAAA,OAAO,OAAO,MAAW,KAAA,WAAA;AAC3B;AAEO,SAAS,wBAA2B,MAAwG,EAAA;AACjJ,EAAA,OAAO,OAAO,MAAW,KAAA,UAAA;AAC3B;;;ACZAA,gCAAA,EAAA;AAAO,SAAS,cAAA,CAAgF,QAAkB,EAAA,IAAA,GAA0B,MAAmB,EAAA;AAC7J,EAAA,IAAI,CAAC,IAAQ,IAAA,CAAC,OAAO,IAAK,CAAA,IAAI,EAAE,MAAQ,EAAA;AACtC,IAAO,OAAA,QAAA,CAAS,OAAQ,CAAA,YAAA,EAAc,EAAE,CAAA;AAAA;AAG1C,EAAM,MAAA,OAAA,GAAU,QAAS,CAAA,KAAA,CAAM,YAAY,CAAA;AAE3C,EAAA,OACE,OAAS,EAAA,MAAA,CAAO,CAAC,IAAA,EAAM,IAAS,KAAA;AAC9B,IAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,CAAM,OAAO,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,CAAC,CAAA,EAAG,IAAK,EAAA;AAC3D,IAAA,IAAI,UAAU,MAAW,EAAA;AACvB,MAAO,OAAA,IAAA;AAAA;AAET,IAAM,MAAA,KAAA,GAAQ,KAAK,KAAK,CAAA;AAExB,IAAA,IAAI,UAAU,MAAW,EAAA;AACvB,MAAO,OAAA,IAAA;AAAA;AAGT,IAAO,OAAA,IAAA,CACJ,OAAQ,CAAA,IAAA,EAAM,MAAM;AACnB,MAAI,IAAA,OAAO,UAAU,SAAW,EAAA;AAC9B,QAAA,OAAO,CAAG,EAAA,KAAA,CAAM,QAAS,EAAC,CAAM,CAAA,IAAA,OAAA;AAAA;AAGlC,MAAA,OAAQ,KAAoB,IAAA,EAAA;AAAA,KAC7B,EACA,IAAK,EAAA;AAAA,GACV,EAAG,QAAQ,CAAK,IAAA,EAAA;AAEpB;;;AC9BAA,gCAAA,EAAA;AAAA,eAAsB,QAAQ,EAA8B,EAAA;AAC1D,EAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC9B,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,OACX,EAAE,CAAA;AAAA,GACN,CAAA;AACH;;;ACNAA,gCAAA,EAAA;AAAO,SAAS,aAAA,CAAc,cAAsB,IAAsC,EAAA;AACxF,EAAI,IAAA,IAAA,GAAO,IAAK,CAAA,YAAY,CAAK,IAAA,CAAA;AACjC,EAAA,IAAI,IAAM,EAAA;AACR,IAAK,IAAA,CAAA,YAAY,IAAI,EAAE,IAAA;AACvB,IAAgB,YAAA,IAAA,IAAA;AAAA;AAElB,EAAA,IAAA,CAAK,YAAY,CAAI,GAAA,CAAA;AACrB,EAAO,OAAA,YAAA;AACT;AAEO,SAAS,aAAA,CAAc,cAAsB,IAAsC,EAAA;AACxF,EAAI,IAAA,IAAA,GAAO,IAAK,CAAA,YAAY,CAAK,IAAA,CAAA;AACjC,EAAA,IAAI,IAAM,EAAA;AACR,IAAK,IAAA,CAAA,YAAY,IAAI,EAAE,IAAA;AAEvB,IAAO,OAAA,YAAA;AAAA;AAET,EAAA,IAAA,CAAK,YAAY,CAAI,GAAA,CAAA;AACrB,EAAO,OAAA,YAAA;AACT;;;ACnBAA,gCAAA,EAAA;AAiBO,IAAM,UAAN,MAAc;AAAA,EACnB,IAAA;AAAA,EACA,QAAA;AAAA,EAEA,WAAYK,CAAAA,KAAAA,EAAc,OAAmB,GAAA,EAAI,EAAA;AAC/C,IAAA,IAAA,CAAK,IAAOA,GAAAA,KAAAA;AACZ,IAAA,IAAA,CAAK,QAAW,GAAA,OAAA;AAEhB,IAAO,OAAA,IAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,GAAc,GAAA;AAChB,IAAA,OAAO,KAAK,SAAU,EAAA;AAAA;AACxB,EACA,IAAI,KAAiB,GAAA;AACnB,IAAI,IAAA;AACF,MAAA,MAAM,GAAM,GAAA,IAAI,GAAI,CAAA,IAAA,CAAK,IAAI,CAAA;AAC7B,MAAA,IAAI,KAAK,IAAM,EAAA;AACb,QAAO,OAAA,IAAA;AAAA;AACT,aACO,MAAQ,EAAA;AACf,MAAO,OAAA,KAAA;AAAA;AAET,IAAO,OAAA,KAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,QAAmB,GAAA;AACrB,IAAA,OAAO,KAAK,gBAAiB,EAAA;AAAA;AAC/B,EACA,IAAI,MAA6B,GAAA;AAC/B,IAAA,OAAO,KAAK,QAAS,EAAA;AAAA;AACvB,EACA,IAAI,MAA6C,GAAA;AAC/C,IAAA,OAAO,KAAK,SAAU,EAAA;AAAA;AACxB,EAEA,QAAA,CAAS,EAAE,IAAO,GAAA,MAAA,EAAQ,UAAU,SAAU,EAAA,GAAmB,EAAwB,EAAA;AACvF,IAAA,MAAM,MAAS,GAAA;AAAA,MACb,GAAA,EAAK,IAAS,KAAA,MAAA,GAAS,IAAK,CAAA,SAAA,KAAc,IAAK,CAAA,gBAAA,CAAiB,EAAE,QAAA,EAAU,CAAA;AAAA,MAC5E,MAAA,EAAQ,KAAK,SAAU;AAAA,KACzB;AAEA,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,IAAI,SAAS,UAAY,EAAA;AACvB,QAAO,OAAA,IAAA,CAAK,SAAU,CAAA,MAAM,CAAE,CAAA,UAAA,CAAW,KAAK,EAAE,CAAA,CAAE,UAAW,CAAA,CAAA,CAAA,CAAA,EAAK,EAAE,CAAA;AAAA;AAGtE,MAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,QAAA,OAAO,WAAW,MAAO,CAAA,GAAG,CAAc,WAAA,EAAA,IAAA,CAAK,UAAU,MAAO,CAAA,MAAM,CAAE,CAAA,UAAA,CAAW,KAAK,EAAE,CAAA,CAAE,UAAW,CAAA,CAAA,CAAA,CAAA,EAAK,EAAE,CAAC,CAAA,EAAA,CAAA;AAAA;AAGjH,MAAO,OAAA,CAAA,QAAA,EAAW,OAAO,GAAG,CAAA,GAAA,CAAA;AAAA;AAG9B,IAAO,OAAA,MAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iBAAiB,EAAE,MAAA,GAAS,IAAI,QAAS,EAAA,GAAmE,EAAY,EAAA;AACtH,IAAA,MAAM,KAAQ,GAAA,YAAA;AACd,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA;AACnC,IAAA,IAAI,OAAU,GAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAE5C,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,OAAA,GAAU,KAAM,CAAA,MAAA,CAAO,CAAC,IAAA,EAAMA,KAAS,KAAA;AACrC,QAAM,MAAA,mBAAA,GAAsBA,MAAK,UAAW,CAAA,GAAA,EAAK,EAAE,CAAE,CAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAEvE,QAAA,IAAI,QAAQC,gCAAe,CAAA,mBAAmB,CAAI,GAAA,mBAAA,GAAsBH,4BAAU,mBAAmB,CAAA;AAErG,QAAI,IAAA,IAAA,CAAK,QAAS,CAAA,MAAA,KAAW,WAAa,EAAA;AACxC,UAAA,KAAA,GAAQA,4BAAU,KAAK,CAAA;AAAA;AAGzB,QAAO,OAAA,IAAA,CAAK,QAAQE,KAAM,EAAA,CAAA,GAAA,EAAM,WAAW,QAAS,CAAA,KAAK,CAAI,GAAA,KAAK,CAAG,CAAA,CAAA,CAAA;AAAA,OACvE,EAAG,KAAK,IAAI,CAAA;AAAA;AAGd,IAAO,OAAA,CAAA,EAAA,EAAK,MAAM,CAAA,EAAG,OAAO,CAAA,EAAA,CAAA;AAAA;AAC9B,EAEA,UAAU,QAA8E,EAAA;AACtF,IAAA,MAAM,KAAQ,GAAA,YAAA;AACd,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA;AAEnC,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAO,OAAA,MAAA;AAAA;AAGT,IAAA,MAAM,SAAiC,EAAC;AACxC,IAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACtB,MAAA,IAAA,GAAO,KAAK,UAAW,CAAA,GAAA,EAAK,EAAE,CAAE,CAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAElD,MAAA,IAAI,QAAQC,gCAAe,CAAA,IAAI,CAAI,GAAA,IAAA,GAAOH,4BAAU,IAAI,CAAA;AAExD,MAAI,IAAA,IAAA,CAAK,QAAS,CAAA,MAAA,KAAW,WAAa,EAAA;AACxC,QAAA,KAAA,GAAQA,4BAAU,KAAK,CAAA;AAAA;AAGzB,MAAA,MAAM,GAAM,GAAA,QAAA,GAAW,QAAS,CAAA,KAAK,CAAI,GAAA,KAAA;AAEzC,MAAA,MAAA,CAAO,GAAG,CAAI,GAAA,GAAA;AAAA,KAChB,EAAG,KAAK,IAAI,CAAA;AAEZ,IAAO,OAAA,MAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA,EAMA,SAAoB,GAAA;AAClB,IAAO,OAAA,IAAA,CAAK,KAAK,UAAW,CAAA,GAAA,EAAK,GAAG,CAAE,CAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAAA;AAE5D;;;ACjJAH,gCAAA,EAAA;;;ACAAA,gCAAA,EAAA;;;ACAAA,gCAAA,EAAA;;;ACAAA,gCAAA,EAAA;AAAA,IAAyB,YAAA,GAAAO,yBAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,CAAA;;;ACAzBP,gCAAA,EAAA;AAAO,IAAM,YAAA,GAAN,cAA2B,KAAM,CAAA;AAAA,EACvC,YAAY,OAAS,EAAA;AACpB,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,cAAA;AAAA;AAEd,CAAA;AAMO,IAAM,UAAA,GAAN,cAAyB,KAAM,CAAA;AAAA,EACrC,YAAY,OAAS,EAAA;AACpB,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,IAAO,GAAA,YAAA;AACZ,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AAEjB,CAAA;AAKA,IAAM,eAAA,GAAkB,CAAgB,YAAA,KAAA,UAAA,CAAW,YAAiB,KAAA,MAAA,GACjE,IAAI,UAAA,CAAW,YAAY,CAAA,GAC3B,IAAI,YAAA,CAAa,YAAY,CAAA;AAKhC,IAAM,mBAAmB,CAAU,MAAA,KAAA;AAClC,EAAA,MAAM,SAAS,MAAO,CAAA,MAAA,KAAW,SAC9B,eAAgB,CAAA,6BAA6B,IAC7C,MAAO,CAAA,MAAA;AAEV,EAAA,OAAO,MAAkB,YAAA,KAAA,GAAQ,MAAS,GAAA,eAAA,CAAgB,MAAM,CAAA;AACjE,CAAA;AAEe,SAAR,QAAA,CAA0B,SAAS,OAAS,EAAA;AAClD,EAAM,MAAA;AAAA,IACL,YAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA,GAAe,EAAC,UAAA,EAAY,YAAY;AAAA,GACrC,GAAA,OAAA;AAEJ,EAAI,IAAA,KAAA;AAEJ,EAAA,MAAM,cAAiB,GAAA,IAAI,OAAQ,CAAA,CAAC,SAAS,MAAW,KAAA;AACvD,IAAA,IAAI,OAAO,YAAiB,KAAA,QAAA,IAAY,KAAK,IAAK,CAAA,YAAY,MAAM,CAAG,EAAA;AACtE,MAAA,MAAM,IAAI,SAAA,CAAU,CAA4D,yDAAA,EAAA,YAAY,CAAI,EAAA,CAAA,CAAA;AAAA;AAGjG,IAAA,IAAI,QAAQ,MAAQ,EAAA;AACnB,MAAM,MAAA,EAAC,QAAU,GAAA,OAAA;AACjB,MAAA,IAAI,OAAO,OAAS,EAAA;AACnB,QAAO,MAAA,CAAA,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA;AAGhC,MAAA,MAAM,eAAe,MAAM;AAC1B,QAAO,MAAA,CAAA,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,OAChC;AAEA,MAAA,MAAA,CAAO,iBAAiB,OAAS,EAAA,YAAA,EAAc,EAAC,IAAA,EAAM,MAAK,CAAA;AAE3D,MAAA,OAAA,CAAQ,QAAQ,MAAM;AACrB,QAAO,MAAA,CAAA,mBAAA,CAAoB,SAAS,YAAY,CAAA;AAAA,OAChD,CAAA;AAAA;AAGF,IAAI,IAAA,YAAA,KAAiB,OAAO,iBAAmB,EAAA;AAC9C,MAAQ,OAAA,CAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AAC5B,MAAA;AAAA;AAID,IAAM,MAAA,YAAA,GAAe,IAAI,YAAa,EAAA;AAEtC,IAAA,KAAA,GAAQ,YAAa,CAAA,UAAA,CAAW,IAAK,CAAA,MAAA,EAAW,MAAM;AACrD,MAAA,IAAI,QAAU,EAAA;AACb,QAAI,IAAA;AACH,UAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,iBACV,KAAO,EAAA;AACf,UAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AAGb,QAAA;AAAA;AAGD,MAAI,IAAA,OAAO,OAAQ,CAAA,MAAA,KAAW,UAAY,EAAA;AACzC,QAAA,OAAA,CAAQ,MAAO,EAAA;AAAA;AAGhB,MAAA,IAAI,YAAY,KAAO,EAAA;AACtB,QAAQ,OAAA,EAAA;AAAA,OACT,MAAA,IAAW,mBAAmB,KAAO,EAAA;AACpC,QAAA,MAAA,CAAO,OAAO,CAAA;AAAA,OACR,MAAA;AACN,QAAa,YAAA,CAAA,OAAA,GAAU,OAAW,IAAA,CAAA,wBAAA,EAA2B,YAAY,CAAA,aAAA,CAAA;AACzE,QAAA,MAAA,CAAO,YAAY,CAAA;AAAA;AACpB,OACE,YAAY,CAAA;AAEf,IAAA,CAAC,YAAY;AACZ,MAAI,IAAA;AACH,QAAA,OAAA,CAAQ,MAAM,OAAO,CAAA;AAAA,eACb,KAAO,EAAA;AACf,QAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AACb,KACE,GAAA;AAAA,GACH,CAAA;AAED,EAAM,MAAA,iBAAA,GAAoB,cAAe,CAAA,OAAA,CAAQ,MAAM;AACtD,IAAA,iBAAA,CAAkB,KAAM,EAAA;AAAA,GACxB,CAAA;AAED,EAAA,iBAAA,CAAkB,QAAQ,MAAM;AAC/B,IAAa,YAAA,CAAA,YAAA,CAAa,IAAK,CAAA,MAAA,EAAW,KAAK,CAAA;AAC/C,IAAQ,KAAA,GAAA,MAAA;AAAA,GACT;AAEA,EAAO,OAAA,iBAAA;AACR;;;ACzHAA,gCAAA,EAAA;;;ACAAA,gCAAA,EAAA;AAEe,SAAR,UAAA,CAA4B,KAAO,EAAA,KAAA,EAAO,UAAY,EAAA;AACzD,EAAA,IAAI,KAAQ,GAAA,CAAA;AACZ,EAAA,IAAI,QAAQ,KAAM,CAAA,MAAA;AAClB,EAAA,OAAO,QAAQ,CAAG,EAAA;AACd,IAAA,MAAM,IAAO,GAAA,IAAA,CAAK,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA;AACjC,IAAA,IAAI,KAAK,KAAQ,GAAA,IAAA;AACjB,IAAA,IAAI,WAAW,KAAM,CAAA,EAAE,CAAG,EAAA,KAAK,KAAK,CAAG,EAAA;AACnC,MAAA,KAAA,GAAQ,EAAE,EAAA;AACV,MAAA,KAAA,IAAS,IAAO,GAAA,CAAA;AAAA,KAEf,MAAA;AACD,MAAQ,KAAA,GAAA,IAAA;AAAA;AACZ;AAEJ,EAAO,OAAA,KAAA;AACX;;;ADhBA,IAAqB,gBAArB,MAAmC;AAAA,EAC/B,SAAS,EAAC;AAAA,EACV,OAAA,CAAQ,KAAK,OAAS,EAAA;AAClB,IAAU,OAAA,GAAA;AAAA,MACN,QAAU,EAAA,CAAA;AAAA,MACV,GAAG;AAAA,KACP;AACA,IAAA,MAAM,OAAU,GAAA;AAAA,MACZ,UAAU,OAAQ,CAAA,QAAA;AAAA,MAClB,IAAI,OAAQ,CAAA,EAAA;AAAA,MACZ;AAAA,KACJ;AACA,IAAI,IAAA,IAAA,CAAK,IAAS,KAAA,CAAA,IAAK,IAAK,CAAA,MAAA,CAAO,IAAK,CAAA,IAAA,GAAO,CAAC,CAAA,CAAE,QAAY,IAAA,OAAA,CAAQ,QAAU,EAAA;AAC5E,MAAK,IAAA,CAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AACxB,MAAA;AAAA;AAEJ,IAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,OAAA,EAAS,CAAC,CAAA,EAAG,CAAM,KAAA,CAAA,CAAE,QAAW,GAAA,CAAA,CAAE,QAAQ,CAAA;AAChF,IAAA,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,KAAO,EAAA,CAAA,EAAG,OAAO,CAAA;AAAA;AACxC,EACA,WAAA,CAAY,IAAI,QAAU,EAAA;AACtB,IAAM,MAAA,KAAA,GAAQ,KAAK,MAAO,CAAA,SAAA,CAAU,CAAC,OAAY,KAAA,OAAA,CAAQ,OAAO,EAAE,CAAA;AAClE,IAAA,IAAI,UAAU,EAAI,EAAA;AACd,MAAA,MAAM,IAAI,cAAA,CAAe,CAAoC,iCAAA,EAAA,EAAE,CAAwB,sBAAA,CAAA,CAAA;AAAA;AAE3F,IAAA,MAAM,CAAC,IAAI,CAAA,GAAI,KAAK,MAAO,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAC1C,IAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,GAAA,EAAK,EAAE,QAAA,EAAU,IAAI,CAAA;AAAA;AAC3C,EACA,OAAU,GAAA;AACN,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,MAAA,CAAO,KAAM,EAAA;AAC/B,IAAA,OAAO,IAAM,EAAA,GAAA;AAAA;AACjB,EACA,OAAO,OAAS,EAAA;AACZ,IAAA,OAAO,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,CAAC,YAAY,OAAQ,CAAA,QAAA,KAAa,OAAQ,CAAA,QAAQ,CAAE,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,QAAQ,GAAG,CAAA;AAAA;AAC9G,EACA,IAAI,IAAO,GAAA;AACP,IAAA,OAAO,KAAK,MAAO,CAAA,MAAA;AAAA;AAE3B,CAAA;;;AHhCA,IAAqB,MAAA,GAArB,cAAoC,YAAA,CAAAC,OAAa,CAAA;AAAA,EAC7C,0BAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAiB,GAAA,CAAA;AAAA,EACjB,YAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAe,GAAA,CAAA;AAAA,EACf,WAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAW,GAAA,CAAA;AAAA;AAAA,EAEX,YAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA;AAAA,EAEA,WAAc,GAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMd,OAAA;AAAA;AAAA,EAEA,YAAY,OAAS,EAAA;AACjB,IAAM,KAAA,EAAA;AAEN,IAAU,OAAA,GAAA;AAAA,MACN,yBAA2B,EAAA,KAAA;AAAA,MAC3B,aAAa,MAAO,CAAA,iBAAA;AAAA,MACpB,QAAU,EAAA,CAAA;AAAA,MACV,aAAa,MAAO,CAAA,iBAAA;AAAA,MACpB,SAAW,EAAA,IAAA;AAAA,MACX,UAAY,EAAA,aAAA;AAAA,MACZ,GAAG;AAAA,KACP;AACA,IAAA,IAAI,EAAE,OAAO,OAAA,CAAQ,gBAAgB,QAAY,IAAA,OAAA,CAAQ,eAAe,CAAI,CAAA,EAAA;AACxE,MAAA,MAAM,IAAI,SAAA,CAAU,CAAgE,6DAAA,EAAA,OAAA,CAAQ,WAAa,EAAA,QAAA,EAAc,IAAA,EAAE,CAAO,IAAA,EAAA,OAAO,OAAQ,CAAA,WAAW,CAAG,CAAA,CAAA,CAAA;AAAA;AAEjK,IAAI,IAAA,OAAA,CAAQ,QAAa,KAAA,MAAA,IAAa,EAAE,MAAA,CAAO,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,IAAK,OAAQ,CAAA,QAAA,IAAY,CAAI,CAAA,EAAA;AACjG,MAAA,MAAM,IAAI,SAAA,CAAU,CAA2D,wDAAA,EAAA,OAAA,CAAQ,QAAU,EAAA,QAAA,EAAc,IAAA,EAAE,CAAO,IAAA,EAAA,OAAO,OAAQ,CAAA,QAAQ,CAAG,CAAA,CAAA,CAAA;AAAA;AAEtJ,IAAA,IAAA,CAAK,6BAA6B,OAAQ,CAAA,yBAAA;AAC1C,IAAA,IAAA,CAAK,qBAAqB,OAAQ,CAAA,WAAA,KAAgB,MAAO,CAAA,iBAAA,IAAqB,QAAQ,QAAa,KAAA,CAAA;AACnG,IAAA,IAAA,CAAK,eAAe,OAAQ,CAAA,WAAA;AAC5B,IAAA,IAAA,CAAK,YAAY,OAAQ,CAAA,QAAA;AACzB,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,OAAA,CAAQ,UAAW,EAAA;AACrC,IAAA,IAAA,CAAK,cAAc,OAAQ,CAAA,UAAA;AAC3B,IAAA,IAAA,CAAK,cAAc,OAAQ,CAAA,WAAA;AAC3B,IAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,OAAA;AACvB,IAAK,IAAA,CAAA,eAAA,GAAkB,QAAQ,cAAmB,KAAA,IAAA;AAClD,IAAK,IAAA,CAAA,SAAA,GAAY,QAAQ,SAAc,KAAA,KAAA;AAAA;AAC3C,EACA,IAAI,yBAA4B,GAAA;AAC5B,IAAA,OAAO,IAAK,CAAA,kBAAA,IAAsB,IAAK,CAAA,cAAA,GAAiB,IAAK,CAAA,YAAA;AAAA;AACjE,EACA,IAAI,2BAA8B,GAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,WAAW,IAAK,CAAA,YAAA;AAAA;AAChC,EACA,KAAQ,GAAA;AACJ,IAAK,IAAA,CAAA,QAAA,EAAA;AACL,IAAA,IAAA,CAAK,kBAAmB,EAAA;AACxB,IAAA,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA;AACpB,EACA,iBAAoB,GAAA;AAChB,IAAA,IAAA,CAAK,WAAY,EAAA;AACjB,IAAA,IAAA,CAAK,2BAA4B,EAAA;AACjC,IAAA,IAAA,CAAK,UAAa,GAAA,MAAA;AAAA;AACtB,EACA,IAAI,iBAAoB,GAAA;AACpB,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AACrB,IAAI,IAAA,IAAA,CAAK,gBAAgB,MAAW,EAAA;AAChC,MAAM,MAAA,KAAA,GAAQ,KAAK,YAAe,GAAA,GAAA;AAClC,MAAA,IAAI,QAAQ,CAAG,EAAA;AAGX,QAAA,IAAA,CAAK,cAAkB,GAAA,IAAA,CAAK,0BAA8B,GAAA,IAAA,CAAK,QAAW,GAAA,CAAA;AAAA,OAEzE,MAAA;AAED,QAAI,IAAA,IAAA,CAAK,eAAe,MAAW,EAAA;AAC/B,UAAK,IAAA,CAAA,UAAA,GAAa,WAAW,MAAM;AAC/B,YAAA,IAAA,CAAK,iBAAkB,EAAA;AAAA,aACxB,KAAK,CAAA;AAAA;AAEZ,QAAO,OAAA,IAAA;AAAA;AACX;AAEJ,IAAO,OAAA,KAAA;AAAA;AACX,EACA,kBAAqB,GAAA;AACjB,IAAI,IAAA,IAAA,CAAK,MAAO,CAAA,IAAA,KAAS,CAAG,EAAA;AAGxB,MAAA,IAAI,KAAK,WAAa,EAAA;AAClB,QAAA,aAAA,CAAc,KAAK,WAAW,CAAA;AAAA;AAElC,MAAA,IAAA,CAAK,WAAc,GAAA,MAAA;AACnB,MAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AACjB,MAAI,IAAA,IAAA,CAAK,aAAa,CAAG,EAAA;AACrB,QAAA,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA;AAEpB,MAAO,OAAA,KAAA;AAAA;AAEX,IAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACjB,MAAM,MAAA,qBAAA,GAAwB,CAAC,IAAK,CAAA,iBAAA;AACpC,MAAI,IAAA,IAAA,CAAK,yBAA6B,IAAA,IAAA,CAAK,2BAA6B,EAAA;AACpE,QAAM,MAAA,GAAA,GAAM,IAAK,CAAA,MAAA,CAAO,OAAQ,EAAA;AAChC,QAAA,IAAI,CAAC,GAAK,EAAA;AACN,UAAO,OAAA,KAAA;AAAA;AAEX,QAAA,IAAA,CAAK,KAAK,QAAQ,CAAA;AAClB,QAAI,GAAA,EAAA;AACJ,QAAA,IAAI,qBAAuB,EAAA;AACvB,UAAA,IAAA,CAAK,2BAA4B,EAAA;AAAA;AAErC,QAAO,OAAA,IAAA;AAAA;AACX;AAEJ,IAAO,OAAA,KAAA;AAAA;AACX,EACA,2BAA8B,GAAA;AAC1B,IAAA,IAAI,IAAK,CAAA,kBAAA,IAAsB,IAAK,CAAA,WAAA,KAAgB,MAAW,EAAA;AAC3D,MAAA;AAAA;AAEJ,IAAK,IAAA,CAAA,WAAA,GAAc,YAAY,MAAM;AACjC,MAAA,IAAA,CAAK,WAAY,EAAA;AAAA,KACrB,EAAG,KAAK,SAAS,CAAA;AACjB,IAAA,IAAA,CAAK,YAAe,GAAA,IAAA,CAAK,GAAI,EAAA,GAAI,IAAK,CAAA,SAAA;AAAA;AAC1C,EACA,WAAc,GAAA;AACV,IAAA,IAAI,KAAK,cAAmB,KAAA,CAAA,IAAK,KAAK,QAAa,KAAA,CAAA,IAAK,KAAK,WAAa,EAAA;AACtE,MAAA,aAAA,CAAc,KAAK,WAAW,CAAA;AAC9B,MAAA,IAAA,CAAK,WAAc,GAAA,MAAA;AAAA;AAEvB,IAAA,IAAA,CAAK,cAAiB,GAAA,IAAA,CAAK,0BAA6B,GAAA,IAAA,CAAK,QAAW,GAAA,CAAA;AACxE,IAAA,IAAA,CAAK,aAAc,EAAA;AAAA;AACvB;AAAA;AAAA;AAAA,EAIA,aAAgB,GAAA;AAEZ,IAAO,OAAA,IAAA,CAAK,oBAAsB,EAAA;AAAA;AAAE;AACxC,EACA,IAAI,WAAc,GAAA;AACd,IAAA,OAAO,IAAK,CAAA,YAAA;AAAA;AAChB,EACA,IAAI,YAAY,cAAgB,EAAA;AAC5B,IAAA,IAAI,EAAE,OAAO,cAAmB,KAAA,QAAA,IAAY,kBAAkB,CAAI,CAAA,EAAA;AAC9D,MAAA,MAAM,IAAI,SAAU,CAAA,CAAA,6DAAA,EAAgE,cAAc,CAAO,IAAA,EAAA,OAAO,cAAc,CAAG,CAAA,CAAA,CAAA;AAAA;AAErI,IAAA,IAAA,CAAK,YAAe,GAAA,cAAA;AACpB,IAAA,IAAA,CAAK,aAAc,EAAA;AAAA;AACvB,EACA,MAAM,cAAc,MAAQ,EAAA;AACxB,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,QAAA,EAAU,MAAW,KAAA;AACrC,MAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACnC,QAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,OACrB,EAAA,EAAE,IAAM,EAAA,IAAA,EAAM,CAAA;AAAA,KACpB,CAAA;AAAA;AACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqCA,WAAA,CAAY,IAAI,QAAU,EAAA;AACtB,IAAK,IAAA,CAAA,MAAA,CAAO,WAAY,CAAA,EAAA,EAAI,QAAQ,CAAA;AAAA;AACxC,EACA,MAAM,GAAA,CAAI,SAAW,EAAA,OAAA,GAAU,EAAI,EAAA;AAE/B,IAAQ,OAAA,CAAA,EAAA,KAAA,CAAQ,IAAK,CAAA,WAAA,EAAA,EAAe,QAAS,EAAA;AAC7C,IAAU,OAAA,GAAA;AAAA,MACN,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,gBAAgB,IAAK,CAAA,eAAA;AAAA,MACrB,GAAG;AAAA,KACP;AACA,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACpC,MAAK,IAAA,CAAA,MAAA,CAAO,QAAQ,YAAY;AAC5B,QAAK,IAAA,CAAA,QAAA,EAAA;AACL,QAAK,IAAA,CAAA,cAAA,EAAA;AACL,QAAI,IAAA;AACA,UAAA,OAAA,CAAQ,QAAQ,cAAe,EAAA;AAC/B,UAAA,IAAI,YAAY,SAAU,CAAA,EAAE,MAAQ,EAAA,OAAA,CAAQ,QAAQ,CAAA;AACpD,UAAA,IAAI,QAAQ,OAAS,EAAA;AACjB,YAAY,SAAA,GAAA,QAAA,CAAS,QAAQ,OAAQ,CAAA,SAAS,GAAG,EAAE,YAAA,EAAc,OAAQ,CAAA,OAAA,EAAS,CAAA;AAAA;AAEtF,UAAA,IAAI,QAAQ,MAAQ,EAAA;AAChB,YAAY,SAAA,GAAA,OAAA,CAAQ,KAAK,CAAC,SAAA,EAAW,KAAK,aAAc,CAAA,OAAA,CAAQ,MAAM,CAAC,CAAC,CAAA;AAAA;AAE5E,UAAA,MAAM,SAAS,MAAM,SAAA;AACrB,UAAA,OAAA,CAAQ,MAAM,CAAA;AACd,UAAK,IAAA,CAAA,IAAA,CAAK,aAAa,MAAM,CAAA;AAAA,iBAE1B,KAAO,EAAA;AACV,UAAA,IAAI,KAAiB,YAAA,YAAA,IAAgB,CAAC,OAAA,CAAQ,cAAgB,EAAA;AAC1D,YAAQ,OAAA,EAAA;AACR,YAAA;AAAA;AAEJ,UAAA,MAAA,CAAO,KAAK,CAAA;AACZ,UAAK,IAAA,CAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,SAE5B,SAAA;AACI,UAAA,IAAA,CAAK,KAAM,EAAA;AAAA;AACf,SACD,OAAO,CAAA;AACV,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACf,MAAA,IAAA,CAAK,kBAAmB,EAAA;AAAA,KAC3B,CAAA;AAAA;AACL,EACA,MAAM,MAAO,CAAA,SAAA,EAAW,OAAS,EAAA;AAC7B,IAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,SAAA,CAAU,GAAI,CAAA,OAAO,SAAc,KAAA,IAAA,CAAK,GAAI,CAAA,SAAA,EAAW,OAAO,CAAC,CAAC,CAAA;AAAA;AACvF;AAAA;AAAA;AAAA,EAIA,KAAQ,GAAA;AACJ,IAAI,IAAA,CAAC,KAAK,SAAW,EAAA;AACjB,MAAO,OAAA,IAAA;AAAA;AAEX,IAAA,IAAA,CAAK,SAAY,GAAA,KAAA;AACjB,IAAA,IAAA,CAAK,aAAc,EAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACX;AAAA;AAAA;AAAA,EAIA,KAAQ,GAAA;AACJ,IAAA,IAAA,CAAK,SAAY,GAAA,IAAA;AAAA;AACrB;AAAA;AAAA;AAAA,EAIA,KAAQ,GAAA;AACJ,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,IAAA,CAAK,WAAY,EAAA;AAAA;AACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAU,GAAA;AAEZ,IAAI,IAAA,IAAA,CAAK,MAAO,CAAA,IAAA,KAAS,CAAG,EAAA;AACxB,MAAA;AAAA;AAEJ,IAAM,MAAA,IAAA,CAAK,SAAS,OAAO,CAAA;AAAA;AAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eAAe,KAAO,EAAA;AAExB,IAAI,IAAA,IAAA,CAAK,MAAO,CAAA,IAAA,GAAO,KAAO,EAAA;AAC1B,MAAA;AAAA;AAEJ,IAAA,MAAM,KAAK,QAAS,CAAA,MAAA,EAAQ,MAAM,IAAK,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA;AAC9D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,MAAS,GAAA;AAEX,IAAA,IAAI,KAAK,QAAa,KAAA,CAAA,IAAK,IAAK,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAC/C,MAAA;AAAA;AAEJ,IAAM,MAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AAAA;AAC9B,EACA,MAAM,QAAS,CAAA,KAAA,EAAO,MAAQ,EAAA;AAC1B,IAAO,OAAA,IAAI,QAAQ,CAAW,OAAA,KAAA;AAC1B,MAAA,MAAM,WAAW,MAAM;AACnB,QAAI,IAAA,MAAA,IAAU,CAAC,MAAA,EAAU,EAAA;AACrB,UAAA;AAAA;AAEJ,QAAK,IAAA,CAAA,GAAA,CAAI,OAAO,QAAQ,CAAA;AACxB,QAAQ,OAAA,EAAA;AAAA,OACZ;AACA,MAAK,IAAA,CAAA,EAAA,CAAG,OAAO,QAAQ,CAAA;AAAA,KAC1B,CAAA;AAAA;AACL;AAAA;AAAA;AAAA,EAIA,IAAI,IAAO,GAAA;AACP,IAAA,OAAO,KAAK,MAAO,CAAA,IAAA;AAAA;AACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,OAAS,EAAA;AAEZ,IAAA,OAAO,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,OAAO,CAAE,CAAA,MAAA;AAAA;AACvC;AAAA;AAAA;AAAA,EAIA,IAAI,OAAU,GAAA;AACV,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AAChB;AAAA;AAAA;AAAA,EAIA,IAAI,QAAW,GAAA;AACX,IAAA,OAAO,IAAK,CAAA,SAAA;AAAA;AAEpB,CAAA;;;AKhWAD,gCAAA,EAAA;;;ACAAA,gCAAA,EAAA;AAaO,IAAM,QAAA,GAAN,MAAM,SAAS,CAAA;AAAA,EACpB,IAAA;AAAA,EACA,MAAA;AAAA,EACA,WAA4B,EAAC;AAAA,EAC7B,aAAkC,GAAA,MAAA;AAAA,EAElC,WAAA,CAAY,MAAkB,MAAmB,EAAA;AAC/C,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AACZ,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AACd,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,SAAS,IAA4B,EAAA;AACnC,IAAA,MAAM,KAAQ,GAAA,IAAI,SAAS,CAAA,IAAA,EAAM,IAAI,CAAA;AACrC,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AAClB,MAAA,IAAA,CAAK,WAAW,EAAC;AAAA;AAEnB,IAAK,IAAA,CAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AACxB,IAAO,OAAA,KAAA;AAAA;AACT,EAEA,IAAI,IAAiB,GAAA;AACnB,IAAI,IAAA,CAAC,KAAK,MAAQ,EAAA;AAChB,MAAO,OAAA,IAAA;AAAA;AAET,IAAA,OAAO,KAAK,MAAO,CAAA,IAAA;AAAA;AACrB,EAEA,IAAI,MAA0B,GAAA;AAC5B,IAAA,IAAI,CAAC,IAAK,CAAA,QAAA,IAAY,IAAK,CAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AAEhD,MAAA,OAAO,CAAC,IAAI,CAAA;AAAA;AAGd,IAAA,IAAI,KAAK,aAAe,EAAA;AACtB,MAAA,OAAO,IAAK,CAAA,aAAA;AAAA;AAId,IAAA,MAAM,SAAqB,EAAC;AAC5B,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAS,KAAA,IAAA,CAAA,GAAI,GAAG,EAAE,MAAA,KAAW,IAAK,CAAA,QAAA,EAAU,CAAI,GAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AAC3D,QAAA,MAAA,CAAO,KAAK,KAAM,CAAA,MAAA,EAAQ,KAAK,QAAS,CAAA,CAAC,EAAG,MAAM,CAAA;AAAA;AACpD;AAGF,IAAA,IAAA,CAAK,aAAgB,GAAA,MAAA;AAErB,IAAO,OAAA,MAAA;AAAA;AACT,EAEA,QAAQ,QAA8C,EAAA;AACpD,IAAI,IAAA,OAAO,aAAa,UAAY,EAAA;AAClC,MAAM,MAAA,IAAI,UAAU,uCAAuC,CAAA;AAAA;AAI7D,IAAA,QAAA,CAAS,IAAI,CAAA;AAGb,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAS,KAAA,IAAA,CAAA,GAAI,GAAG,EAAE,MAAA,KAAW,IAAK,CAAA,QAAA,EAAU,CAAI,GAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AAC3D,QAAA,IAAA,CAAK,QAAS,CAAA,CAAC,CAAG,EAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA;AACpC;AAGF,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,SAAS,SAAgG,EAAA;AACvG,IAAI,IAAA,OAAO,cAAc,UAAY,EAAA;AACnC,MAAM,MAAA,IAAI,UAAU,qCAAqC,CAAA;AAAA;AAG3D,IAAO,OAAA,IAAA,CAAK,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAAA;AACnC,EAEA,YAAY,QAA8C,EAAA;AACxD,IAAI,IAAA,OAAO,aAAa,UAAY,EAAA;AAClC,MAAM,MAAA,IAAI,UAAU,uCAAuC,CAAA;AAAA;AAG7D,IAAK,IAAA,CAAA,MAAA,CAAO,QAAQ,QAAQ,CAAA;AAAA;AAC9B,EAEA,WAAW,QAA4D,EAAA;AACrE,IAAI,IAAA,OAAO,aAAa,UAAY,EAAA;AAClC,MAAM,MAAA,IAAI,UAAU,sCAAsC,CAAA;AAAA;AAG5D,IAAO,OAAA,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA;AACpC,EAEA,QAAW,QAA+C,EAAA;AACxD,IAAI,IAAA,OAAO,aAAa,UAAY,EAAA;AAClC,MAAM,MAAA,IAAI,UAAU,mCAAmC,CAAA;AAAA;AAGzD,IAAO,OAAA,IAAA,CAAK,MAAO,CAAA,GAAA,CAAI,QAAQ,CAAA;AAAA;AACjC,EAEA,OAAc,KAAM,CAAA,KAAA,EAAwB,IAAgC,EAAA;AAC1E,IAAI,IAAA;AACF,MAAM,MAAA,YAAA,GAAe,kBAAmB,CAAA,KAAA,EAAO,IAAI,CAAA;AAEnD,MAAA,IAAI,CAAC,YAAc,EAAA;AACjB,QAAO,OAAA,IAAA;AAAA;AAGT,MAAM,MAAA,QAAA,GAAW,IAAI,SAAS,CAAA;AAAA,QAC5B,MAAM,YAAa,CAAA,IAAA;AAAA,QACnB,MAAM,YAAa,CAAA,IAAA;AAAA,QACnB,MAAM,YAAa,CAAA,IAAA;AAAA,QACnB,IAAM,EAAA,WAAA,CAAY,OAAQ,CAAA,YAAA,CAAa,IAAI;AAAA,OAC5C,CAAA;AAED,MAAM,MAAA,OAAA,GAAU,CAAC,IAAA,EAAuB,IAAwB,KAAA;AAC9D,QAAM,MAAA,OAAA,GAAU,KAAK,QAAS,CAAA;AAAA,UAC5B,MAAM,IAAK,CAAA,IAAA;AAAA,UACX,MAAM,IAAK,CAAA,IAAA;AAAA,UACX,MAAM,IAAK,CAAA,IAAA;AAAA,UACX,IAAM,EAAA,WAAA,CAAY,OAAQ,CAAA,IAAA,CAAK,IAAI;AAAA,SACpC,CAAA;AAED,QAAI,IAAA,IAAA,CAAK,UAAU,MAAQ,EAAA;AACzB,UAAK,IAAA,CAAA,QAAA,EAAU,OAAQ,CAAA,CAAC,KAAU,KAAA;AAChC,YAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AAAA,WACvB,CAAA;AAAA;AACH,OACF;AAEA,MAAA,YAAA,CAAa,UAAU,OAAQ,CAAA,CAAC,UAAU,OAAQ,CAAA,QAAA,EAAU,KAAK,CAAC,CAAA;AAElE,MAAO,OAAA,QAAA;AAAA,aACA,CAAG,EAAA;AACV,MAAA,MAAM,IAAI,KAAM,CAAA,yEAAA,EAA2E,EAAE,KAAA,EAAO,GAAG,CAAA;AAAA;AACzG;AAEJ,CAAA;AASA,IAAM,gBAAgB,CAAC,CAAA,KAAsB,CAAE,CAAA,OAAA,CAAQ,OAAO,GAAG,CAAA;AAE1D,SAAS,kBAAA,CAAmB,KAA6B,EAAA,UAAA,GAAa,EAA0B,EAAA;AACrG,EAAM,MAAA,oBAAA,GAAuB,cAAc,UAAU,CAAA;AACrD,EAAA,MAAM,aAAa,oBAAqB,CAAA,QAAA,CAAS,GAAG,CAAI,GAAA,oBAAA,GAAuB,GAAG,oBAAoB,CAAA,CAAA,CAAA;AAEtG,EAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,MAAO,CAAA,CAAC,IAAS,KAAA;AAC3C,IAAM,MAAA,kBAAA,GAAqB,aAAc,CAAA,IAAA,CAAK,IAAI,CAAA;AAClD,IAAA,OAAO,UAAa,GAAA,kBAAA,CAAmB,UAAW,CAAA,UAAU,CAAK,IAAA,CAAC,kBAAmB,CAAA,QAAA,CAAS,OAAO,CAAA,GAAI,CAAC,kBAAA,CAAmB,SAAS,OAAO,CAAA;AAAA,GAC9I,CAAA;AAED,EAAI,IAAA,aAAA,CAAc,WAAW,CAAG,EAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,IAAsB,GAAA;AAAA,IAC1B,MAAM,UAAc,IAAA,EAAA;AAAA,IACpB,MAAM,UAAc,IAAA,EAAA;AAAA,IACpB,UAAU;AAAC,GACb;AAEA,EAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAC9B,IAAA,MAAMK,KAAO,GAAA,IAAA,CAAK,IAAK,CAAA,KAAA,CAAM,WAAW,MAAM,CAAA;AAC9C,IAAM,MAAA,KAAA,GAAQA,KAAK,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAA,IAAI,eAAgC,IAAK,CAAA,QAAA;AACzC,IAAA,IAAI,WAAc,GAAA,UAAA;AAElB,IAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAU,KAAA;AAC7B,MAAA,IAAI,UAAU,CAAG,EAAA;AACf,QAAA,WAAA,IAAe,IAAI,IAAI,CAAA,CAAA;AAAA,OAClB,MAAA;AACL,QAAA,WAAA,IAAe,GAAG,IAAI,CAAA,CAAA;AAAA;AAGxB,MAAA,IAAI,eAAe,YAAa,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA,IAAA,CAAK,SAAS,IAAI,CAAA;AAEjE,MAAA,IAAI,CAAC,YAAc,EAAA;AACjB,QAAI,IAAA,KAAA,KAAU,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA;AAE9B,UAAe,YAAA,GAAA;AAAA,YACb,IAAM,EAAA,IAAA;AAAA,YACN,IAAA;AAAA,YACA,IAAM,EAAA;AAAA,WACR;AAAA,SACK,MAAA;AAEL,UAAe,YAAA,GAAA;AAAA,YACb,IAAM,EAAA,IAAA;AAAA,YACN,IAAM,EAAA,WAAA;AAAA,YACN,UAAU;AAAC,WACb;AAAA;AAEF,QAAA,YAAA,CAAa,KAAK,YAAY,CAAA;AAAA;AAIhC,MAAI,IAAA,CAAC,aAAa,IAAM,EAAA;AACtB,QAAA,YAAA,GAAe,YAAa,CAAA,QAAA;AAAA;AAC9B,KACD,CAAA;AAAA,GACF,CAAA;AAED,EAAO,OAAA,IAAA;AACT;;;ADpNO,IAAM,gBAAN,MAAoB;AAAA,EACzB,QAAA;AAAA,EAEA,WAAA,CAAY,OAAgC,GAAA,EAAI,EAAA;AAC9C,IAAA,IAAA,CAAK,QAAW,GAAA,OAAA;AAEhB,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,SAAS,EAAE,KAAA,EAAO,cAAgB,EAAA,IAAA,EAAM,MAA0G,EAAA;AAChJ,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,QAAA;AAExB,IAAM,MAAA,WAAA,uBAAkB,GAAkC,EAAA;AAE1D,IAAA,MAAA,EAAQ,KAAK,OAAS,EAAA,EAAE,sBAAU,IAAA,IAAA,IAAQ,IAAM,EAAA,CAAC,yCAAyC,IAAM,EAAA,SAAA,EAAW,KAAK,GAAG,CAAC,cAAc,IAAI,CAAA,CAAA,CAAG,GAAG,CAAA;AAE5I,IAAA,QAAA,CAAS,MAAM,cAAgB,EAAA,IAAI,CAAG,EAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC1D,MAAI,IAAA,CAAC,YAAY,CAAC,QAAA,CAAS,YAAY,CAAC,QAAA,CAAS,MAAQ,EAAA,IAAA,CAAK,IAAM,EAAA;AAClE,QAAO,OAAA,MAAA;AAAA;AAGT,MAAA,MAAM,UAA4B,GAAA;AAAA,QAChC,MAAMG,SAAK,CAAA,QAAA,CAAS,MAAQ,EAAA,IAAA,CAAK,MAAM,UAAU,CAAA;AAAA,QACjD,QAAU,EAAA,UAAA;AAAA,QACV,SAAS,EAAC;AAAA,QACV,SAAS;AAAC,OACZ;AACA,MAAA,MAAM,kBAAqB,GAAA,WAAA,CAAY,GAAI,CAAA,UAAA,CAAW,IAAI,CAAA;AAC1D,MAAA,MAAM,SAAS,QAAS,CAAA,MAAA;AAExB,MAAO,MAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACvB,QAAI,IAAA,CAAC,IAAK,CAAA,IAAA,CAAK,IAAM,EAAA;AACnB,UAAO,OAAA,MAAA;AAAA;AAGT,QAAA,MAAM,OAAU,GAAA,IAAA,CAAK,IAAK,CAAA,IAAA,EAAM,WAAW,EAAC;AAE5C,QAAA,IAAI,CAAC,OAAQ,CAAA,IAAA,CAAK,CAAC,MAAW,KAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACjD,UAAQ,MAAA,EAAA,IAAA;AAAA,YACN,SAAA;AAAA,YACA,CAAA;AAAA,MAAA,EAAkF,KAAK,SAAU,CAAA,IAAA,CAAK,KAAK,IAAM,EAAA,MAAA,EAAW,CAAC,CAAC,CAAA;AAAA,WAChI;AAAA;AAGF,QAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAC1B,UAAI,IAAA,CAAC,IAAK,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,IAAQ,CAAC,MAAO,CAAA,WAAA,IAAe,CAAC,MAAA,CAAO,IAAM,EAAA;AAChE,YAAO,OAAA,MAAA;AAAA;AAET,UAAM,MAAA,kCAAA,GAAqC,oBAAoB,OAAQ,CAAA,IAAA;AAAA,YACrE,CAACJ,UAASA,KAAK,CAAA,IAAA,KAAS,OAAO,IAAQA,IAAAA,KAAAA,CAAK,eAAe,MAAO,CAAA;AAAA,WACpE;AAEA,UAAA,IAAI,kCAAoC,EAAA;AACtC,YAAO,OAAA,MAAA;AAAA;AAGT,UAAI,IAAA,CAAC,WAAW,OAAS,EAAA;AACvB,YAAA,UAAA,CAAW,UAAU,EAAC;AAAA;AAIxB,UAAM,MAAA,WAAA,GAAc,CAAC,CAAC,QAAA,CAAS,QAAQ,IAAK,CAAA,IAAA,EAAM,KAAQ,GAAA,GAAG,CAAG,EAAA,MAAA;AAEhE,UAAA,IAAI,WAAa,EAAA;AACf,YAAA,UAAA,CAAW,QAAQ,IAAK,CAAA;AAAA,cACtB,IAAA,EAAM,CAAC,MAAA,CAAO,IAAI,CAAA;AAAA,cAClB,IAAA,EAAMK,kCAAgB,QAAS,CAAA,MAAA,EAAQ,KAAK,IAAM,EAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,cAChE,YAAY,MAAO,CAAA;AAAA,aACpB,CAAA;AAAA,WACI,MAAA;AACL,YAAA,UAAA,CAAW,QAAQ,IAAK,CAAA;AAAA,cACtB,IAAA,EAAM,CAAC,MAAA,CAAO,IAAI,CAAA;AAAA,cAClB,IAAM,EAAA,CAAA,EAAA,EAAK,IAAK,CAAA,IAAA,CAAK,KAAK,QAAQ,CAAA,CAAA;AAAA,cAClC,YAAY,MAAO,CAAA;AAAA,aACpB,CAAA;AAAA;AAGH,UAAA,UAAA,CAAW,QAAQ,IAAK,CAAA;AAAA,YACtB,MAAM,MAAO,CAAA,IAAA;AAAA,YACb,YAAY,MAAO,CAAA,UAAA;AAAA;AAAA,YAEnB,KAAO,EAAA,EAAA;AAAA,YACP,YAAc,EAAA,KAAA;AAAA,YACd,WAAa,EAAA;AAAA,WACd,CAAA;AAAA,SACF,CAAA;AAAA,OACF,CAAA;AAED,MAAA,MAAA,EAAQ,KAAK,OAAS,EAAA;AAAA,QACpB,IAAA,sBAAU,IAAK,EAAA;AAAA,QACf,IAAM,EAAA;AAAA,UACJ,CAA0B,uBAAA,EAAAA,iCAAA,CAAgB,IAAM,EAAA,UAAA,CAAW,IAAI,CAAC,CAAU,OAAA,EAAAA,iCAAA,CAAgB,IAAM,EAAA,QAAA,CAAS,IAAM,EAAA,IAAI,CAAC,CAAA,OAAA,EAAU,UAAW,CAAA,OAAA,CAAQ,MAAM,CAAA,qBAAA,EAAwB,UAAW,CAAA,OAAA,EAAS,GAAI,CAAA,CAAC,MAAW,KAAA,MAAA,CAAO,IAAI,CAAA,CAAE,IAAK,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA;AAC5O,OACD,CAAA;AAED,MAAA,MAAA,EAAQ,KAAK,OAAS,EAAA;AAAA,QACpB,IAAA,sBAAU,IAAK,EAAA;AAAA,QACf,IAAM,EAAA;AAAA,UACJ,CAAyB,sBAAA,EAAAA,iCAAA,CAAgB,IAAM,EAAA,UAAA,CAAW,IAAI,CAAC,CAAU,OAAA,EAAAA,iCAAA,CAAgB,IAAM,EAAA,QAAA,CAAS,IAAM,EAAA,IAAI,CAAC,CAAA,iBAAA,EAAoB,WACpI,CAAA,GAAA,CAAI,UAAW,CAAA,IAAI,CAClB,EAAA,OAAA,EAAS,GAAI,CAAA,CAAC,MAAW,KAAA,MAAA,CAAO,IAAI,CAAA,CACrC,IAAK,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA;AACf,OACD,CAAA;AAED,MAAA,IAAI,kBAAoB,EAAA;AACtB,QAAA,kBAAA,CAAmB,OAAQ,CAAA,IAAA,CAAK,GAAG,UAAA,CAAW,OAAO,CAAA;AACrD,QAAA,kBAAA,CAAmB,SAAS,IAAK,CAAA,GAAI,UAAW,CAAA,OAAA,IAAW,EAAG,CAAA;AAAA,OACzD,MAAA;AACL,QAAY,WAAA,CAAA,GAAA,CAAI,UAAW,CAAA,IAAA,EAAM,UAAU,CAAA;AAAA;AAC7C,KACD,CAAA;AAED,IAAA,OAAO,CAAC,GAAG,WAAY,CAAA,MAAA,EAAQ,CAAA;AAAA;AAEnC,CAAA;;;ANlFO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAA,uBAA8D,GAAI,EAAA;AAAA,EAClE,WAAc,GAAA;AACZ,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,IAAI,KAAsC,GAAA;AACxC,IAAA,OAAO,CAAC,GAAG,IAAK,CAAA,YAAA,CAAa,QAAQ,CAAA;AAAA;AACvC,EAEA,IAAI,YAA6C,GAAA;AAC/C,IAAO,OAAAP,yBAAA;AAAA,MACL,CAAC,GAAG,IAAK,CAAA,YAAA,CAAa,QAAQ,CAAA;AAAA,MAC9B;AAAA,QACE,CAAC,MAAM,CAAG,EAAA,IAAA,IAAQ,eAAe,CAAE,CAAA,IAAA,IAAQ,CAAC,CAAA,CAAE,IAAK,CAAA,SAAA;AAAA,QACnD,CAAC,CAAM,KAAA,CAAA,CAAE,IAAK,CAAA,MAAA;AAAA,QACd,CAAC,CAAM,KAAAQ,6BAAA,CAAY,EAAE,IAAI,CAAA,CAAE,SAAS,OAAO,CAAA;AAAA,QAC3C,CAAC,CAAA,KAAMA,6BAAY,CAAA,CAAA,CAAE,QAAQ,CAAA;AAAA,QAC7B,CAAC,CAAM,KAAA,CAAA,CAAE,KAAK,KAAM,CAAA,GAAG,EAAE,GAAI;AAAA;AAC/B,KACF;AAAA;AACF,EAEA,IAAI,YAAqC,GAAA;AACvC,IAAA,OAAO,mBAAmB,CAAC,GAAG,KAAK,YAAa,CAAA,MAAA,EAAQ,CAAC,CAAA;AAAA;AAC3D,EAEA,IAAI,QAA4B,GAAA;AAC9B,IAAO,OAAA,QAAA,CAAS,MAAM,CAAC,GAAG,KAAK,YAAa,CAAA,MAAA,EAAQ,CAAC,CAAA;AAAA;AACvD,EAEA,MAAM,OAA8D,KAAwB,EAAA;AAC1F,IAAA,MAAM,QAAW,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,IAAS,KAAA;AACnC,MAAA,IAAI,KAAK,QAAU,EAAA;AACjB,QAAO,OAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA;AAGvB,MAAO,OAAA,IAAA,CAAK,aAAa,IAAI,CAAA;AAAA,KAC9B,CAAA;AAED,IAAA,MAAM,aAAgB,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,QAAQ,CAAA;AAEhD,IAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,MAAO,OAAA,aAAA;AAAA;AAGT,IAAA,OAAO,cAAc,CAAC,CAAA;AAAA;AACxB,EAEA,MAAM,KAAK,IAA4C,EAAA;AACrD,IAAM,MAAA,YAAA,GAAe,WAAW,IAAI,CAAA;AAEpC,IAAA,IAAA,CAAK,YAAa,CAAA,GAAA,CAAI,YAAa,CAAA,IAAA,EAAM,YAAY,CAAA;AAErD,IAAO,OAAA,YAAA;AAAA;AACT,EAEA,KAAQ,GAAA;AACN,IAAA,IAAA,CAAK,aAAa,KAAM,EAAA;AAAA;AAC1B,EAEA,MAAM,aAAa,IAA4C,EAAA;AAC7D,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,YAAa,CAAA,GAAA,CAAI,KAAK,IAAI,CAAA;AAEpD,IAAA,IAAI,YAAc,EAAA;AAChB,MAAK,IAAA,CAAA,YAAA,CAAa,MAAO,CAAA,YAAA,CAAa,IAAI,CAAA;AAE1C,MAAA,OAAO,IAAK,CAAA,IAAA,CAAK,SAAU,CAAA,YAAA,EAAc,IAAI,CAAC,CAAA;AAAA;AAEhD,IAAO,OAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA;AACvB,EAEA,aAAa,EAAuC,EAAA;AAClD,IAAA,OAAO,CAAC,GAAG,IAAK,CAAA,YAAA,CAAa,MAAO,EAAC,CAAE,CAAA,IAAA,CAAK,CAAC,IAAA,KAAS,IAAK,CAAA,EAAA,KAAO,EAAE,CAAA;AAAA;AACtE,EAEA,UAAUL,KAAwD,EAAA;AAChE,IAAO,OAAA,IAAA,CAAK,YAAa,CAAA,GAAA,CAAIA,KAAI,CAAA;AAAA;AACnC,EAEA,aAAaA,KAA2B,EAAA;AACtC,IAAM,MAAA,SAAA,GAAY,IAAK,CAAA,SAAA,CAAUA,KAAI,CAAA;AACrC,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA;AAAA;AAGF,IAAK,IAAA,CAAA,YAAA,CAAa,OAAOA,KAAI,CAAA;AAAA;AAC/B,EAEA,MAAM,cAAe,CAAA,EAAE,IAAM,EAAA,KAAA,EAAO,IAAO,GAAA,EAAI,EAAA,IAAA,EAAM,MAAQ,EAAA,MAAA,EAAqD,EAAA;AAChH,IAAI,IAAA,CAAC,IAAQ,IAAA,IAAA,KAAS,WAAa,EAAA;AACjC,MAAA,OAAO,EAAC;AAAA;AAGV,IAAA,MAAM,aAAgB,GAAA,IAAI,aAAc,CAAA,EAAE,QAAQ,CAAA;AAElD,IAAA,MAAM,eAAkBG,GAAAA,SAAAA,CAAK,IAAM,EAAA,MAAA,CAAO,IAAI,CAAA;AAE9C,IAAA,IAAIE,6BAAY,CAAA,eAAe,CAAE,CAAA,QAAA,CAAS,OAAO,CAAG,EAAA;AAClD,MAAQ,MAAA,EAAA,IAAA,CAAK,WAAW,mFAAmF,CAAA;AAE3G,MAAA,OAAO,EAAC;AAAA;AAGV,IAAM,MAAA,WAAA,GAAc,cAAc,QAAS,CAAA,EAAE,OAAO,IAAM,EAAA,eAAA,EAAiB,MAAM,CAAA;AAEjF,IAAA,IAAI,SAAS,KAAO,EAAA;AAClB,MAAO,OAAA,WAAA,CAAY,GAAI,CAAA,CAAC,IAAS,KAAA;AAC/B,QAAO,OAAA;AAAA,UACL,GAAG,IAAA;AAAA,UACH,OAAS,EAAA,IAAA,CAAK,OAAS,EAAA,GAAA,CAAI,CAAC,UAAe,KAAA;AACzC,YAAO,OAAA;AAAA,cACL,GAAG,UAAA;AAAA,cACH,IAAM,EAAA;AAAA,aACR;AAAA,WACD;AAAA,SACH;AAAA,OACD,CAAA;AAAA;AAGH,IAAO,OAAA,WAAA,CAAY,GAAI,CAAA,CAAC,SAAc,KAAA;AACpC,MAAO,OAAA;AAAA,QACL,GAAG,SAAA;AAAA,QACH;AAAA,OACF;AAAA,KACD,CAAA;AAAA;AACH,EAEA,MAAM,SAAS,MAA4D,EAAA;AACzE,IAAO,OAAAC,uBAAA,CAAM,GAAG,MAAM,CAAA;AAAA;AACxB,EAEA,MAAM,QAAQ,MAA0D,EAAA;AACtE,IAAO,OAAAC,sBAAA,CAAK,GAAG,MAAM,CAAA;AAAA;AACvB;AAAA,EAGA,OAAO,QAAQP,KAAgD,EAAA;AAC7D,IAAA,IAAI,CAACA,KAAM,EAAA;AACT,MAAO,OAAA,OAAA;AAAA;AAET,IAAO,OAAAQ,YAAA,CAAQR,KAAI,CAAA,GAAI,QAAW,GAAA,OAAA;AAAA;AAEtC;AAOA,eAAsB,SAAA,CACpB,MACA,EAAE,MAAA,EAAQ,SAAAQ,QAAQ,EAAA,GAAsB,EACvB,EAAA;AACjB,EAAA,MAAM,MAAS,GAAA,MAAM,aAAc,CAAA,IAAA,CAAK,OAAO,CAAA;AAC/C,EAAM,MAAA,MAAA,GAAS,MAAM,MAAO,CAAA,KAAA,CAAM,MAAM,EAAE,MAAA,EAAQ,OAAAA,EAAAA,QAAAA,EAAS,CAAA;AAE3D,EAAA,OAAO,OAAO,MAAO,CAAA,MAAM,CAAE,CAAA,KAAA,CAAM,CAAC,GAAQ,KAAA;AAC1C,IAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAChB,IAAO,OAAA,MAAA;AAAA,GACR,CAAA;AACH;AAEA,SAAS,SAAA,CAAqD,GAAyB,CAA+C,EAAA;AACpI,EAAO,OAAA;AAAA,IACL,GAAG,CAAA;AAAA,IACH,OAAA,EAAS,CAAC,GAAI,CAAE,CAAA,OAAA,IAAW,EAAC,EAAI,GAAI,CAAA,CAAE,OAAW,IAAA,EAAG,CAAA;AAAA,IACpD,OAAA,EAAS,CAAC,GAAI,CAAE,CAAA,OAAA,IAAW,EAAC,EAAI,GAAI,CAAA,CAAE,OAAW,IAAA,EAAG,CAAA;AAAA,IACpD,OAAA,EAAS,CAAC,GAAI,CAAE,CAAA,OAAA,IAAW,EAAC,EAAI,GAAI,CAAA,CAAE,OAAW,IAAA,EAAG;AAAA,GACtD;AACF;AAEO,SAAS,eAAe,OAAyD,EAAA;AACtF,EAAO,OAAAC,eAAA,CAAS,OAAS,EAAA,CAAC,GAAQ,KAAA,CAAC,GAAI,CAAA,IAAA,EAAM,GAAI,CAAA,YAAA,EAAc,GAAI,CAAA,UAAU,CAAU,CAAA;AACzF;AAEO,SAAS,eAAe,OAAyD,EAAA;AACtF,EAAA,OAAOZ,0BAAQ,OAAS,EAAA;AAAA,IACtB,CAAC,CAAM,KAAA,CAAC,CAAC,KAAM,CAAA,OAAA,CAAQ,EAAE,IAAI,CAAA;AAAA,IAC7B,CAAC,CAAM,KAAA,CAAC,CAAE,CAAA,UAAA;AAAA,IACV,CAAC,MAAM,CAAE,CAAA,IAAA;AAAA,IACT,CAAC,CAAA,KAAM,CAAC,CAAC,CAAE,CAAA,IAAA;AAAA,IACX,CAAC,CAAO,KAAA,KAAA,CAAM,OAAQ,CAAA,CAAA,CAAE,IAAI,CAAA,GAAIA,yBAAQ,CAAA,CAAA,CAAE,IAAI,CAAA,GAAI,CAAE,CAAA;AAAA,GACrD,CAAE,CAAA,MAAA;AAAA,IACD,CAAC,MAAM,IAAS,KAAA;AACd,MAAA,MAAM,OAAO,IAAK,CAAA,IAAA;AAClB,MAAM,MAAA,UAAA,GAAa,KAAK,QAAS,CAAA,CAAC,QAAQ,GAAI,CAAA,IAAA,KAAS,KAAK,IAAI,CAAA;AAChE,MAAA,MAAM,uBAA0B,GAAA,IAAA,CAAK,QAAS,CAAA,CAAC,QAAQ,GAAI,CAAA,IAAA,KAAS,IAAK,CAAA,IAAA,IAAQa,mBAAY,GAAI,CAAA,IAAA,EAAM,IAAI,CAAA,IAAK,IAAI,UAAU,CAAA;AAE9H,MAAA,IAAI,uBAAyB,EAAA;AAE3B,QAAO,OAAA,IAAA;AAAA;AAGT,MAAA,MAAM,aAAa,IAAK,CAAA,QAAA;AAAA,QACtB,CAAC,GAAQ,KAAA,GAAA,CAAI,IAAS,KAAA,IAAA,CAAK,QAAQA,kBAAY,CAAA,GAAA,CAAI,IAAM,EAAA,IAAI,KAAK,GAAI,CAAA,UAAA,KAAe,KAAK,UAAc,IAAA,GAAA,CAAI,YAAY,IAAK,CAAA;AAAA,OAC/H;AAGA,MAAA,IAAI,UAAe,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAK,IAAA,CAAC,IAAK,CAAA,MAAA,IAAY,UAAY,EAAA,OAAA,IAAW,CAAC,IAAA,CAAK,OAAU,EAAA;AACjG,QAAO,OAAA,IAAA;AAAA;AAGT,MAAA,IAAI,CAAC,UAAY,EAAA;AACf,QAAO,OAAA;AAAA,UACL,GAAG,IAAA;AAAA,UACH;AAAA,YACE,GAAG,IAAA;AAAA,YACH,IAAA,EAAM,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,GAAI,CAAC,GAAG,IAAI,GAAA,CAAI,IAAI,CAAC,CAAI,GAAA;AAAA;AACnD,SACF;AAAA;AAIF,MAAA,IAAI,UAAc,IAAA,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,IAAI,CAAK,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,CAAK,IAAI,CAAA,IAAK,UAAW,CAAA,UAAA,KAAe,KAAK,UAAY,EAAA;AACzH,QAAA,UAAA,CAAW,IAAO,GAAA,CAAC,mBAAG,IAAI,GAAI,CAAA,CAAC,GAAG,UAAA,CAAW,IAAM,EAAA,GAAG,IAAK,CAAA,IAAI,CAAC,CAAC,CAAA;AAEjE,QAAO,OAAA,IAAA;AAAA;AAGT,MAAO,OAAA,CAAC,GAAG,IAAA,EAAM,IAAI,CAAA;AAAA,KACvB;AAAA,IACA;AAAC,GACH;AACF;AAEO,SAAS,cAAA,CAAe,OAAiC,EAAA,OAAA,EAAiC,MAAyC,EAAA;AACxI,EAAA,OAAOb,0BAAQ,OAAS,EAAA;AAAA,IACtB,CAAC,CAAM,KAAA,CAAC,CAAC,KAAM,CAAA,OAAA,CAAQ,EAAE,IAAI,CAAA;AAAA,IAC7B,CAAC,CAAM,KAAA,CAAC,CAAE,CAAA,UAAA;AAAA,IACV,CAAC,MAAM,CAAE,CAAA,IAAA;AAAA,IACT,CAAC,CAAA,KAAM,CAAC,CAAC,CAAE,CAAA,IAAA;AAAA,IACX,CAAC,CAAO,KAAA,KAAA,CAAM,OAAQ,CAAA,CAAA,CAAE,IAAI,CAAA,GAAIA,yBAAQ,CAAA,CAAA,CAAE,IAAI,CAAA,GAAI,CAAE,CAAA;AAAA,GACrD,CAAE,CAAA,MAAA;AAAA,IACD,CAAC,MAAM,IAAS,KAAA;AACd,MAAA,IAAI,IAAO,GAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,CAAK,IAAI,CAAI,GAAA,CAAC,GAAG,IAAI,GAAI,CAAA,IAAA,CAAK,IAAI,CAAC,IAAI,IAAK,CAAA,IAAA;AAErE,MAAM,MAAA,iBAAA,GAAoB,CAAC,UAAuB,KAAA;AAChD,QAAA,IAAI,CAAC,MAAQ,EAAA;AACX,UAAO,OAAA,IAAA;AAAA;AAGT,QAAM,MAAA,OAAA,GAAU,CAACc,KAAkB,KAAA;AACjC,UAAA,OAAOA,KAAQ,IAAA,CAAC,CAAC,MAAA,CAAO,SAASA,KAAI,CAAA;AAAA,SACvC;AAEA,QAAO,OAAA,OAAA,CAAQ,UAAU,CAAK,IAAA,OAAA,CAAQ,KAAK,CAAC,EAAE,MAAAA,KAAK,EAAA,KAAO,MAAM,OAAQA,CAAAA,KAAI,IAAIA,KAAK,CAAA,IAAA,CAAK,OAAO,CAAI,GAAA,OAAA,CAAQA,KAAI,CAAE,CAAA;AAAA,OACrH;AAEA,MAAI,IAAA,IAAA,CAAK,IAAS,KAAA,IAAA,CAAK,IAAM,EAAA;AAE3B,QAAO,OAAA,IAAA;AAAA;AAIT,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAG,EAAA;AACvB,QAAA,IAAA,GAAO,IAAK,CAAA,MAAA,CAAO,CAAC,IAAA,KAAU,OAAO,IAAA,KAAS,QAAW,GAAA,iBAAA,CAAkB,IAAI,CAAA,GAAI,iBAAkB,CAAA,IAAA,CAAK,YAAY,CAAE,CAAA;AAAA;AAG1H,MAAA,MAAM,UAAa,GAAA,IAAA,CAAK,QAAS,CAAA,CAAC,GAAQ,KAAA,GAAA,CAAI,IAAS,KAAA,IAAA,CAAK,IAAQ,IAAA,GAAA,CAAI,UAAe,KAAA,IAAA,CAAK,UAAU,CAAA;AACtG,MAAA,MAAM,aAAa,IAAK,CAAA,QAAA,CAAS,CAAC,GAAA,KAAQ,IAAI,IAAS,KAAA,IAAA,CAAK,IAAQ,IAAAD,kBAAA,CAAY,IAAI,IAAM,EAAA,IAAI,KAAK,GAAI,CAAA,UAAA,KAAe,KAAK,UAAU,CAAA;AACrI,MAAA,MAAM,2BAA8B,GAAA,IAAA,CAAK,QAAS,CAAA,CAAC,QAAQ,GAAI,CAAA,IAAA,KAAS,IAAK,CAAA,IAAA,IAAQA,mBAAY,GAAI,CAAA,IAAA,EAAM,IAAI,CAAA,IAAK,IAAI,UAAU,CAAA;AAElI,MAAA,IAAI,2BAA6B,EAAA;AAE/B,QAAO,OAAA,IAAA;AAAA;AAIT,MAAA,IAAI,cAAe,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAK,IAAA,CAAC,KAAK,MAAS,EAAA;AACvD,QAAO,OAAA,IAAA;AAAA;AAIT,MAAA,IAAI,CAAC,UAAY,EAAA;AACf,QAAO,OAAA;AAAA,UACL,GAAG,IAAA;AAAA,UACH;AAAA,YACE,GAAG,IAAA;AAAA,YACH;AAAA;AACF,SACF;AAAA;AAIF,MAAA,IAAI,UAAc,IAAA,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,IAAI,CAAA,IAAK,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,IAAK,UAAW,CAAA,UAAA,KAAe,KAAK,UAAY,EAAA;AACpH,QAAA,UAAA,CAAW,IAAO,GAAA,CAAC,mBAAG,IAAI,GAAI,CAAA,CAAC,GAAG,UAAA,CAAW,IAAM,EAAA,GAAG,IAAI,CAAC,CAAC,CAAA;AAE5D,QAAO,OAAA,IAAA;AAAA;AAIT,MAAI,IAAA,CAAC,MAAM,OAAQ,CAAA,IAAI,KAAK,IAAQ,IAAA,CAAC,iBAAkB,CAAA,IAAI,CAAG,EAAA;AAC5D,QAAO,OAAA,IAAA;AAAA;AAGT,MAAO,OAAA,CAAC,GAAG,IAAA,EAAM,IAAI,CAAA;AAAA,KACvB;AAAA,IACA;AAAC,GACH;AACF;AAYA,IAAM,QAAQ,IAAI,MAAA,CAAO,EAAE,WAAA,EAAa,KAAK,CAAA;AAE7C,eAAsB,aAAa,EAAE,MAAA,EAAQ,MAAM,SAAW,EAAA,MAAA,EAAQ,OAA0B,EAAA;AAC9F,EAAM,MAAA,YAAA,GAAeb,0BAAQ,KAAO,EAAA;AAAA,IAClC,CAAC,MAAM,CAAG,EAAA,IAAA,IAAQ,eAAe,CAAE,CAAA,IAAA,IAAQ,CAAC,CAAA,CAAE,IAAK,CAAA,SAAA;AAAA,IACnD,CAAC,CAAM,KAAA,CAAA,CAAE,IAAK,CAAA,MAAA;AAAA,IACd,CAAC,CAAM,KAAAQ,6BAAA,CAAY,EAAE,IAAI,CAAA,CAAE,SAAS,OAAO;AAAA,GAC5C,CAAA;AAED,EAAA,MAAA,EAAQ,KAAK,OAAS,EAAA;AAAA,IACpB,IAAA,sBAAU,IAAK,EAAA;AAAA,IACf,IAAA,EAAM,CAAC,IAAA,CAAK,SAAU,CAAA,EAAE,OAAO,YAAa,EAAA,EAAG,IAAM,EAAA,CAAC,CAAC,CAAA;AAAA,IACvD,QAAU,EAAA;AAAA,GACX,CAAA;AAED,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAA,MAAM,OAAO,YAAa,CAAA,MAAA;AAE1B,IAAQ,MAAA,EAAA,IAAA,CAAK,kBAAkB,EAAE,EAAA,EAAI,SAAS,IAAM,EAAA,OAAA,EAAS,qBAAqB,CAAA;AAClF,IAAA,MAAM,QAAW,GAAA,YAAA,CAAa,GAAI,CAAA,OAAO,IAAS,KAAA;AAChD,MAAM,MAAA,KAAA,CAAM,IAAI,YAAY;AAC1B,QAAM,MAAA,OAAA,GAAU,OAAO,CAAW,QAAA,EAAAO,aAAA,CAAS,MAAM,IAAK,CAAA,IAAI,CAAC,CAAK,CAAA,GAAA,EAAA;AAChE,QAAA,MAAMJ,QAAU,GAAA,SAAA,GAAY,IAAK,CAAA,OAAO,CAAK,IAAA,MAAA;AAE7C,QAAM,MAAA,MAAA,GAAS,MAAM,SAAU,CAAA,IAAA,EAAM,EAAE,MAAQ,EAAA,OAAA,EAAAA,UAAS,CAAA;AAExD,QAAA,MAAMF,wBAAM,IAAK,CAAA,IAAA,EAAM,QAAQ,EAAE,MAAA,EAAQ,OAAO,CAAA;AAEhD,QAAA,MAAA,EAAQ,KAAK,YAAc,EAAA,EAAE,EAAI,EAAA,OAAA,EAAS,SAAS,CAAA;AAAA,OACpD,CAAA;AAAA,KACF,CAAA;AAED,IAAM,MAAA,OAAA,CAAQ,IAAI,QAAQ,CAAA;AAE1B,IAAA,MAAA,EAAQ,IAAK,CAAA,eAAA,EAAiB,EAAE,EAAA,EAAI,SAAS,CAAA;AAAA;AAG/C,EAAO,OAAA,KAAA;AACT;;;AD7XO,SAAS,iBAAiB,EAAE,KAAA,EAAO,WAAa,EAAA,OAAA,EAAS,QAA8F,EAAA;AAC5J,EAAI,IAAA;AACF,IAAA,IAAI,MAAS,GAAA,EAAA;AACb,IAAI,IAAA,MAAA,IAAU,OAAO,KAAO,EAAA;AAC1B,MAAA,MAAA,GAASN,qBAAK,CAAA,QAAA,CAAS,MAAO,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA,KAC1C,MAAA,IAAW,MAAU,IAAA,MAAA,CAAO,KAAO,EAAA;AACjC,MAAS,MAAA,GAAA,cAAA;AAAA;AAGX,IAAA,IAAI,MAAS,GAAA,0EAAA;AAEb,IAAI,IAAA,MAAA,CAAO,MAAO,CAAA,aAAA,KAAkB,QAAU,EAAA;AAC5C,MAAU,MAAA,IAAA,MAAA;AACV,MAAO,OAAA,MAAA;AAAA;AAGT,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,MAAA,IAAU,aAAa,MAAM;AAAA,CAAA;AAAA;AAG/B,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,MAAA,IAAU,YAAY,KAAK;AAAA,CAAA;AAAA;AAG7B,IAAA,IAAI,WAAa,EAAA;AACf,MAAA,MAAM,oBAAuB,GAAA,WAAA,CAAY,OAAQ,CAAA,MAAA,EAAQ,MAAM,CAAA;AAC/D,MAAA,MAAA,IAAU,kBAAkB,oBAAoB;AAAA,CAAA;AAAA;AAGlD,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,MAAA,IAAU,2BAA2B,OAAO;AAAA,CAAA;AAAA;AAG9C,IAAU,MAAA,IAAA,MAAA;AACV,IAAO,OAAA,MAAA;AAAA,WACA,MAAQ,EAAA;AAEf,IAAO,OAAA,4EAAA;AAAA;AAEX;AAKO,SAAS,WAA0C,IAA0D,EAAA;AAClH,EAAA,MAAMQ,QAAU,GAAAR,qBAAA,CAAK,OAAQ,CAAA,IAAA,CAAK,QAAQ,CAAA;AAE1C,EAAA,IAAI,CAACQ,QAAS,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA,CAAM,CAAwB,qBAAA,EAAA,IAAA,CAAK,QAAQ,CAAE,CAAA,CAAA;AAAA;AAGzD,EAAM,MAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,MAAM,CAAA;AACjE,EAAA,MAAM,UAAU,IAAK,CAAA,OAAA,GAAU,eAAe,IAAK,CAAA,OAAO,IAAI,EAAC;AAC/D,EAAM,MAAA,OAAA,GAAU,IAAK,CAAA,OAAA,IAAW,MAAS,GAAA,cAAA,CAAe,KAAK,OAAS,EAAA,OAAA,EAAS,MAAM,CAAA,GAAI,EAAC;AAC1F,EAAA,MAAM,UAAU,IAAK,CAAA,OAAA,GAAU,eAAe,IAAK,CAAA,OAAO,IAAI,EAAC;AAE/D,EAAO,OAAA;AAAA,IACL,GAAG,IAAA;AAAA,IACH,IAAIK,qBAAK,CAAA,EAAE,IAAM,EAAA,IAAA,CAAK,MAAM,CAAA;AAAA,IAC5B,IAAA,EAAMR,YAAY,CAAA,IAAA,CAAK,QAAQ,CAAA;AAAA,IAC/B,OAAAG,EAAAA,QAAAA;AAAA,IACA,SAAS,OAAQ,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA;AAAA,IACrD,SAAS,OAAQ,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA;AAAA,IACrD,SAAS,OAAQ,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA;AAAA,IACrD,IAAA,EAAM,IAAK,CAAA,IAAA,IAAS;AAAC,GACvB;AACF;AAKA,SAAS,iBAAiB,MAA0C,EAAA;AAClE,EAAO,OAAA,MAAA;AACT;AAKO,SAAS,iBAAiB,GAA+C,EAAA;AAC9E,EAAO,OAAA;AAAA,IACL,GAAG;AAAA,GACL;AACF;AAKO,SAAS,iBAAiB,GAA+C,EAAA;AAC9E,EAAO,OAAA;AAAA,IACL,GAAG;AAAA,GACL;AACF;AAUO,SAAS,iBAAgD,MAAkD,EAAA;AAChH,EAAO,OAAA,MAAA;AACT;AAOA,IAAM,mBAAmB,gBAAiB,CAAA;AAAA,EACxC,MAAM,OAAO,MAAQ,EAAA;AACnB,IAAM,MAAA,MAAA,GAAS,MAAM,OAAO,iBAAiB,CAAA;AAE7C,IAAO,OAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,GAC7B;AAAA,EACA,MAAM,KAAM,CAAA,IAAA,EAAM,UAAU,EAAE,OAAA,EAAS,OAAS,EAAA;AAC9C,IAAM,MAAA,MAAA,GAAS,MAAM,OAAO,iBAAiB,CAAA;AAE7C,IAAM,MAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,MAAM,CAAA;AAEjE,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,OACtB,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,MAAM,MAAA,UAAA,GAAa,KAAK,IAAO,GAAAJ,iCAAA,CAAgB,KAAK,IAAM,EAAA,IAAA,CAAK,IAAI,CAAA,GAAI,IAAK,CAAA,IAAA;AAC5E,MAAA,MAAM,UAAa,GAAA,CAAC,CAACJ,qBAAA,CAAK,QAAQ,UAAU,CAAA;AAE5C,MAAO,OAAA,MAAA,CAAO,QAAQ,uBAAwB,CAAA;AAAA,QAC5C,MAAM,IAAK,CAAA,IAAA;AAAA,QACX,MAAM,OAAQ,CAAA,OAAA,IAAW,UAAa,GAAA,CAAA,EAAGK,aAAY,UAAU,CAAC,CAAG,EAAA,OAAA,CAAQ,OAAO,CAAK,CAAA,GAAA,IAAA,CAAK,IAAOA,GAAAA,YAAAA,CAAY,UAAU,CAAI,GAAA,UAAA;AAAA,QAC7H,YAAY,IAAK,CAAA;AAAA,OAClB,CAAA;AAAA,KACF,CACA,CAAA,MAAA,CAAO,OAAO,CAAA;AAEjB,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,OACtB,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,MAAA,MAAM,aAAa,IAAK,CAAA,IAAA;AAExB,MAAA,MAAM,UAAa,GAAA,CAAC,CAACL,qBAAA,CAAK,QAAQ,UAAU,CAAA;AAE5C,MAAO,OAAA,MAAA,CAAO,QAAQ,uBAAwB,CAAA;AAAA,QAC5C,MAAM,IAAK,CAAA,IAAA;AAAA,QACX,IAAM,EAAA,OAAA,CAAQ,OAAW,IAAA,UAAA,GAAa,GAAGK,YAAY,CAAA,IAAA,CAAK,IAAI,CAAC,GAAG,OAAQ,CAAA,OAAO,CAAKA,CAAAA,GAAAA,YAAAA,CAAY,KAAK,IAAI,CAAA;AAAA,QAC3G,YAAY,IAAK,CAAA,UAAA;AAAA,QACjB,SAAS,IAAK,CAAA;AAAA,OACf,CAAA;AAAA,KACF,CACA,CAAA,MAAA,CAAO,OAAO,CAAA;AAEjB,IAAA,OAAO,CAAC,IAAK,CAAA,MAAA,EAAQ,MAAO,CAAA,KAAA,CAAM,CAAC,GAAG,WAAA,EAAa,GAAG,WAAW,CAAC,CAAG,EAAA,MAAA,EAAQ,KAAK,MAAM,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA;AAEvG,CAAC,CAAA;AAED,IAAM,YAAY,gBAAiB,CAAA;AAAA,EACjC,MAAM,OAAO,MAAQ,EAAA;AACnB,IAAM,MAAA,MAAA,GAAS,MAAM,OAAO,iBAAiB,CAAA;AAE7C,IAAO,OAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,GAC7B;AAAA,EACA,MAAM,KAAM,CAAA,IAAA,EAAM,UAAU,EAAE,OAAA,EAAS,QAAU,EAAA;AAC/C,IAAO,OAAA,gBAAA,CAAiB,KAAM,CAAA,IAAA,EAAM,OAAO,CAAA;AAAA;AAE/C,CAAC,CAAA;AAED,IAAM,gBAAgB,gBAAiB,CAAA;AAAA,EACrC,MAAM,OAAO,MAAQ,EAAA;AACnB,IAAO,OAAA,MAAA;AAAA,GACT;AAAA,EACA,MAAM,MAAM,IAAM,EAAA;AAChB,IAAO,OAAA,IAAA,CAAK,QAAQ,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AAE7D,CAAC,CAAA;AAED,IAAM,OAAuD,GAAA;AAAA,EAC3D,KAAO,EAAA,gBAAA;AAAA,EACP,KAAO,EAAA,gBAAA;AAAA,EACP,MAAQ,EAAA,SAAA;AAAA,EACR,MAAQ,EAAA,SAAA;AAAA,EACR,OAAS,EAAA;AACX,CAAA;AAEA,eAAsB,cAA6CG,QAAqE,EAAA;AACtI,EAAA,IAAI,CAACA,QAAS,EAAA;AACZ,IAAO,OAAA,aAAA;AAAA;AAGT,EAAM,MAAA,MAAA,GAAS,QAAQA,QAAO,CAAA;AAE9B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAQ,OAAA,CAAA,IAAA,CAAK,CAAgCA,6BAAAA,EAAAA,QAAO,CAA+B,6BAAA,CAAA,CAAA;AAAA;AAGrF,EAAA,OAAO,MAAU,IAAA,aAAA;AACnB;AAEA,SAASH,aAAY,IAAsB,EAAA;AACzC,EAAA,MAAMG,QAAU,GAAA,IAAA,CAAK,KAAM,CAAA,GAAG,EAAE,GAAI,EAAA;AAEpC,EAAA,OAAO,IAAK,CAAA,OAAA,CAAQ,CAAIA,CAAAA,EAAAA,QAAO,IAAI,EAAE,CAAA;AACvC","file":"chunk-SWGRVXDA.cjs","sourcesContent":["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export type { FunctionParamsAST } from './FunctionParams.ts'\nexport { FunctionParams } from './FunctionParams.ts'\nexport {\n isPromise,\n isPromiseFulfilledResult,\n isPromiseRejectedResult,\n} from './promise.ts'\nexport { renderTemplate } from './renderTemplate.ts'\nexport { timeout } from './timeout.ts'\nexport { getUniqueName, setUniqueName } from './uniqueName.ts'\nexport type { URLObject } from './URLPath.ts'\nexport { URLPath } from './URLPath.ts'\nexport { getFileParser, createFileImport, createFileExport, createFile, createFileParser, getDefaultBanner } from './parser.ts'\nexport type { ParserModule } from './parser.ts'\n","import { orderBy } from 'natural-orderby'\n\nimport { camelCase } from '../transformers/casing.ts'\n\ntype FunctionParamsASTWithoutType = {\n name?: string\n type?: string\n /**\n * @default true\n */\n required?: boolean\n /**\n * @default true\n */\n enabled?: boolean\n default?: string\n}\n\ntype FunctionParamsASTWithType = {\n name?: never\n type: string\n /**\n * @default true\n */\n required?: boolean\n /**\n * @default true\n */\n enabled?: boolean\n default?: string\n}\n/**\n * @deprecated\n */\nexport type FunctionParamsAST = FunctionParamsASTWithoutType | FunctionParamsASTWithType\n\n/**\n * @deprecated\n */\nexport class FunctionParams {\n #items: Array<FunctionParamsAST | FunctionParamsAST[]> = []\n constructor() {\n return this\n }\n\n get items(): FunctionParamsAST[] {\n return this.#items.flat()\n }\n\n add(item: FunctionParamsAST | Array<FunctionParamsAST | FunctionParamsAST[] | undefined> | undefined): FunctionParams {\n if (!item) {\n return this\n }\n\n if (Array.isArray(item)) {\n item.filter(Boolean).forEach((it) => this.#items.push(it))\n return this\n }\n this.#items.push(item)\n\n return this\n }\n static #orderItems(items: Array<FunctionParamsAST | FunctionParamsAST[]>) {\n return orderBy(\n items.filter(Boolean),\n [\n (v) => {\n if (Array.isArray(v)) {\n return undefined\n }\n return !v.default\n },\n (v) => {\n if (Array.isArray(v)) {\n return undefined\n }\n return v.required ?? true\n },\n ],\n ['desc', 'desc'],\n )\n }\n\n static #addParams(acc: string[], item: FunctionParamsAST) {\n const { enabled = true, name, type, required = true, ...rest } = item\n\n if (!enabled) {\n return acc\n }\n\n if (!name) {\n // when name is not se we will use TypeScript generics\n acc.push(`${type}${rest.default ? ` = ${rest.default}` : ''}`)\n\n return acc\n }\n // TODO check whey we still need the camelcase here\n const parameterName = name.startsWith('{') ? name : camelCase(name)\n\n if (type) {\n if (required) {\n acc.push(`${parameterName}: ${type}${rest.default ? ` = ${rest.default}` : ''}`)\n } else {\n acc.push(`${parameterName}?: ${type}`)\n }\n } else {\n acc.push(`${parameterName}`)\n }\n\n return acc\n }\n\n static toObject(items: FunctionParamsAST[]): FunctionParamsAST {\n let type: string[] = []\n let name: string[] = []\n\n const enabled = items.every((item) => item.enabled) ? items.at(0)?.enabled : true\n const required = items.every((item) => item.required) ?? true\n\n items.forEach((item) => {\n name = FunctionParams.#addParams(name, { ...item, type: undefined })\n if (items.some((item) => item.type)) {\n type = FunctionParams.#addParams(type, item)\n }\n })\n\n return {\n name: `{ ${name.join(', ')} }`,\n type: type.length ? `{ ${type.join('; ')} }` : undefined,\n enabled,\n required,\n }\n }\n\n static toString(items: (FunctionParamsAST | FunctionParamsAST[])[]): string {\n const sortedData = FunctionParams.#orderItems(items)\n\n return sortedData\n .reduce((acc, item) => {\n if (Array.isArray(item)) {\n if (item.length <= 0) {\n return acc\n }\n const subItems = FunctionParams.#orderItems(item) as FunctionParamsAST[]\n const objectItem = FunctionParams.toObject(subItems)\n\n return FunctionParams.#addParams(acc, objectItem)\n }\n\n return FunctionParams.#addParams(acc, item)\n }, [] as string[])\n .join(', ')\n }\n\n toObject(): FunctionParamsAST {\n const items = FunctionParams.#orderItems(this.#items).flat()\n\n return FunctionParams.toObject(items)\n }\n\n toString(): string {\n const items = FunctionParams.#orderItems(this.#items)\n\n return FunctionParams.toString(items)\n }\n}\n","import type { PossiblePromise } from './types.ts'\n\nexport function isPromise<T>(result: PossiblePromise<T>): result is Promise<T> {\n return !!result && typeof (result as Promise<unknown>)?.then === 'function'\n}\n\nexport function isPromiseFulfilledResult<T = unknown>(result: PromiseSettledResult<unknown>): result is PromiseFulfilledResult<T> {\n return result.status === 'fulfilled'\n}\n\nexport function isPromiseRejectedResult<T>(result: PromiseSettledResult<unknown>): result is Omit<PromiseRejectedResult, 'reason'> & { reason: T } {\n return result.status === 'rejected'\n}\n","export function renderTemplate<TData extends Record<string, unknown> = Record<string, unknown>>(template: string, data: TData | undefined = undefined): string {\n if (!data || !Object.keys(data).length) {\n return template.replace(/{{(.*?)}}/g, '')\n }\n\n const matches = template.match(/{{(.*?)}}/g)\n\n return (\n matches?.reduce((prev, curr) => {\n const index = curr.split(/{{|}}/).filter(Boolean)[0]?.trim()\n if (index === undefined) {\n return prev\n }\n const value = data[index]\n\n if (value === undefined) {\n return prev\n }\n\n return prev\n .replace(curr, () => {\n if (typeof value === 'boolean') {\n return `${value.toString()}` || 'false'\n }\n\n return (value as string) || ''\n })\n .trim()\n }, template) || ''\n )\n}\n","export async function timeout(ms: number): Promise<unknown> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true)\n }, ms)\n })\n}\n","export function getUniqueName(originalName: string, data: Record<string, number>): string {\n let used = data[originalName] || 0\n if (used) {\n data[originalName] = ++used\n originalName += used\n }\n data[originalName] = 1\n return originalName\n}\n\nexport function setUniqueName(originalName: string, data: Record<string, number>): string {\n let used = data[originalName] || 0\n if (used) {\n data[originalName] = ++used\n\n return originalName\n }\n data[originalName] = 1\n return originalName\n}\n","import { camelCase, isValidVarName } from '../transformers'\n\nexport type URLObject = {\n url: string\n params?: Record<string, string>\n}\n\ntype ObjectOptions = {\n type?: 'path' | 'template'\n replacer?: (pathParam: string) => string\n stringify?: boolean\n}\n\ntype Options = {\n casing?: 'camelcase'\n}\n\nexport class URLPath {\n path: string\n #options: Options\n\n constructor(path: string, options: Options = {}) {\n this.path = path\n this.#options = options\n\n return this\n }\n\n /**\n * Convert Swagger path to URLPath(syntax of Express)\n * @example /pet/{petId} => /pet/:petId\n */\n get URL(): string {\n return this.toURLPath()\n }\n get isURL(): boolean {\n try {\n const url = new URL(this.path)\n if (url?.href) {\n return true\n }\n } catch (_error) {\n return false\n }\n return false\n }\n\n /**\n * Convert Swagger path to template literals/ template strings(camelcase)\n * @example /pet/{petId} => `/pet/${petId}`\n * @example /account/monetary-accountID => `/account/${monetaryAccountId}`\n * @example /account/userID => `/account/${userId}`\n */\n get template(): string {\n return this.toTemplateString()\n }\n get object(): URLObject | string {\n return this.toObject()\n }\n get params(): Record<string, string> | undefined {\n return this.getParams()\n }\n\n toObject({ type = 'path', replacer, stringify }: ObjectOptions = {}): URLObject | string {\n const object = {\n url: type === 'path' ? this.toURLPath() : this.toTemplateString({ replacer }),\n params: this.getParams(),\n }\n\n if (stringify) {\n if (type === 'template') {\n return JSON.stringify(object).replaceAll(\"'\", '').replaceAll(`\"`, '')\n }\n\n if (object.params) {\n return `{ url: '${object.url}', params: ${JSON.stringify(object.params).replaceAll(\"'\", '').replaceAll(`\"`, '')} }`\n }\n\n return `{ url: '${object.url}' }`\n }\n\n return object\n }\n\n /**\n * Convert Swagger path to template literals/ template strings(camelcase)\n * @example /pet/{petId} => `/pet/${petId}`\n * @example /account/monetary-accountID => `/account/${monetaryAccountId}`\n * @example /account/userID => `/account/${userId}`\n */\n toTemplateString({ prefix = '', replacer }: { prefix?: string; replacer?: (pathParam: string) => string } = {}): string {\n const regex = /{(\\w|-)*}/g\n const found = this.path.match(regex)\n let newPath = this.path.replaceAll('{', '${')\n\n if (found) {\n newPath = found.reduce((prev, path) => {\n const pathWithoutBrackets = path.replaceAll('{', '').replaceAll('}', '')\n\n let param = isValidVarName(pathWithoutBrackets) ? pathWithoutBrackets : camelCase(pathWithoutBrackets)\n\n if (this.#options.casing === 'camelcase') {\n param = camelCase(param)\n }\n\n return prev.replace(path, `\\${${replacer ? replacer(param) : param}}`)\n }, this.path)\n }\n\n return `\\`${prefix}${newPath}\\``\n }\n\n getParams(replacer?: (pathParam: string) => string): Record<string, string> | undefined {\n const regex = /{(\\w|-)*}/g\n const found = this.path.match(regex)\n\n if (!found) {\n return undefined\n }\n\n const params: Record<string, string> = {}\n found.forEach((item) => {\n item = item.replaceAll('{', '').replaceAll('}', '')\n\n let param = isValidVarName(item) ? item : camelCase(item)\n\n if (this.#options.casing === 'camelcase') {\n param = camelCase(param)\n }\n\n const key = replacer ? replacer(param) : param\n\n params[key] = key\n }, this.path)\n\n return params\n }\n\n /**\n * Convert Swagger path to URLPath(syntax of Express)\n * @example /pet/{petId} => /pet/:petId\n */\n toURLPath(): string {\n return this.path.replaceAll('{', ':').replaceAll('}', '')\n }\n}\n","import path from 'node:path'\nimport type { KubbFile } from '../fs/index.ts'\n\nimport { getRelativePath } from '../fs/index.ts'\nimport hash from 'object-hash'\nimport { combineExports, combineImports, combineSources } from '../FileManager.ts'\nimport type { Logger } from '../logger.ts'\nimport type { Config } from '../types.ts'\n\n/**\n * Generate a default banner for files created by Kubb\n * @returns A string with the default banner\n */\nexport function getDefaultBanner({ title, description, version, config }: { title?: string; description?: string; version?: string; config: Config }): string {\n try {\n let source = ''\n if ('path' in config.input) {\n source = path.basename(config.input.path)\n } else if ('data' in config.input) {\n source = 'text content'\n }\n\n let banner = '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n'\n\n if (config.output.defaultBanner === 'simple') {\n banner += '*/\\n'\n return banner\n }\n\n if (source) {\n banner += `* Source: ${source}\\n`\n }\n\n if (title) {\n banner += `* Title: ${title}\\n`\n }\n\n if (description) {\n const formattedDescription = description.replace(/\\n/gm, '\\n* ')\n banner += `* Description: ${formattedDescription}\\n`\n }\n\n if (version) {\n banner += `* OpenAPI spec version: ${version}\\n`\n }\n\n banner += '*/\\n'\n return banner\n } catch (_error) {\n // If there's any error in parsing the Oas data, return a simpler banner\n return '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n*/'\n }\n}\n\n/**\n * Helper to create a file with name and id set\n */\nexport function createFile<TMeta extends object = object>(file: KubbFile.File<TMeta>): KubbFile.ResolvedFile<TMeta> {\n const extname = path.extname(file.baseName) as KubbFile.Extname\n\n if (!extname) {\n throw new Error(`No extname found for ${file.baseName}`)\n }\n\n const source = file.sources.map((item) => item.value).join('\\n\\n')\n const exports = file.exports ? combineExports(file.exports) : []\n const imports = file.imports && source ? combineImports(file.imports, exports, source) : []\n const sources = file.sources ? combineSources(file.sources) : []\n\n return {\n ...file,\n id: hash({ path: file.path }),\n name: trimExtName(file.baseName),\n extname,\n imports: imports.map((item) => createFileImport(item)),\n exports: exports.map((item) => createFileExport(item)),\n sources: sources.map((item) => createFileSource(item)),\n meta: file.meta || ({} as TMeta),\n }\n}\n\n/**\n * Helper to create a fileImport with extname set\n */\nfunction createFileSource(source: KubbFile.Source): KubbFile.Source {\n return source\n}\n\n/**\n * Helper to create a fileImport with extname set\n */\nexport function createFileImport(imp: KubbFile.Import): KubbFile.ResolvedImport {\n return {\n ...imp,\n }\n}\n\n/**\n * Helper to create a fileExport with extname set\n */\nexport function createFileExport(exp: KubbFile.Export): KubbFile.ResolvedExport {\n return {\n ...exp,\n }\n}\n\nexport type ParserModule<TMeta extends object = object> = {\n format: (source: string) => Promise<string>\n /**\n * Convert a file to string\n */\n print: (file: KubbFile.ResolvedFile<TMeta>, options: PrintOptions) => Promise<string>\n}\n\nexport function createFileParser<TMeta extends object = object>(parser: ParserModule<TMeta>): ParserModule<TMeta> {\n return parser\n}\n\ntype PrintOptions = {\n extname?: KubbFile.Extname\n logger?: Logger\n}\n\nconst typeScriptParser = createFileParser({\n async format(source) {\n const module = await import('@kubb/parser-ts')\n\n return module.format(source)\n },\n async print(file, options = { extname: '.ts' }) {\n const module = await import('@kubb/parser-ts')\n\n const source = file.sources.map((item) => item.value).join('\\n\\n')\n\n const importNodes = file.imports\n .map((item) => {\n const importPath = item.root ? getRelativePath(item.root, item.path) : item.path\n const hasExtname = !!path.extname(importPath)\n\n return module.factory.createImportDeclaration({\n name: item.name,\n path: options.extname && hasExtname ? `${trimExtName(importPath)}${options.extname}` : item.root ? trimExtName(importPath) : importPath,\n isTypeOnly: item.isTypeOnly,\n })\n })\n .filter(Boolean)\n\n const exportNodes = file.exports\n .map((item) => {\n const exportPath = item.path\n\n const hasExtname = !!path.extname(exportPath)\n\n return module.factory.createExportDeclaration({\n name: item.name,\n path: options.extname && hasExtname ? `${trimExtName(item.path)}${options.extname}` : trimExtName(item.path),\n isTypeOnly: item.isTypeOnly,\n asAlias: item.asAlias,\n })\n })\n .filter(Boolean)\n\n return [file.banner, module.print([...importNodes, ...exportNodes]), source, file.footer].join('\\n')\n },\n})\n\nconst tsxParser = createFileParser({\n async format(source) {\n const module = await import('@kubb/parser-ts')\n //4 = tsx\n return module.format(source)\n },\n async print(file, options = { extname: '.tsx' }) {\n return typeScriptParser.print(file, options)\n },\n})\n\nconst defaultParser = createFileParser({\n async format(source) {\n return source\n },\n async print(file) {\n return file.sources.map((item) => item.value).join('\\n\\n')\n },\n})\n\nconst parsers: Record<KubbFile.Extname, ParserModule<any>> = {\n '.ts': typeScriptParser,\n '.js': typeScriptParser,\n '.jsx': tsxParser,\n '.tsx': tsxParser,\n '.json': defaultParser,\n}\n\nexport async function getFileParser<TMeta extends object = object>(extname: KubbFile.Extname | undefined): Promise<ParserModule<TMeta>> {\n if (!extname) {\n return defaultParser\n }\n\n const parser = parsers[extname]\n\n if (!parser) {\n console.warn(`[parser] No parser found for ${extname}, default parser will be used`)\n }\n\n return parser || defaultParser\n}\n\nfunction trimExtName(text: string): string {\n const extname = text.split('.').pop()\n\n return text.replace(`.${extname}`, '')\n}\n","import { extname, join, relative } from 'node:path'\n\nimport { orderBy } from 'natural-orderby'\nimport PQueue from 'p-queue'\nimport { isDeepEqual, uniqueBy } from 'remeda'\nimport { BarrelManager } from './BarrelManager.ts'\n\nimport type { KubbFile } from './fs/index.ts'\nimport { read, trimExtName, write } from './fs/index.ts'\nimport type { ResolvedFile } from './fs/types.ts'\nimport type { Logger } from './logger.ts'\nimport type { BarrelType, Config, Plugin } from './types.ts'\nimport { createFile, getFileParser } from './utils'\nimport { buildDirectoryTree, type DirectoryTree, TreeNode } from './utils/TreeNode.ts'\nimport type { GreaterThan } from './utils/types.ts'\n\nexport type FileMetaBase = {\n pluginKey?: Plugin['key']\n}\n\ntype AddResult<T extends Array<KubbFile.File>> = Promise<Awaited<GreaterThan<T['length'], 1> extends true ? Promise<ResolvedFile[]> : Promise<ResolvedFile>>>\n\ntype AddIndexesProps = {\n type: BarrelType | false | undefined\n /**\n * Root based on root and output.path specified in the config\n */\n root: string\n files: KubbFile.File[]\n /**\n * Output for plugin\n */\n output: {\n path: string\n }\n group?: {\n output: string\n exportAs: string\n }\n logger?: Logger\n\n meta?: FileMetaBase\n}\n\nexport class FileManager {\n #filesByPath: Map<KubbFile.Path, KubbFile.ResolvedFile> = new Map()\n constructor() {\n return this\n }\n\n get files(): Array<KubbFile.ResolvedFile> {\n return [...this.#filesByPath.values()]\n }\n\n get orderedFiles(): Array<KubbFile.ResolvedFile> {\n return orderBy(\n [...this.#filesByPath.values()],\n [\n (v) => v?.meta && 'pluginKey' in v.meta && !v.meta.pluginKey,\n (v) => v.path.length,\n (v) => trimExtName(v.path).endsWith('index'),\n (v) => trimExtName(v.baseName),\n (v) => v.path.split('.').pop(),\n ],\n )\n }\n\n get groupedFiles(): DirectoryTree | null {\n return buildDirectoryTree([...this.#filesByPath.values()])\n }\n\n get treeNode(): TreeNode | null {\n return TreeNode.build([...this.#filesByPath.values()])\n }\n\n async add<T extends Array<KubbFile.File> = Array<KubbFile.File>>(...files: T): AddResult<T> {\n const promises = files.map((file) => {\n if (file.override) {\n return this.#add(file)\n }\n\n return this.#addOrAppend(file)\n })\n\n const resolvedFiles = await Promise.all(promises)\n\n if (files.length > 1) {\n return resolvedFiles as unknown as AddResult<T>\n }\n\n return resolvedFiles[0] as unknown as AddResult<T>\n }\n\n async #add(file: KubbFile.File): Promise<ResolvedFile> {\n const resolvedFile = createFile(file)\n\n this.#filesByPath.set(resolvedFile.path, resolvedFile)\n\n return resolvedFile\n }\n\n clear() {\n this.#filesByPath.clear()\n }\n\n async #addOrAppend(file: KubbFile.File): Promise<ResolvedFile> {\n const previousFile = this.#filesByPath.get(file.path)\n\n if (previousFile) {\n this.#filesByPath.delete(previousFile.path)\n\n return this.#add(mergeFile(previousFile, file))\n }\n return this.#add(file)\n }\n\n getCacheById(id: string): KubbFile.File | undefined {\n return [...this.#filesByPath.values()].find((file) => file.id === id)\n }\n\n getByPath(path: KubbFile.Path): KubbFile.ResolvedFile | undefined {\n return this.#filesByPath.get(path)\n }\n\n deleteByPath(path: KubbFile.Path): void {\n const cacheItem = this.getByPath(path)\n if (!cacheItem) {\n return\n }\n\n this.#filesByPath.delete(path)\n }\n\n async getBarrelFiles({ type, files, meta = {}, root, output, logger }: AddIndexesProps): Promise<KubbFile.File[]> {\n if (!type || type === 'propagate') {\n return []\n }\n\n const barrelManager = new BarrelManager({ logger })\n\n const pathToBuildFrom = join(root, output.path)\n\n if (trimExtName(pathToBuildFrom).endsWith('index')) {\n logger?.emit('warning', 'Output has the same fileName as the barrelFiles, please disable barrel generation')\n\n return []\n }\n\n const barrelFiles = barrelManager.getFiles({ files, root: pathToBuildFrom, meta })\n\n if (type === 'all') {\n return barrelFiles.map((file) => {\n return {\n ...file,\n exports: file.exports?.map((exportItem) => {\n return {\n ...exportItem,\n name: undefined,\n }\n }),\n }\n })\n }\n\n return barrelFiles.map((indexFile) => {\n return {\n ...indexFile,\n meta,\n }\n })\n }\n\n async write(...params: Parameters<typeof write>): ReturnType<typeof write> {\n return write(...params)\n }\n\n async read(...params: Parameters<typeof read>): ReturnType<typeof read> {\n return read(...params)\n }\n\n // statics\n static getMode(path: string | undefined | null): KubbFile.Mode {\n if (!path) {\n return 'split'\n }\n return extname(path) ? 'single' : 'split'\n }\n}\n\ntype GetSourceOptions = {\n extname?: KubbFile.Extname\n logger?: Logger\n}\n\nexport async function getSource<TMeta extends FileMetaBase = FileMetaBase>(\n file: ResolvedFile<TMeta>,\n { logger, extname }: GetSourceOptions = {},\n): Promise<string> {\n const parser = await getFileParser(file.extname)\n const source = await parser.print(file, { logger, extname })\n\n return parser.format(source).catch((err) => {\n console.warn(err)\n return source\n })\n}\n\nfunction mergeFile<TMeta extends FileMetaBase = FileMetaBase>(a: KubbFile.File<TMeta>, b: KubbFile.File<TMeta>): KubbFile.File<TMeta> {\n return {\n ...a,\n sources: [...(a.sources || []), ...(b.sources || [])],\n imports: [...(a.imports || []), ...(b.imports || [])],\n exports: [...(a.exports || []), ...(b.exports || [])],\n }\n}\n\nexport function combineSources(sources: Array<KubbFile.Source>): Array<KubbFile.Source> {\n return uniqueBy(sources, (obj) => [obj.name, obj.isExportable, obj.isTypeOnly] as const)\n}\n\nexport function combineExports(exports: Array<KubbFile.Export>): Array<KubbFile.Export> {\n return orderBy(exports, [\n (v) => !!Array.isArray(v.name),\n (v) => !v.isTypeOnly,\n (v) => v.path,\n (v) => !!v.name,\n (v) => (Array.isArray(v.name) ? orderBy(v.name) : v.name),\n ]).reduce(\n (prev, curr) => {\n const name = curr.name\n const prevByPath = prev.findLast((imp) => imp.path === curr.path)\n const prevByPathAndIsTypeOnly = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly)\n\n if (prevByPathAndIsTypeOnly) {\n // we already have an export that has the same path but uses `isTypeOnly` (export type ...)\n return prev\n }\n\n const uniquePrev = prev.findLast(\n (imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly && imp.asAlias === curr.asAlias,\n )\n\n // we already have an item that was unique enough or name field is empty or prev asAlias is set but current has no changes\n if (uniquePrev || (Array.isArray(name) && !name.length) || (prevByPath?.asAlias && !curr.asAlias)) {\n return prev\n }\n\n if (!prevByPath) {\n return [\n ...prev,\n {\n ...curr,\n name: Array.isArray(name) ? [...new Set(name)] : name,\n },\n ]\n }\n\n // merge all names when prev and current both have the same isTypeOnly set\n if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(curr.name) && prevByPath.isTypeOnly === curr.isTypeOnly) {\n prevByPath.name = [...new Set([...prevByPath.name, ...curr.name])]\n\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Export>,\n )\n}\n\nexport function combineImports(imports: Array<KubbFile.Import>, exports: Array<KubbFile.Export>, source?: string): Array<KubbFile.Import> {\n return orderBy(imports, [\n (v) => !!Array.isArray(v.name),\n (v) => !v.isTypeOnly,\n (v) => v.path,\n (v) => !!v.name,\n (v) => (Array.isArray(v.name) ? orderBy(v.name) : v.name),\n ]).reduce(\n (prev, curr) => {\n let name = Array.isArray(curr.name) ? [...new Set(curr.name)] : curr.name\n\n const hasImportInSource = (importName: string) => {\n if (!source) {\n return true\n }\n\n const checker = (name?: string) => {\n return name && !!source.includes(name)\n }\n\n return checker(importName) || exports.some(({ name }) => (Array.isArray(name) ? name.some(checker) : checker(name)))\n }\n\n if (curr.path === curr.root) {\n // root and path are the same file, remove the \"./\" import\n return prev\n }\n\n // merge all names and check if the importName is being used in the generated source and if not filter those imports out\n if (Array.isArray(name)) {\n name = name.filter((item) => (typeof item === 'string' ? hasImportInSource(item) : hasImportInSource(item.propertyName)))\n }\n\n const prevByPath = prev.findLast((imp) => imp.path === curr.path && imp.isTypeOnly === curr.isTypeOnly)\n const uniquePrev = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly)\n const prevByPathNameAndIsTypeOnly = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly)\n\n if (prevByPathNameAndIsTypeOnly) {\n // we already have an export that has the same path but uses `isTypeOnly` (import type ...)\n return prev\n }\n\n // already unique enough or name is empty\n if (uniquePrev || (Array.isArray(name) && !name.length)) {\n return prev\n }\n\n // new item, append name\n if (!prevByPath) {\n return [\n ...prev,\n {\n ...curr,\n name,\n },\n ]\n }\n\n // merge all names when prev and current both have the same isTypeOnly set\n if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(name) && prevByPath.isTypeOnly === curr.isTypeOnly) {\n prevByPath.name = [...new Set([...prevByPath.name, ...name])]\n\n return prev\n }\n\n // no import was found in the source, ignore import\n if (!Array.isArray(name) && name && !hasImportInSource(name)) {\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Import>,\n )\n}\n\ntype WriteFilesProps = {\n root: Config['root']\n files: Array<KubbFile.ResolvedFile>\n extension?: Record<KubbFile.Extname, KubbFile.Extname | ''>\n logger?: Logger\n dryRun?: boolean\n}\n/**\n * Global queue\n */\nconst queue = new PQueue({ concurrency: 100 })\n\nexport async function processFiles({ dryRun, root, extension, logger, files }: WriteFilesProps) {\n const orderedFiles = orderBy(files, [\n (v) => v?.meta && 'pluginKey' in v.meta && !v.meta.pluginKey,\n (v) => v.path.length,\n (v) => trimExtName(v.path).endsWith('index'),\n ])\n\n logger?.emit('debug', {\n date: new Date(),\n logs: [JSON.stringify({ files: orderedFiles }, null, 2)],\n fileName: 'kubb-files.log',\n })\n\n if (!dryRun) {\n const size = orderedFiles.length\n\n logger?.emit('progress_start', { id: 'files', size, message: 'Writing files ...' })\n const promises = orderedFiles.map(async (file) => {\n await queue.add(async () => {\n const message = file ? `Writing ${relative(root, file.path)}` : ''\n const extname = extension?.[file.extname] || undefined\n\n const source = await getSource(file, { logger, extname })\n\n await write(file.path, source, { sanity: false })\n\n logger?.emit('progressed', { id: 'files', message })\n })\n })\n\n await Promise.all(promises)\n\n logger?.emit('progress_stop', { id: 'files' })\n }\n\n return files\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // In case `id` is not defined.\n options.id ??= (this.#idAssigner++).toString();\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tconst abortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\n\t\t\tpromise.finally(() => {\n\t\t\t\tsignal.removeEventListener('abort', abortHandler);\n\t\t\t});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n id: options.id,\n run,\n };\n if (this.size === 0 || this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n const index = this.#queue.findIndex((element) => element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import { join } from 'node:path'\nimport type { FileMetaBase } from './FileManager.ts'\nimport type { KubbFile } from './fs/index.ts'\nimport { getRelativePath } from './fs/index.ts'\nimport type { Logger } from './logger.ts'\nimport { TreeNode } from './utils/TreeNode.ts'\n\ntype BarrelManagerOptions = {\n logger?: Logger\n}\n\nexport class BarrelManager {\n #options: BarrelManagerOptions\n\n constructor(options: BarrelManagerOptions = {}) {\n this.#options = options\n\n return this\n }\n\n getFiles({ files: generatedFiles, root, meta }: { files: KubbFile.File[]; root?: string; meta?: FileMetaBase | undefined }): Array<KubbFile.File> {\n const { logger } = this.#options\n\n const cachedFiles = new Map<KubbFile.Path, KubbFile.File>()\n\n logger?.emit('debug', { date: new Date(), logs: [`Start barrel generation for pluginKey ${meta?.pluginKey?.join('.')} and root '${root}'`] })\n\n TreeNode.build(generatedFiles, root)?.forEach((treeNode) => {\n if (!treeNode || !treeNode.children || !treeNode.parent?.data.path) {\n return undefined\n }\n\n const barrelFile: KubbFile.File = {\n path: join(treeNode.parent?.data.path, 'index.ts') as KubbFile.Path,\n baseName: 'index.ts',\n exports: [],\n sources: [],\n }\n const previousBarrelFile = cachedFiles.get(barrelFile.path)\n const leaves = treeNode.leaves\n\n leaves.forEach((item) => {\n if (!item.data.name) {\n return undefined\n }\n\n const sources = item.data.file?.sources || []\n\n if (!sources.some((source) => source.isIndexable)) {\n logger?.emit(\n 'warning',\n `No isIndexable source found(source should have a name and isIndexable):\\nFile: ${JSON.stringify(item.data.file, undefined, 2)}`,\n )\n }\n\n sources.forEach((source) => {\n if (!item.data.file?.path || !source.isIndexable || !source.name) {\n return undefined\n }\n const alreadyContainInPreviousBarrelFile = previousBarrelFile?.sources.some(\n (item) => item.name === source.name && item.isTypeOnly === source.isTypeOnly,\n )\n\n if (alreadyContainInPreviousBarrelFile) {\n return undefined\n }\n\n if (!barrelFile.exports) {\n barrelFile.exports = []\n }\n\n // true when we have a subdirectory that also contains barrel files\n const isSubExport = !!treeNode.parent?.data.path?.split?.('/')?.length\n\n if (isSubExport) {\n barrelFile.exports.push({\n name: [source.name],\n path: getRelativePath(treeNode.parent?.data.path, item.data.path),\n isTypeOnly: source.isTypeOnly,\n })\n } else {\n barrelFile.exports.push({\n name: [source.name],\n path: `./${item.data.file.baseName}`,\n isTypeOnly: source.isTypeOnly,\n })\n }\n\n barrelFile.sources.push({\n name: source.name,\n isTypeOnly: source.isTypeOnly,\n //TODO use parser to generate import\n value: '',\n isExportable: false,\n isIndexable: false,\n })\n })\n })\n\n logger?.emit('debug', {\n date: new Date(),\n logs: [\n `Generating barrelFile '${getRelativePath(root, barrelFile.path)}' for '${getRelativePath(root, treeNode.data?.path)}' with ${barrelFile.sources.length} indexable exports: '${barrelFile.sources?.map((source) => source.name).join(', ')}'`,\n ],\n })\n\n logger?.emit('debug', {\n date: new Date(),\n logs: [\n `Generated barrelFile '${getRelativePath(root, barrelFile.path)}' for '${getRelativePath(root, treeNode.data?.path)}' with exports: '${cachedFiles\n .get(barrelFile.path)\n ?.sources?.map((source) => source.name)\n .join(', ')}'`,\n ],\n })\n\n if (previousBarrelFile) {\n previousBarrelFile.sources.push(...barrelFile.sources)\n previousBarrelFile.exports?.push(...(barrelFile.exports || []))\n } else {\n cachedFiles.set(barrelFile.path, barrelFile)\n }\n })\n\n return [...cachedFiles.values()]\n }\n}\n","import { FileManager } from '../FileManager.ts'\nimport type { KubbFile } from '../fs/index.ts'\n\ntype BarrelData = {\n file?: KubbFile.File\n /**\n * @deprecated use file instead\n */\n type: KubbFile.Mode\n path: string\n name: string\n}\n\nexport class TreeNode {\n data: BarrelData\n parent?: TreeNode\n children: Array<TreeNode> = []\n #cachedLeaves?: Array<TreeNode> = undefined\n\n constructor(data: BarrelData, parent?: TreeNode) {\n this.data = data\n this.parent = parent\n return this\n }\n\n addChild(data: BarrelData): TreeNode {\n const child = new TreeNode(data, this)\n if (!this.children) {\n this.children = []\n }\n this.children.push(child)\n return child\n }\n\n get root(): TreeNode {\n if (!this.parent) {\n return this\n }\n return this.parent.root\n }\n\n get leaves(): Array<TreeNode> {\n if (!this.children || this.children.length === 0) {\n // this is a leaf\n return [this]\n }\n\n if (this.#cachedLeaves) {\n return this.#cachedLeaves\n }\n\n // if not a leaf, return all children's leaves recursively\n const leaves: TreeNode[] = []\n if (this.children) {\n for (let i = 0, { length } = this.children; i < length; i++) {\n leaves.push.apply(leaves, this.children[i]!.leaves)\n }\n }\n\n this.#cachedLeaves = leaves\n\n return leaves\n }\n\n forEach(callback: (treeNode: TreeNode) => void): this {\n if (typeof callback !== 'function') {\n throw new TypeError('forEach() callback must be a function')\n }\n\n // run this node through function\n callback(this)\n\n // do the same for all children\n if (this.children) {\n for (let i = 0, { length } = this.children; i < length; i++) {\n this.children[i]?.forEach(callback)\n }\n }\n\n return this\n }\n\n findDeep(predicate?: (value: TreeNode, index: number, obj: TreeNode[]) => boolean): TreeNode | undefined {\n if (typeof predicate !== 'function') {\n throw new TypeError('find() predicate must be a function')\n }\n\n return this.leaves.find(predicate)\n }\n\n forEachDeep(callback: (treeNode: TreeNode) => void): void {\n if (typeof callback !== 'function') {\n throw new TypeError('forEach() callback must be a function')\n }\n\n this.leaves.forEach(callback)\n }\n\n filterDeep(callback: (treeNode: TreeNode) => boolean): Array<TreeNode> {\n if (typeof callback !== 'function') {\n throw new TypeError('filter() callback must be a function')\n }\n\n return this.leaves.filter(callback)\n }\n\n mapDeep<T>(callback: (treeNode: TreeNode) => T): Array<T> {\n if (typeof callback !== 'function') {\n throw new TypeError('map() callback must be a function')\n }\n\n return this.leaves.map(callback)\n }\n\n public static build(files: KubbFile.File[], root?: string): TreeNode | null {\n try {\n const filteredTree = buildDirectoryTree(files, root)\n\n if (!filteredTree) {\n return null\n }\n\n const treeNode = new TreeNode({\n name: filteredTree.name,\n path: filteredTree.path,\n file: filteredTree.file,\n type: FileManager.getMode(filteredTree.path),\n })\n\n const recurse = (node: typeof treeNode, item: DirectoryTree) => {\n const subNode = node.addChild({\n name: item.name,\n path: item.path,\n file: item.file,\n type: FileManager.getMode(item.path),\n })\n\n if (item.children?.length) {\n item.children?.forEach((child) => {\n recurse(subNode, child)\n })\n }\n }\n\n filteredTree.children?.forEach((child) => recurse(treeNode, child))\n\n return treeNode\n } catch (e) {\n throw new Error('Something went wrong with creating barrel files with the TreeNode class', { cause: e })\n }\n }\n}\n\nexport type DirectoryTree = {\n name: string\n path: string\n file?: KubbFile.File\n children: Array<DirectoryTree>\n}\n\nconst normalizePath = (p: string): string => p.replace(/\\\\/g, '/')\n\nexport function buildDirectoryTree(files: Array<KubbFile.File>, rootFolder = ''): DirectoryTree | null {\n const normalizedRootFolder = normalizePath(rootFolder)\n const rootPrefix = normalizedRootFolder.endsWith('/') ? normalizedRootFolder : `${normalizedRootFolder}/`\n\n const filteredFiles = files.filter((file) => {\n const normalizedFilePath = normalizePath(file.path)\n return rootFolder ? normalizedFilePath.startsWith(rootPrefix) && !normalizedFilePath.endsWith('.json') : !normalizedFilePath.endsWith('.json')\n })\n\n if (filteredFiles.length === 0) {\n return null // No files match the root folder\n }\n\n const root: DirectoryTree = {\n name: rootFolder || '',\n path: rootFolder || '',\n children: [],\n }\n\n filteredFiles.forEach((file) => {\n const path = file.path.slice(rootFolder.length)\n const parts = path.split('/')\n let currentLevel: DirectoryTree[] = root.children\n let currentPath = rootFolder\n\n parts.forEach((part, index) => {\n if (index !== 0) {\n currentPath += `/${part}`\n } else {\n currentPath += `${part}`\n }\n\n let existingNode = currentLevel.find((node) => node.name === part)\n\n if (!existingNode) {\n if (index === parts.length - 1) {\n // If it's the last part, it's a file\n existingNode = {\n name: part,\n file,\n path: currentPath,\n } as DirectoryTree\n } else {\n // Otherwise, it's a folder\n existingNode = {\n name: part,\n path: currentPath,\n children: [],\n } as DirectoryTree\n }\n currentLevel.push(existingNode)\n }\n\n // Move to the next level if it's a folder\n if (!existingNode.file) {\n currentLevel = existingNode.children\n }\n })\n })\n\n return root\n}\n"]}
|
|
@@ -29,14 +29,14 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
29
29
|
mod
|
|
30
30
|
));
|
|
31
31
|
|
|
32
|
-
// ../../node_modules/.pnpm/tsup@8.5.0_@microsoft+api-extractor@7.52.8_@types+node@20.19.
|
|
32
|
+
// ../../node_modules/.pnpm/tsup@8.5.0_@microsoft+api-extractor@7.52.8_@types+node@20.19.4__jiti@2.4.2_postcss@8.5.6_typescript@5.8.3_yaml@2.7.1/node_modules/tsup/assets/cjs_shims.js
|
|
33
33
|
var init_cjs_shims = __esm({
|
|
34
|
-
"../../node_modules/.pnpm/tsup@8.5.0_@microsoft+api-extractor@7.52.8_@types+node@20.19.
|
|
34
|
+
"../../node_modules/.pnpm/tsup@8.5.0_@microsoft+api-extractor@7.52.8_@types+node@20.19.4__jiti@2.4.2_postcss@8.5.6_typescript@5.8.3_yaml@2.7.1/node_modules/tsup/assets/cjs_shims.js"() {
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
exports.__commonJS = __commonJS;
|
|
39
39
|
exports.__toESM = __toESM;
|
|
40
40
|
exports.init_cjs_shims = init_cjs_shims;
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-XYYJ47OY.cjs.map
|
|
42
|
+
//# sourceMappingURL=chunk-XYYJ47OY.cjs.map
|