@agent-foundry/replay-server 1.0.0 → 1.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 (46) hide show
  1. package/.cursor/dev.mdc +941 -0
  2. package/.cursor/project.mdc +17 -2
  3. package/.env +30 -0
  4. package/Dockerfile +6 -0
  5. package/README.md +153 -12
  6. package/dist/cli/render.js +14 -4
  7. package/dist/cli/render.js.map +1 -1
  8. package/dist/renderer/PuppeteerRenderer.d.ts +12 -2
  9. package/dist/renderer/PuppeteerRenderer.d.ts.map +1 -1
  10. package/dist/renderer/PuppeteerRenderer.js +23 -16
  11. package/dist/renderer/PuppeteerRenderer.js.map +1 -1
  12. package/dist/server/index.d.ts +4 -0
  13. package/dist/server/index.d.ts.map +1 -1
  14. package/dist/server/index.js +200 -46
  15. package/dist/server/index.js.map +1 -1
  16. package/dist/services/BundleManager.d.ts +99 -0
  17. package/dist/services/BundleManager.d.ts.map +1 -0
  18. package/dist/services/BundleManager.js +410 -0
  19. package/dist/services/BundleManager.js.map +1 -0
  20. package/dist/services/OSSClient.d.ts +51 -0
  21. package/dist/services/OSSClient.d.ts.map +1 -0
  22. package/dist/services/OSSClient.js +207 -0
  23. package/dist/services/OSSClient.js.map +1 -0
  24. package/dist/services/index.d.ts +7 -0
  25. package/dist/services/index.d.ts.map +1 -0
  26. package/dist/services/index.js +7 -0
  27. package/dist/services/index.js.map +1 -0
  28. package/dist/services/types.d.ts +73 -0
  29. package/dist/services/types.d.ts.map +1 -0
  30. package/dist/services/types.js +5 -0
  31. package/dist/services/types.js.map +1 -0
  32. package/docker-compose.local.yml +8 -0
  33. package/env.example +30 -0
  34. package/package.json +7 -3
  35. package/restart.sh +5 -0
  36. package/samples/jump_arena_0_ja-mks5um2x-nksbmz.json +1907 -0
  37. package/scripts/render-pipeline.sh +657 -0
  38. package/scripts/test-bundle-preload.sh +20 -0
  39. package/scripts/test-service-sts.sh +176 -0
  40. package/src/cli/render.ts +18 -7
  41. package/src/renderer/PuppeteerRenderer.ts +41 -21
  42. package/src/server/index.ts +249 -68
  43. package/src/services/BundleManager.ts +503 -0
  44. package/src/services/OSSClient.ts +286 -0
  45. package/src/services/index.ts +7 -0
  46. package/src/services/types.ts +78 -0
@@ -9,6 +9,10 @@
9
9
  * - GET /status/:jobId - Get job status
10
10
  * - GET /download/:jobId - Download completed video
11
11
  * - GET /bundles - List available game bundles
12
+ * - POST /bundles/preload - Preload a bundle
13
+ * - GET /bundles/stats - Get cache statistics
14
+ * - GET /bundles/:bundleId - Get specific bundle info
15
+ * - DELETE /bundles/:bundleId - Remove bundle from cache
12
16
  */
13
17
  import express from 'express';
14
18
  import cors from 'cors';
@@ -19,6 +23,8 @@ import { fileURLToPath } from 'url';
19
23
  import { dirname } from 'path';
20
24
  import { execSync } from 'child_process';
21
25
  import { PuppeteerRenderer } from '../renderer/PuppeteerRenderer.js';
26
+ import { createOSSClient } from '../services/OSSClient.js';
27
+ import { createBundleManager, BundleManagerError } from '../services/BundleManager.js';
22
28
  const __dirname = dirname(fileURLToPath(import.meta.url));
23
29
  const app = express();
24
30
  app.use(cors());
@@ -28,46 +34,166 @@ const PORT = process.env.PORT || 3001;
28
34
  const GAME_URL = process.env.GAME_URL || 'http://localhost:5173';
29
35
  const OUTPUT_DIR = process.env.OUTPUT_DIR || path.join(process.cwd(), 'output');
30
36
  const BUNDLES_DIR = process.env.BUNDLES_DIR || path.join(__dirname, '../../bundles');
37
+ const BFF_BASE_URL = process.env.BFF_BASE_URL || 'http://localhost:11001';
38
+ const BFF_SERVICE_TOKEN = process.env.BFF_SERVICE_TOKEN;
39
+ const MAX_CACHE_SIZE = parseInt(process.env.MAX_CACHE_SIZE || '10737418240'); // 10GB default
40
+ // Initialize OSS Client (for downloading bundles)
41
+ const ossClient = createOSSClient({
42
+ bffBaseUrl: BFF_BASE_URL,
43
+ serviceToken: BFF_SERVICE_TOKEN,
44
+ timeout: 30000,
45
+ });
46
+ // Initialize Bundle Manager
47
+ const bundleManager = createBundleManager({
48
+ bundlesDir: BUNDLES_DIR,
49
+ maxCacheSize: MAX_CACHE_SIZE,
50
+ ossClient,
51
+ });
31
52
  /**
32
- * GET /bundles
53
+ * GET /api/bundles
33
54
  * List available game bundles
34
- * This route must be registered BEFORE the static middleware to handle /bundles requests
35
55
  */
36
- app.get('/bundles', (req, res) => {
37
- console.log('[GET /bundles] Request received');
56
+ app.get('/api/bundles', (req, res) => {
57
+ console.log('[GET /api/bundles] Request received');
38
58
  try {
39
- // Ensure bundles directory exists
40
- if (!fs.existsSync(BUNDLES_DIR)) {
41
- return res.json({ bundles: [], count: 0 });
42
- }
43
- // List directories in bundles folder
44
- const entries = fs.readdirSync(BUNDLES_DIR, { withFileTypes: true });
45
- const bundles = entries
46
- .filter(entry => entry.isDirectory())
47
- .map(entry => {
48
- const bundlePath = path.join(BUNDLES_DIR, entry.name);
49
- const indexPath = path.join(bundlePath, 'index.html');
50
- const hasIndex = fs.existsSync(indexPath);
51
- return {
52
- bundleId: entry.name,
53
- path: bundlePath,
54
- url: `http://localhost:${PORT}/bundles/${entry.name}/`,
55
- ready: hasIndex,
56
- };
57
- });
58
- console.log('[GET /bundles] Found bundles:', bundles.length);
59
+ const bundles = bundleManager.listBundles().map(info => ({
60
+ bundleId: info.bundleId,
61
+ status: info.status,
62
+ size: info.size,
63
+ cachedAt: info.cachedAt,
64
+ lastAccessedAt: info.lastAccessedAt,
65
+ url: info.status === 'ready'
66
+ ? `http://localhost:${PORT}/bundles/${info.bundleId}/`
67
+ : undefined,
68
+ ready: info.status === 'ready',
69
+ progress: info.progress,
70
+ error: info.error,
71
+ }));
72
+ const cacheStats = bundleManager.getCacheStats();
73
+ console.log('[GET /api/bundles] Found bundles:', bundles.length);
59
74
  res.json({
60
75
  bundles,
61
76
  count: bundles.length,
62
- bundlesDir: BUNDLES_DIR,
77
+ cache: cacheStats,
63
78
  });
64
79
  }
65
80
  catch (error) {
66
- console.error('[GET /bundles] Error listing bundles:', error);
81
+ console.error('[GET /api/bundles] Error listing bundles:', error);
67
82
  res.status(500).json({ error: 'Failed to list bundles' });
68
83
  }
69
84
  });
70
- // Serve static game bundles (AFTER API route to allow /bundles/<bundleId>/ paths)
85
+ /**
86
+ * GET /api/bundles/stats
87
+ * Get cache and download statistics
88
+ */
89
+ app.get('/api/bundles/stats', (req, res) => {
90
+ console.log('[GET /api/bundles/stats] Request received');
91
+ try {
92
+ const cacheStats = bundleManager.getCacheStats();
93
+ const downloadStats = bundleManager.getDownloadStats();
94
+ res.json({
95
+ cache: cacheStats,
96
+ downloads: downloadStats,
97
+ });
98
+ }
99
+ catch (error) {
100
+ console.error('[GET /api/bundles/stats] Error getting stats:', error);
101
+ res.status(500).json({ error: 'Failed to get stats' });
102
+ }
103
+ });
104
+ /**
105
+ * POST /api/bundles/preload
106
+ * Preload a bundle (async download)
107
+ */
108
+ app.post('/api/bundles/preload', async (req, res) => {
109
+ console.log('[POST /api/bundles/preload] Request received');
110
+ try {
111
+ const { bundleId, bundleUrl } = req.body;
112
+ if (!bundleId) {
113
+ return res.status(400).json({ error: 'bundleId is required' });
114
+ }
115
+ if (!bundleUrl) {
116
+ return res.status(400).json({ error: 'bundleUrl is required' });
117
+ }
118
+ // Check if already cached
119
+ if (bundleManager.isCached(bundleId)) {
120
+ return res.json({
121
+ bundleId,
122
+ status: 'ready',
123
+ message: 'Bundle already cached',
124
+ });
125
+ }
126
+ // Start download in background (non-blocking)
127
+ bundleManager.ensureBundle(bundleId, bundleUrl).catch(error => {
128
+ console.error(`[POST /api/bundles/preload] Failed to download ${bundleId}:`, error);
129
+ });
130
+ res.json({
131
+ bundleId,
132
+ status: 'downloading',
133
+ message: 'Bundle download started',
134
+ });
135
+ }
136
+ catch (error) {
137
+ console.error('[POST /api/bundles/preload] Error:', error);
138
+ res.status(500).json({ error: 'Failed to start bundle download' });
139
+ }
140
+ });
141
+ /**
142
+ * GET /api/bundles/:bundleId
143
+ * Get specific bundle info
144
+ */
145
+ app.get('/api/bundles/:bundleId', (req, res) => {
146
+ const { bundleId } = req.params;
147
+ console.log(`[GET /api/bundles/${bundleId}] Request received`);
148
+ try {
149
+ const info = bundleManager.getBundleInfo(bundleId);
150
+ if (!info) {
151
+ return res.status(404).json({ error: 'Bundle not found' });
152
+ }
153
+ res.json({
154
+ bundleId: info.bundleId,
155
+ status: info.status,
156
+ size: info.size,
157
+ cachedAt: info.cachedAt,
158
+ lastAccessedAt: info.lastAccessedAt,
159
+ url: info.status === 'ready'
160
+ ? `http://localhost:${PORT}/bundles/${info.bundleId}/`
161
+ : undefined,
162
+ ready: info.status === 'ready',
163
+ progress: info.progress,
164
+ error: info.error,
165
+ });
166
+ }
167
+ catch (error) {
168
+ console.error(`[GET /api/bundles/${bundleId}] Error:`, error);
169
+ res.status(500).json({ error: 'Failed to get bundle info' });
170
+ }
171
+ });
172
+ /**
173
+ * DELETE /api/bundles/:bundleId
174
+ * Remove bundle from cache
175
+ */
176
+ app.delete('/api/bundles/:bundleId', (req, res) => {
177
+ const { bundleId } = req.params;
178
+ console.log(`[DELETE /api/bundles/${bundleId}] Request received`);
179
+ try {
180
+ const info = bundleManager.getBundleInfo(bundleId);
181
+ if (!info) {
182
+ return res.status(404).json({ error: 'Bundle not found' });
183
+ }
184
+ bundleManager.removeBundle(bundleId);
185
+ res.json({
186
+ bundleId,
187
+ message: 'Bundle removed from cache',
188
+ });
189
+ }
190
+ catch (error) {
191
+ console.error(`[DELETE /api/bundles/${bundleId}] Error:`, error);
192
+ res.status(500).json({ error: 'Failed to remove bundle' });
193
+ }
194
+ });
195
+ // Serve static game bundles at /bundles/<bundleId>/
196
+ // API routes are at /api/bundles/* to avoid conflicts
71
197
  app.use('/bundles', express.static(BUNDLES_DIR, {
72
198
  index: 'index.html',
73
199
  extensions: ['html']
@@ -134,17 +260,31 @@ app.get('/debug/chrome', async (req, res) => {
134
260
  });
135
261
  /**
136
262
  * Resolve game URL from manifest bundleId or config
263
+ * Now supports dynamic bundle downloading
137
264
  */
138
- function resolveGameUrl(manifest, configGameUrl) {
265
+ async function resolveGameUrl(manifest, config) {
139
266
  // 1. Explicit gameUrl in config takes precedence
140
- if (configGameUrl) {
141
- return configGameUrl;
267
+ if (config?.gameUrl) {
268
+ return config.gameUrl;
142
269
  }
143
270
  // 2. Use bundleId from manifest to serve from local bundles
144
271
  if (manifest.bundleId) {
145
- const bundlePath = path.join(BUNDLES_DIR, manifest.bundleId);
146
- if (!fs.existsSync(bundlePath)) {
147
- throw new Error(`Bundle not found: ${manifest.bundleId}`);
272
+ // Get bundleUrl from manifest or config
273
+ const bundleUrl = manifest.bundleUrl || config?.bundleUrl;
274
+ // Ensure bundle is available (download if needed)
275
+ try {
276
+ await bundleManager.ensureBundle(manifest.bundleId, bundleUrl);
277
+ }
278
+ catch (error) {
279
+ if (error instanceof BundleManagerError && error.code === 'BUNDLE_URL_REQUIRED') {
280
+ // Bundle not cached and no URL provided - check if it exists locally
281
+ if (!bundleManager.isCached(manifest.bundleId)) {
282
+ throw new Error(`Bundle ${manifest.bundleId} not found and no bundleUrl provided`);
283
+ }
284
+ }
285
+ else {
286
+ throw error;
287
+ }
148
288
  }
149
289
  return `http://localhost:${PORT}/bundles/${manifest.bundleId}/`;
150
290
  }
@@ -179,10 +319,15 @@ app.post('/render', async (req, res) => {
179
319
  console.error('[POST /render] Missing required parameter: manifest or manifestUrl');
180
320
  return res.status(400).json({ error: 'Either manifest or manifestUrl is required' });
181
321
  }
182
- // Validate manifest
183
- if (replayManifest.schema !== 'lifeRestart.replay.v1') {
184
- console.error('[POST /render] Invalid manifest schema:', replayManifest.schema);
185
- return res.status(400).json({ error: 'Invalid manifest schema' });
322
+ // Validate manifest - basic structure only (schema-agnostic)
323
+ console.log('[POST /render] Manifest schema:', replayManifest.schema);
324
+ if (!replayManifest.schema || typeof replayManifest.schema !== 'string') {
325
+ console.error('[POST /render] Missing or invalid schema field');
326
+ return res.status(400).json({ error: 'Manifest must have a schema field' });
327
+ }
328
+ if (!replayManifest.gameId || typeof replayManifest.gameId !== 'string') {
329
+ console.error('[POST /render] Missing or invalid gameId field');
330
+ return res.status(400).json({ error: 'Manifest must have a gameId field' });
186
331
  }
187
332
  // Create job
188
333
  const jobId = uuidv4();
@@ -195,18 +340,24 @@ app.post('/render', async (req, res) => {
195
340
  error: null,
196
341
  createdAt: new Date(),
197
342
  completedAt: null,
343
+ bundleId: replayManifest.bundleId,
198
344
  };
199
345
  jobs.set(jobId, job);
200
- // Resolve game URL from bundleId or config
346
+ // Resolve game URL from bundleId or config (async - may download bundle)
201
347
  let gameUrl;
202
348
  try {
203
- gameUrl = resolveGameUrl(replayManifest, config?.gameUrl);
349
+ gameUrl = await resolveGameUrl(replayManifest, config);
204
350
  }
205
351
  catch (error) {
206
352
  const errorMessage = error instanceof Error ? error.message : String(error);
207
353
  console.error('[POST /render] Failed to resolve game URL:', errorMessage);
354
+ jobs.delete(jobId);
208
355
  return res.status(400).json({ error: errorMessage });
209
356
  }
357
+ // Mark bundle as in use during rendering
358
+ if (replayManifest.bundleId) {
359
+ bundleManager.markInUse(replayManifest.bundleId);
360
+ }
210
361
  // Start rendering in background
211
362
  processJob(job, replayManifest, {
212
363
  gameUrl,
@@ -297,17 +448,14 @@ app.get('/download/:jobId', (req, res) => {
297
448
  * Health check endpoint
298
449
  */
299
450
  app.get('/health', (req, res) => {
300
- // Count available bundles
301
- let bundleCount = 0;
302
- if (fs.existsSync(BUNDLES_DIR)) {
303
- const entries = fs.readdirSync(BUNDLES_DIR, { withFileTypes: true });
304
- bundleCount = entries.filter(e => e.isDirectory()).length;
305
- }
451
+ const cacheStats = bundleManager.getCacheStats();
306
452
  res.json({
307
453
  status: 'ok',
308
454
  gameUrl: GAME_URL,
309
455
  bundlesDir: BUNDLES_DIR,
310
- bundleCount,
456
+ bundleCount: cacheStats.bundleCount,
457
+ cache: cacheStats,
458
+ bffBaseUrl: BFF_BASE_URL,
311
459
  });
312
460
  });
313
461
  /**
@@ -337,6 +485,10 @@ async function processJob(job, manifest, config) {
337
485
  job.error = error instanceof Error ? error.message : String(error);
338
486
  }
339
487
  job.completedAt = new Date();
488
+ // Mark bundle as no longer in use
489
+ if (job.bundleId) {
490
+ bundleManager.markNotInUse(job.bundleId);
491
+ }
340
492
  }
341
493
  // Start server
342
494
  app.listen(PORT, () => {
@@ -344,5 +496,7 @@ app.listen(PORT, () => {
344
496
  console.log(`📺 Default Game URL: ${GAME_URL}`);
345
497
  console.log(`📦 Bundles directory: ${BUNDLES_DIR}`);
346
498
  console.log(`📁 Output directory: ${OUTPUT_DIR}`);
499
+ console.log(`🔗 BFF Base URL: ${BFF_BASE_URL}`);
500
+ console.log(`💾 Max cache size: ${(MAX_CACHE_SIZE / 1024 / 1024 / 1024).toFixed(2)} GB`);
347
501
  });
348
502
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Bundle Manager
3
+ *
4
+ * Manages bundle lifecycle: download, extraction, caching, and cleanup.
5
+ * Uses LRU eviction to manage cache size.
6
+ */
7
+ import type { OSSClient } from './OSSClient.js';
8
+ import type { BundleInfo, BundleManagerConfig, CacheStats, DownloadStats } from './types.js';
9
+ /**
10
+ * Error thrown by bundle manager operations
11
+ */
12
+ export declare class BundleManagerError extends Error {
13
+ readonly code: string;
14
+ readonly bundleId?: string | undefined;
15
+ constructor(message: string, code: string, bundleId?: string | undefined);
16
+ }
17
+ /**
18
+ * Bundle Manager for downloading, caching, and serving game bundles
19
+ */
20
+ export declare class BundleManager {
21
+ private readonly bundlesDir;
22
+ private readonly maxCacheSize;
23
+ private readonly ossClient;
24
+ private bundles;
25
+ private downloadPromises;
26
+ private bundlesInUse;
27
+ private downloadStats;
28
+ constructor(config: BundleManagerConfig & {
29
+ ossClient: OSSClient;
30
+ });
31
+ /**
32
+ * Ensure a bundle is available (download if needed)
33
+ * Returns the path to the bundle directory
34
+ */
35
+ ensureBundle(bundleId: string, bundleUrl?: string): Promise<string>;
36
+ /**
37
+ * Check if a bundle is cached and ready
38
+ */
39
+ isCached(bundleId: string): boolean;
40
+ /**
41
+ * Mark bundle as in use (prevents eviction during rendering)
42
+ */
43
+ markInUse(bundleId: string): void;
44
+ /**
45
+ * Mark bundle as no longer in use
46
+ */
47
+ markNotInUse(bundleId: string): void;
48
+ /**
49
+ * Download and extract a bundle
50
+ */
51
+ private downloadBundle;
52
+ /**
53
+ * Extract TAR.GZ archive to destination directory
54
+ */
55
+ private extractTarGz;
56
+ /**
57
+ * Ensure cache has enough space by evicting old bundles
58
+ */
59
+ private ensureCacheSpace;
60
+ /**
61
+ * Load existing bundles from disk
62
+ */
63
+ private loadCachedBundles;
64
+ /**
65
+ * Get directory size recursively
66
+ */
67
+ private getDirectorySize;
68
+ /**
69
+ * List all bundles
70
+ */
71
+ listBundles(): BundleInfo[];
72
+ /**
73
+ * Get bundle info
74
+ */
75
+ getBundleInfo(bundleId: string): BundleInfo | undefined;
76
+ /**
77
+ * Remove bundle from cache
78
+ */
79
+ removeBundle(bundleId: string): void;
80
+ /**
81
+ * Get cache statistics
82
+ */
83
+ getCacheStats(): CacheStats;
84
+ /**
85
+ * Get download statistics
86
+ */
87
+ getDownloadStats(): DownloadStats;
88
+ /**
89
+ * Get bundles directory path
90
+ */
91
+ getBundlesDir(): string;
92
+ }
93
+ /**
94
+ * Create a bundle manager instance
95
+ */
96
+ export declare function createBundleManager(config: BundleManagerConfig & {
97
+ ossClient: OSSClient;
98
+ }): BundleManager;
99
+ //# sourceMappingURL=BundleManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BundleManager.d.ts","sourceRoot":"","sources":["../../src/services/BundleManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7F;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAGrB,IAAI,EAAE,MAAM;aACZ,QAAQ,CAAC,EAAE,MAAM;gBAFjC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,YAAA;CAKxC;AAED;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,aAAa,CAInB;gBAEU,MAAM,EAAE,mBAAmB,GAAG;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE;IAYlE;;;OAGG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCzE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMnC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;YACW,cAAc;IA2G5B;;OAEG;YACW,YAAY;IAqE1B;;OAEG;YACW,gBAAgB;IA4C9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2CzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,WAAW,IAAI,UAAU,EAAE;IAI3B;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIvD;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAcpC;;OAEG;IACH,aAAa,IAAI,UAAU;IAmB3B;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,aAAa,IAAI,MAAM;CAG1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,mBAAmB,GAAG;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,GACvD,aAAa,CAEf"}