@zelari/core 2.7.0 → 2.9.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.
Files changed (57) hide show
  1. package/dist/core/AgentHarness.d.ts +52 -0
  2. package/dist/core/AgentHarness.d.ts.map +1 -1
  3. package/dist/core/AgentHarness.js +229 -17
  4. package/dist/core/AgentHarness.js.map +1 -1
  5. package/dist/core/requestSnapshot.d.ts +5 -1
  6. package/dist/core/requestSnapshot.d.ts.map +1 -1
  7. package/dist/core/requestSnapshot.js.map +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +2 -2
  10. package/dist/index.js.map +1 -1
  11. package/dist/memory/adapters.d.ts +42 -0
  12. package/dist/memory/adapters.d.ts.map +1 -0
  13. package/dist/memory/adapters.js +160 -0
  14. package/dist/memory/adapters.js.map +1 -0
  15. package/dist/memory/context.d.ts +8 -0
  16. package/dist/memory/context.d.ts.map +1 -0
  17. package/dist/memory/context.js +65 -0
  18. package/dist/memory/context.js.map +1 -0
  19. package/dist/memory/index.d.ts +10 -0
  20. package/dist/memory/index.d.ts.map +1 -0
  21. package/dist/memory/index.js +10 -0
  22. package/dist/memory/index.js.map +1 -0
  23. package/dist/memory/noop.d.ts +26 -0
  24. package/dist/memory/noop.d.ts.map +1 -0
  25. package/dist/memory/noop.js +51 -0
  26. package/dist/memory/noop.js.map +1 -0
  27. package/dist/memory/policies.d.ts +16 -0
  28. package/dist/memory/policies.d.ts.map +1 -0
  29. package/dist/memory/policies.js +144 -0
  30. package/dist/memory/policies.js.map +1 -0
  31. package/dist/memory/schemas.d.ts +235 -0
  32. package/dist/memory/schemas.d.ts.map +1 -0
  33. package/dist/memory/schemas.js +96 -0
  34. package/dist/memory/schemas.js.map +1 -0
  35. package/dist/memory/scoring.d.ts +22 -0
  36. package/dist/memory/scoring.d.ts.map +1 -0
  37. package/dist/memory/scoring.js +64 -0
  38. package/dist/memory/scoring.js.map +1 -0
  39. package/dist/memory/semantic.d.ts +30 -0
  40. package/dist/memory/semantic.d.ts.map +1 -0
  41. package/dist/memory/semantic.js +180 -0
  42. package/dist/memory/semantic.js.map +1 -0
  43. package/dist/memory/service.d.ts +45 -0
  44. package/dist/memory/service.d.ts.map +1 -0
  45. package/dist/memory/service.js +491 -0
  46. package/dist/memory/service.js.map +1 -0
  47. package/dist/memory/types.d.ts +364 -23
  48. package/dist/memory/types.d.ts.map +1 -1
  49. package/dist/memory/types.js +45 -9
  50. package/dist/memory/types.js.map +1 -1
  51. package/dist/session/modelSurface.d.ts +6 -4
  52. package/dist/session/modelSurface.d.ts.map +1 -1
  53. package/dist/session/modelSurface.js +8 -13
  54. package/dist/session/modelSurface.js.map +1 -1
  55. package/dist/session/types.js +2 -2
  56. package/dist/session/types.js.map +1 -1
  57. package/package.json +3 -3
@@ -0,0 +1,64 @@
1
+ export const DEFAULT_MEMORY_SCORING_WEIGHTS = {
2
+ semanticRelevance: 0.30,
3
+ lexicalRelevance: 0.20,
4
+ importance: 0.15,
5
+ confidence: 0.10,
6
+ recency: 0.10,
7
+ graphProximity: 0.10,
8
+ verificationBonus: 0.05,
9
+ };
10
+ export function memoryTokens(text) {
11
+ return text
12
+ .toLocaleLowerCase()
13
+ .split(/[^\p{L}\p{N}_-]+/u)
14
+ .map((token) => token.trim())
15
+ .filter((token) => token.length >= 2);
16
+ }
17
+ export function lexicalRelevance(query, node) {
18
+ const queryTokens = new Set(memoryTokens(query));
19
+ if (queryTokens.size === 0)
20
+ return 0;
21
+ const haystack = new Set(memoryTokens(`${node.content} ${node.tags.join(' ')}`));
22
+ let hits = 0;
23
+ for (const token of queryTokens) {
24
+ if (haystack.has(token))
25
+ hits += 1;
26
+ }
27
+ return Math.min(1, hits / Math.max(1, queryTokens.size));
28
+ }
29
+ export function recencyScore(updatedAt, now = Date.now(), halfLifeDays = 30) {
30
+ const at = Date.parse(updatedAt);
31
+ if (!Number.isFinite(at))
32
+ return 0;
33
+ const ageDays = Math.max(0, now - at) / 86_400_000;
34
+ return Math.max(0, Math.min(1, Math.pow(0.5, ageDays / halfLifeDays)));
35
+ }
36
+ function verified(node) {
37
+ return node.source.verificationId || node.metadata.verified === true ? 1 : 0;
38
+ }
39
+ /** Score one candidate, redistributing unavailable semantic weight. */
40
+ export function scoreMemoryCandidate(candidate, query, options = {}) {
41
+ const node = candidate.node;
42
+ const signals = {
43
+ semanticRelevance: Math.max(0, Math.min(1, candidate.semanticRelevance ?? 0)),
44
+ lexicalRelevance: Math.max(0, Math.min(1, candidate.lexicalRelevance ?? lexicalRelevance(query, node))),
45
+ importance: node.importance,
46
+ confidence: node.confidence,
47
+ recency: recencyScore(node.updatedAt, options.now, options.recencyHalfLifeDays),
48
+ graphProximity: Math.max(0, Math.min(1, candidate.graphProximity ?? 0)),
49
+ verificationBonus: verified(node),
50
+ };
51
+ const weights = { ...DEFAULT_MEMORY_SCORING_WEIGHTS, ...options.weights };
52
+ const semanticAvailable = candidate.semanticRelevance !== undefined;
53
+ const activeEntries = Object.entries(weights).filter(([key]) => semanticAvailable || key !== 'semanticRelevance');
54
+ const totalWeight = activeEntries.reduce((sum, [, weight]) => sum + Math.max(0, weight), 0);
55
+ const weighted = activeEntries.reduce((sum, [key, weight]) => sum + signals[key] * Math.max(0, weight), 0);
56
+ const score = totalWeight > 0 ? weighted / totalWeight : 0;
57
+ return { node, score: Math.max(0, Math.min(1, score)), signals };
58
+ }
59
+ export function rankMemoryCandidates(candidates, query, options = {}) {
60
+ return candidates
61
+ .map((candidate) => scoreMemoryCandidate(candidate, query, options))
62
+ .sort((a, b) => b.score - a.score || b.node.updatedAt.localeCompare(a.node.updatedAt));
63
+ }
64
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/memory/scoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { CognitiveMemoryBackend, MemoryCandidate, MemoryEmbeddingProvider, MemoryIndexRequest, MemoryIndexResult, MemoryQuery, MemorySemanticStatus } from './types.js';
2
+ export interface SemanticMemoryControllerOptions {
3
+ now?: () => Date;
4
+ lazyIndexLimit?: number;
5
+ minRelevance?: number;
6
+ onFailure?: (reason: string) => void;
7
+ }
8
+ /**
9
+ * Optional semantic orchestration. Persistence and embedding generation stay
10
+ * behind injected seams, keeping the core dependency-light and lexical-safe.
11
+ */
12
+ export declare class SemanticMemoryController {
13
+ private readonly projectId;
14
+ private readonly backend;
15
+ private readonly provider;
16
+ private readonly now;
17
+ private readonly lazyIndexLimit;
18
+ private readonly onFailure?;
19
+ private readonly minRelevance;
20
+ constructor(projectId: string, backend: CognitiveMemoryBackend, provider: MemoryEmbeddingProvider, options?: SemanticMemoryControllerOptions);
21
+ get model(): string;
22
+ get available(): boolean;
23
+ index(input?: MemoryIndexRequest): Promise<MemoryIndexResult>;
24
+ search(query: MemoryQuery, text: string): Promise<MemoryCandidate[]>;
25
+ status(): Promise<MemorySemanticStatus>;
26
+ private disabled;
27
+ private interrupted;
28
+ private degraded;
29
+ }
30
+ //# sourceMappingURL=semantic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/memory/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EAEvB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,+BAA+B;IAC9C,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,qBAAa,wBAAwB;IAOjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,uBAAuB,EAClD,OAAO,GAAE,+BAAoC;IAQ/C,IAAI,KAAK,IAAI,MAAM,CAAgC;IAEnD,IAAI,SAAS,IAAI,OAAO,CAMvB;IAEK,KAAK,CAAC,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqEjE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAqBpE,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAa7C,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,QAAQ;CAajB"}
@@ -0,0 +1,180 @@
1
+ function bounded(value, fallback, max) {
2
+ if (!Number.isFinite(value))
3
+ return fallback;
4
+ return Math.max(1, Math.min(Math.floor(value), max));
5
+ }
6
+ function validVector(vector) {
7
+ return Array.isArray(vector) && vector.length > 0 && vector.length <= 65_536 &&
8
+ vector.every((value) => typeof value === 'number' && Number.isFinite(value));
9
+ }
10
+ /**
11
+ * Optional semantic orchestration. Persistence and embedding generation stay
12
+ * behind injected seams, keeping the core dependency-light and lexical-safe.
13
+ */
14
+ export class SemanticMemoryController {
15
+ projectId;
16
+ backend;
17
+ provider;
18
+ now;
19
+ lazyIndexLimit;
20
+ onFailure;
21
+ minRelevance;
22
+ constructor(projectId, backend, provider, options = {}) {
23
+ this.projectId = projectId;
24
+ this.backend = backend;
25
+ this.provider = provider;
26
+ this.now = options.now ?? (() => new Date());
27
+ this.lazyIndexLimit = bounded(options.lazyIndexLimit, 32, 256);
28
+ this.minRelevance = Math.max(0, Math.min(options.minRelevance ?? 0.15, 1));
29
+ this.onFailure = options.onFailure;
30
+ }
31
+ get model() { return this.provider.model; }
32
+ get available() {
33
+ return Boolean(this.backend.listSemanticSources &&
34
+ this.backend.upsertSemanticEmbeddings &&
35
+ this.backend.semanticSearch);
36
+ }
37
+ async index(input = {}) {
38
+ if (!this.available)
39
+ return this.disabled('backend has no semantic index capability');
40
+ if (input.signal?.aborted)
41
+ return this.interrupted();
42
+ const limit = bounded(input.limit, 1_000, 100_000);
43
+ const batchSize = bounded(input.batchSize, 32, 256);
44
+ let indexed = 0;
45
+ let scanned = 0;
46
+ let cursor;
47
+ while (scanned < limit) {
48
+ let sources;
49
+ try {
50
+ sources = await this.backend.listSemanticSources(this.projectId, this.model, {
51
+ force: input.force,
52
+ limit: Math.min(limit - scanned, Math.max(batchSize, 512)),
53
+ ...(cursor ? { cursor } : {}),
54
+ });
55
+ }
56
+ catch (error) {
57
+ return this.degraded(error, scanned, indexed);
58
+ }
59
+ if (sources.length === 0)
60
+ break;
61
+ scanned += sources.length;
62
+ cursor = sources.at(-1).node.id;
63
+ for (let offset = 0; offset < sources.length; offset += batchSize) {
64
+ if (input.signal?.aborted) {
65
+ return {
66
+ status: 'degraded', model: this.model, scanned,
67
+ indexed, skipped: 0, failed: 0, interrupted: true,
68
+ };
69
+ }
70
+ const batch = sources.slice(offset, offset + batchSize);
71
+ let embedded;
72
+ try {
73
+ embedded = await this.provider.embed(batch.map(({ node }) => node.content));
74
+ }
75
+ catch (error) {
76
+ return this.degraded(error, scanned, indexed, batch.length);
77
+ }
78
+ if ('error' in embedded) {
79
+ return this.degraded(embedded.error, scanned, indexed, batch.length);
80
+ }
81
+ if (embedded.length !== batch.length || !embedded.every(validVector)) {
82
+ return this.degraded('embedding provider returned invalid vectors', scanned, indexed, batch.length);
83
+ }
84
+ const dimensions = embedded[0].length;
85
+ if (!embedded.every((vector) => vector.length === dimensions)) {
86
+ return this.degraded('embedding dimensions differ within one batch', scanned, indexed, batch.length);
87
+ }
88
+ const at = this.now().toISOString();
89
+ const records = batch.map((source, index) => ({
90
+ memoryId: source.node.id,
91
+ projectId: this.projectId,
92
+ model: this.model,
93
+ contentHash: source.contentHash,
94
+ vector: embedded[index],
95
+ indexedAt: at,
96
+ }));
97
+ try {
98
+ await this.backend.upsertSemanticEmbeddings(records);
99
+ }
100
+ catch (error) {
101
+ return this.degraded(error, scanned, indexed, batch.length);
102
+ }
103
+ indexed += records.length;
104
+ }
105
+ }
106
+ return {
107
+ status: 'ready', model: this.model, scanned,
108
+ indexed, skipped: 0, failed: 0, interrupted: false,
109
+ };
110
+ }
111
+ async search(query, text) {
112
+ if (!this.available || !text.trim() || query.asOf)
113
+ return [];
114
+ // A small synchronous lazy pass makes fresh memories searchable without a
115
+ // mandatory background daemon. Large rebuilds remain explicit/interruptible.
116
+ const indexed = await this.index({ limit: this.lazyIndexLimit });
117
+ if (indexed.status === 'degraded')
118
+ this.onFailure?.(indexed.error ?? 'semantic indexing degraded');
119
+ let result;
120
+ try {
121
+ result = await this.provider.embed([text]);
122
+ }
123
+ catch (error) {
124
+ this.onFailure?.(String(error));
125
+ return [];
126
+ }
127
+ if ('error' in result) {
128
+ this.onFailure?.(result.error);
129
+ return [];
130
+ }
131
+ const vector = result[0];
132
+ if (!validVector(vector)) {
133
+ this.onFailure?.('invalid semantic query vector');
134
+ return [];
135
+ }
136
+ try {
137
+ return (await this.backend.semanticSearch(query, vector, this.model))
138
+ .filter((candidate) => (candidate.semanticRelevance ?? 0) >= this.minRelevance);
139
+ }
140
+ catch (error) {
141
+ this.onFailure?.(error instanceof Error ? error.message : String(error));
142
+ return [];
143
+ }
144
+ }
145
+ async status() {
146
+ if (!this.available || !this.backend.semanticStatus) {
147
+ return { state: 'disabled', model: this.model, indexed: 0, stale: 0 };
148
+ }
149
+ try {
150
+ return await this.backend.semanticStatus(this.projectId, this.model);
151
+ }
152
+ catch (error) {
153
+ return {
154
+ state: 'degraded', model: this.model, indexed: 0, stale: 0,
155
+ detail: error instanceof Error ? error.message : String(error),
156
+ };
157
+ }
158
+ }
159
+ disabled(error) {
160
+ return {
161
+ status: 'disabled', model: this.model, scanned: 0, indexed: 0,
162
+ skipped: 0, failed: 0, interrupted: false, error,
163
+ };
164
+ }
165
+ interrupted() {
166
+ return {
167
+ status: 'degraded', model: this.model, scanned: 0, indexed: 0,
168
+ skipped: 0, failed: 0, interrupted: true,
169
+ };
170
+ }
171
+ degraded(error, scanned = 0, indexed = 0, failed = 0) {
172
+ const detail = error instanceof Error ? error.message : String(error);
173
+ this.onFailure?.(detail);
174
+ return {
175
+ status: 'degraded', model: this.model, scanned, indexed, skipped: 0,
176
+ failed, interrupted: false, error: detail,
177
+ };
178
+ }
179
+ }
180
+ //# sourceMappingURL=semantic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/memory/semantic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { CognitiveMemoryBackend, ConsolidationRequest, ConsolidationResult, EdgeQuery, LinkMemoryInput, MemoryContext, MemoryContextRequest, MemoryDoctorResult, MemoryEdge, MemoryEventSink, MemoryEmbeddingProvider, MemoryExport, MemoryIndexRequest, MemoryIndexResult, MemoryNode, MemorySanitizer, MemoryService, MemoryStats, MemoryVersion, RecallQuery, RecallResult, RememberInput } from './types.js';
2
+ export declare class MemoryPolicyError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ export interface DefaultMemoryServiceOptions {
6
+ sanitizer?: MemorySanitizer;
7
+ onEvent?: MemoryEventSink;
8
+ now?: () => Date;
9
+ defaultContextChars?: number;
10
+ /** Optional host-owned embedder. Omitting it leaves retrieval lexical. */
11
+ embeddingProvider?: MemoryEmbeddingProvider;
12
+ lazySemanticIndexLimit?: number;
13
+ minSemanticRelevance?: number;
14
+ }
15
+ export declare class DefaultMemoryService implements MemoryService {
16
+ private readonly backend;
17
+ readonly projectId: string;
18
+ private readonly sanitizer;
19
+ private readonly onEvent?;
20
+ private readonly now;
21
+ private readonly defaultContextChars;
22
+ private readonly semantic?;
23
+ constructor(projectId: string, backend: CognitiveMemoryBackend, options?: DefaultMemoryServiceOptions);
24
+ private emit;
25
+ remember(raw: RememberInput): Promise<MemoryNode>;
26
+ get(memoryId: string): Promise<MemoryNode | null>;
27
+ recall(raw: RecallQuery): Promise<RecallResult[]>;
28
+ connect(raw: LinkMemoryInput): Promise<MemoryEdge>;
29
+ related(memoryId: string, options?: EdgeQuery): Promise<Array<{
30
+ edge: MemoryEdge;
31
+ node: MemoryNode;
32
+ }>>;
33
+ history(memoryId: string): Promise<MemoryVersion[]>;
34
+ getAt(memoryId: string, timestamp: string): Promise<MemoryNode | null>;
35
+ retract(memoryId: string, reason?: string): Promise<void>;
36
+ forget(memoryId: string): Promise<boolean>;
37
+ buildContext(input: MemoryContextRequest): Promise<MemoryContext>;
38
+ consolidate(input?: ConsolidationRequest): Promise<ConsolidationResult>;
39
+ index(input?: MemoryIndexRequest): Promise<MemoryIndexResult>;
40
+ stats(): Promise<MemoryStats>;
41
+ doctor(): Promise<MemoryDoctorResult>;
42
+ export(): Promise<MemoryExport>;
43
+ close(): Promise<void>;
44
+ }
45
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/memory/service.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,eAAe,EAEf,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EAEV,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,aAAa,EAEb,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AA+BD,qBAAa,oBAAqB,YAAW,aAAa;IAUtD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAA2B;gBAGnD,SAAS,EAAE,MAAM,EACA,OAAO,EAAE,sBAAsB,EAChD,OAAO,GAAE,2BAAgC;IAkB3C,OAAO,CAAC,IAAI;IAUN,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAsFjD,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKjD,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAyEjD,OAAO,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAqClD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IAWtG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAInD,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAUtE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ1C,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBjE,WAAW,CAAC,KAAK,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkF3E,KAAK,CAAC,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAOjE,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAiC7B,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAqBrC,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAyB/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}