digitaltwin-core 0.13.3 → 0.14.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 (169) hide show
  1. package/package.json +101 -106
  2. package/dist/auth/apisix_parser.d.ts +0 -146
  3. package/dist/auth/apisix_parser.d.ts.map +0 -1
  4. package/dist/auth/apisix_parser.js +0 -185
  5. package/dist/auth/apisix_parser.js.map +0 -1
  6. package/dist/auth/auth_config.d.ts +0 -126
  7. package/dist/auth/auth_config.d.ts.map +0 -1
  8. package/dist/auth/auth_config.js +0 -169
  9. package/dist/auth/auth_config.js.map +0 -1
  10. package/dist/auth/index.d.ts +0 -5
  11. package/dist/auth/index.d.ts.map +0 -1
  12. package/dist/auth/index.js +0 -4
  13. package/dist/auth/index.js.map +0 -1
  14. package/dist/auth/types.d.ts +0 -100
  15. package/dist/auth/types.d.ts.map +0 -1
  16. package/dist/auth/types.js +0 -2
  17. package/dist/auth/types.js.map +0 -1
  18. package/dist/auth/user_service.d.ts +0 -86
  19. package/dist/auth/user_service.d.ts.map +0 -1
  20. package/dist/auth/user_service.js +0 -237
  21. package/dist/auth/user_service.js.map +0 -1
  22. package/dist/components/assets_manager.d.ts +0 -662
  23. package/dist/components/assets_manager.d.ts.map +0 -1
  24. package/dist/components/assets_manager.js +0 -1529
  25. package/dist/components/assets_manager.js.map +0 -1
  26. package/dist/components/async_upload.d.ts +0 -20
  27. package/dist/components/async_upload.d.ts.map +0 -1
  28. package/dist/components/async_upload.js +0 -10
  29. package/dist/components/async_upload.js.map +0 -1
  30. package/dist/components/collector.d.ts +0 -203
  31. package/dist/components/collector.d.ts.map +0 -1
  32. package/dist/components/collector.js +0 -202
  33. package/dist/components/collector.js.map +0 -1
  34. package/dist/components/custom_table_manager.d.ts +0 -503
  35. package/dist/components/custom_table_manager.d.ts.map +0 -1
  36. package/dist/components/custom_table_manager.js +0 -1052
  37. package/dist/components/custom_table_manager.js.map +0 -1
  38. package/dist/components/global_assets_handler.d.ts +0 -63
  39. package/dist/components/global_assets_handler.d.ts.map +0 -1
  40. package/dist/components/global_assets_handler.js +0 -127
  41. package/dist/components/global_assets_handler.js.map +0 -1
  42. package/dist/components/handler.d.ts +0 -104
  43. package/dist/components/handler.d.ts.map +0 -1
  44. package/dist/components/handler.js +0 -110
  45. package/dist/components/handler.js.map +0 -1
  46. package/dist/components/harvester.d.ts +0 -182
  47. package/dist/components/harvester.d.ts.map +0 -1
  48. package/dist/components/harvester.js +0 -393
  49. package/dist/components/harvester.js.map +0 -1
  50. package/dist/components/index.d.ts +0 -11
  51. package/dist/components/index.d.ts.map +0 -1
  52. package/dist/components/index.js +0 -9
  53. package/dist/components/index.js.map +0 -1
  54. package/dist/components/interfaces.d.ts +0 -126
  55. package/dist/components/interfaces.d.ts.map +0 -1
  56. package/dist/components/interfaces.js +0 -8
  57. package/dist/components/interfaces.js.map +0 -1
  58. package/dist/components/map_manager.d.ts +0 -61
  59. package/dist/components/map_manager.d.ts.map +0 -1
  60. package/dist/components/map_manager.js +0 -242
  61. package/dist/components/map_manager.js.map +0 -1
  62. package/dist/components/tileset_manager.d.ts +0 -125
  63. package/dist/components/tileset_manager.d.ts.map +0 -1
  64. package/dist/components/tileset_manager.js +0 -618
  65. package/dist/components/tileset_manager.js.map +0 -1
  66. package/dist/components/types.d.ts +0 -226
  67. package/dist/components/types.d.ts.map +0 -1
  68. package/dist/components/types.js +0 -8
  69. package/dist/components/types.js.map +0 -1
  70. package/dist/database/adapters/knex_database_adapter.d.ts +0 -92
  71. package/dist/database/adapters/knex_database_adapter.d.ts.map +0 -1
  72. package/dist/database/adapters/knex_database_adapter.js +0 -647
  73. package/dist/database/adapters/knex_database_adapter.js.map +0 -1
  74. package/dist/database/database_adapter.d.ts +0 -251
  75. package/dist/database/database_adapter.d.ts.map +0 -1
  76. package/dist/database/database_adapter.js +0 -46
  77. package/dist/database/database_adapter.js.map +0 -1
  78. package/dist/engine/digital_twin_engine.d.ts +0 -253
  79. package/dist/engine/digital_twin_engine.d.ts.map +0 -1
  80. package/dist/engine/digital_twin_engine.js +0 -790
  81. package/dist/engine/digital_twin_engine.js.map +0 -1
  82. package/dist/engine/endpoints.d.ts +0 -47
  83. package/dist/engine/endpoints.d.ts.map +0 -1
  84. package/dist/engine/endpoints.js +0 -56
  85. package/dist/engine/endpoints.js.map +0 -1
  86. package/dist/engine/events.d.ts +0 -93
  87. package/dist/engine/events.d.ts.map +0 -1
  88. package/dist/engine/events.js +0 -71
  89. package/dist/engine/events.js.map +0 -1
  90. package/dist/engine/initializer.d.ts +0 -62
  91. package/dist/engine/initializer.d.ts.map +0 -1
  92. package/dist/engine/initializer.js +0 -108
  93. package/dist/engine/initializer.js.map +0 -1
  94. package/dist/engine/queue_manager.d.ts +0 -87
  95. package/dist/engine/queue_manager.d.ts.map +0 -1
  96. package/dist/engine/queue_manager.js +0 -196
  97. package/dist/engine/queue_manager.js.map +0 -1
  98. package/dist/engine/scheduler.d.ts +0 -30
  99. package/dist/engine/scheduler.d.ts.map +0 -1
  100. package/dist/engine/scheduler.js +0 -370
  101. package/dist/engine/scheduler.js.map +0 -1
  102. package/dist/engine/upload_processor.d.ts +0 -36
  103. package/dist/engine/upload_processor.d.ts.map +0 -1
  104. package/dist/engine/upload_processor.js +0 -101
  105. package/dist/engine/upload_processor.js.map +0 -1
  106. package/dist/env/env.d.ts +0 -134
  107. package/dist/env/env.d.ts.map +0 -1
  108. package/dist/env/env.js +0 -177
  109. package/dist/env/env.js.map +0 -1
  110. package/dist/index.d.ts +0 -49
  111. package/dist/index.d.ts.map +0 -1
  112. package/dist/index.js +0 -57
  113. package/dist/index.js.map +0 -1
  114. package/dist/openapi/generator.d.ts +0 -93
  115. package/dist/openapi/generator.d.ts.map +0 -1
  116. package/dist/openapi/generator.js +0 -293
  117. package/dist/openapi/generator.js.map +0 -1
  118. package/dist/openapi/index.d.ts +0 -9
  119. package/dist/openapi/index.d.ts.map +0 -1
  120. package/dist/openapi/index.js +0 -9
  121. package/dist/openapi/index.js.map +0 -1
  122. package/dist/openapi/types.d.ts +0 -182
  123. package/dist/openapi/types.d.ts.map +0 -1
  124. package/dist/openapi/types.js +0 -16
  125. package/dist/openapi/types.js.map +0 -1
  126. package/dist/storage/adapters/local_storage_service.d.ts +0 -51
  127. package/dist/storage/adapters/local_storage_service.d.ts.map +0 -1
  128. package/dist/storage/adapters/local_storage_service.js +0 -110
  129. package/dist/storage/adapters/local_storage_service.js.map +0 -1
  130. package/dist/storage/adapters/ovh_storage_service.d.ts +0 -61
  131. package/dist/storage/adapters/ovh_storage_service.d.ts.map +0 -1
  132. package/dist/storage/adapters/ovh_storage_service.js +0 -172
  133. package/dist/storage/adapters/ovh_storage_service.js.map +0 -1
  134. package/dist/storage/storage_factory.d.ts +0 -14
  135. package/dist/storage/storage_factory.d.ts.map +0 -1
  136. package/dist/storage/storage_factory.js +0 -36
  137. package/dist/storage/storage_factory.js.map +0 -1
  138. package/dist/storage/storage_service.d.ts +0 -163
  139. package/dist/storage/storage_service.d.ts.map +0 -1
  140. package/dist/storage/storage_service.js +0 -54
  141. package/dist/storage/storage_service.js.map +0 -1
  142. package/dist/types/data_record.d.ts +0 -123
  143. package/dist/types/data_record.d.ts.map +0 -1
  144. package/dist/types/data_record.js +0 -8
  145. package/dist/types/data_record.js.map +0 -1
  146. package/dist/utils/http_responses.d.ts +0 -155
  147. package/dist/utils/http_responses.d.ts.map +0 -1
  148. package/dist/utils/http_responses.js +0 -190
  149. package/dist/utils/http_responses.js.map +0 -1
  150. package/dist/utils/index.d.ts +0 -8
  151. package/dist/utils/index.d.ts.map +0 -1
  152. package/dist/utils/index.js +0 -6
  153. package/dist/utils/index.js.map +0 -1
  154. package/dist/utils/logger.d.ts +0 -74
  155. package/dist/utils/logger.d.ts.map +0 -1
  156. package/dist/utils/logger.js +0 -92
  157. package/dist/utils/logger.js.map +0 -1
  158. package/dist/utils/map_to_data_record.d.ts +0 -10
  159. package/dist/utils/map_to_data_record.d.ts.map +0 -1
  160. package/dist/utils/map_to_data_record.js +0 -36
  161. package/dist/utils/map_to_data_record.js.map +0 -1
  162. package/dist/utils/servable_endpoint.d.ts +0 -63
  163. package/dist/utils/servable_endpoint.d.ts.map +0 -1
  164. package/dist/utils/servable_endpoint.js +0 -67
  165. package/dist/utils/servable_endpoint.js.map +0 -1
  166. package/dist/utils/zip_utils.d.ts +0 -66
  167. package/dist/utils/zip_utils.d.ts.map +0 -1
  168. package/dist/utils/zip_utils.js +0 -169
  169. package/dist/utils/zip_utils.js.map +0 -1
@@ -1,242 +0,0 @@
1
- import { AssetsManager } from './assets_manager.js';
2
- import { ApisixAuthParser } from '../auth/apisix_parser.js';
3
- /**
4
- * Specialized Assets Manager for handling map layer data.
5
- *
6
- * Extends the base AssetsManager with specialized logic for:
7
- * - Processing JSON layer objects containing map data
8
- * - Extracting and analyzing layer metadata
9
- * - Storing layer-specific information
10
- *
11
- * Inherits all CRUD endpoints from AssetsManager:
12
- * - GET /{name} - List all layers
13
- * - POST /{name}/upload - Upload layer data (overridden)
14
- * - GET /{name}/:id - Get layer data
15
- * - PUT /{name}/:id - Update layer metadata
16
- * - DELETE /{name}/:id - Delete layer
17
- * - GET /{name}/:id/download - Download layer data
18
- */
19
- export class MapManager extends AssetsManager {
20
- /**
21
- * Override the upload handler to process JSON layer objects instead of files.
22
- *
23
- * Processes the layer data:
24
- * 1. Validates the layer object structure
25
- * 2. Extracts layer-specific metadata
26
- * 3. Stores the layer data as JSON
27
- *
28
- * @param req - HTTP request with layer JSON data
29
- * @returns DataResponse with upload result
30
- */
31
- async handleUpload(req) {
32
- try {
33
- if (!req || !req.body) {
34
- return {
35
- status: 400,
36
- content: JSON.stringify({
37
- error: 'Invalid request: missing request body'
38
- }),
39
- headers: { 'Content-Type': 'application/json' }
40
- };
41
- }
42
- // Check authentication
43
- if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
44
- return {
45
- status: 401,
46
- content: JSON.stringify({
47
- error: 'Authentication required'
48
- }),
49
- headers: { 'Content-Type': 'application/json' }
50
- };
51
- }
52
- // Parse authenticated user
53
- const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
54
- if (!authUser) {
55
- return {
56
- status: 401,
57
- content: JSON.stringify({
58
- error: 'Invalid authentication headers'
59
- }),
60
- headers: { 'Content-Type': 'application/json' }
61
- };
62
- }
63
- // Find or create user in database
64
- const userRecord = await this.userService.findOrCreateUser(authUser);
65
- if (!userRecord.id) {
66
- return {
67
- status: 500,
68
- content: JSON.stringify({
69
- error: 'Failed to retrieve user information'
70
- }),
71
- headers: { 'Content-Type': 'application/json' }
72
- };
73
- }
74
- const { layer, description } = req.body;
75
- if (!layer) {
76
- return {
77
- status: 400,
78
- content: JSON.stringify({
79
- error: 'Missing required field: layer (JSON object)'
80
- }),
81
- headers: { 'Content-Type': 'application/json' }
82
- };
83
- }
84
- // Validate layer structure
85
- if (typeof layer !== 'object' || layer === null) {
86
- return {
87
- status: 400,
88
- content: JSON.stringify({
89
- error: 'Layer must be a valid JSON object'
90
- }),
91
- headers: { 'Content-Type': 'application/json' }
92
- };
93
- }
94
- // Analyze layer content
95
- const layerInfo = this.analyzeLayerContent(layer);
96
- const config = this.getConfiguration();
97
- const now = new Date();
98
- // Convert layer object to JSON string for storage
99
- const layerJson = JSON.stringify(layer, null, 2);
100
- const layerBuffer = Buffer.from(layerJson, 'utf-8');
101
- // Generate filename from layer name or use timestamp
102
- const filename = `${layerInfo.layer_name || 'layer'}_${Date.now()}.json`;
103
- // Store layer data using framework pattern
104
- const url = await this.storage.save(layerBuffer, config.name, filename);
105
- // Create extended metadata with layer-specific fields
106
- const metadata = {
107
- name: config.name,
108
- type: config.contentType || 'application/json',
109
- url,
110
- date: now,
111
- description: description || layerInfo.description || 'Map layer',
112
- source: req.body.source || 'uploaded',
113
- owner_id: userRecord.id,
114
- filename,
115
- // Layer-specific metadata
116
- layer_type: layerInfo.layer_type,
117
- layer_name: layerInfo.layer_name,
118
- geometry_type: layerInfo.geometry_type,
119
- properties_count: layerInfo.properties_count
120
- };
121
- await this.db.save(metadata);
122
- return {
123
- status: 200,
124
- content: JSON.stringify({
125
- message: 'Layer uploaded successfully',
126
- layer_name: layerInfo.layer_name,
127
- geometry_type: layerInfo.geometry_type,
128
- properties_count: layerInfo.properties_count
129
- }),
130
- headers: { 'Content-Type': 'application/json' }
131
- };
132
- }
133
- catch (error) {
134
- return {
135
- status: 500,
136
- content: JSON.stringify({
137
- error: error instanceof Error ? error.message : 'Unknown error'
138
- }),
139
- headers: { 'Content-Type': 'application/json' }
140
- };
141
- }
142
- }
143
- /**
144
- * Analyze layer content to extract metadata
145
- * @param layer - The layer object to analyze
146
- * @returns Layer metadata information
147
- */
148
- analyzeLayerContent(layer) {
149
- // Default values
150
- let layer_type = 'unknown';
151
- let layer_name = 'layer';
152
- let geometry_type;
153
- let properties_count = 0;
154
- // Try to detect GeoJSON
155
- if (layer.type === 'FeatureCollection' && Array.isArray(layer.features)) {
156
- layer_type = 'geojson';
157
- layer_name = layer.name || 'geojson_layer';
158
- // Analyze first feature for geometry type
159
- if (layer.features.length > 0) {
160
- const firstFeature = layer.features[0];
161
- if (firstFeature.geometry && firstFeature.geometry.type) {
162
- geometry_type = firstFeature.geometry.type.toLowerCase();
163
- }
164
- // Count properties in first feature
165
- if (firstFeature.properties) {
166
- properties_count = Object.keys(firstFeature.properties).length;
167
- }
168
- }
169
- }
170
- // Try to detect single GeoJSON Feature
171
- else if (layer.type === 'Feature' && layer.geometry) {
172
- layer_type = 'geojson_feature';
173
- layer_name = layer.properties?.name || 'feature';
174
- geometry_type = layer.geometry.type?.toLowerCase();
175
- properties_count = layer.properties ? Object.keys(layer.properties).length : 0;
176
- }
177
- // Try to detect other common layer formats
178
- else if (layer.layers && Array.isArray(layer.layers)) {
179
- layer_type = 'layer_group';
180
- layer_name = layer.name || 'layer_group';
181
- properties_count = layer.layers.length;
182
- }
183
- // Generic object
184
- else {
185
- layer_type = 'custom';
186
- layer_name = layer.name || layer.title || layer.id || 'custom_layer';
187
- properties_count = Object.keys(layer).length;
188
- }
189
- // Extract description from various fields
190
- const description = layer.description || layer.desc || layer.summary;
191
- return {
192
- layer_type,
193
- layer_name,
194
- geometry_type,
195
- properties_count,
196
- description
197
- };
198
- }
199
- /**
200
- * Override retrieve to include layer-specific metadata in the response
201
- */
202
- async retrieve() {
203
- try {
204
- const assets = await this.getAllAssets();
205
- const config = this.getConfiguration();
206
- // Transform to include layer metadata
207
- const assetsWithMetadata = assets.map(asset => ({
208
- id: asset.id,
209
- name: asset.name,
210
- date: asset.date,
211
- contentType: asset.contentType,
212
- description: asset.description || '',
213
- source: asset.source || '',
214
- owner_id: asset.owner_id || null,
215
- filename: asset.filename || '',
216
- // Layer-specific fields
217
- layer_type: asset.layer_type || '',
218
- layer_name: asset.layer_name || '',
219
- geometry_type: asset.geometry_type || null,
220
- properties_count: asset.properties_count || 0,
221
- // URLs for frontend
222
- url: `/${config.endpoint}/${asset.id}`,
223
- download_url: `/${config.endpoint}/${asset.id}/download`
224
- }));
225
- return {
226
- status: 200,
227
- content: JSON.stringify(assetsWithMetadata),
228
- headers: { 'Content-Type': 'application/json' }
229
- };
230
- }
231
- catch (error) {
232
- return {
233
- status: 500,
234
- content: JSON.stringify({
235
- error: error instanceof Error ? error.message : 'Unknown error'
236
- }),
237
- headers: { 'Content-Type': 'application/json' }
238
- };
239
- }
240
- }
241
- }
242
- //# sourceMappingURL=map_manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"map_manager.js","sourceRoot":"","sources":["../../src/components/map_manager.ts"],"names":[],"mappings":"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"}
@@ -1,125 +0,0 @@
1
- import { AssetsManager } from './assets_manager.js';
2
- import type { DataResponse } from './types.js';
3
- import type { OpenAPIComponentSpec } from '../openapi/types.js';
4
- import type { HttpMethod } from '../engine/endpoints.js';
5
- import type { AsyncUploadable } from './async_upload.js';
6
- import type { Queue } from 'bullmq';
7
- /**
8
- * Metadata stored in database for a tileset.
9
- * Simplified: Cesium accesses files directly from OVH.
10
- */
11
- export interface TilesetMetadataRow {
12
- id?: number;
13
- name: string;
14
- type: string;
15
- /** Base path in storage for deletion (e.g., tilesets/123) */
16
- url: string;
17
- /** Public URL to tileset.json */
18
- tileset_url: string;
19
- date: Date;
20
- description: string;
21
- filename: string;
22
- owner_id: number | null;
23
- is_public?: boolean;
24
- upload_status?: 'pending' | 'processing' | 'completed' | 'failed';
25
- upload_job_id?: string;
26
- upload_error?: string;
27
- }
28
- /**
29
- * Specialized Assets Manager for handling 3D Tiles tilesets.
30
- *
31
- * This manager extracts uploaded ZIP files and stores each file in cloud storage (OVH S3),
32
- * allowing Cesium and other 3D viewers to load tilesets directly via public URLs.
33
- *
34
- * ## How it works
35
- *
36
- * 1. User uploads a ZIP containing a 3D Tiles tileset
37
- * 2. ZIP is extracted and all files are stored in OVH with public-read ACL
38
- * 3. Database stores only the tileset.json URL and base path
39
- * 4. Cesium loads tileset.json directly from OVH
40
- * 5. Cesium fetches tiles using relative paths in tileset.json (directly from OVH)
41
- *
42
- * ## Endpoints
43
- *
44
- * - GET /{endpoint} - List all tilesets with their public URLs
45
- * - POST /{endpoint} - Upload tileset ZIP (sync < 50MB, async >= 50MB)
46
- * - GET /{endpoint}/:id/status - Poll async upload status
47
- * - PUT /{endpoint}/:id - Update tileset metadata
48
- * - DELETE /{endpoint}/:id - Delete tileset and all files from storage
49
- *
50
- * @example
51
- * ```typescript
52
- * class MyTilesetManager extends TilesetManager {
53
- * getConfiguration() {
54
- * return {
55
- * name: 'tilesets',
56
- * description: 'Manage 3D Tiles tilesets',
57
- * contentType: 'application/json',
58
- * endpoint: 'api/tilesets',
59
- * extension: '.zip'
60
- * }
61
- * }
62
- * }
63
- *
64
- * // After upload, response contains:
65
- * // { tileset_url: 'https://bucket.s3.../tilesets/123/tileset.json' }
66
- * //
67
- * // Cesium loads directly:
68
- * // Cesium.Cesium3DTileset.fromUrl(tileset_url)
69
- * ```
70
- */
71
- export declare abstract class TilesetManager extends AssetsManager implements AsyncUploadable {
72
- /** Upload queue for async processing (injected by engine) */
73
- protected uploadQueue: Queue | null;
74
- /**
75
- * Set the upload queue for async job processing.
76
- * Called by DigitalTwinEngine during initialization.
77
- */
78
- setUploadQueue(queue: Queue): void;
79
- /**
80
- * Handle tileset upload.
81
- *
82
- * - Files < 50MB: Synchronous extraction and upload
83
- * - Files >= 50MB: Queued for async processing (returns 202)
84
- */
85
- handleUpload(req: any): Promise<DataResponse>;
86
- /**
87
- * Authenticate user from request headers.
88
- * Returns user ID on success, or error response on failure.
89
- */
90
- private authenticateUser;
91
- /**
92
- * Queue upload for background processing. Returns HTTP 202 immediately.
93
- */
94
- private handleAsyncUpload;
95
- /**
96
- * Process upload synchronously.
97
- */
98
- private handleSyncUpload;
99
- /**
100
- * Get upload status for async uploads.
101
- */
102
- handleGetStatus(req: any): Promise<DataResponse>;
103
- /**
104
- * List all tilesets with their public URLs.
105
- */
106
- retrieve(req?: any): Promise<DataResponse>;
107
- /**
108
- * Delete tileset and all files from storage.
109
- */
110
- handleDelete(req: any): Promise<DataResponse>;
111
- /**
112
- * Get HTTP endpoints for this manager.
113
- */
114
- getEndpoints(): Array<{
115
- method: HttpMethod;
116
- path: string;
117
- handler: (...args: any[]) => any;
118
- responseType?: string;
119
- }>;
120
- /**
121
- * Generate OpenAPI specification.
122
- */
123
- getOpenAPISpec(): OpenAPIComponentSpec;
124
- }
125
- //# sourceMappingURL=tileset_manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tileset_manager.d.ts","sourceRoot":"","sources":["../../src/components/tileset_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAIxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAcnC;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAA;IACX,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,IAAI,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAA;IACjE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,8BAAsB,cAAe,SAAQ,aAAc,YAAW,eAAe;IACjF,6DAA6D;IAC7D,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAO;IAE1C;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIlC;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAkDnD;;;OAGG;YACW,gBAAgB;IA0B9B;;OAEG;YACW,iBAAiB;IAgE/B;;OAEG;YACW,gBAAgB;IAqE9B;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAwCtD;;OAEG;IACG,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAyChD;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IA8DnD;;OAEG;IACH,YAAY,IAAI,KAAK,CAAC;QAClB,MAAM,EAAE,UAAU,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;QAChC,YAAY,CAAC,EAAE,MAAM,CAAA;KACxB,CAAC;IA0CF;;OAEG;IACH,cAAc,IAAI,oBAAoB;CA0LzC"}