@engram-mem/supabase 0.3.7 → 0.4.0

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/dist/adapter.js DELETED
@@ -1,419 +0,0 @@
1
- import { createClient } from '@supabase/supabase-js';
2
- import { SupabaseEpisodeStorage } from './episodes.js';
3
- import { SupabaseDigestStorage } from './digests.js';
4
- import { SupabaseSemanticStorage } from './semantic.js';
5
- import { SupabaseProceduralStorage } from './procedural.js';
6
- import { SupabaseAssociationStorage } from './associations.js';
7
- export class SupabaseStorageAdapter {
8
- client;
9
- _isLegacy = false;
10
- _episodes = null;
11
- _digests = null;
12
- _semantic = null;
13
- _procedural = null;
14
- _associations = null;
15
- constructor(opts) {
16
- this.client = createClient(opts.url, opts.key);
17
- }
18
- async initialize() {
19
- // Detect schema version: new schema has the `memories` pool table,
20
- // legacy schema only has `memory_episodes` / `memory_digests` / `memory_knowledge`.
21
- const { error: memoriesError } = await this.client
22
- .from('memories')
23
- .select('id')
24
- .limit(1);
25
- if (memoriesError) {
26
- // Legacy schema detected — verify at least memory_episodes exists.
27
- const { error: legacyError } = await this.client
28
- .from('memory_episodes')
29
- .select('id')
30
- .limit(1);
31
- if (legacyError) {
32
- throw new Error(`Supabase connection failed: ${legacyError.message}`);
33
- }
34
- // Legacy mode: memories table absent, use compatibility wrappers.
35
- console.log('[engram] Supabase legacy schema detected — running in compatibility mode (no memories pool table)');
36
- this._isLegacy = true;
37
- }
38
- else {
39
- this._isLegacy = false;
40
- }
41
- this._episodes = new SupabaseEpisodeStorage(this.client, this._isLegacy);
42
- this._digests = new SupabaseDigestStorage(this.client);
43
- this._semantic = new SupabaseSemanticStorage(this.client);
44
- this._procedural = new SupabaseProceduralStorage(this.client);
45
- this._associations = new SupabaseAssociationStorage(this.client);
46
- }
47
- async dispose() {
48
- // Supabase client has no explicit close method — no-op
49
- this._episodes = null;
50
- this._digests = null;
51
- this._semantic = null;
52
- this._procedural = null;
53
- this._associations = null;
54
- }
55
- get episodes() {
56
- if (!this._episodes) {
57
- throw new Error('SupabaseStorageAdapter not initialized. Call initialize() first.');
58
- }
59
- return this._episodes;
60
- }
61
- get digests() {
62
- if (!this._digests) {
63
- throw new Error('SupabaseStorageAdapter not initialized. Call initialize() first.');
64
- }
65
- return this._digests;
66
- }
67
- get semantic() {
68
- if (!this._semantic) {
69
- throw new Error('SupabaseStorageAdapter not initialized. Call initialize() first.');
70
- }
71
- return this._semantic;
72
- }
73
- get procedural() {
74
- if (!this._procedural) {
75
- throw new Error('SupabaseStorageAdapter not initialized. Call initialize() first.');
76
- }
77
- return this._procedural;
78
- }
79
- get associations() {
80
- if (!this._associations) {
81
- throw new Error('SupabaseStorageAdapter not initialized. Call initialize() first.');
82
- }
83
- return this._associations;
84
- }
85
- async getById(id, type) {
86
- this.assertInitialized();
87
- switch (type) {
88
- case 'episode': {
89
- const episodes = await this._episodes.getByIds([id]);
90
- if (episodes.length === 0)
91
- return null;
92
- return { type: 'episode', data: episodes[0] };
93
- }
94
- case 'digest': {
95
- const { data, error } = await this.client
96
- .from('memory_digests')
97
- .select('*')
98
- .eq('id', id)
99
- .maybeSingle();
100
- if (error)
101
- throw new Error(`getById digest failed: ${error.message}`);
102
- if (!data)
103
- return null;
104
- const digests = await this._digests.getBySession(data.session_id);
105
- const found = digests.find((d) => d.id === id);
106
- return found ? { type: 'digest', data: found } : null;
107
- }
108
- case 'semantic': {
109
- const { data, error } = await this.client
110
- .from('memory_semantic')
111
- .select('*')
112
- .eq('id', id)
113
- .maybeSingle();
114
- if (error)
115
- throw new Error(`getById semantic failed: ${error.message}`);
116
- if (!data)
117
- return null;
118
- return { type: 'semantic', data: rowToSemantic(data) };
119
- }
120
- case 'procedural': {
121
- const { data, error } = await this.client
122
- .from('memory_procedural')
123
- .select('*')
124
- .eq('id', id)
125
- .maybeSingle();
126
- if (error)
127
- throw new Error(`getById procedural failed: ${error.message}`);
128
- if (!data)
129
- return null;
130
- return { type: 'procedural', data: rowToProcedural(data) };
131
- }
132
- }
133
- }
134
- async getByIds(ids) {
135
- if (ids.length === 0)
136
- return [];
137
- this.assertInitialized();
138
- const byType = new Map();
139
- for (const { id, type } of ids) {
140
- const list = byType.get(type) ?? [];
141
- list.push(id);
142
- byType.set(type, list);
143
- }
144
- const results = [];
145
- const episodeIds = byType.get('episode');
146
- if (episodeIds && episodeIds.length > 0) {
147
- const episodes = await this._episodes.getByIds(episodeIds);
148
- for (const ep of episodes)
149
- results.push({ type: 'episode', data: ep });
150
- }
151
- const digestIds = byType.get('digest');
152
- if (digestIds && digestIds.length > 0) {
153
- const { data, error } = await this.client
154
- .from('memory_digests')
155
- .select('*')
156
- .in('id', digestIds);
157
- if (error)
158
- throw new Error(`getByIds digest failed: ${error.message}`);
159
- for (const row of (data ?? [])) {
160
- results.push({ type: 'digest', data: rowToDigest(row) });
161
- }
162
- }
163
- const semanticIds = byType.get('semantic');
164
- if (semanticIds && semanticIds.length > 0) {
165
- const { data, error } = await this.client
166
- .from('memory_semantic')
167
- .select('*')
168
- .in('id', semanticIds);
169
- if (error)
170
- throw new Error(`getByIds semantic failed: ${error.message}`);
171
- for (const row of (data ?? [])) {
172
- results.push({ type: 'semantic', data: rowToSemantic(row) });
173
- }
174
- }
175
- const proceduralIds = byType.get('procedural');
176
- if (proceduralIds && proceduralIds.length > 0) {
177
- const { data, error } = await this.client
178
- .from('memory_procedural')
179
- .select('*')
180
- .in('id', proceduralIds);
181
- if (error)
182
- throw new Error(`getByIds procedural failed: ${error.message}`);
183
- for (const row of (data ?? [])) {
184
- results.push({ type: 'procedural', data: rowToProcedural(row) });
185
- }
186
- }
187
- return results;
188
- }
189
- async saveSensorySnapshot(sessionId, snapshot) {
190
- this.assertInitialized();
191
- const { error } = await this.client
192
- .from('sensory_snapshots')
193
- .upsert({ session_id: sessionId, snapshot: snapshot, saved_at: new Date().toISOString() }, { onConflict: 'session_id' });
194
- if (error)
195
- throw new Error(`saveSensorySnapshot failed: ${error.message}`);
196
- }
197
- async loadSensorySnapshot(sessionId) {
198
- this.assertInitialized();
199
- const { data, error } = await this.client
200
- .from('sensory_snapshots')
201
- .select('snapshot')
202
- .eq('session_id', sessionId)
203
- .maybeSingle();
204
- if (error)
205
- throw new Error(`loadSensorySnapshot failed: ${error.message}`);
206
- if (!data)
207
- return null;
208
- return data.snapshot;
209
- }
210
- async vectorSearch(embedding, opts) {
211
- this.assertInitialized();
212
- const { data, error } = await this.client.rpc('engram_vector_search', {
213
- p_query_embedding: JSON.stringify(embedding),
214
- p_match_count: opts?.limit ?? 15,
215
- p_session_id: opts?.sessionId ?? null,
216
- });
217
- if (error)
218
- throw new Error(`vectorSearch failed: ${error.message}`);
219
- const rows = (data ?? []);
220
- const tierFilter = opts?.tiers ? new Set(opts.tiers) : null;
221
- return rows
222
- .filter(r => !tierFilter || tierFilter.has(r.memory_type))
223
- .map(r => ({
224
- item: vectorRowToTypedMemory(r),
225
- similarity: r.similarity,
226
- }));
227
- }
228
- async textBoost(terms, opts) {
229
- this.assertInitialized();
230
- if (terms.length === 0)
231
- return [];
232
- const sanitized = terms
233
- .map(t => t.replace(/[^a-zA-Z0-9]/g, ''))
234
- .filter(t => t.length > 0);
235
- if (sanitized.length === 0)
236
- return [];
237
- const queryTerms = sanitized.join(' | ');
238
- const { data, error } = await this.client.rpc('engram_text_boost', {
239
- p_query_terms: queryTerms,
240
- p_match_count: opts?.limit ?? 30,
241
- p_session_id: opts?.sessionId ?? null,
242
- });
243
- if (error)
244
- throw new Error(`textBoost failed: ${error.message}`);
245
- const rows = (data ?? []);
246
- const maxRank = rows.length > 0 ? Math.max(...rows.map(r => r.rank_score)) : 1;
247
- return rows.map(r => ({
248
- id: r.id,
249
- type: r.memory_type,
250
- boost: maxRank > 0 ? r.rank_score / maxRank : 0,
251
- }));
252
- }
253
- assertInitialized() {
254
- if (!this._episodes) {
255
- throw new Error('SupabaseStorageAdapter not initialized. Call initialize() first.');
256
- }
257
- }
258
- }
259
- function rowToDigest(row) {
260
- return {
261
- id: row.id,
262
- sessionId: row.session_id,
263
- summary: row.summary,
264
- keyTopics: row.key_topics ?? [],
265
- sourceEpisodeIds: row.source_episode_ids ?? [],
266
- sourceDigestIds: row.source_digest_ids ?? [],
267
- level: row.level,
268
- embedding: row.embedding ?? null,
269
- metadata: row.metadata ?? {},
270
- createdAt: new Date(row.created_at),
271
- projectId: null,
272
- };
273
- }
274
- function rowToSemantic(row) {
275
- return {
276
- id: row.id,
277
- topic: row.topic,
278
- content: row.content,
279
- confidence: row.confidence,
280
- sourceDigestIds: row.source_digest_ids ?? [],
281
- sourceEpisodeIds: row.source_episode_ids ?? [],
282
- accessCount: row.access_count,
283
- lastAccessed: row.last_accessed ? new Date(row.last_accessed) : null,
284
- decayRate: row.decay_rate,
285
- supersedes: row.supersedes ?? null,
286
- supersededBy: row.superseded_by ?? null,
287
- embedding: row.embedding ?? null,
288
- metadata: row.metadata ?? {},
289
- createdAt: new Date(row.created_at),
290
- updatedAt: new Date(row.updated_at),
291
- projectId: null,
292
- };
293
- }
294
- function rowToProcedural(row) {
295
- return {
296
- id: row.id,
297
- category: row.category,
298
- trigger: row.trigger_text,
299
- procedure: row.procedure,
300
- confidence: row.confidence,
301
- observationCount: row.observation_count,
302
- lastObserved: new Date(row.last_observed),
303
- firstObserved: new Date(row.first_observed),
304
- accessCount: row.access_count,
305
- lastAccessed: row.last_accessed ? new Date(row.last_accessed) : null,
306
- decayRate: row.decay_rate,
307
- sourceEpisodeIds: row.source_episode_ids ?? [],
308
- embedding: row.embedding ?? null,
309
- metadata: row.metadata ?? {},
310
- createdAt: new Date(row.created_at),
311
- updatedAt: new Date(row.updated_at),
312
- projectId: null,
313
- };
314
- }
315
- function vectorRowToTypedMemory(row) {
316
- switch (row.memory_type) {
317
- case 'episode':
318
- return {
319
- type: 'episode',
320
- data: {
321
- id: row.id,
322
- sessionId: '',
323
- role: (row.role ?? 'user'),
324
- content: row.content,
325
- salience: row.salience,
326
- accessCount: row.access_count,
327
- lastAccessed: null,
328
- consolidatedAt: null,
329
- embedding: null,
330
- entities: row.entities ?? [],
331
- metadata: row.metadata ?? {},
332
- createdAt: new Date(row.created_at),
333
- projectId: null,
334
- },
335
- };
336
- case 'digest':
337
- return {
338
- type: 'digest',
339
- data: {
340
- id: row.id,
341
- sessionId: '',
342
- summary: row.content,
343
- keyTopics: row.entities ?? [],
344
- sourceEpisodeIds: [],
345
- sourceDigestIds: [],
346
- level: 1,
347
- embedding: null,
348
- metadata: row.metadata ?? {},
349
- createdAt: new Date(row.created_at),
350
- projectId: null,
351
- },
352
- };
353
- case 'semantic':
354
- return {
355
- type: 'semantic',
356
- data: {
357
- id: row.id,
358
- topic: '',
359
- content: row.content,
360
- confidence: row.salience,
361
- sourceDigestIds: [],
362
- sourceEpisodeIds: [],
363
- accessCount: row.access_count,
364
- lastAccessed: null,
365
- decayRate: 0.01,
366
- supersedes: null,
367
- supersededBy: null,
368
- embedding: null,
369
- metadata: row.metadata ?? {},
370
- createdAt: new Date(row.created_at),
371
- updatedAt: new Date(row.created_at),
372
- projectId: null,
373
- },
374
- };
375
- case 'procedural':
376
- return {
377
- type: 'procedural',
378
- data: {
379
- id: row.id,
380
- category: 'convention',
381
- trigger: '',
382
- procedure: row.content,
383
- confidence: row.salience,
384
- observationCount: 0,
385
- lastObserved: new Date(row.created_at),
386
- firstObserved: new Date(row.created_at),
387
- accessCount: row.access_count,
388
- lastAccessed: null,
389
- decayRate: 0.01,
390
- sourceEpisodeIds: [],
391
- embedding: null,
392
- metadata: row.metadata ?? {},
393
- createdAt: new Date(row.created_at),
394
- updatedAt: new Date(row.created_at),
395
- projectId: null,
396
- },
397
- };
398
- default:
399
- return {
400
- type: 'episode',
401
- data: {
402
- id: row.id,
403
- sessionId: '',
404
- role: 'user',
405
- content: row.content,
406
- salience: row.salience,
407
- accessCount: row.access_count,
408
- lastAccessed: null,
409
- consolidatedAt: null,
410
- embedding: null,
411
- entities: row.entities ?? [],
412
- metadata: row.metadata ?? {},
413
- createdAt: new Date(row.created_at),
414
- projectId: null,
415
- },
416
- };
417
- }
418
- }
419
- //# sourceMappingURL=adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import type { SupabaseClient } from '@supabase/supabase-js';
2
- import type { Association, MemoryType, EdgeType, WalkResult, DiscoveredEdge } from '@engram-mem/core';
3
- import type { AssociationStorage } from '@engram-mem/core';
4
- export declare class SupabaseAssociationStorage implements AssociationStorage {
5
- private readonly client;
6
- constructor(client: SupabaseClient);
7
- insert(association: Omit<Association, 'id' | 'createdAt'>): Promise<Association>;
8
- walk(seedIds: string[], opts?: {
9
- maxHops?: number;
10
- minStrength?: number;
11
- types?: EdgeType[];
12
- }): Promise<WalkResult[]>;
13
- upsertCoRecalled(sourceId: string, sourceType: MemoryType, targetId: string, targetType: MemoryType): Promise<void>;
14
- pruneWeak(opts: {
15
- maxStrength: number;
16
- olderThanDays: number;
17
- }): Promise<number>;
18
- discoverTopicalEdges(opts: {
19
- daysLookback: number;
20
- maxNew: number;
21
- }): Promise<DiscoveredEdge[]>;
22
- }
23
- //# sourceMappingURL=associations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"associations.d.ts","sourceRoot":"","sources":["../src/associations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,cAAc,EACf,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,qBAAa,0BAA2B,YAAW,kBAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE7C,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBhF,IAAI,CACR,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;KAAE,GACpE,OAAO,CAAC,UAAU,EAAE,CAAC;IA6BlB,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC;IAUV,SAAS,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAehF,oBAAoB,CAAC,IAAI,EAAE;QAC/B,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAwB9B"}
@@ -1,115 +0,0 @@
1
- import { generateId } from '@engram-mem/core';
2
- export class SupabaseAssociationStorage {
3
- client;
4
- constructor(client) {
5
- this.client = client;
6
- }
7
- async insert(association) {
8
- const id = generateId();
9
- const { data, error } = await this.client
10
- .from('memory_associations')
11
- .insert({
12
- id,
13
- source_id: association.sourceId,
14
- source_type: association.sourceType,
15
- target_id: association.targetId,
16
- target_type: association.targetType,
17
- edge_type: association.edgeType,
18
- strength: association.strength,
19
- last_activated: association.lastActivated?.toISOString() ?? null,
20
- metadata: association.metadata,
21
- })
22
- .select()
23
- .single();
24
- if (error)
25
- throw new Error(`Association insert failed: ${error.message}`);
26
- return rowToAssociation(data);
27
- }
28
- async walk(seedIds, opts) {
29
- if (seedIds.length === 0)
30
- return [];
31
- const { data, error } = await this.client.rpc('engram_association_walk', {
32
- p_seed_ids: seedIds,
33
- p_max_hops: opts?.maxHops ?? 2,
34
- p_min_strength: opts?.minStrength ?? 0.2,
35
- p_limit: 20,
36
- });
37
- if (error)
38
- throw new Error(`Association walk failed: ${error.message}`);
39
- const rows = (data ?? []);
40
- let results = rows.map((r) => ({
41
- memoryId: r.memory_id,
42
- memoryType: r.memory_type,
43
- depth: r.depth,
44
- pathStrength: r.path_strength,
45
- }));
46
- // Filter by edge types if requested (client-side since RPC doesn't support it directly)
47
- if (opts?.types && opts.types.length > 0) {
48
- // The RPC doesn't filter by type, so we return all and let the caller filter.
49
- // This is noted as a limitation — a custom RPC with p_edge_types would be ideal.
50
- results = results;
51
- }
52
- return results;
53
- }
54
- async upsertCoRecalled(sourceId, sourceType, targetId, targetType) {
55
- const { error } = await this.client.rpc('engram_upsert_co_recalled', {
56
- p_source_id: sourceId,
57
- p_source_type: sourceType,
58
- p_target_id: targetId,
59
- p_target_type: targetType,
60
- });
61
- if (error)
62
- throw new Error(`Association upsertCoRecalled failed: ${error.message}`);
63
- }
64
- async pruneWeak(opts) {
65
- const cutoff = new Date(Date.now() - opts.olderThanDays * 86400000).toISOString();
66
- const { data, error } = await this.client
67
- .from('memory_associations')
68
- .delete()
69
- .lt('strength', opts.maxStrength)
70
- .or(`last_activated.is.null,last_activated.lt.${cutoff}`)
71
- .neq('edge_type', 'derives_from')
72
- .select();
73
- if (error)
74
- throw new Error(`Association pruneWeak failed: ${error.message}`);
75
- return (data ?? []).length;
76
- }
77
- async discoverTopicalEdges(opts) {
78
- const { data, error } = await this.client.rpc('engram_dream_cycle', {
79
- p_days_lookback: opts.daysLookback,
80
- p_max_new_associations: opts.maxNew,
81
- });
82
- // RPC may not exist — dream cycle SQL is supplementary to Neo4j graph ops.
83
- // Return empty when the function isn't deployed.
84
- if (error) {
85
- if (error.message.includes('schema cache') || error.message.includes('not found')) {
86
- return [];
87
- }
88
- throw new Error(`Association discoverTopicalEdges failed: ${error.message}`);
89
- }
90
- const rows = (data ?? []);
91
- return rows.map((r) => ({
92
- sourceId: r.source_id,
93
- sourceType: r.source_type,
94
- targetId: r.target_id,
95
- targetType: r.target_type,
96
- sharedEntity: r.shared_entity,
97
- entityCount: r.entity_count,
98
- }));
99
- }
100
- }
101
- function rowToAssociation(row) {
102
- return {
103
- id: row.id,
104
- sourceId: row.source_id,
105
- sourceType: row.source_type,
106
- targetId: row.target_id,
107
- targetType: row.target_type,
108
- edgeType: row.edge_type,
109
- strength: row.strength,
110
- lastActivated: row.last_activated ? new Date(row.last_activated) : null,
111
- metadata: row.metadata ?? {},
112
- createdAt: new Date(row.created_at),
113
- };
114
- }
115
- //# sourceMappingURL=associations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"associations.js","sourceRoot":"","sources":["../src/associations.ts"],"names":[],"mappings":"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"}
package/dist/digests.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import type { SupabaseClient } from '@supabase/supabase-js';
2
- import type { Digest, SearchOptions, SearchResult } from '@engram-mem/core';
3
- import type { DigestStorage } from '@engram-mem/core';
4
- export declare class SupabaseDigestStorage implements DigestStorage {
5
- private readonly client;
6
- constructor(client: SupabaseClient);
7
- insert(digest: Omit<Digest, 'id' | 'createdAt'>): Promise<Digest>;
8
- search(query: string, opts?: SearchOptions): Promise<SearchResult<Digest>[]>;
9
- getBySession(sessionId: string): Promise<Digest[]>;
10
- getRecent(days: number): Promise<Digest[]>;
11
- getCountBySession(): Promise<Record<string, number>>;
12
- }
13
- //# sourceMappingURL=digests.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"digests.d.ts","sourceRoot":"","sources":["../src/digests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGrD,qBAAa,qBAAsB,YAAW,aAAa;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE7C,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BjE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IA4D5E,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUlD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW1C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAY3D"}