@auxee/piece-image-document-intelligence 0.0.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/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@auxee/piece-image-document-intelligence",
3
+ "version": "0.0.1",
4
+ "description": "Auxee custom image and document intelligence piece for extracting text and visual elements from images and documents using AI-driven OCR and image processing",
5
+ "type": "commonjs",
6
+ "main": "./src/index.js",
7
+ "types": "./src/index.d.ts",
8
+ "private": false,
9
+ "publishConfig": {
10
+ "access": "public",
11
+ "registry": "https://registry.npmjs.org/"
12
+ },
13
+ "dependencies": {
14
+ "@activepieces/pieces-common": "^0.30.0",
15
+ "@activepieces/shared": "^0.30.0",
16
+ "@sinclair/typebox": "0.34.11",
17
+ "axios": "1.8.3",
18
+ "axios-retry": "4.4.1",
19
+ "deepmerge-ts": "7.1.0",
20
+ "mime-types": "^2.1.35",
21
+ "nanoid": "3.3.8",
22
+ "semver": "7.6.0",
23
+ "socket.io-client": "4.8.1",
24
+ "tslib": "^2.6.2",
25
+ "zod": "3.25.76",
26
+ "@activepieces/pieces-framework": "0.20.2"
27
+ },
28
+ "resolutions": {
29
+ "rollup": "npm:@rollup/wasm-node"
30
+ }
31
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const imageDocumentIntelligence: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").PieceAuthProperty>;
package/src/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.imageDocumentIntelligence = void 0;
4
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
5
+ const shared_1 = require("@activepieces/shared");
6
+ const extract_text_from_image_1 = require("./lib/actions/extract-text-from-image");
7
+ exports.imageDocumentIntelligence = (0, pieces_framework_1.createPiece)({
8
+ displayName: 'Image & Document Intelligence',
9
+ description: 'Extract text and visual elements from images and documents using AI-driven OCR and image processing',
10
+ auth: pieces_framework_1.PieceAuth.None(),
11
+ minimumSupportedRelease: '0.9.0',
12
+ logoUrl: 'https://cdn.activepieces.com/pieces/document-intelligence.svg',
13
+ categories: [shared_1.PieceCategory.PRODUCTIVITY, shared_1.PieceCategory.ARTIFICIAL_INTELLIGENCE],
14
+ authors: ['auxee'],
15
+ actions: [extract_text_from_image_1.extractTextFromImage],
16
+ triggers: [],
17
+ });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/custom/image-document-intelligence/src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,iDAAqD;AACrD,mFAA6E;AAEhE,QAAA,yBAAyB,GAAG,IAAA,8BAAW,EAAC;IACnD,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,qGAAqG;IAClH,IAAI,EAAE,4BAAS,CAAC,IAAI,EAAE;IACtB,uBAAuB,EAAE,OAAO;IAChC,OAAO,EAAE,+DAA+D;IACxE,UAAU,EAAE,CAAC,sBAAa,CAAC,YAAY,EAAE,sBAAa,CAAC,uBAAuB,CAAC;IAC/E,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,8CAAoB,CAAC;IAC/B,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const extractTextFromImage: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
2
+ inputMethod: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
3
+ file: import("@activepieces/pieces-framework").FileProperty<false>;
4
+ fileUrl: import("@activepieces/pieces-framework").ShortTextProperty<false>;
5
+ outputFormat: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
6
+ languageHints: import("@activepieces/pieces-framework").ShortTextProperty<false>;
7
+ objectCategories: import("@activepieces/pieces-framework").ShortTextProperty<false>;
8
+ pageRange: import("@activepieces/pieces-framework").ShortTextProperty<false>;
9
+ ocrMode: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
10
+ }>;
@@ -0,0 +1,493 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractTextFromImage = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const mime_types_1 = tslib_1.__importDefault(require("mime-types"));
8
+ function getFileExtension(filename) {
9
+ const parts = filename.split('.');
10
+ return parts.length > 1 ? parts.pop().toLowerCase() : '';
11
+ }
12
+ function isImageFile(filename) {
13
+ const ext = getFileExtension(filename);
14
+ return ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff', 'tif'].includes(ext);
15
+ }
16
+ function isDocumentFile(filename) {
17
+ const ext = getFileExtension(filename);
18
+ return ['pdf', 'docx', 'doc', 'xlsx', 'xls', 'pptx', 'ppt'].includes(ext);
19
+ }
20
+ function downloadFileFromUrl(url) {
21
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
22
+ var _a;
23
+ try {
24
+ const response = yield pieces_common_1.httpClient.sendRequest({
25
+ method: pieces_common_1.HttpMethod.GET,
26
+ url: url,
27
+ responseType: 'arraybuffer',
28
+ });
29
+ let fileData;
30
+ if (response.body instanceof ArrayBuffer) {
31
+ fileData = Buffer.from(response.body);
32
+ }
33
+ else if (Buffer.isBuffer(response.body)) {
34
+ fileData = response.body;
35
+ }
36
+ else if (typeof response.body === 'string') {
37
+ fileData = Buffer.from(response.body, 'binary');
38
+ }
39
+ else {
40
+ fileData = Buffer.from(String(response.body), 'binary');
41
+ }
42
+ // Extract filename from URL or use default
43
+ const urlParts = url.split('/');
44
+ const urlFilename = ((_a = urlParts[urlParts.length - 1]) === null || _a === void 0 ? void 0 : _a.split('?')[0]) || 'file';
45
+ const filename = decodeURIComponent(urlFilename);
46
+ const ext = getFileExtension(filename);
47
+ const mimeType = ext ? mime_types_1.default.lookup(ext) || 'application/octet-stream' : 'application/octet-stream';
48
+ return { data: fileData, filename, mimeType: mimeType };
49
+ }
50
+ catch (error) {
51
+ throw new Error(`Failed to download file from URL: ${error.message}`);
52
+ }
53
+ });
54
+ }
55
+ function processWithDocumentIntelligence(fileData, filename, endpoint, key, languageHints, pageRange) {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
+ var _a;
58
+ const baseUrl = endpoint.endsWith('/') ? endpoint.slice(0, -1) : endpoint;
59
+ // Use the latest stable API version
60
+ const apiUrl = `${baseUrl}/formrecognizer/documentModels/prebuilt-read:analyze?api-version=2024-02-29-preview`;
61
+ // Build query parameters
62
+ const queryParams = [];
63
+ if (languageHints && languageHints !== 'auto') {
64
+ queryParams.push(`locale=${encodeURIComponent(languageHints)}`);
65
+ }
66
+ if (pageRange && pageRange !== 'auto') {
67
+ queryParams.push(`pages=${encodeURIComponent(pageRange)}`);
68
+ }
69
+ const fullUrl = queryParams.length > 0 ? `${apiUrl}&${queryParams.join('&')}` : apiUrl;
70
+ // Start analysis - Azure Document Intelligence uses Ocp-Apim-Subscription-Key header
71
+ const analyzeResponse = yield pieces_common_1.httpClient.sendRequest({
72
+ method: pieces_common_1.HttpMethod.POST,
73
+ url: fullUrl,
74
+ headers: {
75
+ 'Content-Type': 'application/octet-stream',
76
+ 'Ocp-Apim-Subscription-Key': key,
77
+ },
78
+ body: fileData,
79
+ });
80
+ const operationLocationHeader = (_a = analyzeResponse.headers) === null || _a === void 0 ? void 0 : _a['operation-location'];
81
+ const operationLocation = Array.isArray(operationLocationHeader)
82
+ ? operationLocationHeader[0]
83
+ : operationLocationHeader;
84
+ if (!operationLocation || typeof operationLocation !== 'string') {
85
+ throw new Error('Failed to get operation location from Document Intelligence API');
86
+ }
87
+ // Poll for results
88
+ let result = null;
89
+ let attempts = 0;
90
+ const maxAttempts = 60; // 60 seconds max wait
91
+ while (attempts < maxAttempts) {
92
+ yield new Promise((resolve) => setTimeout(resolve, 1000)); // Wait 1 second
93
+ const statusResponse = yield pieces_common_1.httpClient.sendRequest({
94
+ method: pieces_common_1.HttpMethod.GET,
95
+ url: operationLocation,
96
+ headers: {
97
+ 'Ocp-Apim-Subscription-Key': key,
98
+ },
99
+ });
100
+ if (statusResponse.body.status === 'succeeded') {
101
+ result = statusResponse.body.analyzeResult || { content: '' };
102
+ break;
103
+ }
104
+ else if (statusResponse.body.status === 'failed') {
105
+ throw new Error('Document Intelligence analysis failed');
106
+ }
107
+ attempts++;
108
+ }
109
+ if (!result) {
110
+ throw new Error('Document Intelligence analysis timed out');
111
+ }
112
+ return result;
113
+ });
114
+ }
115
+ function processWithComputerVision(fileData, filename, endpoint, key, languageHints, objectCategories) {
116
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
117
+ var _a, _b;
118
+ const baseUrl = endpoint.endsWith('/') ? endpoint.slice(0, -1) : endpoint;
119
+ // Use Read API for OCR - latest stable version
120
+ const readUrl = `${baseUrl}/vision/v3.2/read/analyze`;
121
+ // Build query parameters for language hints
122
+ const queryParams = [];
123
+ if (languageHints && languageHints !== 'auto') {
124
+ // Computer Vision Read API supports language parameter
125
+ queryParams.push(`language=${encodeURIComponent(languageHints.split(',')[0])}`);
126
+ }
127
+ const fullReadUrl = queryParams.length > 0 ? `${readUrl}?${queryParams.join('&')}` : readUrl;
128
+ // Start read operation
129
+ const readResponse = yield pieces_common_1.httpClient.sendRequest({
130
+ method: pieces_common_1.HttpMethod.POST,
131
+ url: fullReadUrl,
132
+ headers: {
133
+ 'Content-Type': 'application/octet-stream',
134
+ 'Ocp-Apim-Subscription-Key': key,
135
+ },
136
+ body: fileData,
137
+ });
138
+ const operationLocationHeader = (_a = readResponse.headers) === null || _a === void 0 ? void 0 : _a['operation-location'];
139
+ const operationLocation = Array.isArray(operationLocationHeader)
140
+ ? operationLocationHeader[0]
141
+ : operationLocationHeader;
142
+ if (!operationLocation || typeof operationLocation !== 'string') {
143
+ throw new Error('Failed to get operation location from Computer Vision API');
144
+ }
145
+ // Poll for OCR results
146
+ let readResult = null;
147
+ let attempts = 0;
148
+ const maxAttempts = 60;
149
+ while (attempts < maxAttempts) {
150
+ yield new Promise((resolve) => setTimeout(resolve, 1000));
151
+ const statusResponse = yield pieces_common_1.httpClient.sendRequest({
152
+ method: pieces_common_1.HttpMethod.GET,
153
+ url: operationLocation,
154
+ headers: {
155
+ 'Ocp-Apim-Subscription-Key': key,
156
+ },
157
+ });
158
+ if (statusResponse.body.status === 'succeeded') {
159
+ readResult = statusResponse.body.analyzeResult;
160
+ break;
161
+ }
162
+ else if (statusResponse.body.status === 'failed') {
163
+ throw new Error('Computer Vision OCR analysis failed');
164
+ }
165
+ attempts++;
166
+ }
167
+ // Get object detection if requested
168
+ let objects = [];
169
+ if (objectCategories && objectCategories !== 'auto') {
170
+ try {
171
+ const detectUrl = `${baseUrl}/vision/v3.2/detect`;
172
+ const detectResponse = yield pieces_common_1.httpClient.sendRequest({
173
+ method: pieces_common_1.HttpMethod.POST,
174
+ url: detectUrl,
175
+ headers: {
176
+ 'Content-Type': 'application/octet-stream',
177
+ 'Ocp-Apim-Subscription-Key': key,
178
+ },
179
+ body: fileData,
180
+ });
181
+ objects = detectResponse.body.objects || [];
182
+ }
183
+ catch (error) {
184
+ // Object detection is optional, continue without it
185
+ console.warn('Object detection failed:', error);
186
+ }
187
+ }
188
+ // Extract text content from read result
189
+ let content = '';
190
+ if (readResult && readResult.readResults) {
191
+ content = readResult.readResults
192
+ .map((page) => {
193
+ if (page.lines) {
194
+ return page.lines.map((line) => line.text).join('\n');
195
+ }
196
+ return '';
197
+ })
198
+ .filter(Boolean)
199
+ .join('\n\n');
200
+ }
201
+ return {
202
+ readResult: readResult ? {
203
+ content,
204
+ pages: ((_b = readResult.readResults) === null || _b === void 0 ? void 0 : _b.map((page) => {
205
+ var _a, _b;
206
+ return ({
207
+ page: page.page,
208
+ words: ((_a = page.lines) === null || _a === void 0 ? void 0 : _a.flatMap((line) => {
209
+ var _a;
210
+ return ((_a = line.words) === null || _a === void 0 ? void 0 : _a.map((word) => ({
211
+ text: word.text,
212
+ boundingBox: word.boundingBox,
213
+ }))) || [];
214
+ })) || [],
215
+ lines: ((_b = page.lines) === null || _b === void 0 ? void 0 : _b.map((line) => ({
216
+ text: line.text,
217
+ boundingBox: line.boundingBox,
218
+ }))) || [],
219
+ });
220
+ })) || []
221
+ } : undefined,
222
+ objects,
223
+ };
224
+ });
225
+ }
226
+ function extractTextFromDocumentIntelligenceResult(result) {
227
+ if (result.content) {
228
+ return result.content;
229
+ }
230
+ // Fallback: extract from paragraphs or pages
231
+ if (result.paragraphs && result.paragraphs.length > 0) {
232
+ return result.paragraphs.map(p => p.content).join('\n\n');
233
+ }
234
+ if (result.pages && result.pages.length > 0) {
235
+ return result.pages
236
+ .map(page => {
237
+ if (page.lines && page.lines.length > 0) {
238
+ return page.lines.map(line => line.content).join('\n');
239
+ }
240
+ if (page.words && page.words.length > 0) {
241
+ return page.words.map(word => word.content).join(' ');
242
+ }
243
+ return '';
244
+ })
245
+ .filter(Boolean)
246
+ .join('\n\n');
247
+ }
248
+ return '';
249
+ }
250
+ function extractTextFromVisionResult(result) {
251
+ if (!result.readResult) {
252
+ return '';
253
+ }
254
+ if (result.readResult.content) {
255
+ return result.readResult.content;
256
+ }
257
+ if (result.readResult.pages && result.readResult.pages.length > 0) {
258
+ return result.readResult.pages
259
+ .map(page => {
260
+ if (page.lines && page.lines.length > 0) {
261
+ return page.lines.map(line => line.text).join('\n');
262
+ }
263
+ if (page.words && page.words.length > 0) {
264
+ return page.words.map(word => word.text).join(' ');
265
+ }
266
+ return '';
267
+ })
268
+ .filter(Boolean)
269
+ .join('\n\n');
270
+ }
271
+ return '';
272
+ }
273
+ exports.extractTextFromImage = (0, pieces_framework_1.createAction)({
274
+ name: 'extract_text_from_image',
275
+ displayName: 'Extract Text from Image/Document',
276
+ description: 'Extract text and visual elements from images, PDFs, and documents using Azure AI services',
277
+ props: {
278
+ inputMethod: pieces_framework_1.Property.StaticDropdown({
279
+ displayName: 'Input Method',
280
+ description: 'How to provide the file',
281
+ required: true,
282
+ options: {
283
+ options: [
284
+ { label: 'File Upload', value: 'file' },
285
+ { label: 'File URL', value: 'url' },
286
+ ],
287
+ },
288
+ defaultValue: 'file',
289
+ }),
290
+ file: pieces_framework_1.Property.File({
291
+ displayName: 'File',
292
+ description: 'The file to process (PDF, DOCX, JPG, PNG, etc.)',
293
+ required: false,
294
+ }),
295
+ fileUrl: pieces_framework_1.Property.ShortText({
296
+ displayName: 'File URL',
297
+ description: 'URL of the file to process',
298
+ required: false,
299
+ }),
300
+ outputFormat: pieces_framework_1.Property.StaticDropdown({
301
+ displayName: 'Output Format',
302
+ description: 'What information to include in the output',
303
+ required: false,
304
+ options: {
305
+ options: [
306
+ { label: 'Raw Text Only', value: 'raw' },
307
+ { label: 'Structured Data', value: 'structured' },
308
+ { label: 'Visual Metadata', value: 'metadata' },
309
+ { label: 'Unified JSON (All)', value: 'unified' },
310
+ ],
311
+ },
312
+ defaultValue: 'raw',
313
+ }),
314
+ languageHints: pieces_framework_1.Property.ShortText({
315
+ displayName: 'Language Hints',
316
+ description: 'Comma-separated language codes (e.g., "en,fr") or "auto" for automatic detection',
317
+ required: false,
318
+ defaultValue: 'auto',
319
+ }),
320
+ objectCategories: pieces_framework_1.Property.ShortText({
321
+ displayName: 'Object Categories',
322
+ description: 'Comma-separated object categories to detect (e.g., "person,car") or "auto" for all',
323
+ required: false,
324
+ defaultValue: 'auto',
325
+ }),
326
+ pageRange: pieces_framework_1.Property.ShortText({
327
+ displayName: 'Page Range',
328
+ description: 'Page range for PDFs (e.g., "1-5" or "1,3,5") or "auto" for all pages',
329
+ required: false,
330
+ defaultValue: 'auto',
331
+ }),
332
+ ocrMode: pieces_framework_1.Property.StaticDropdown({
333
+ displayName: 'OCR Mode',
334
+ description: 'OCR processing mode',
335
+ required: false,
336
+ options: {
337
+ options: [
338
+ { label: 'Auto (Balanced)', value: 'auto' },
339
+ { label: 'Fast', value: 'fast' },
340
+ { label: 'High Accuracy', value: 'accurate' },
341
+ ],
342
+ },
343
+ defaultValue: 'auto',
344
+ }),
345
+ },
346
+ run(context) {
347
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
348
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
349
+ const { inputMethod, file, fileUrl, outputFormat = 'raw', languageHints = 'auto', objectCategories = 'auto', pageRange = 'auto', } = context.propsValue;
350
+ // Get Azure credentials from environment
351
+ const docIntelligenceEndpoint = (typeof process !== 'undefined' && ((_a = process.env) === null || _a === void 0 ? void 0 : _a['AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT'])) ||
352
+ 'https://auxeereader.cognitiveservices.azure.com/';
353
+ const docIntelligenceKey = (typeof process !== 'undefined' && ((_b = process.env) === null || _b === void 0 ? void 0 : _b['AZURE_DOCUMENT_INTELLIGENCE_KEY'])) ||
354
+ 'Bt8n2RT8NWmpsopfzOsyA979n5h95BJ0Vc6s0OTbGsylaaxPfWqaJQQJ99BAACYeBjFXJ3w3AAALACOGTRx1';
355
+ const visionEndpoint = (typeof process !== 'undefined' && ((_c = process.env) === null || _c === void 0 ? void 0 : _c['AZURE_COMPUTER_VISION_ENDPOINT'])) ||
356
+ 'https://auxee-dev-ai-vision.cognitiveservices.azure.com/';
357
+ const visionKey = (typeof process !== 'undefined' && ((_d = process.env) === null || _d === void 0 ? void 0 : _d['AZURE_COMPUTER_VISION_KEY'])) ||
358
+ '7f1oKNV5QDRLtOUjTOjYvncgXD7mhfvTK0H93nELZ5DN4lbT6rl8JQQJ99BIACYeBjFXJ3w3AAAFACOGqFn1';
359
+ // Get file data
360
+ let fileData;
361
+ let filename;
362
+ let mimeType;
363
+ if (inputMethod === 'file') {
364
+ if (!file || !file.data) {
365
+ throw new Error('File is required when using file upload method');
366
+ }
367
+ fileData = Buffer.from(file.data);
368
+ filename = file.filename || 'file';
369
+ const ext = getFileExtension(filename);
370
+ mimeType = ext ? (mime_types_1.default.lookup(ext) || 'application/octet-stream') : 'application/octet-stream';
371
+ }
372
+ else {
373
+ if (!fileUrl) {
374
+ throw new Error('File URL is required when using URL method');
375
+ }
376
+ const downloaded = yield downloadFileFromUrl(fileUrl);
377
+ fileData = downloaded.data;
378
+ filename = downloaded.filename;
379
+ mimeType = downloaded.mimeType;
380
+ }
381
+ // Check file size (15MB limit)
382
+ const maxSize = 15 * 1024 * 1024; // 15MB
383
+ if (fileData.length > maxSize) {
384
+ throw new Error(`File size (${(fileData.length / 1024 / 1024).toFixed(2)}MB) exceeds maximum allowed size (15MB)`);
385
+ }
386
+ // Determine processing method based on file type
387
+ const isImage = isImageFile(filename);
388
+ const isDocument = isDocumentFile(filename);
389
+ let docIntelligenceResult = null;
390
+ let visionResult = null;
391
+ // Process with Document Intelligence for documents or when structured data is needed
392
+ if (isDocument || outputFormat === 'structured' || outputFormat === 'unified') {
393
+ try {
394
+ docIntelligenceResult = yield processWithDocumentIntelligence(fileData, filename, docIntelligenceEndpoint, docIntelligenceKey, languageHints !== 'auto' ? languageHints : undefined, pageRange !== 'auto' ? pageRange : undefined);
395
+ }
396
+ catch (error) {
397
+ console.warn('Document Intelligence processing failed:', error.message);
398
+ // Continue with vision if document intelligence fails
399
+ }
400
+ }
401
+ // Process with Computer Vision for images or when metadata is needed
402
+ if (isImage || outputFormat === 'metadata' || outputFormat === 'unified' || !docIntelligenceResult) {
403
+ try {
404
+ visionResult = yield processWithComputerVision(fileData, filename, visionEndpoint, visionKey, languageHints !== 'auto' ? languageHints : undefined, objectCategories !== 'auto' ? objectCategories : undefined);
405
+ }
406
+ catch (error) {
407
+ console.warn('Computer Vision processing failed:', error.message);
408
+ }
409
+ }
410
+ // Extract text
411
+ let rawText = '';
412
+ if (docIntelligenceResult) {
413
+ rawText = extractTextFromDocumentIntelligenceResult(docIntelligenceResult);
414
+ }
415
+ else if (visionResult) {
416
+ rawText = extractTextFromVisionResult(visionResult);
417
+ }
418
+ // Build response based on output format
419
+ const response = {};
420
+ if (outputFormat === 'raw' || outputFormat === 'unified') {
421
+ response.rawText = rawText;
422
+ }
423
+ if (outputFormat === 'structured' || outputFormat === 'unified') {
424
+ if (docIntelligenceResult) {
425
+ response.structuredData = {
426
+ pages: (_e = docIntelligenceResult.pages) === null || _e === void 0 ? void 0 : _e.map(page => {
427
+ var _a, _b, _c;
428
+ return ({
429
+ pageNumber: page.pageNumber,
430
+ words: (_a = page.words) === null || _a === void 0 ? void 0 : _a.map(w => ({
431
+ content: w.content,
432
+ boundingBox: w.boundingBox,
433
+ })),
434
+ lines: (_b = page.lines) === null || _b === void 0 ? void 0 : _b.map(l => ({
435
+ content: l.content,
436
+ boundingBox: l.boundingBox,
437
+ })),
438
+ tables: (_c = page.tables) === null || _c === void 0 ? void 0 : _c.map(t => ({
439
+ rowCount: t.rowCount,
440
+ columnCount: t.columnCount,
441
+ cells: t.cells.map(c => ({
442
+ content: c.content,
443
+ rowIndex: c.rowIndex,
444
+ columnIndex: c.columnIndex,
445
+ })),
446
+ })),
447
+ });
448
+ }),
449
+ paragraphs: (_f = docIntelligenceResult.paragraphs) === null || _f === void 0 ? void 0 : _f.map(p => ({
450
+ content: p.content,
451
+ boundingRegions: p.boundingRegions,
452
+ })),
453
+ keyValuePairs: (_g = docIntelligenceResult.keyValuePairs) === null || _g === void 0 ? void 0 : _g.map(kvp => {
454
+ var _a;
455
+ return ({
456
+ key: kvp.key.content,
457
+ value: (_a = kvp.value) === null || _a === void 0 ? void 0 : _a.content,
458
+ });
459
+ }),
460
+ };
461
+ }
462
+ }
463
+ if (outputFormat === 'metadata' || outputFormat === 'unified') {
464
+ response.visualMetadata = {
465
+ detectedObjects: ((_h = visionResult === null || visionResult === void 0 ? void 0 : visionResult.objects) === null || _h === void 0 ? void 0 : _h.map(obj => ({
466
+ object: obj.object,
467
+ confidence: obj.confidence,
468
+ boundingBox: obj.rectangle,
469
+ }))) || [],
470
+ tags: ((_j = visionResult === null || visionResult === void 0 ? void 0 : visionResult.tags) === null || _j === void 0 ? void 0 : _j.map(tag => ({
471
+ name: tag.name,
472
+ confidence: tag.confidence,
473
+ }))) || [],
474
+ styles: ((_k = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.styles) === null || _k === void 0 ? void 0 : _k.map(style => ({
475
+ confidence: style.confidence,
476
+ isHandwritten: style.isHandwritten,
477
+ }))) || [],
478
+ };
479
+ }
480
+ if (outputFormat === 'unified') {
481
+ response.metadata = {
482
+ filename,
483
+ mimeType,
484
+ fileSize: fileData.length,
485
+ processedAt: new Date().toISOString(),
486
+ pageCount: ((_l = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.pages) === null || _l === void 0 ? void 0 : _l.length) || ((_o = (_m = visionResult === null || visionResult === void 0 ? void 0 : visionResult.readResult) === null || _m === void 0 ? void 0 : _m.pages) === null || _o === void 0 ? void 0 : _o.length) || 1,
487
+ };
488
+ }
489
+ return response;
490
+ });
491
+ },
492
+ });
493
+ //# sourceMappingURL=extract-text-from-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-text-from-image.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/image-document-intelligence/src/lib/actions/extract-text-from-image.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAyF;AACzF,oEAA8B;AA4E9B,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,SAAe,mBAAmB,CAAC,GAAW;;;QAC5C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,GAAG,EAAE,GAAG;gBACR,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAC;YAEH,IAAI,QAAgB,CAAC;YACrB,IAAI,QAAQ,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;gBACzC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,CAAC;iBAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7C,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC1D,CAAC;YAED,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG,CAAA,MAAA,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAI,MAAM,CAAC;YAC3E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAEjD,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC,CAAC,CAAC,0BAA0B,CAAC;YAEnG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAkB,EAAE,CAAC;QACpE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CAAA;AAED,SAAe,+BAA+B,CAC5C,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,GAAW,EACX,aAAsB,EACtB,SAAkB;;;QAElB,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1E,oCAAoC;QACpC,MAAM,MAAM,GAAG,GAAG,OAAO,qFAAqF,CAAC;QAE/G,yBAAyB;QACzB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,aAAa,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,UAAU,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,SAAS,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACtC,WAAW,CAAC,IAAI,CAAC,SAAS,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvF,qFAAqF;QACrF,MAAM,eAAe,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAiC;YACnF,MAAM,EAAE,0BAAU,CAAC,IAAI;YACvB,GAAG,EAAE,OAAO;YACZ,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,2BAA2B,EAAE,GAAG;aACjC;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,MAAM,uBAAuB,GAAG,MAAA,eAAe,CAAC,OAAO,0CAAG,oBAAoB,CAAC,CAAC;QAChF,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;YAC9D,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC5B,CAAC,CAAC,uBAAuB,CAAC;QAC5B,IAAI,CAAC,iBAAiB,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,GAA6C,IAAI,CAAC;QAC5D,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,sBAAsB;QAE9C,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC9B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB;YAE3E,MAAM,cAAc,GAAG,MAAM,0BAAU,CAAC,WAAW,CAGhD;gBACD,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,GAAG,EAAE,iBAAiB;gBACtB,OAAO,EAAE;oBACP,2BAA2B,EAAE,GAAG;iBACjC;aACF,CAAC,CAAC;YAEH,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC/C,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBAC9D,MAAM;YACR,CAAC;iBAAM,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YAED,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAED,SAAe,yBAAyB,CACtC,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,GAAW,EACX,aAAsB,EACtB,gBAAyB;;;QAEzB,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE1E,+CAA+C;QAC/C,MAAM,OAAO,GAAG,GAAG,OAAO,2BAA2B,CAAC;QAEtD,4CAA4C;QAC5C,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,aAAa,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC9C,uDAAuD;YACvD,WAAW,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAE7F,uBAAuB;QACvB,MAAM,YAAY,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAiC;YAChF,MAAM,EAAE,0BAAU,CAAC,IAAI;YACvB,GAAG,EAAE,WAAW;YAChB,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,2BAA2B,EAAE,GAAG;aACjC;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,MAAM,uBAAuB,GAAG,MAAA,YAAY,CAAC,OAAO,0CAAG,oBAAoB,CAAC,CAAC;QAC7E,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;YAC9D,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC5B,CAAC,CAAC,uBAAuB,CAAC;QAC5B,IAAI,CAAC,iBAAiB,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,uBAAuB;QACvB,IAAI,UAAU,GAAQ,IAAI,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC9B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAE1D,MAAM,cAAc,GAAG,MAAM,0BAAU,CAAC,WAAW,CAGhD;gBACD,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,GAAG,EAAE,iBAAiB;gBACtB,OAAO,EAAE;oBACP,2BAA2B,EAAE,GAAG;iBACjC;aACF,CAAC,CAAC;YAEH,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC/C,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC/C,MAAM;YACR,CAAC;iBAAM,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,oCAAoC;QACpC,IAAI,OAAO,GAAU,EAAE,CAAC;QACxB,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,GAAG,OAAO,qBAAqB,CAAC;gBAClD,MAAM,cAAc,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAsB;oBACvE,MAAM,EAAE,0BAAU,CAAC,IAAI;oBACvB,GAAG,EAAE,SAAS;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,0BAA0B;wBAC1C,2BAA2B,EAAE,GAAG;qBACjC;oBACD,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;gBACH,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,oDAAoD;gBACpD,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,GAAG,UAAU,CAAC,WAAW;iBAC7B,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBACjB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;QAED,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;gBACvB,OAAO;gBACP,KAAK,EAAE,CAAA,MAAA,UAAU,CAAC,WAAW,0CAAE,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;;oBAAC,OAAA,CAAC;wBACjD,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,KAAK,EAAE,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;;4BACvC,OAAA,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;gCAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;gCACf,WAAW,EAAE,IAAI,CAAC,WAAW;6BAC9B,CAAC,CAAC,KAAI,EAAE,CAAA;yBAAA,CACV,KAAI,EAAE;wBACP,KAAK,EAAE,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;4BACrC,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,WAAW,EAAE,IAAI,CAAC,WAAW;yBAC9B,CAAC,CAAC,KAAI,EAAE;qBACV,CAAC,CAAA;iBAAA,CAAC,KAAI,EAAE;aACV,CAAC,CAAC,CAAC,SAAS;YACb,OAAO;SACR,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,yCAAyC,CAAC,MAAyC;IAC1F,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,6CAA6C;IAC7C,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,KAAK;aAChB,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,2BAA2B,CAAC,MAA2B;IAC9D,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK;aAC3B,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAEY,QAAA,oBAAoB,GAAG,IAAA,+BAAY,EAAC;IAC/C,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,kCAAkC;IAC/C,WAAW,EAAE,2FAA2F;IACxG,KAAK,EAAE;QACL,WAAW,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACnC,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE;oBACvC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;iBACpC;aACF;YACD,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,IAAI,EAAE,2BAAQ,CAAC,IAAI,CAAC;YAClB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,iDAAiD;YAC9D,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,YAAY,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACpC,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE;oBACxC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,YAAY,EAAE;oBACjD,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE;oBAC/C,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE;iBAClD;aACF;YACD,YAAY,EAAE,KAAK;SACpB,CAAC;QACF,aAAa,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAChC,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,kFAAkF;YAC/F,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,gBAAgB,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACnC,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,oFAAoF;YACjG,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,sEAAsE;YACnF,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAC/B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,qBAAqB;YAClC,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE;oBAC3C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;oBAChC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE;iBAC9C;aACF;YACD,YAAY,EAAE,MAAM;SACrB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,EACJ,WAAW,EACX,IAAI,EACJ,OAAO,EACP,YAAY,GAAG,KAAK,EACpB,aAAa,GAAG,MAAM,EACtB,gBAAgB,GAAG,MAAM,EACzB,SAAS,GAAG,MAAM,GACnB,GAAG,OAAO,CAAC,UAAU,CAAC;YAEvB,yCAAyC;YACzC,MAAM,uBAAuB,GAC3B,CAAC,OAAO,OAAO,KAAK,WAAW,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAG,sCAAsC,CAAC,CAAA,CAAC;gBACzF,kDAAkD,CAAC;YACrD,MAAM,kBAAkB,GACtB,CAAC,OAAO,OAAO,KAAK,WAAW,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAG,iCAAiC,CAAC,CAAA,CAAC;gBACpF,sFAAsF,CAAC;YACzF,MAAM,cAAc,GAClB,CAAC,OAAO,OAAO,KAAK,WAAW,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAG,gCAAgC,CAAC,CAAA,CAAC;gBACnF,0DAA0D,CAAC;YAC7D,MAAM,SAAS,GACb,CAAC,OAAO,OAAO,KAAK,WAAW,KAAI,MAAA,OAAO,CAAC,GAAG,0CAAG,2BAA2B,CAAC,CAAA,CAAC;gBAC9E,sFAAsF,CAAC;YAEzF,gBAAgB;YAChB,IAAI,QAAgB,CAAC;YACrB,IAAI,QAAgB,CAAC;YACrB,IAAI,QAAgB,CAAC;YAErB,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBACpE,CAAC;gBACD,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;gBACnC,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACvC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC;YAC3G,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;gBAChE,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACtD,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;gBAC3B,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;gBAC/B,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YACjC,CAAC;YAED,+BAA+B;YAC/B,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;YACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC;YACrH,CAAC;YAED,iDAAiD;YACjD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE5C,IAAI,qBAAqB,GAA6C,IAAI,CAAC;YAC3E,IAAI,YAAY,GAA+B,IAAI,CAAC;YAEpD,qFAAqF;YACrF,IAAI,UAAU,IAAI,YAAY,KAAK,YAAY,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC9E,IAAI,CAAC;oBACH,qBAAqB,GAAG,MAAM,+BAA+B,CAC3D,QAAQ,EACR,QAAQ,EACR,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EACpD,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAC7C,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBACxE,sDAAsD;gBACxD,CAAC;YACH,CAAC;YAED,qEAAqE;YACrE,IAAI,OAAO,IAAI,YAAY,KAAK,UAAU,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACnG,IAAI,CAAC;oBACH,YAAY,GAAG,MAAM,yBAAyB,CAC5C,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,SAAS,EACT,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EACpD,gBAAgB,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAC3D,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,eAAe;YACf,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,OAAO,GAAG,yCAAyC,CAAC,qBAAqB,CAAC,CAAC;YAC7E,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACxB,OAAO,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAC;YACtD,CAAC;YAED,wCAAwC;YACxC,MAAM,QAAQ,GAAQ,EAAE,CAAC;YAEzB,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBACzD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YAC7B,CAAC;YAED,IAAI,YAAY,KAAK,YAAY,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAChE,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,QAAQ,CAAC,cAAc,GAAG;wBACxB,KAAK,EAAE,MAAA,qBAAqB,CAAC,KAAK,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE;;4BAAC,OAAA,CAAC;gCAC/C,UAAU,EAAE,IAAI,CAAC,UAAU;gCAC3B,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oCAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;oCAClB,WAAW,EAAE,CAAC,CAAC,WAAW;iCAC3B,CAAC,CAAC;gCACH,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oCAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;oCAClB,WAAW,EAAE,CAAC,CAAC,WAAW;iCAC3B,CAAC,CAAC;gCACH,MAAM,EAAE,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oCAC7B,QAAQ,EAAE,CAAC,CAAC,QAAQ;oCACpB,WAAW,EAAE,CAAC,CAAC,WAAW;oCAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wCACvB,OAAO,EAAE,CAAC,CAAC,OAAO;wCAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wCACpB,WAAW,EAAE,CAAC,CAAC,WAAW;qCAC3B,CAAC,CAAC;iCACJ,CAAC,CAAC;6BACJ,CAAC,CAAA;yBAAA,CAAC;wBACH,UAAU,EAAE,MAAA,qBAAqB,CAAC,UAAU,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACtD,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,eAAe,EAAE,CAAC,CAAC,eAAe;yBACnC,CAAC,CAAC;wBACH,aAAa,EAAE,MAAA,qBAAqB,CAAC,aAAa,0CAAE,GAAG,CAAC,GAAG,CAAC,EAAE;;4BAAC,OAAA,CAAC;gCAC9D,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO;gCACpB,KAAK,EAAE,MAAA,GAAG,CAAC,KAAK,0CAAE,OAAO;6BAC1B,CAAC,CAAA;yBAAA,CAAC;qBACJ,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,YAAY,KAAK,UAAU,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC9D,QAAQ,CAAC,cAAc,GAAG;oBACxB,eAAe,EAAE,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,0CAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAClD,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;wBAC1B,WAAW,EAAE,GAAG,CAAC,SAAS;qBAC3B,CAAC,CAAC,KAAI,EAAE;oBACT,IAAI,EAAE,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,0CAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACpC,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,UAAU,EAAE,GAAG,CAAC,UAAU;qBAC3B,CAAC,CAAC,KAAI,EAAE;oBACT,MAAM,EAAE,CAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,MAAM,0CAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACnD,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;qBACnC,CAAC,CAAC,KAAI,EAAE;iBACV,CAAC;YACJ,CAAC;YAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,QAAQ,CAAC,QAAQ,GAAG;oBAClB,QAAQ;oBACR,QAAQ;oBACR,QAAQ,EAAE,QAAQ,CAAC,MAAM;oBACzB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACrC,SAAS,EAAE,CAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,KAAK,0CAAE,MAAM,MAAI,MAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,0CAAE,KAAK,0CAAE,MAAM,CAAA,IAAI,CAAC;iBAChG,CAAC;YACJ,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF,CAAC,CAAC"}