@epam/pdf-highlighter-kit 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.
Files changed (77) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +219 -0
  3. package/dist/PDFHighlightViewer.d.ts +219 -0
  4. package/dist/PDFHighlightViewer.d.ts.map +1 -0
  5. package/dist/PDFHighlightViewer.js +1551 -0
  6. package/dist/PDFHighlightViewer.js.map +1 -0
  7. package/dist/api.d.ts +59 -0
  8. package/dist/api.d.ts.map +1 -0
  9. package/dist/api.js +2 -0
  10. package/dist/api.js.map +1 -0
  11. package/dist/config.d.ts +12 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +32 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/core/interaction-handler.d.ts +63 -0
  16. package/dist/core/interaction-handler.d.ts.map +1 -0
  17. package/dist/core/interaction-handler.js +430 -0
  18. package/dist/core/interaction-handler.js.map +1 -0
  19. package/dist/core/pdf-engine.d.ts +37 -0
  20. package/dist/core/pdf-engine.d.ts.map +1 -0
  21. package/dist/core/pdf-engine.js +281 -0
  22. package/dist/core/pdf-engine.js.map +1 -0
  23. package/dist/core/performance-optimizer.d.ts +91 -0
  24. package/dist/core/performance-optimizer.d.ts.map +1 -0
  25. package/dist/core/performance-optimizer.js +473 -0
  26. package/dist/core/performance-optimizer.js.map +1 -0
  27. package/dist/core/style-manager.d.ts +88 -0
  28. package/dist/core/style-manager.d.ts.map +1 -0
  29. package/dist/core/style-manager.js +413 -0
  30. package/dist/core/style-manager.js.map +1 -0
  31. package/dist/core/text-segmentation.d.ts +41 -0
  32. package/dist/core/text-segmentation.d.ts.map +1 -0
  33. package/dist/core/text-segmentation.js +338 -0
  34. package/dist/core/text-segmentation.js.map +1 -0
  35. package/dist/core/unified-layer-builder.d.ts +27 -0
  36. package/dist/core/unified-layer-builder.d.ts.map +1 -0
  37. package/dist/core/unified-layer-builder.js +331 -0
  38. package/dist/core/unified-layer-builder.js.map +1 -0
  39. package/dist/core/viewport-manager.d.ts +103 -0
  40. package/dist/core/viewport-manager.d.ts.map +1 -0
  41. package/dist/core/viewport-manager.js +222 -0
  42. package/dist/core/viewport-manager.js.map +1 -0
  43. package/dist/index.d.ts +27 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +57 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/pdf-highlight-viewer.css +488 -0
  48. package/dist/types.d.ts +279 -0
  49. package/dist/types.d.ts.map +1 -0
  50. package/dist/types.js +2 -0
  51. package/dist/types.js.map +1 -0
  52. package/dist/utils/highlight-adapter.d.ts +31 -0
  53. package/dist/utils/highlight-adapter.d.ts.map +1 -0
  54. package/dist/utils/highlight-adapter.js +202 -0
  55. package/dist/utils/highlight-adapter.js.map +1 -0
  56. package/dist/utils/pdf-utils.d.ts +14 -0
  57. package/dist/utils/pdf-utils.d.ts.map +1 -0
  58. package/dist/utils/pdf-utils.js +120 -0
  59. package/dist/utils/pdf-utils.js.map +1 -0
  60. package/dist/utils/worker-loader-simple.d.ts +8 -0
  61. package/dist/utils/worker-loader-simple.d.ts.map +1 -0
  62. package/dist/utils/worker-loader-simple.js +65 -0
  63. package/dist/utils/worker-loader-simple.js.map +1 -0
  64. package/dist/vite.config.d.ts +3 -0
  65. package/dist/vite.config.d.ts.map +1 -0
  66. package/dist/vite.config.js +20 -0
  67. package/dist/vite.config.js.map +1 -0
  68. package/dist/vitest.config.d.ts +3 -0
  69. package/dist/vitest.config.d.ts.map +1 -0
  70. package/dist/vitest.config.js +24 -0
  71. package/dist/vitest.config.js.map +1 -0
  72. package/dist/vitest.setup.d.ts +2 -0
  73. package/dist/vitest.setup.d.ts.map +1 -0
  74. package/dist/vitest.setup.js +8 -0
  75. package/dist/vitest.setup.js.map +1 -0
  76. package/package.json +74 -0
  77. package/styles/pdf-highlight-viewer.css +488 -0
@@ -0,0 +1,473 @@
1
+ export class RTree {
2
+ constructor() {
3
+ this.root = null;
4
+ this.maxEntries = 9;
5
+ this.minEntries = 4;
6
+ }
7
+ insert(bounds, data) {
8
+ const item = { bounds, data };
9
+ if (!this.root) {
10
+ this.root = {
11
+ children: [item],
12
+ bounds: bounds,
13
+ leaf: true,
14
+ };
15
+ return;
16
+ }
17
+ const insertPath = [];
18
+ const node = this._chooseSubtree(bounds, this.root, insertPath);
19
+ node.children.push(item);
20
+ this._adjustBounds(node);
21
+ if (node.children.length > this.maxEntries) {
22
+ this._split(insertPath, node);
23
+ }
24
+ }
25
+ search(bounds) {
26
+ if (!this.root)
27
+ return [];
28
+ const result = [];
29
+ this._search(bounds, this.root, result);
30
+ return result;
31
+ }
32
+ remove(bounds, data) {
33
+ if (!this.root)
34
+ return;
35
+ const path = [];
36
+ const item = this._findItem(bounds, data, this.root, path);
37
+ if (item) {
38
+ const node = path[path.length - 1];
39
+ const index = node.children.indexOf(item);
40
+ node.children.splice(index, 1);
41
+ this._condenseTree(path);
42
+ }
43
+ }
44
+ clear() {
45
+ this.root = null;
46
+ }
47
+ _chooseSubtree(bounds, node, path) {
48
+ path.push(node);
49
+ if (node.leaf)
50
+ return node;
51
+ let minEnlargement = Infinity;
52
+ let targetNode = node.children[0];
53
+ for (const child of node.children) {
54
+ const enlargement = this._enlargement(bounds, child.bounds);
55
+ if (enlargement < minEnlargement) {
56
+ minEnlargement = enlargement;
57
+ targetNode = child;
58
+ }
59
+ }
60
+ return this._chooseSubtree(bounds, targetNode, path);
61
+ }
62
+ _search(bounds, node, result) {
63
+ if (!this._intersects(bounds, node.bounds))
64
+ return;
65
+ if (node.leaf) {
66
+ for (const item of node.children) {
67
+ if (this._intersects(bounds, item.bounds)) {
68
+ result.push(item.data);
69
+ }
70
+ }
71
+ }
72
+ else {
73
+ for (const child of node.children) {
74
+ this._search(bounds, child, result);
75
+ }
76
+ }
77
+ }
78
+ _intersects(a, b) {
79
+ return !(a.x2 < b.x1 || a.x1 > b.x2 || a.y2 < b.y1 || a.y1 > b.y2);
80
+ }
81
+ _enlargement(bounds, nodeBounds) {
82
+ const newBounds = this._extend(nodeBounds, bounds);
83
+ return this._area(newBounds) - this._area(nodeBounds);
84
+ }
85
+ _extend(a, b) {
86
+ return {
87
+ x1: Math.min(a.x1, b.x1),
88
+ y1: Math.min(a.y1, b.y1),
89
+ x2: Math.max(a.x2, b.x2),
90
+ y2: Math.max(a.y2, b.y2),
91
+ };
92
+ }
93
+ _area(bounds) {
94
+ return (bounds.x2 - bounds.x1) * (bounds.y2 - bounds.y1);
95
+ }
96
+ _adjustBounds(node) {
97
+ if (node.children.length === 0)
98
+ return;
99
+ const first = node.children[0];
100
+ let bounds = 'bounds' in first ? first.bounds : first.bounds;
101
+ for (let i = 1; i < node.children.length; i++) {
102
+ const child = node.children[i];
103
+ const childBounds = 'bounds' in child ? child.bounds : child.bounds;
104
+ bounds = this._extend(bounds, childBounds);
105
+ }
106
+ node.bounds = bounds;
107
+ }
108
+ _split(insertPath, node) {
109
+ const newNode = {
110
+ children: [],
111
+ bounds: { x1: 0, y1: 0, x2: 0, y2: 0 },
112
+ leaf: node.leaf,
113
+ };
114
+ this._chooseSplitAxis(node, newNode);
115
+ this._adjustBounds(node);
116
+ this._adjustBounds(newNode);
117
+ if (insertPath.length === 1) {
118
+ this.root = {
119
+ children: [node, newNode],
120
+ bounds: this._extend(node.bounds, newNode.bounds),
121
+ leaf: false,
122
+ };
123
+ }
124
+ else {
125
+ const parent = insertPath[insertPath.length - 2];
126
+ parent.children.push(newNode);
127
+ }
128
+ }
129
+ _chooseSplitAxis(node, newNode) {
130
+ const mid = Math.ceil(node.children.length / 2);
131
+ newNode.children = node.children.splice(mid);
132
+ }
133
+ _condenseTree(path) {
134
+ for (let i = path.length - 1; i >= 0; i--) {
135
+ const node = path[i];
136
+ if (node.children.length < this.minEntries && i > 0) {
137
+ const parent = path[i - 1];
138
+ const index = parent.children.indexOf(node);
139
+ parent.children.splice(index, 1);
140
+ }
141
+ }
142
+ }
143
+ _findItem(bounds, data, node, path) {
144
+ path.push(node);
145
+ if (node.leaf) {
146
+ return (node.children.find((item) => item.data === data && this._boundsEqual(item.bounds, bounds)) || null);
147
+ }
148
+ for (const child of node.children) {
149
+ if (this._intersects(bounds, child.bounds)) {
150
+ const result = this._findItem(bounds, data, child, path);
151
+ if (result)
152
+ return result;
153
+ }
154
+ }
155
+ path.pop();
156
+ return null;
157
+ }
158
+ _boundsEqual(a, b) {
159
+ return a.x1 === b.x1 && a.y1 === b.y1 && a.x2 === b.x2 && a.y2 === b.y2;
160
+ }
161
+ }
162
+ export class MemoryManager {
163
+ constructor(maxCacheSizeMB = 100) {
164
+ this.cache = new Map();
165
+ this.currentCacheSize = 0;
166
+ this.maxCacheSize = maxCacheSizeMB * 1024 * 1024;
167
+ this.startMemoryMonitoring();
168
+ }
169
+ set(key, data) {
170
+ const size = this.estimateSize(data);
171
+ if (this.cache.has(key)) {
172
+ const oldItem = this.cache.get(key);
173
+ this.currentCacheSize -= oldItem.size;
174
+ }
175
+ this.cache.set(key, {
176
+ data,
177
+ lastAccess: Date.now(),
178
+ size,
179
+ });
180
+ this.currentCacheSize += size;
181
+ this.evictIfNeeded();
182
+ }
183
+ get(key) {
184
+ const item = this.cache.get(key);
185
+ if (item) {
186
+ item.lastAccess = Date.now();
187
+ return item.data;
188
+ }
189
+ return null;
190
+ }
191
+ has(key) {
192
+ return this.cache.has(key);
193
+ }
194
+ delete(key) {
195
+ const item = this.cache.get(key);
196
+ if (item) {
197
+ this.currentCacheSize -= item.size;
198
+ this.cache.delete(key);
199
+ }
200
+ }
201
+ clear() {
202
+ this.cache.clear();
203
+ this.currentCacheSize = 0;
204
+ }
205
+ getMemoryUsage() {
206
+ const memoryInfo = performance.memory;
207
+ return {
208
+ pages: this.calculatePageMemory(),
209
+ highlights: this.calculateHighlightMemory(),
210
+ cache: Math.round(this.currentCacheSize / 1024 / 1024), // MB
211
+ total: memoryInfo ? Math.round(memoryInfo.usedJSHeapSize / 1024 / 1024) : undefined,
212
+ };
213
+ }
214
+ evictIfNeeded() {
215
+ while (this.currentCacheSize > this.maxCacheSize) {
216
+ const lruKey = this.findLRUKey();
217
+ if (lruKey) {
218
+ this.delete(lruKey);
219
+ }
220
+ else {
221
+ break;
222
+ }
223
+ }
224
+ }
225
+ findLRUKey() {
226
+ let lruKey = null;
227
+ let oldestTime = Infinity;
228
+ for (const [key, item] of this.cache) {
229
+ if (item.lastAccess < oldestTime) {
230
+ oldestTime = item.lastAccess;
231
+ lruKey = key;
232
+ }
233
+ }
234
+ return lruKey;
235
+ }
236
+ estimateSize(data) {
237
+ if (data === null || data === undefined)
238
+ return 0;
239
+ if (typeof data === 'string')
240
+ return data.length * 2;
241
+ if (typeof data === 'number')
242
+ return 8;
243
+ if (typeof data === 'boolean')
244
+ return 4;
245
+ if (data instanceof HTMLCanvasElement) {
246
+ return data.width * data.height * 4;
247
+ }
248
+ if (Array.isArray(data)) {
249
+ return data.reduce((sum, item) => sum + this.estimateSize(item), 0);
250
+ }
251
+ if (typeof data === 'object') {
252
+ return Object.keys(data).reduce((sum, key) => sum + this.estimateSize(key) + this.estimateSize(data[key]), 0);
253
+ }
254
+ return 1000;
255
+ }
256
+ calculatePageMemory() {
257
+ let pageMemory = 0;
258
+ for (const [key, item] of this.cache) {
259
+ if (key.startsWith('page:')) {
260
+ pageMemory += item.size;
261
+ }
262
+ }
263
+ return Math.round(pageMemory / 1024 / 1024);
264
+ }
265
+ calculateHighlightMemory() {
266
+ let highlightMemory = 0;
267
+ for (const [key, item] of this.cache) {
268
+ if (key.startsWith('highlight:')) {
269
+ highlightMemory += item.size;
270
+ }
271
+ }
272
+ return Math.round(highlightMemory / 1024 / 1024);
273
+ }
274
+ startMemoryMonitoring() {
275
+ setInterval(() => {
276
+ const usage = this.getMemoryUsage();
277
+ if (usage.total && usage.total > 200) {
278
+ console.warn('High memory usage detected:', usage);
279
+ this.forceEviction();
280
+ }
281
+ }, 10000);
282
+ }
283
+ forceEviction() {
284
+ const targetSize = this.maxCacheSize * 0.7;
285
+ while (this.currentCacheSize > targetSize) {
286
+ const lruKey = this.findLRUKey();
287
+ if (lruKey) {
288
+ this.delete(lruKey);
289
+ }
290
+ else {
291
+ break;
292
+ }
293
+ }
294
+ }
295
+ }
296
+ export class RenderOptimizer {
297
+ constructor(frameBudget = 16) {
298
+ this.frameBudget = 16;
299
+ this.renderQueue = [];
300
+ this.isProcessing = false;
301
+ this.frameBudget = frameBudget;
302
+ }
303
+ queueRenderTask(task) {
304
+ this.renderQueue.push(task);
305
+ if (!this.isProcessing) {
306
+ this.processQueue();
307
+ }
308
+ }
309
+ async processQueue() {
310
+ this.isProcessing = true;
311
+ while (this.renderQueue.length > 0) {
312
+ const frameStart = performance.now();
313
+ while (this.renderQueue.length > 0 && performance.now() - frameStart < this.frameBudget) {
314
+ const task = this.renderQueue.shift();
315
+ try {
316
+ await task();
317
+ }
318
+ catch (error) {
319
+ console.error('Render task failed:', error);
320
+ }
321
+ }
322
+ if (this.renderQueue.length > 0) {
323
+ await new Promise((resolve) => requestAnimationFrame(resolve));
324
+ }
325
+ }
326
+ this.isProcessing = false;
327
+ }
328
+ measureRenderTime(fn) {
329
+ // eslint-disable-next-line no-async-promise-executor
330
+ return new Promise(async (resolve) => {
331
+ const start = performance.now();
332
+ await fn();
333
+ const end = performance.now();
334
+ resolve(end - start);
335
+ });
336
+ }
337
+ clearQueue() {
338
+ this.renderQueue = [];
339
+ }
340
+ getQueueStatus() {
341
+ return {
342
+ queueLength: this.renderQueue.length,
343
+ isProcessing: this.isProcessing,
344
+ };
345
+ }
346
+ }
347
+ export class WorkerTaskManager {
348
+ constructor(workerScript) {
349
+ this.workers = [];
350
+ this.taskQueue = [];
351
+ this.maxWorkers = navigator.hardwareConcurrency || 4;
352
+ this.initializeWorkers(workerScript);
353
+ }
354
+ initializeWorkers(workerScript) {
355
+ for (let i = 0; i < this.maxWorkers; i++) {
356
+ try {
357
+ const worker = new Worker(workerScript);
358
+ this.workers.push(worker);
359
+ }
360
+ catch (error) {
361
+ console.warn('Failed to create worker:', error);
362
+ }
363
+ }
364
+ }
365
+ executeTask(task) {
366
+ return new Promise((resolve, reject) => {
367
+ const availableWorker = this.workers.find((worker) => !worker.onmessage);
368
+ if (availableWorker) {
369
+ availableWorker.onmessage = (e) => {
370
+ resolve(e.data);
371
+ availableWorker.onmessage = null;
372
+ };
373
+ availableWorker.onerror = reject;
374
+ availableWorker.postMessage(task);
375
+ }
376
+ else {
377
+ this.taskQueue.push(task);
378
+ setTimeout(() => this.processQueue(), 100);
379
+ }
380
+ });
381
+ }
382
+ processQueue() {
383
+ if (this.taskQueue.length === 0)
384
+ return;
385
+ const availableWorker = this.workers.find((worker) => !worker.onmessage);
386
+ if (availableWorker && this.taskQueue.length > 0) {
387
+ const task = this.taskQueue.shift();
388
+ this.executeTask(task);
389
+ }
390
+ }
391
+ destroy() {
392
+ this.workers.forEach((worker) => worker.terminate());
393
+ this.workers = [];
394
+ this.taskQueue = [];
395
+ }
396
+ }
397
+ export class PerformanceOptimizer {
398
+ constructor(options = {}) {
399
+ this.workerManager = null;
400
+ this.performanceMetrics = {
401
+ renderTime: 0,
402
+ highlightRenderTime: 0,
403
+ interactionLatency: 0,
404
+ memoryUsage: { pages: 0, highlights: 0, cache: 0 },
405
+ fps: 60,
406
+ };
407
+ this.memoryManager = new MemoryManager(options.maxCacheSize);
408
+ this.spatialIndex = new RTree();
409
+ this.renderOptimizer = new RenderOptimizer(options.frameBudget);
410
+ if (options.workerScript) {
411
+ this.workerManager = new WorkerTaskManager(options.workerScript);
412
+ }
413
+ this.startPerformanceMonitoring();
414
+ }
415
+ buildSpatialIndex(highlights, pageNumber) {
416
+ this.spatialIndex.clear();
417
+ highlights.forEach((highlight) => {
418
+ highlight.coordinates.forEach((coord) => {
419
+ this.spatialIndex.insert(coord, {
420
+ termId: highlight.termId,
421
+ pageNumber,
422
+ coordinates: coord,
423
+ });
424
+ });
425
+ });
426
+ }
427
+ findHighlightsInViewport(viewportBounds) {
428
+ return this.spatialIndex.search(viewportBounds);
429
+ }
430
+ getPerformanceMetrics() {
431
+ this.performanceMetrics.memoryUsage = this.memoryManager.getMemoryUsage();
432
+ return { ...this.performanceMetrics };
433
+ }
434
+ updateMetric(metric, value) {
435
+ this.performanceMetrics[metric] = value;
436
+ }
437
+ startPerformanceMonitoring() {
438
+ let frameCount = 0;
439
+ let lastTime = performance.now();
440
+ const monitorFPS = () => {
441
+ const currentTime = performance.now();
442
+ frameCount++;
443
+ if (currentTime - lastTime >= 1000) {
444
+ this.performanceMetrics.fps = frameCount;
445
+ frameCount = 0;
446
+ lastTime = currentTime;
447
+ }
448
+ requestAnimationFrame(monitorFPS);
449
+ };
450
+ monitorFPS();
451
+ }
452
+ optimize() {
453
+ const metrics = this.getPerformanceMetrics();
454
+ if (metrics.fps < 30) {
455
+ this.renderOptimizer = new RenderOptimizer(8);
456
+ }
457
+ else if (metrics.fps > 50) {
458
+ this.renderOptimizer = new RenderOptimizer(16);
459
+ }
460
+ if (metrics.memoryUsage.total && metrics.memoryUsage.total > 150) {
461
+ this.memoryManager.clear();
462
+ }
463
+ }
464
+ destroy() {
465
+ this.memoryManager.clear();
466
+ this.spatialIndex.clear();
467
+ this.renderOptimizer.clearQueue();
468
+ if (this.workerManager) {
469
+ this.workerManager.destroy();
470
+ }
471
+ }
472
+ }
473
+ //# sourceMappingURL=performance-optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-optimizer.js","sourceRoot":"","sources":["../../core/performance-optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { CategoryStyle, CategoryStyleManager as ICategoryStyleManager } from '../types';
2
+ export declare class CategoryStyleManager implements ICategoryStyleManager {
3
+ private styles;
4
+ private styleSheet;
5
+ private styleElement;
6
+ constructor();
7
+ /**
8
+ * Initialize CSS style sheet for dynamic styles
9
+ */
10
+ private initializeStyleSheet;
11
+ /**
12
+ * Register default category styles
13
+ */
14
+ private registerDefaultCategories;
15
+ /**
16
+ * Register a new category style
17
+ */
18
+ registerCategory(name: string, style: CategoryStyle): void;
19
+ /**
20
+ * Update existing category style
21
+ */
22
+ updateCategoryStyle(name: string, partialStyle: Partial<CategoryStyle>): void;
23
+ /**
24
+ * Ensure CategoryStyle has all required properties
25
+ */
26
+ private ensureCompleteStyle;
27
+ /**
28
+ * Generate and inject CSS for a category
29
+ */
30
+ private updateStyleSheet;
31
+ /**
32
+ * Generate CSS rules for a category
33
+ */
34
+ private generateCSSRules;
35
+ /**
36
+ * Remove existing CSS rules for a category
37
+ */
38
+ private removeRulesForCategory;
39
+ /**
40
+ * Get computed style for a term
41
+ */
42
+ getComputedStyle(termId: string, state?: 'default' | 'hover' | 'selected'): React.CSSProperties;
43
+ /**
44
+ * Get category for a term (simplified implementation)
45
+ */
46
+ private getCategoryForTerm;
47
+ /**
48
+ * Darken a color (utility function)
49
+ */
50
+ private darkenColor;
51
+ /**
52
+ * Get all registered categories
53
+ */
54
+ getCategories(): string[];
55
+ /**
56
+ * Get style for a category
57
+ */
58
+ getCategoryStyle(category: string): CategoryStyle | undefined;
59
+ /**
60
+ * Apply theme (light/dark)
61
+ */
62
+ applyTheme(theme: 'light' | 'dark'): void;
63
+ /**
64
+ * Enable/disable animations globally
65
+ */
66
+ setAnimationsEnabled(enabled: boolean): void;
67
+ /**
68
+ * Remove CSS rule by content
69
+ */
70
+ private removeRuleByContent;
71
+ /**
72
+ * Export current styles as CSS string
73
+ */
74
+ exportStyles(): string;
75
+ /**
76
+ * Import styles from CSS string
77
+ */
78
+ importStyles(cssString: string): void;
79
+ /**
80
+ * Reset all styles to defaults
81
+ */
82
+ resetToDefaults(): void;
83
+ /**
84
+ * Destroy style manager and clean up
85
+ */
86
+ destroy(): void;
87
+ }
88
+ //# sourceMappingURL=style-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-manager.d.ts","sourceRoot":"","sources":["../../core/style-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAExF,qBAAa,oBAAqB,YAAW,qBAAqB;IAChE,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,YAAY,CAAiC;;IAOrD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA2DjC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAa1D;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAa7E;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+ExB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+B9B;;OAEG;IACH,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,SAAS,GAAG,OAAO,GAAG,UAAsB,GAClD,KAAK,CAAC,aAAa;IAqCtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI7D;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAczC;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IA2B5C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,YAAY,IAAI,MAAM;IAKtB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMrC;;OAEG;IACH,eAAe,IAAI,IAAI;IAQvB;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB"}