@mneme-ai/core 1.83.0 → 1.85.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/agent_manifest.d.ts +1 -1
- package/dist/agent_manifest.d.ts.map +1 -1
- package/dist/agent_manifest.js +4 -1
- package/dist/agent_manifest.js.map +1 -1
- package/dist/diaspora/http_bridge.d.ts.map +1 -1
- package/dist/diaspora/http_bridge.js +12 -1
- package/dist/diaspora/http_bridge.js.map +1 -1
- package/dist/exodus/wanderer.d.ts +19 -3
- package/dist/exodus/wanderer.d.ts.map +1 -1
- package/dist/exodus/wanderer.js +71 -21
- package/dist/exodus/wanderer.js.map +1 -1
- package/dist/genesplice/gist_transmit.d.ts.map +1 -1
- package/dist/genesplice/gist_transmit.js +7 -0
- package/dist/genesplice/gist_transmit.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lattice/intent_atoms.d.ts.map +1 -1
- package/dist/lattice/intent_atoms.js +79 -0
- package/dist/lattice/intent_atoms.js.map +1 -1
- package/dist/lineage/spore.d.ts.map +1 -1
- package/dist/lineage/spore.js +15 -9
- package/dist/lineage/spore.js.map +1 -1
- package/dist/relay/encrypted_payload.d.ts +33 -0
- package/dist/relay/encrypted_payload.d.ts.map +1 -0
- package/dist/relay/encrypted_payload.js +65 -0
- package/dist/relay/encrypted_payload.js.map +1 -0
- package/dist/relay/index.d.ts +16 -0
- package/dist/relay/index.d.ts.map +1 -0
- package/dist/relay/index.js +16 -0
- package/dist/relay/index.js.map +1 -0
- package/dist/relay/mobile_recipe.d.ts +35 -0
- package/dist/relay/mobile_recipe.d.ts.map +1 -0
- package/dist/relay/mobile_recipe.js +35 -0
- package/dist/relay/mobile_recipe.js.map +1 -0
- package/dist/relay/paste_backend.d.ts +47 -0
- package/dist/relay/paste_backend.d.ts.map +1 -0
- package/dist/relay/paste_backend.js +94 -0
- package/dist/relay/paste_backend.js.map +1 -0
- package/dist/relay/relay.test.d.ts +2 -0
- package/dist/relay/relay.test.d.ts.map +1 -0
- package/dist/relay/relay.test.js +108 -0
- package/dist/relay/relay.test.js.map +1 -0
- package/dist/synapse/nexus_code.d.ts +30 -1
- package/dist/synapse/nexus_code.d.ts.map +1 -1
- package/dist/synapse/nexus_code.js +11 -1
- package/dist/synapse/nexus_code.js.map +1 -1
- package/dist/synapse/qr_anchor.d.ts.map +1 -1
- package/dist/synapse/qr_anchor.js +4 -2
- package/dist/synapse/qr_anchor.js.map +1 -1
- package/dist/synapse/token_compression.d.ts.map +1 -1
- package/dist/synapse/token_compression.js +26 -2
- package/dist/synapse/token_compression.js.map +1 -1
- package/dist/v1_84_regression.test.d.ts +6 -0
- package/dist/v1_84_regression.test.d.ts.map +1 -0
- package/dist/v1_84_regression.test.js +172 -0
- package/dist/v1_84_regression.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.84.0 -- regression suite covering Round 4 + Round 5 user findings.
|
|
3
|
+
* One file, all bugs, all fixed.
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it, expect } from "vitest";
|
|
6
|
+
import { mkdtempSync, writeFileSync, readFileSync } from "node:fs";
|
|
7
|
+
import { tmpdir } from "node:os";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { encodeQRAnchor } from "./synapse/qr_anchor.js";
|
|
10
|
+
import { compressText } from "./synapse/token_compression.js";
|
|
11
|
+
import { mintNexusCode, portableFor } from "./synapse/nexus_code.js";
|
|
12
|
+
import { parseGistUrl } from "./genesplice/gist_transmit.js";
|
|
13
|
+
import { packWanderer, unpackWanderer } from "./exodus/wanderer.js";
|
|
14
|
+
function tmpRepo() {
|
|
15
|
+
return mkdtempSync(join(tmpdir(), "mneme-v184-"));
|
|
16
|
+
}
|
|
17
|
+
describe("v1.84 R4-1 · qr_anchor no longer throws (ESM-pure)", () => {
|
|
18
|
+
it("encodeQRAnchor returns SVG without 'require is not defined' error", () => {
|
|
19
|
+
const a = encodeQRAnchor("K7M9X2");
|
|
20
|
+
expect(a.svg).toContain("<svg");
|
|
21
|
+
expect(a.svg).toContain("data-payload=\"K7M9X2\"");
|
|
22
|
+
});
|
|
23
|
+
it("works for a longer payload too", () => {
|
|
24
|
+
const a = encodeQRAnchor("https://gist.github.com/user/abc123def456");
|
|
25
|
+
expect(a.svg).toContain("<svg");
|
|
26
|
+
expect(a.warning).toBeNull();
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe("v1.84 R4-2 · codebook compression ratio improved", () => {
|
|
30
|
+
it("realistic soul-prompt-sized text saves 25%+ tokens", () => {
|
|
31
|
+
const sample = [
|
|
32
|
+
"## VOICE DIRECTIVE (read FIRST -- governs every user-facing reply)",
|
|
33
|
+
"",
|
|
34
|
+
"1. Never speak Mneme codenames out loud.",
|
|
35
|
+
"2. No mode narration. Don't say standing by.",
|
|
36
|
+
"3. Stop offering menus.",
|
|
37
|
+
"4. No unsolicited version chatter.",
|
|
38
|
+
"5. One hedge per reply, max.",
|
|
39
|
+
"6. Match the previous turn's voice.",
|
|
40
|
+
"",
|
|
41
|
+
"## Mneme dictionary (read this BEFORE interpreting any Mneme keyword)",
|
|
42
|
+
"",
|
|
43
|
+
"Mneme is the npm package mneme-ai. NOT a generic protocol.",
|
|
44
|
+
"",
|
|
45
|
+
"## CONDUIT relay protocol (paste-only AIs read this carefully)",
|
|
46
|
+
"",
|
|
47
|
+
"You are the receiving AI. You have no Mneme installed locally.",
|
|
48
|
+
"When the user asks for cross-vendor actions, emit a # CONDUIT RETURN block.",
|
|
49
|
+
"",
|
|
50
|
+
"## Mneme Heartbeat (version telepathy)",
|
|
51
|
+
"local_version: 1.84.0",
|
|
52
|
+
"npm_latest: 1.84.0",
|
|
53
|
+
"",
|
|
54
|
+
"## Origin",
|
|
55
|
+
"vendor=claude-opus-4-7",
|
|
56
|
+
"",
|
|
57
|
+
"## Context",
|
|
58
|
+
"the user and the AI did things involving Mneme MCP tools and soul prompt across machines",
|
|
59
|
+
].join("\n");
|
|
60
|
+
const r = compressText(sample);
|
|
61
|
+
expect(r.ratio).toBeLessThan(0.75);
|
|
62
|
+
expect(r.savedChars).toBeGreaterThan(100);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe("v1.84 R5-2 · parseGistUrl supports mneme:// URI", () => {
|
|
66
|
+
it("https form still works", () => {
|
|
67
|
+
const r = parseGistUrl("https://gist.github.com/user/abc123def456789");
|
|
68
|
+
expect(r.gistId).toBe("abc123def456789");
|
|
69
|
+
});
|
|
70
|
+
it("mneme://gist/<id> form works", () => {
|
|
71
|
+
const r = parseGistUrl("mneme://gist/abc123def456789");
|
|
72
|
+
expect(r.gistId).toBe("abc123def456789");
|
|
73
|
+
});
|
|
74
|
+
it("mneme://gist/<id>/<hmac> form works", () => {
|
|
75
|
+
const r = parseGistUrl("mneme://gist/abc123def456789/2bd33e57ab898b09");
|
|
76
|
+
expect(r.gistId).toBe("abc123def456789");
|
|
77
|
+
});
|
|
78
|
+
it("mneme://gist/<id>?key=... form works", () => {
|
|
79
|
+
const r = parseGistUrl("mneme://gist/abc123def456789?key=xyz");
|
|
80
|
+
expect(r.gistId).toBe("abc123def456789");
|
|
81
|
+
});
|
|
82
|
+
it("garbage returns null gistId", () => {
|
|
83
|
+
const r = parseGistUrl("not-a-gist-url");
|
|
84
|
+
expect(r.gistId).toBeNull();
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe("v1.84 R5-3 · Wanderer cross-machine HMAC", () => {
|
|
88
|
+
it("portableSig lets unpack succeed on a DIFFERENT repo (different HMAC secret)", () => {
|
|
89
|
+
const sourceRepo = tmpRepo();
|
|
90
|
+
const destRepo = tmpRepo();
|
|
91
|
+
const { path } = packWanderer(sourceRepo);
|
|
92
|
+
const result = unpackWanderer(destRepo, path);
|
|
93
|
+
expect(result.ok).toBe(true);
|
|
94
|
+
expect(result.crossMachine).toBe(true);
|
|
95
|
+
expect(result.reason).toContain("portableSig");
|
|
96
|
+
});
|
|
97
|
+
it("same-machine path still verifies inner HMAC (crossMachine=false)", () => {
|
|
98
|
+
const repo = tmpRepo();
|
|
99
|
+
const { path } = packWanderer(repo);
|
|
100
|
+
const result = unpackWanderer(repo, path);
|
|
101
|
+
expect(result.ok).toBe(true);
|
|
102
|
+
expect(result.crossMachine).toBe(false);
|
|
103
|
+
});
|
|
104
|
+
it("requireLocalHmac:true rejects cross-machine bundles", () => {
|
|
105
|
+
const sourceRepo = tmpRepo();
|
|
106
|
+
const destRepo = tmpRepo();
|
|
107
|
+
const { path } = packWanderer(sourceRepo);
|
|
108
|
+
const result = unpackWanderer(destRepo, path, { requireLocalHmac: true });
|
|
109
|
+
expect(result.ok).toBe(false);
|
|
110
|
+
});
|
|
111
|
+
it("tampered portableSig is detected", () => {
|
|
112
|
+
const repo = tmpRepo();
|
|
113
|
+
const { path } = packWanderer(repo);
|
|
114
|
+
const raw = JSON.parse(readFileSync(path, "utf8"));
|
|
115
|
+
raw.portableSig = "f".repeat(64);
|
|
116
|
+
writeFileSync(path, JSON.stringify(raw, null, 2));
|
|
117
|
+
const result = unpackWanderer(tmpRepo(), path);
|
|
118
|
+
expect(result.ok).toBe(false);
|
|
119
|
+
expect(result.reason).toContain("portable signature mismatch");
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
describe("v1.84 R5-4 · packWanderer honors outPath", () => {
|
|
123
|
+
it("writes to opts.outPath when provided", () => {
|
|
124
|
+
const repo = tmpRepo();
|
|
125
|
+
const target = join(tmpRepo(), "custom", "bundle.mwt");
|
|
126
|
+
const { path } = packWanderer(repo, { outPath: target });
|
|
127
|
+
expect(path.replace(/\\/g, "/").endsWith("custom/bundle.mwt")).toBe(true);
|
|
128
|
+
// Round-trip works.
|
|
129
|
+
const r = unpackWanderer(tmpRepo(), path);
|
|
130
|
+
expect(r.ok).toBe(true);
|
|
131
|
+
});
|
|
132
|
+
it("falls back to default dir when outPath omitted", () => {
|
|
133
|
+
const repo = tmpRepo();
|
|
134
|
+
const { path } = packWanderer(repo);
|
|
135
|
+
expect(path).toContain(".mneme");
|
|
136
|
+
expect(path).toContain("wanderer");
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe("v1.84 ARCHITECTURE · NEXUS portable for mobile apps", () => {
|
|
140
|
+
it("mintNexusCode returns portable {code, url, instruction, qrPayload}", () => {
|
|
141
|
+
const repo = tmpRepo();
|
|
142
|
+
const entry = mintNexusCode(repo, { soulText: "# SOUL\nbody", gistUrl: "https://gist.github.com/u/abc123" });
|
|
143
|
+
expect(entry.portable).toBeDefined();
|
|
144
|
+
expect(entry.portable.code).toBe(entry.code);
|
|
145
|
+
expect(entry.portable.url).toBe("https://gist.github.com/u/abc123");
|
|
146
|
+
expect(entry.portable.qrPayload).toContain(entry.code);
|
|
147
|
+
expect(entry.portable.qrPayload).toContain("https://gist.github.com/u/abc123");
|
|
148
|
+
expect(entry.portable.instruction).toContain("paste this URL");
|
|
149
|
+
});
|
|
150
|
+
it("without Gist URL, portable explains the Mneme-only-destination limitation", () => {
|
|
151
|
+
const repo = tmpRepo();
|
|
152
|
+
const entry = mintNexusCode(repo, { soulText: "# SOUL\nbody" });
|
|
153
|
+
expect(entry.portable.url).toBeNull();
|
|
154
|
+
expect(entry.portable.instruction.toLowerCase()).toContain("mneme");
|
|
155
|
+
});
|
|
156
|
+
it("portableFor helper produces the same output as mintNexusCode embeds", () => {
|
|
157
|
+
const repo = tmpRepo();
|
|
158
|
+
const entry = mintNexusCode(repo, { soulText: "x", gistUrl: "https://gist.github.com/u/abc" });
|
|
159
|
+
const p = portableFor({
|
|
160
|
+
code: entry.code,
|
|
161
|
+
createdAt: entry.createdAt,
|
|
162
|
+
expiresAt: entry.expiresAt,
|
|
163
|
+
soulHash: entry.soulHash,
|
|
164
|
+
soulText: entry.soulText,
|
|
165
|
+
gistUrl: entry.gistUrl,
|
|
166
|
+
resolveCount: entry.resolveCount,
|
|
167
|
+
});
|
|
168
|
+
expect(p.code).toBe(entry.code);
|
|
169
|
+
expect(p.url).toBe(entry.portable.url);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
//# sourceMappingURL=v1_84_regression.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v1_84_regression.test.js","sourceRoot":"","sources":["../src/v1_84_regression.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEpE,SAAS,OAAO;IACd,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,GAAG,cAAc,CAAC,2CAA2C,CAAC,CAAC;QACtE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAChE,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG;YACb,oEAAoE;YACpE,EAAE;YACF,0CAA0C;YAC1C,8CAA8C;YAC9C,yBAAyB;YACzB,oCAAoC;YACpC,8BAA8B;YAC9B,qCAAqC;YACrC,EAAE;YACF,uEAAuE;YACvE,EAAE;YACF,4DAA4D;YAC5D,EAAE;YACF,gEAAgE;YAChE,EAAE;YACF,gEAAgE;YAChE,6EAA6E;YAC7E,EAAE;YACF,wCAAwC;YACxC,uBAAuB;YACvB,oBAAoB;YACpB,EAAE;YACF,WAAW;YACX,wBAAwB;YACxB,EAAE;YACF,YAAY;YACZ,0FAA0F;SAC3F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC/D,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,GAAG,YAAY,CAAC,8CAA8C,CAAC,CAAC;QACvE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;QACvD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,GAAG,YAAY,CAAC,+CAA+C,CAAC,CAAC;QACxE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,YAAY,CAAC,sCAAsC,CAAC,CAAC;QAC/D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,oBAAoB;QACpB,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;IACnE,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAC7G,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,WAAW,CAAC;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|