@activepieces/piece-csv 0.4.13 → 0.4.14
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/package.json +15 -15
- package/src/index.d.ts +1 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +3 -2
- package/src/index.js.map +1 -1
- package/src/lib/actions/convert-csv-to-json.d.ts +1 -0
- package/src/lib/actions/convert-csv-to-json.d.ts.map +1 -0
- package/src/lib/actions/convert-csv-to-json.js.map +1 -1
- package/src/lib/actions/convert-excel-to-csv.d.ts +6 -0
- package/src/lib/actions/convert-excel-to-csv.d.ts.map +1 -0
- package/src/lib/actions/convert-excel-to-csv.js +67 -0
- package/src/lib/actions/convert-excel-to-csv.js.map +1 -0
- package/src/lib/actions/convert-json-to-csv.d.ts +2 -1
- package/src/lib/actions/convert-json-to-csv.d.ts.map +1 -0
- package/src/lib/actions/convert-json-to-csv.js.map +1 -1
- package/README.md +0 -7
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@activepieces/piece-csv",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.14",
|
|
4
|
+
"main": "./src/index.js",
|
|
5
|
+
"types": "./src/index.d.ts",
|
|
4
6
|
"dependencies": {
|
|
5
|
-
"@
|
|
6
|
-
"
|
|
7
|
+
"@activepieces/pieces-common": "0.12.3",
|
|
8
|
+
"@activepieces/pieces-framework": "0.29.1",
|
|
9
|
+
"@activepieces/shared": "0.85.0",
|
|
7
10
|
"csv-parse": "5.6.0",
|
|
8
11
|
"csv-stringify": "6.5.2",
|
|
9
|
-
"deepmerge-ts": "7.1.0",
|
|
10
|
-
"nanoid": "3.3.8",
|
|
11
12
|
"safe-flat": "2.1.0",
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"@activepieces/pieces-framework": "0.25.4",
|
|
15
|
-
"@activepieces/shared": "0.37.0",
|
|
16
|
-
"tslib": "2.6.2"
|
|
13
|
+
"tslib": "2.6.2",
|
|
14
|
+
"xlsx": "0.18.5"
|
|
17
15
|
},
|
|
18
|
-
"
|
|
19
|
-
"
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc -p tsconfig.lib.json && cp package.json dist/",
|
|
18
|
+
"lint": "eslint 'src/**/*.ts'",
|
|
19
|
+
"test": "vitest run"
|
|
20
20
|
},
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"vitest": "3.0.8"
|
|
23
|
+
}
|
|
24
24
|
}
|
package/src/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,GAAG,2DAUd,CAAC"}
|
package/src/index.js
CHANGED
|
@@ -5,6 +5,7 @@ const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
|
5
5
|
const shared_1 = require("@activepieces/shared");
|
|
6
6
|
const convert_csv_to_json_1 = require("./lib/actions/convert-csv-to-json");
|
|
7
7
|
const convert_json_to_csv_1 = require("./lib/actions/convert-json-to-csv");
|
|
8
|
+
const convert_excel_to_csv_1 = require("./lib/actions/convert-excel-to-csv");
|
|
8
9
|
exports.csv = (0, pieces_framework_1.createPiece)({
|
|
9
10
|
displayName: 'CSV',
|
|
10
11
|
description: 'Manipulate CSV text',
|
|
@@ -12,8 +13,8 @@ exports.csv = (0, pieces_framework_1.createPiece)({
|
|
|
12
13
|
logoUrl: 'https://cdn.activepieces.com/pieces/new-core/csv.svg',
|
|
13
14
|
auth: pieces_framework_1.PieceAuth.None(),
|
|
14
15
|
categories: [shared_1.PieceCategory.CORE],
|
|
15
|
-
actions: [convert_csv_to_json_1.csvToJsonAction, convert_json_to_csv_1.jsonToCsvAction],
|
|
16
|
-
authors: ["kishanprmr", "MoShizzle", "khaledmashaly", "abuaboud"],
|
|
16
|
+
actions: [convert_csv_to_json_1.csvToJsonAction, convert_json_to_csv_1.jsonToCsvAction, convert_excel_to_csv_1.excelToCsvAction],
|
|
17
|
+
authors: ["kishanprmr", "MoShizzle", "khaledmashaly", "abuaboud", 'sanket-a11y'],
|
|
17
18
|
triggers: [],
|
|
18
19
|
});
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,iDAAqD;AACrD,2EAAoE;AACpE,2EAAoE;AACpE,6EAAsE;AAEzD,QAAA,GAAG,GAAG,IAAA,8BAAW,EAAC;IAC7B,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,qBAAqB;IAClC,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,sDAAsD;IAC/D,IAAI,EAAE,4BAAS,CAAC,IAAI,EAAE;IACtB,UAAU,EAAE,CAAC,sBAAa,CAAC,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,qCAAe,EAAE,qCAAe,EAAE,uCAAgB,CAAC;IAC7D,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,CAAC;IAChF,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
|
|
@@ -3,3 +3,4 @@ export declare const csvToJsonAction: import("@activepieces/pieces-framework").I
|
|
|
3
3
|
has_headers: import("@activepieces/pieces-framework").CheckboxProperty<true>;
|
|
4
4
|
delimiter_type: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
5
5
|
}>;
|
|
6
|
+
//# sourceMappingURL=convert-csv-to-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-csv-to-json.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/convert-csv-to-json.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;EAgD1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-csv-to-json.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"convert-csv-to-json.js","sourceRoot":"","sources":["../../../../src/lib/actions/convert-csv-to-json.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,iDAAgD;AAChD,yCAAqC;AAExB,QAAA,eAAe,GAAG,IAAA,+BAAY,EAAC;IAC1C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qBAAqB;IAClC,WAAW,EACT,0EAA0E;IAC5E,oBAAoB,EAAE;QACpB,iBAAiB,EAAE;YACjB,IAAI,EAAE,IAAI;SACX;QACD,cAAc,EAAE;YACd,IAAI,EAAE,IAAI;SACX;KACF;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAC7B,WAAW,EAAE,4BAA4B;YACzC,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,cAAc,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACtC,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,6CAA6C;YAC1D,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC9B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC9B;aACF;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACrE,IAAI,CAAC,IAAA,iBAAQ,EAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC7B,OAAO,EAAE,+BAA+B;iBACzC,CAAC,CAAC,CAAA;YACL,CAAC;YAED,MAAM,OAAO,GAAG,IAAA,YAAK,EAAC,QAAQ,EAAC,EAAC,SAAS,EAAE,cAAc,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,CAAC;YAChG,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const excelToCsvAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
|
|
2
|
+
file: import("@activepieces/pieces-framework").FileProperty<true>;
|
|
3
|
+
sheet_name: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
4
|
+
delimiter_type: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
5
|
+
}>;
|
|
6
|
+
//# sourceMappingURL=convert-excel-to-csv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-excel-to-csv.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/convert-excel-to-csv.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB;;;;EAoE3B,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.excelToCsvAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const XLSX = tslib_1.__importStar(require("xlsx"));
|
|
7
|
+
exports.excelToCsvAction = (0, pieces_framework_1.createAction)({
|
|
8
|
+
name: 'convert_excel_to_csv',
|
|
9
|
+
displayName: 'Convert Excel to CSV',
|
|
10
|
+
description: 'Converts an Excel file (.xlsx or .xls) into CSV text.',
|
|
11
|
+
errorHandlingOptions: {
|
|
12
|
+
continueOnFailure: { hide: true },
|
|
13
|
+
retryOnFailure: { hide: true },
|
|
14
|
+
},
|
|
15
|
+
props: {
|
|
16
|
+
file: pieces_framework_1.Property.File({
|
|
17
|
+
displayName: 'Excel File',
|
|
18
|
+
description: 'The Excel file (.xlsx or .xls) to convert to CSV.',
|
|
19
|
+
required: true,
|
|
20
|
+
}),
|
|
21
|
+
sheet_name: pieces_framework_1.Property.ShortText({
|
|
22
|
+
displayName: 'Sheet Name',
|
|
23
|
+
description: 'Name of the sheet to convert. Leave blank to use the first sheet.',
|
|
24
|
+
required: false,
|
|
25
|
+
}),
|
|
26
|
+
delimiter_type: pieces_framework_1.Property.StaticDropdown({
|
|
27
|
+
displayName: 'Delimiter',
|
|
28
|
+
description: 'Character used to separate values in the output CSV.',
|
|
29
|
+
defaultValue: ',',
|
|
30
|
+
required: true,
|
|
31
|
+
options: {
|
|
32
|
+
options: [
|
|
33
|
+
{ label: 'Comma (,)', value: ',' },
|
|
34
|
+
{ label: 'Tab', value: '\t' },
|
|
35
|
+
{ label: 'Semicolon (;)', value: ';' },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
}),
|
|
39
|
+
},
|
|
40
|
+
run(context) {
|
|
41
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const { file, sheet_name, delimiter_type } = context.propsValue;
|
|
43
|
+
const buffer = Buffer.from(file.base64, 'base64');
|
|
44
|
+
// XLSX (ZIP) starts with PK\x03\x04; XLS (OLE2) starts with \xD0\xCF\x11\xE0.
|
|
45
|
+
// Anything else (HTML, PDF, …) is rejected with a clear message.
|
|
46
|
+
const isXlsx = buffer[0] === 0x50 && buffer[1] === 0x4b;
|
|
47
|
+
const isXls = buffer[0] === 0xd0 && buffer[1] === 0xcf;
|
|
48
|
+
if (!isXlsx && !isXls) {
|
|
49
|
+
throw new Error('The file does not appear to be a valid Excel file (.xlsx or .xls). ' +
|
|
50
|
+
'If you supplied a URL, make sure it points directly to the file download, not a webpage.');
|
|
51
|
+
}
|
|
52
|
+
const workbook = XLSX.read(buffer, { type: 'buffer' });
|
|
53
|
+
const targetSheet = (sheet_name === null || sheet_name === void 0 ? void 0 : sheet_name.trim()) || workbook.SheetNames[0];
|
|
54
|
+
if (!workbook.SheetNames.includes(targetSheet)) {
|
|
55
|
+
throw new Error(`Sheet "${targetSheet}" not found. Available sheets: ${workbook.SheetNames.join(', ')}`);
|
|
56
|
+
}
|
|
57
|
+
const worksheet = workbook.Sheets[targetSheet];
|
|
58
|
+
const csv = XLSX.utils.sheet_to_csv(worksheet, { FS: delimiter_type });
|
|
59
|
+
return {
|
|
60
|
+
csv,
|
|
61
|
+
sheet_name: targetSheet,
|
|
62
|
+
available_sheets: workbook.SheetNames,
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=convert-excel-to-csv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-excel-to-csv.js","sourceRoot":"","sources":["../../../../src/lib/actions/convert-excel-to-csv.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,mDAA6B;AAEhB,QAAA,gBAAgB,GAAG,IAAA,+BAAY,EAAC;IAC3C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE,uDAAuD;IACpE,oBAAoB,EAAE;QACpB,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;QACjC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KAC/B;IACD,KAAK,EAAE;QACL,IAAI,EAAE,2BAAQ,CAAC,IAAI,CAAC;YAClB,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,mDAAmD;YAChE,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,mEAAmE;YAChF,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,cAAc,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACtC,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,sDAAsD;YACnE,YAAY,EAAE,GAAG;YACjB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;oBAClC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC7B,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE;iBACvC;aACF;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAElD,8EAA8E;YAC9E,iEAAiE;YACjE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;YACxD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;YACvD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACb,qEAAqE;oBACrE,0FAA0F,CAC3F,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEvD,MAAM,WAAW,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,EAAE,KAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAEjE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CACb,UAAU,WAAW,kCAAkC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YAEvE,OAAO;gBACL,GAAG;gBACH,UAAU,EAAE,WAAW;gBACvB,gBAAgB,EAAE,QAAQ,CAAC,UAAU;aACtC,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const jsonToCsvAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
|
|
2
|
-
markdown: import("
|
|
2
|
+
markdown: import("@activepieces/pieces-framework/dist/src/lib/property/input/markdown-property").MarkDownProperty;
|
|
3
3
|
json_array: import("@activepieces/pieces-framework").JsonProperty<true>;
|
|
4
4
|
delimiter_type: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
5
5
|
}>;
|
|
6
|
+
//# sourceMappingURL=convert-json-to-csv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-json-to-csv.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/convert-json-to-csv.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,eAAe;;;;EA+D1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-json-to-csv.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"convert-json-to-csv.js","sourceRoot":"","sources":["../../../../src/lib/actions/convert-json-to-csv.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,yCAAoC;AACpC,6CAA+C;AAE/C,MAAM,QAAQ,GAAG;;;;CAIhB,CAAA;AACY,QAAA,eAAe,GAAG,IAAA,+BAAY,EAAC;IAC1C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,mEAAmE;IAChF,oBAAoB,EAAE;QACpB,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;QACjC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KAC/B;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAC1B,KAAK,EAAE,QAAQ;SAChB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,IAAI,CAAC;YACxB,WAAW,EAAE,YAAY;YACzB,YAAY,EAAE;gBACZ;oBACE,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,EAAE;oBACP,OAAO,EAAE;wBACP,MAAM,EAAE,aAAa;wBACrB,IAAI,EAAE,aAAa;qBACpB;iBACF;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,EAAE;oBACP,OAAO,EAAE;wBACP,MAAM,EAAE,aAAa;wBACrB,IAAI,EAAE,aAAa;qBACpB;iBACF;aACF;YACD,WAAW,EACT,gDAAgD;YAClD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,cAAc,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACtC,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,6CAA6C;YAC1D,YAAY,EAAE,GAAG;YACjB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC9B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC9B;aACF;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC7B,OAAO,EAAE,mCAAmC;iBAC7C,CAAC,CAAC,CAAA;YACL,CAAC;YACD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAO,EAAC,IAAI,CAA2B,CAAC,CAAC;YAEpF,OAAO,IAAA,gBAAS,EAAC,SAAS,EAAE;gBAC1B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,cAAc;aAC1B,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC,CAAC"}
|