@miller-tech/uap 1.175.13 → 1.178.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/benchmarks/harness-card.d.ts +86 -0
- package/dist/benchmarks/harness-card.d.ts.map +1 -0
- package/dist/benchmarks/harness-card.js +153 -0
- package/dist/benchmarks/harness-card.js.map +1 -0
- package/dist/benchmarks/paired/report.d.ts +15 -0
- package/dist/benchmarks/paired/report.d.ts.map +1 -1
- package/dist/benchmarks/paired/report.js +12 -0
- package/dist/benchmarks/paired/report.js.map +1 -1
- package/dist/benchmarks/paired/types.d.ts +1 -1
- package/dist/bin/cli.js +27 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/bench.d.ts.map +1 -1
- package/dist/cli/bench.js +64 -3
- package/dist/cli/bench.js.map +1 -1
- package/dist/cli/harness.d.ts +3 -2
- package/dist/cli/harness.d.ts.map +1 -1
- package/dist/cli/harness.js +81 -0
- package/dist/cli/harness.js.map +1 -1
- package/dist/cli/memory.d.ts +7 -1
- package/dist/cli/memory.d.ts.map +1 -1
- package/dist/cli/memory.js +165 -0
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/policy.d.ts +43 -0
- package/dist/cli/policy.d.ts.map +1 -1
- package/dist/cli/policy.js +80 -27
- package/dist/cli/policy.js.map +1 -1
- package/dist/delivery/agentic-executor.d.ts +76 -2
- package/dist/delivery/agentic-executor.d.ts.map +1 -1
- package/dist/delivery/agentic-executor.js +231 -29
- package/dist/delivery/agentic-executor.js.map +1 -1
- package/dist/delivery/edit-match.d.ts +134 -0
- package/dist/delivery/edit-match.d.ts.map +1 -0
- package/dist/delivery/edit-match.js +331 -0
- package/dist/delivery/edit-match.js.map +1 -0
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -1
- package/dist/memory/dynamic-retrieval.js +57 -0
- package/dist/memory/dynamic-retrieval.js.map +1 -1
- package/dist/memory/reconstruct-ingest.d.ts +88 -0
- package/dist/memory/reconstruct-ingest.d.ts.map +1 -0
- package/dist/memory/reconstruct-ingest.js +165 -0
- package/dist/memory/reconstruct-ingest.js.map +1 -0
- package/dist/memory/reconstruct-store.d.ts +143 -0
- package/dist/memory/reconstruct-store.d.ts.map +1 -0
- package/dist/memory/reconstruct-store.js +312 -0
- package/dist/memory/reconstruct-store.js.map +1 -0
- package/dist/memory/reconstruct.d.ts +272 -0
- package/dist/memory/reconstruct.d.ts.map +1 -0
- package/dist/memory/reconstruct.js +552 -0
- package/dist/memory/reconstruct.js.map +1 -0
- package/dist/policies/schemas/policy.d.ts +2 -2
- package/dist/self-harness/evidence-proposer.d.ts +58 -0
- package/dist/self-harness/evidence-proposer.d.ts.map +1 -0
- package/dist/self-harness/evidence-proposer.js +132 -0
- package/dist/self-harness/evidence-proposer.js.map +1 -0
- package/dist/self-harness/manifest.d.ts +130 -0
- package/dist/self-harness/manifest.d.ts.map +1 -0
- package/dist/self-harness/manifest.js +247 -0
- package/dist/self-harness/manifest.js.map +1 -0
- package/dist/self-harness/mods.d.ts +57 -3
- package/dist/self-harness/mods.d.ts.map +1 -1
- package/dist/self-harness/mods.js +72 -0
- package/dist/self-harness/mods.js.map +1 -1
- package/dist/self-harness/orchestrator.d.ts +27 -0
- package/dist/self-harness/orchestrator.d.ts.map +1 -1
- package/dist/self-harness/orchestrator.js +47 -4
- package/dist/self-harness/orchestrator.js.map +1 -1
- package/dist/self-harness/pending.d.ts +17 -3
- package/dist/self-harness/pending.d.ts.map +1 -1
- package/dist/self-harness/pending.js +26 -4
- package/dist/self-harness/pending.js.map +1 -1
- package/dist/self-harness/profile.d.ts +17 -1
- package/dist/self-harness/profile.d.ts.map +1 -1
- package/dist/self-harness/profile.js +11 -4
- package/dist/self-harness/profile.js.map +1 -1
- package/dist/self-harness/run.d.ts +19 -0
- package/dist/self-harness/run.d.ts.map +1 -1
- package/dist/self-harness/run.js +43 -4
- package/dist/self-harness/run.js.map +1 -1
- package/dist/self-harness/transfer.d.ts.map +1 -1
- package/dist/self-harness/transfer.js +2 -0
- package/dist/self-harness/transfer.js.map +1 -1
- package/dist/self-harness/validate.d.ts +17 -6
- package/dist/self-harness/validate.d.ts.map +1 -1
- package/dist/self-harness/validate.js +73 -8
- package/dist/self-harness/validate.js.map +1 -1
- package/dist/telemetry/tool-calls.d.ts +82 -0
- package/dist/telemetry/tool-calls.d.ts.map +1 -0
- package/dist/telemetry/tool-calls.js +280 -0
- package/dist/telemetry/tool-calls.js.map +1 -0
- package/dist/telemetry/tool-failure.d.ts +71 -0
- package/dist/telemetry/tool-failure.d.ts.map +1 -0
- package/dist/telemetry/tool-failure.js +123 -0
- package/dist/telemetry/tool-failure.js.map +1 -0
- package/docs/plans/harness-engineering-uplift-2026-07-31.md +280 -0
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active memory reconstruction over a Cue–Tag–Content graph
|
|
3
|
+
* (harness plan area E, 2026-07-31).
|
|
4
|
+
*
|
|
5
|
+
* UAP's memory retrieval is passive: embed the query, pull the top-k, reason
|
|
6
|
+
* once. "Memory is Reconstructed, Not Retrieved" (arXiv 2606.06036) shows that
|
|
7
|
+
* paradigm is strictly less expressive than letting the model traverse memory
|
|
8
|
+
* WHILE it reasons — it proves active policies solve a binary-tree
|
|
9
|
+
* needle-in-a-haystack with zero error where passive policies need an
|
|
10
|
+
* exponential budget — and measures the practical gap at up to +23% on LoCoMo
|
|
11
|
+
* with 118k tokens per query against A-Mem's 632k and LangMem's 3.26M.
|
|
12
|
+
*
|
|
13
|
+
* THE TAG LAYER IS THE CONTRIBUTION. Their ablation: cue -> content direct
|
|
14
|
+
* indexing recalls ~65%; cue -> TAG -> content with multi-turn reasoning recalls
|
|
15
|
+
* ~90%. A "graph memory" that skips the associative tag bridge gets none of the
|
|
16
|
+
* benefit, so the schema here makes tags mandatory rather than an optimisation.
|
|
17
|
+
*
|
|
18
|
+
* Off by default. The literature's numbers are theirs, not ours: this ships
|
|
19
|
+
* behind `UAP_MEMORY_ACTIVE=1` until `uap bench paired` measures the lift on our
|
|
20
|
+
* own suite (harness plan constraint 3).
|
|
21
|
+
*/
|
|
22
|
+
/** Which memory layer a content node lives in (MRAgent's three granularities). */
|
|
23
|
+
export type MemoryLayer =
|
|
24
|
+
/** Event-specific, temporally ordered. */
|
|
25
|
+
'episodic'
|
|
26
|
+
/** Stable facts: preferences, attributes, decisions. */
|
|
27
|
+
| 'semantic'
|
|
28
|
+
/** Topic nodes summarising recurring patterns — the top-down entry point. */
|
|
29
|
+
| 'abstraction';
|
|
30
|
+
export interface ContentNode {
|
|
31
|
+
id: number;
|
|
32
|
+
layer: MemoryLayer;
|
|
33
|
+
text: string;
|
|
34
|
+
/** ISO timestamp of the source episode, when known. */
|
|
35
|
+
occurredAt?: string;
|
|
36
|
+
}
|
|
37
|
+
/** One (cue, tag, content) triple — the graph's only edge type. */
|
|
38
|
+
export interface Triple {
|
|
39
|
+
cue: string;
|
|
40
|
+
tag: string;
|
|
41
|
+
contentId: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ReconstructionStep {
|
|
44
|
+
/** 1-based step index. */
|
|
45
|
+
step: number;
|
|
46
|
+
/** Cues the model chose to expand this step. */
|
|
47
|
+
expandedCues: string[];
|
|
48
|
+
/** Tags reached from those cues. */
|
|
49
|
+
tags: string[];
|
|
50
|
+
/** Content ids admitted into the reconstructed context. */
|
|
51
|
+
kept: number[];
|
|
52
|
+
/** Content ids reached but judged IRRELEVANT. */
|
|
53
|
+
pruned: number[];
|
|
54
|
+
/**
|
|
55
|
+
* Content ids the policy kept but that did not fit the context budget.
|
|
56
|
+
* Separate from `pruned`: "judged irrelevant" and "budget full" are different
|
|
57
|
+
* outcomes and want different remedies.
|
|
58
|
+
*/
|
|
59
|
+
dropped: number[];
|
|
60
|
+
/** Whether the model declared the evidence sufficient after this step. */
|
|
61
|
+
sufficient: boolean;
|
|
62
|
+
}
|
|
63
|
+
export interface ReconstructionResult {
|
|
64
|
+
/** Content, in the order it was admitted — this is what goes to the model. */
|
|
65
|
+
context: ContentNode[];
|
|
66
|
+
steps: ReconstructionStep[];
|
|
67
|
+
/** True when the loop stopped because evidence sufficed, not because it ran out of steps. */
|
|
68
|
+
converged: boolean;
|
|
69
|
+
/** Why the traversal stopped, so callers can give accurate advice. */
|
|
70
|
+
stopReason: 'sufficient' | 'context-full' | 'exhausted' | 'step-budget';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The reasoning seam. Injected so the traversal policy is testable without a
|
|
74
|
+
* model, and so the same graph can be driven by a local or a frontier model.
|
|
75
|
+
*/
|
|
76
|
+
export interface ReconstructionPolicy {
|
|
77
|
+
/**
|
|
78
|
+
* Choose which of the currently-active cues to expand next. Returning [] ends
|
|
79
|
+
* the traversal.
|
|
80
|
+
*/
|
|
81
|
+
selectCues(query: string, activeCues: string[], context: ContentNode[]): string[];
|
|
82
|
+
/**
|
|
83
|
+
* Semantic routing: which reached contents are worth keeping, and is the
|
|
84
|
+
* accumulated evidence now enough to answer?
|
|
85
|
+
*
|
|
86
|
+
* `hops` carries how each candidate was reached. A router that ignores it can
|
|
87
|
+
* only judge lexical similarity to the query — and then the tag bridge, which
|
|
88
|
+
* is the whole point of the structure, buys nothing: the traversal reaches the
|
|
89
|
+
* associated memory and the router throws it away for sharing no words with
|
|
90
|
+
* the question.
|
|
91
|
+
*/
|
|
92
|
+
route(query: string, candidates: ContentNode[], context: ContentNode[], hops?: HopContext): RouteDecision;
|
|
93
|
+
}
|
|
94
|
+
export interface RouteDecision {
|
|
95
|
+
keep: number[];
|
|
96
|
+
sufficient: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Candidates declined ONLY because a per-step cap was reached, not on the
|
|
99
|
+
* merits. The traversal keeps these reachable by a later, stronger bridge
|
|
100
|
+
* instead of blacklisting them like a genuine rejection.
|
|
101
|
+
*/
|
|
102
|
+
deferred?: number[];
|
|
103
|
+
}
|
|
104
|
+
/** How the traversal reached this step's candidates. */
|
|
105
|
+
export interface HopContext {
|
|
106
|
+
/** Candidate id -> the tags it was reached through. */
|
|
107
|
+
tagsFor: Map<number, string[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Tags that have produced admitted evidence in ANY prior step — accumulated,
|
|
110
|
+
* not per-step. A bridge proves itself once; requiring it to re-prove itself
|
|
111
|
+
* every step is what stops a second hop from ever landing, since by
|
|
112
|
+
* definition the far side of a bridge does not resemble the query.
|
|
113
|
+
*/
|
|
114
|
+
productiveTags: ReadonlySet<string>;
|
|
115
|
+
/**
|
|
116
|
+
* How many contents each tag links. Specificity is the honest discriminator
|
|
117
|
+
* for an associative admission: a tag on 3 memories asserts a real relation, a
|
|
118
|
+
* tag on 300 asserts almost nothing. Lexical overlap cannot serve here — the
|
|
119
|
+
* far side of a bridge shares no words with the query by construction.
|
|
120
|
+
*/
|
|
121
|
+
tagSize: (tag: string) => number;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Zero-LLM policy: lexical overlap for routing, breadth-first for expansion.
|
|
125
|
+
*
|
|
126
|
+
* Not a toy — it is the honest default. An active traversal driven by a cheap
|
|
127
|
+
* heuristic is still active (it prunes on accumulated evidence, which is the
|
|
128
|
+
* mechanism the paper isolates); wiring an LLM in raises the ceiling but is not
|
|
129
|
+
* required for the structure to pay off, and a deterministic policy is what
|
|
130
|
+
* makes the loop unit-testable.
|
|
131
|
+
*/
|
|
132
|
+
export declare function heuristicPolicy(opts?: {
|
|
133
|
+
keepThreshold?: number;
|
|
134
|
+
sufficientAt?: number;
|
|
135
|
+
maxExpandPerStep?: number;
|
|
136
|
+
/** Max tag-bridged admissions per step. 0 disables associative recall. */
|
|
137
|
+
maxAssociativePerStep?: number;
|
|
138
|
+
/**
|
|
139
|
+
* A tag linking more contents than this is too broad to justify admitting a
|
|
140
|
+
* candidate that has no lexical relation to the query at all.
|
|
141
|
+
*/
|
|
142
|
+
maxBridgeTagSize?: number;
|
|
143
|
+
}): ReconstructionPolicy;
|
|
144
|
+
/**
|
|
145
|
+
* The Cue–Tag–Content graph.
|
|
146
|
+
*
|
|
147
|
+
* Its own SQLite file rather than a table in the semantic store: the traversal
|
|
148
|
+
* is a different access pattern (many small keyed hops, no vector math) and
|
|
149
|
+
* keeping it separate means enabling the feature cannot slow the existing
|
|
150
|
+
* retrieval path.
|
|
151
|
+
*/
|
|
152
|
+
export declare class MemoryGraph {
|
|
153
|
+
private db;
|
|
154
|
+
constructor(dbPath: string);
|
|
155
|
+
/**
|
|
156
|
+
* Add one memory item and its (cue, tag) index entries.
|
|
157
|
+
*
|
|
158
|
+
* Tags are REQUIRED: an item indexed by cue alone is the ~65%-recall
|
|
159
|
+
* configuration the paper ablates away. Callers with no tags should supply a
|
|
160
|
+
* coarse one (the layer name) rather than none.
|
|
161
|
+
*/
|
|
162
|
+
addContent(params: {
|
|
163
|
+
layer: MemoryLayer;
|
|
164
|
+
text: string;
|
|
165
|
+
occurredAt?: string;
|
|
166
|
+
cues: string[];
|
|
167
|
+
tags: string[];
|
|
168
|
+
}): number;
|
|
169
|
+
/** φ_{c→g}: the associative tags a cue activates. */
|
|
170
|
+
tagsForCue(cue: string): string[];
|
|
171
|
+
/** φ_{(c,g)→v}: contents reachable from a cue THROUGH a specific tag. */
|
|
172
|
+
contentsFor(cue: string, tag: string): ContentNode[];
|
|
173
|
+
/**
|
|
174
|
+
* Tags too broad to be bridges: attached to >= 60% of all content. Reuses the
|
|
175
|
+
* discriminativeness rule `stats()` already applies, because a tag that links
|
|
176
|
+
* everything relates nothing — and on the short-term tier EVERY item is tagged
|
|
177
|
+
* with one of ~6 type values, so without this the "bridge" is the whole store.
|
|
178
|
+
*/
|
|
179
|
+
hubTags(): Set<string>;
|
|
180
|
+
private tagSizeCache;
|
|
181
|
+
/** How many distinct contents a tag links. Cached — hot in the route loop. */
|
|
182
|
+
tagSize(tag: string): number;
|
|
183
|
+
/** Cues that co-occur with a tag — how traversal discovers NEW clues. */
|
|
184
|
+
cuesForTag(tag: string): string[];
|
|
185
|
+
/** Source keys already ingested, for incremental rebuilds. */
|
|
186
|
+
ingestedKeys(): Set<string>;
|
|
187
|
+
/** Record that a refresh COMPLETED, whether or not it stored anything. */
|
|
188
|
+
markRefreshed(nowIso: string): void;
|
|
189
|
+
/** ISO timestamp of the last completed refresh, or null if never refreshed. */
|
|
190
|
+
lastRefreshedAt(): string | null;
|
|
191
|
+
/**
|
|
192
|
+
* Best-effort single-flight guard around a build.
|
|
193
|
+
*
|
|
194
|
+
* Two agents retrieving at once both see a stale graph, both build, and both
|
|
195
|
+
* insert the same items under fresh ids — permanent duplicates, since the
|
|
196
|
+
* ledger then reports them indexed. Returns false when another build holds the
|
|
197
|
+
* lock; a lock older than `staleMs` is taken over so a crashed build cannot
|
|
198
|
+
* wedge refreshes forever.
|
|
199
|
+
*/
|
|
200
|
+
acquireBuildLock(nowMs: number, staleMs?: number): boolean;
|
|
201
|
+
releaseBuildLock(): void;
|
|
202
|
+
/** ISO timestamp of the most recent ingest, or null if never built. */
|
|
203
|
+
lastIngestedAt(): string | null;
|
|
204
|
+
/** Mark source keys as ingested. */
|
|
205
|
+
markIngested(keys: Iterable<string>): void;
|
|
206
|
+
/**
|
|
207
|
+
* Cheap emptiness probe. `stats()` runs five aggregates including two
|
|
208
|
+
* COUNT(DISTINCT) and a GROUP BY — far too expensive for the "should I route
|
|
209
|
+
* here" check that runs on every single query.
|
|
210
|
+
*/
|
|
211
|
+
isEmpty(): boolean;
|
|
212
|
+
/** Delete everything — the truncate half of a real rebuild. */
|
|
213
|
+
clear(): void;
|
|
214
|
+
/** Shape of the graph, for `uap memory graph status` and honest reporting. */
|
|
215
|
+
stats(): {
|
|
216
|
+
contents: number;
|
|
217
|
+
cues: number;
|
|
218
|
+
tags: number;
|
|
219
|
+
triples: number;
|
|
220
|
+
bridgingTags: number;
|
|
221
|
+
};
|
|
222
|
+
/** Every cue in the graph — the seed set when the query matches nothing. */
|
|
223
|
+
allCues(): string[];
|
|
224
|
+
close(): void;
|
|
225
|
+
}
|
|
226
|
+
export interface ReconstructOptions {
|
|
227
|
+
/** Hard step cap. The paper's runs converge in 3–4; 5 leaves headroom. */
|
|
228
|
+
maxSteps?: number;
|
|
229
|
+
policy?: ReconstructionPolicy;
|
|
230
|
+
/** Seed cues. Omitted -> derived from the query's own tokens. */
|
|
231
|
+
seedCues?: string[];
|
|
232
|
+
/**
|
|
233
|
+
* Hard ceiling on admitted context. `sufficient` only stops FURTHER steps —
|
|
234
|
+
* everything kept in the current step is already in context — so without this
|
|
235
|
+
* one step over a well-connected graph can admit thousands of nodes and blow
|
|
236
|
+
* the token budget this whole approach exists to protect.
|
|
237
|
+
*/
|
|
238
|
+
maxContext?: number;
|
|
239
|
+
/** Seed cues to draw when the query matches nothing. Default 32. */
|
|
240
|
+
maxSeeds?: number;
|
|
241
|
+
/**
|
|
242
|
+
* Hard cap on cues expanded per step, enforced HERE rather than trusted to the
|
|
243
|
+
* policy. The policy seam exists for an LLM to plug into, and an LLM will
|
|
244
|
+
* happily return 200 cues (or cues that were never active), reproducing the
|
|
245
|
+
* full-scan this bound was added to prevent.
|
|
246
|
+
*/
|
|
247
|
+
maxExpandPerStep?: number;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Reconstruct an answer context by traversing the graph while reasoning.
|
|
251
|
+
*
|
|
252
|
+
* The loop is the paper's three-step iteration: select actions over the active
|
|
253
|
+
* set, traverse (cue -> tags -> contents), then route/prune and update state.
|
|
254
|
+
* The essential difference from retrieval is that step N+1's expansion depends
|
|
255
|
+
* on what step N actually found — cues discovered mid-traversal become new
|
|
256
|
+
* entry points, and weak paths are killed before they consume context.
|
|
257
|
+
*/
|
|
258
|
+
export declare function reconstruct(graph: MemoryGraph, query: string, options?: ReconstructOptions): ReconstructionResult;
|
|
259
|
+
/**
|
|
260
|
+
* Seed cues = query tokens present in the graph.
|
|
261
|
+
*
|
|
262
|
+
* When nothing matches we fall back to a BOUNDED sample rather than every cue
|
|
263
|
+
* in the graph: an off-topic query would otherwise load the entire content
|
|
264
|
+
* table on step 1, which is the opposite of what this is for.
|
|
265
|
+
*/
|
|
266
|
+
export declare function seedCuesFromQuery(graph: MemoryGraph, query: string, maxSeeds?: number): string[];
|
|
267
|
+
/**
|
|
268
|
+
* Is active reconstruction enabled? Off by default — the lift is measured on our
|
|
269
|
+
* own suite before it becomes the default retrieval path.
|
|
270
|
+
*/
|
|
271
|
+
export declare function activeReconstructionEnabled(): boolean;
|
|
272
|
+
//# sourceMappingURL=reconstruct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconstruct.d.ts","sourceRoot":"","sources":["../../src/memory/reconstruct.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAcH,kFAAkF;AAClF,MAAM,MAAM,WAAW;AACrB,0CAA0C;AACxC,UAAU;AACZ,wDAAwD;GACtD,UAAU;AACZ,6EAA6E;GAC3E,aAAa,CAAC;AAElB,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,mEAAmE;AACnE,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oCAAoC;IACpC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2DAA2D;IAC3D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0EAA0E;IAC1E,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,6FAA6F;IAC7F,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,UAAU,EAAE,YAAY,GAAG,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC;CACzE;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC;IAClF;;;;;;;;;OASG;IACH,KAAK,CACH,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,EAAE,EACzB,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,CAAC,EAAE,UAAU,GAChB,aAAa,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/B;;;;;OAKG;IACH,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC;;;;;OAKG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,IAAI,GAAE;IACJ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACtB,GACL,oBAAoB,CAiGtB;AAkBD;;;;;;;GAOG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IA4C1B;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,WAAW,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,GAAG,MAAM;IAkBV,qDAAqD;IACrD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAOjC,yEAAyE;IACzE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE;IAgBpD;;;;;OAKG;IACH,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC;IActB,OAAO,CAAC,YAAY,CAA6B;IAEjD,8EAA8E;IAC9E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAY5B,yEAAyE;IACzE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAOjC,8DAA8D;IAC9D,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;IAK3B,0EAA0E;IAC1E,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOnC,+EAA+E;IAC/E,eAAe,IAAI,MAAM,GAAG,IAAI;IAOhC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAU,GAAG,OAAO;IAmB3D,gBAAgB,IAAI,IAAI;IAQxB,uEAAuE;IACvE,cAAc,IAAI,MAAM,GAAG,IAAI;IAO/B,oCAAoC;IACpC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAQ1C;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAOlB,+DAA+D;IAC/D,KAAK,IAAI,IAAI;IAIb,8EAA8E;IAC9E,KAAK,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IA2BhG,4EAA4E;IAC5E,OAAO,IAAI,MAAM,EAAE;IAKnB,KAAK,IAAI,IAAI;CAOd;AAeD,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,oBAAoB,CAoHtB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,EAAE,CAM5F;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAErD"}
|