@lionden/network 0.1.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/LICENSE +201 -0
- package/README.md +23 -0
- package/dist/accounts.d.ts +12 -0
- package/dist/accounts.d.ts.map +1 -0
- package/dist/accounts.js +38 -0
- package/dist/accounts.js.map +1 -0
- package/dist/connection.d.ts +121 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +1064 -0
- package/dist/connection.js.map +1 -0
- package/dist/devnode-backend.d.ts +53 -0
- package/dist/devnode-backend.d.ts.map +1 -0
- package/dist/devnode-backend.js +121 -0
- package/dist/devnode-backend.js.map +1 -0
- package/dist/devnode-manager.d.ts +130 -0
- package/dist/devnode-manager.d.ts.map +1 -0
- package/dist/devnode-manager.js +546 -0
- package/dist/devnode-manager.js.map +1 -0
- package/dist/execution-key-cache.d.ts +71 -0
- package/dist/execution-key-cache.d.ts.map +1 -0
- package/dist/execution-key-cache.js +286 -0
- package/dist/execution-key-cache.js.map +1 -0
- package/dist/file-io.d.ts +2 -0
- package/dist/file-io.d.ts.map +1 -0
- package/dist/file-io.js +9 -0
- package/dist/file-io.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/named-account-manager.d.ts +40 -0
- package/dist/named-account-manager.d.ts.map +1 -0
- package/dist/named-account-manager.js +116 -0
- package/dist/named-account-manager.js.map +1 -0
- package/dist/network-manager.d.ts +36 -0
- package/dist/network-manager.d.ts.map +1 -0
- package/dist/network-manager.js +226 -0
- package/dist/network-manager.js.map +1 -0
- package/dist/sdk-adapter.d.ts +271 -0
- package/dist/sdk-adapter.d.ts.map +1 -0
- package/dist/sdk-adapter.js +997 -0
- package/dist/sdk-adapter.js.map +1 -0
- package/dist/sdk-diagnostics.d.ts +113 -0
- package/dist/sdk-diagnostics.d.ts.map +1 -0
- package/dist/sdk-diagnostics.js +241 -0
- package/dist/sdk-diagnostics.js.map +1 -0
- package/dist/transition-selector.d.ts +15 -0
- package/dist/transition-selector.d.ts.map +1 -0
- package/dist/transition-selector.js +45 -0
- package/dist/transition-selector.js.map +1 -0
- package/dist/types.d.ts +484 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +129 -0
- package/dist/types.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { fingerprintBytes, fingerprintsEqual, keyArtifactsMetadataPath, readKeyArtifactsMetadata, readRuntimeKeyCacheMetadata, resolveKeyFileRef, sha256Json, sha256Text, verifyKeyFileRef, writeRuntimeKeyCacheMetadata, } from "@lionden/core";
|
|
4
|
+
import { writeFileAtomic } from "./file-io.js";
|
|
5
|
+
export async function resolveProgramExecutionArtifacts(options) {
|
|
6
|
+
const local = readLocalProgramSource(options.artifactsDir, options.programId);
|
|
7
|
+
const source = local?.source ?? (await options.networkClient.getProgram(options.programId));
|
|
8
|
+
const sourceOrigin = local ? "artifact" : "network";
|
|
9
|
+
const imports = await resolveProgramImports({
|
|
10
|
+
artifactsDir: options.artifactsDir,
|
|
11
|
+
programSource: source,
|
|
12
|
+
networkClient: options.networkClient,
|
|
13
|
+
runtimeImports: options.runtimeImports,
|
|
14
|
+
});
|
|
15
|
+
const artifactDir = local?.artifactDir;
|
|
16
|
+
const sidecarPath = options.includeSidecar && options.artifactsDir
|
|
17
|
+
? keyArtifactsMetadataPath(options.artifactsDir, options.programId)
|
|
18
|
+
: undefined;
|
|
19
|
+
const sidecar = sidecarPath ? readKeyArtifactsMetadata(sidecarPath) : undefined;
|
|
20
|
+
return {
|
|
21
|
+
source,
|
|
22
|
+
sourceOrigin,
|
|
23
|
+
sourceHash: sha256Text(source),
|
|
24
|
+
imports,
|
|
25
|
+
importsHash: hashImports(imports),
|
|
26
|
+
...(artifactDir === undefined ? {} : { artifactDir }),
|
|
27
|
+
...(sidecar === undefined ? {} : { sidecar }),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Whether `transition` declares any record-typed input — `{ Record: ... }`
|
|
32
|
+
* (local or external) or the first-class `"DynamicRecord"` — per the program's
|
|
33
|
+
* `abi.json` (a sibling of `main.aleo` in `artifactDir`).
|
|
34
|
+
*
|
|
35
|
+
* Record-consuming transitions need an on-chain inclusion proof. The eager
|
|
36
|
+
* key-synthesis path (`synthesizeKeyPair`) has no query parameter, so it can
|
|
37
|
+
* bypass LionDen's egress-guarded transport. Production execution now skips
|
|
38
|
+
* eager synthesis on every cache miss; this classifier is retained for ABI
|
|
39
|
+
* diagnostics and tests around record-shape recognition.
|
|
40
|
+
*
|
|
41
|
+
* Returns `undefined` when the ABI can't be located, parsed, or trusted to
|
|
42
|
+
* prove the transition is record-free: network-sourced program (no
|
|
43
|
+
* `artifactDir`), missing/garbled `abi.json`, unknown transition, OR any input
|
|
44
|
+
* whose `ty` shape is unrecognized (e.g. a stale/corrupt entry missing `ty`, or
|
|
45
|
+
* a future ABI variant). `false` is returned only when EVERY input is a
|
|
46
|
+
* recognized record-free shape.
|
|
47
|
+
*/
|
|
48
|
+
export function transitionHasRecordInput(artifacts, transition) {
|
|
49
|
+
if (!artifacts.artifactDir)
|
|
50
|
+
return undefined;
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = JSON.parse(fs.readFileSync(path.join(artifacts.artifactDir, "abi.json"), "utf-8"));
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
const functions = parsed.functions;
|
|
59
|
+
if (!Array.isArray(functions))
|
|
60
|
+
return undefined;
|
|
61
|
+
const fn = functions.find((entry) => typeof entry === "object" &&
|
|
62
|
+
entry !== null &&
|
|
63
|
+
entry.name === transition);
|
|
64
|
+
if (!fn || !Array.isArray(fn.inputs))
|
|
65
|
+
return undefined;
|
|
66
|
+
// Classify every input. A single record/DynamicRecord input makes the
|
|
67
|
+
// transition record-consuming. An unrecognized input shape means the ABI has
|
|
68
|
+
// NOT proven the transition is record-free, so report `undefined` (caller
|
|
69
|
+
// skips eager synthesis). `false` requires every input to be record-free.
|
|
70
|
+
let sawUnknown = false;
|
|
71
|
+
for (const input of fn.inputs) {
|
|
72
|
+
switch (classifyInputType(input?.ty)) {
|
|
73
|
+
case "record":
|
|
74
|
+
return true;
|
|
75
|
+
case "unknown":
|
|
76
|
+
sawUnknown = true;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return sawUnknown ? undefined : false;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Classify a function-input `ty`. Per the Aleo ABI an input is one of
|
|
84
|
+
* `{ Plaintext }`, `{ Record }`, `{ Future }`, or the string `"DynamicRecord"`.
|
|
85
|
+
* `"record"` covers the two record-consuming shapes (which need an inclusion
|
|
86
|
+
* proof); `"safe"` covers the record-free shapes; anything else — including a
|
|
87
|
+
* missing or non-object `ty` — is `"unknown"` so callers stay conservative.
|
|
88
|
+
*/
|
|
89
|
+
function classifyInputType(ty) {
|
|
90
|
+
if (ty === "DynamicRecord")
|
|
91
|
+
return "record";
|
|
92
|
+
if (typeof ty !== "object" || ty === null)
|
|
93
|
+
return "unknown";
|
|
94
|
+
if ("Record" in ty)
|
|
95
|
+
return "record";
|
|
96
|
+
if ("Plaintext" in ty || "Future" in ty)
|
|
97
|
+
return "safe";
|
|
98
|
+
return "unknown";
|
|
99
|
+
}
|
|
100
|
+
export function findCachedExecutionKeys(options) {
|
|
101
|
+
const sidecarHit = readSidecarKeys(options.artifacts, options.identity.transition);
|
|
102
|
+
if (sidecarHit)
|
|
103
|
+
return sidecarHit;
|
|
104
|
+
const dir = runtimeIdentityDir(options.cachePath, options.identity);
|
|
105
|
+
let metadata;
|
|
106
|
+
try {
|
|
107
|
+
metadata = readRuntimeKeyCacheMetadata(path.join(dir, "metadata.json"));
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
if (!metadata)
|
|
113
|
+
return undefined;
|
|
114
|
+
if (!runtimeIdentitiesEqual(metadata.identity, options.identity))
|
|
115
|
+
return undefined;
|
|
116
|
+
const proverPath = path.join(dir, "prover.key");
|
|
117
|
+
const verifierPath = path.join(dir, "verifier.key");
|
|
118
|
+
if (!fs.existsSync(proverPath) || !fs.existsSync(verifierPath))
|
|
119
|
+
return undefined;
|
|
120
|
+
const provingKeyBytes = fs.readFileSync(proverPath);
|
|
121
|
+
const verifyingKeyBytes = fs.readFileSync(verifierPath);
|
|
122
|
+
if (!fingerprintsEqual(fingerprintBytes(provingKeyBytes), metadata.prover)) {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
if (!fingerprintsEqual(fingerprintBytes(verifyingKeyBytes), metadata.verifier)) {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
return { source: "runtime", provingKeyBytes, verifyingKeyBytes };
|
|
129
|
+
}
|
|
130
|
+
export function writeCachedExecutionKeys(write, cachePath) {
|
|
131
|
+
const dir = runtimeIdentityDir(cachePath, write.identity);
|
|
132
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
133
|
+
writeFileAtomic(path.join(dir, "prover.key"), write.provingKeyBytes);
|
|
134
|
+
writeFileAtomic(path.join(dir, "verifier.key"), write.verifyingKeyBytes);
|
|
135
|
+
writeRuntimeKeyCacheMetadata(path.join(dir, "metadata.json"), {
|
|
136
|
+
format: "lionden.runtimeKeyCache.v1",
|
|
137
|
+
identity: write.identity,
|
|
138
|
+
prover: fingerprintBytes(write.provingKeyBytes),
|
|
139
|
+
verifier: fingerprintBytes(write.verifyingKeyBytes),
|
|
140
|
+
...(write.diagnostics === undefined ? {} : { diagnostics: write.diagnostics }),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
export function buildRuntimeKeyIdentity(options) {
|
|
144
|
+
return {
|
|
145
|
+
network: options.network,
|
|
146
|
+
programId: options.programId,
|
|
147
|
+
transition: options.transition,
|
|
148
|
+
...(options.edition === undefined ? {} : { edition: options.edition }),
|
|
149
|
+
sourceHash: options.sourceHash,
|
|
150
|
+
importsHash: options.importsHash,
|
|
151
|
+
wasmHash: options.wasmHash,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function readSidecarKeys(artifacts, transition) {
|
|
155
|
+
if (!artifacts?.sidecar || !artifacts.artifactDir)
|
|
156
|
+
return undefined;
|
|
157
|
+
if (artifacts.sidecar.sourceHash !== artifacts.sourceHash)
|
|
158
|
+
return undefined;
|
|
159
|
+
if (artifacts.sidecar.importsHash !== artifacts.importsHash)
|
|
160
|
+
return undefined;
|
|
161
|
+
const entry = artifacts.sidecar.functions?.find((fn) => fn.transition === transition);
|
|
162
|
+
if (!entry?.prover || !entry.verifier)
|
|
163
|
+
return undefined;
|
|
164
|
+
if (!verifyKeyFileRef(artifacts.artifactDir, entry.prover))
|
|
165
|
+
return undefined;
|
|
166
|
+
if (!verifyKeyFileRef(artifacts.artifactDir, entry.verifier))
|
|
167
|
+
return undefined;
|
|
168
|
+
return {
|
|
169
|
+
source: "sidecar",
|
|
170
|
+
provingKeyBytes: fs.readFileSync(resolveKeyFileRef(artifacts.artifactDir, entry.prover)),
|
|
171
|
+
verifyingKeyBytes: fs.readFileSync(resolveKeyFileRef(artifacts.artifactDir, entry.verifier)),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function runtimeIdentityDir(cachePath, identity) {
|
|
175
|
+
return path.join(cachePath, "lionden-runtime", sha256Json(identity));
|
|
176
|
+
}
|
|
177
|
+
function runtimeIdentitiesEqual(a, b) {
|
|
178
|
+
return (a.network === b.network &&
|
|
179
|
+
a.programId === b.programId &&
|
|
180
|
+
a.transition === b.transition &&
|
|
181
|
+
a.edition === b.edition &&
|
|
182
|
+
a.sourceHash === b.sourceHash &&
|
|
183
|
+
a.importsHash === b.importsHash &&
|
|
184
|
+
a.wasmHash === b.wasmHash);
|
|
185
|
+
}
|
|
186
|
+
function readLocalProgramSource(artifactsDir, programId) {
|
|
187
|
+
if (!artifactsDir)
|
|
188
|
+
return undefined;
|
|
189
|
+
const artifactDir = path.join(artifactsDir, programId);
|
|
190
|
+
const sourcePath = path.join(artifactDir, "main.aleo");
|
|
191
|
+
if (!fs.existsSync(sourcePath))
|
|
192
|
+
return undefined;
|
|
193
|
+
return { source: fs.readFileSync(sourcePath, "utf-8"), artifactDir };
|
|
194
|
+
}
|
|
195
|
+
async function resolveProgramImports(options) {
|
|
196
|
+
const imports = new Map();
|
|
197
|
+
// Tracks where each import id was first sourced from, for clear conflict
|
|
198
|
+
// error messages when a duplicate id arrives with different content.
|
|
199
|
+
const origins = new Map();
|
|
200
|
+
const addImport = (id, source, origin) => {
|
|
201
|
+
const existing = imports.get(id);
|
|
202
|
+
if (existing !== undefined) {
|
|
203
|
+
if (existing === source)
|
|
204
|
+
return;
|
|
205
|
+
const existingOrigin = origins.get(id) ?? "<unknown>";
|
|
206
|
+
throw new Error(`Runtime import conflict for program "${id}": same id resolved to two different sources.\n` +
|
|
207
|
+
` - from ${existingOrigin}: sha256=${sha256Text(existing)}\n` +
|
|
208
|
+
` - from ${origin}: sha256=${sha256Text(source)}\n` +
|
|
209
|
+
`Reconcile the runtime-import refs so the same program id points at one source.`);
|
|
210
|
+
}
|
|
211
|
+
imports.set(id, source);
|
|
212
|
+
origins.set(id, origin);
|
|
213
|
+
};
|
|
214
|
+
const visit = async (programSource, ancestry) => {
|
|
215
|
+
for (const importId of parseImportIds(programSource)) {
|
|
216
|
+
if (imports.has(importId) || ancestry.has(importId))
|
|
217
|
+
continue;
|
|
218
|
+
const local = readLocalProgramSource(options.artifactsDir, importId);
|
|
219
|
+
const importSource = local?.source ?? (await options.networkClient.getProgram(importId));
|
|
220
|
+
const origin = local ? `static import ← artifacts/${importId}` : `static import ← network`;
|
|
221
|
+
addImport(importId, importSource, origin);
|
|
222
|
+
const nextAncestry = new Set(ancestry);
|
|
223
|
+
nextAncestry.add(importId);
|
|
224
|
+
await visit(importSource, nextAncestry);
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
// Seed runtime imports first. The static-import walk below picks up
|
|
228
|
+
// anything they statically import, but we want their own (programId, source)
|
|
229
|
+
// pairs to win for conflict-detection purposes.
|
|
230
|
+
for (const ref of options.runtimeImports ?? []) {
|
|
231
|
+
const seeded = await seedRuntimeImport(ref, options.artifactsDir, options.networkClient);
|
|
232
|
+
addImport(seeded.programId, seeded.source, seeded.origin);
|
|
233
|
+
await visit(seeded.source, new Set([seeded.programId]));
|
|
234
|
+
}
|
|
235
|
+
await visit(options.programSource, new Set());
|
|
236
|
+
if (imports.size === 0)
|
|
237
|
+
return undefined;
|
|
238
|
+
return Object.fromEntries([...imports.entries()].sort(([a], [b]) => a.localeCompare(b)));
|
|
239
|
+
}
|
|
240
|
+
async function seedRuntimeImport(ref, artifactsDir, networkClient) {
|
|
241
|
+
if (ref.kind === "path") {
|
|
242
|
+
if (!fs.existsSync(ref.absolutePath)) {
|
|
243
|
+
throw new Error(`Runtime import path not found at execute time: ${ref.absolutePath}`);
|
|
244
|
+
}
|
|
245
|
+
const source = fs.readFileSync(ref.absolutePath, "utf-8");
|
|
246
|
+
const programId = parseProgramIdFromSource(source, ref.absolutePath);
|
|
247
|
+
return { programId, source, origin: `runtime import ← ${ref.absolutePath}` };
|
|
248
|
+
}
|
|
249
|
+
const local = readLocalProgramSource(artifactsDir, ref.programId);
|
|
250
|
+
const source = local?.source ?? (await networkClient.getProgram(ref.programId));
|
|
251
|
+
const origin = local
|
|
252
|
+
? `runtime import ← artifacts/${ref.programId}`
|
|
253
|
+
: `runtime import ← network (${ref.programId})`;
|
|
254
|
+
return { programId: ref.programId, source, origin };
|
|
255
|
+
}
|
|
256
|
+
function parseProgramIdFromSource(source, sourcePath) {
|
|
257
|
+
const match = /^\s*program\s+([a-zA-Z_][a-zA-Z0-9_]*\.aleo)\s*;/m.exec(source);
|
|
258
|
+
if (!match) {
|
|
259
|
+
const firstNonEmpty = source.split(/\r?\n/).find((line) => line.trim().length > 0) ?? "<empty>";
|
|
260
|
+
throw new Error(`Cannot infer program id from .aleo source at ${sourcePath} — missing \`program <id>.aleo;\` header.\n` +
|
|
261
|
+
`First non-empty line: ${JSON.stringify(firstNonEmpty.slice(0, 120))}`);
|
|
262
|
+
}
|
|
263
|
+
return match[1];
|
|
264
|
+
}
|
|
265
|
+
function parseImportIds(programSource) {
|
|
266
|
+
const importPattern = /import\s+([\w]+\.aleo)\s*;/g;
|
|
267
|
+
const ids = new Set();
|
|
268
|
+
let match;
|
|
269
|
+
while ((match = importPattern.exec(programSource)) !== null) {
|
|
270
|
+
ids.add(match[1]);
|
|
271
|
+
}
|
|
272
|
+
return [...ids].sort((a, b) => a.localeCompare(b));
|
|
273
|
+
}
|
|
274
|
+
function hashImports(imports) {
|
|
275
|
+
if (!imports)
|
|
276
|
+
return sha256Json({ imports: [] });
|
|
277
|
+
return sha256Json({
|
|
278
|
+
imports: Object.entries(imports)
|
|
279
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
280
|
+
.map(([programId, source]) => ({
|
|
281
|
+
programId,
|
|
282
|
+
sourceHash: sha256Text(source),
|
|
283
|
+
})),
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=execution-key-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-key-cache.js","sourceRoot":"","sources":["../src/execution-key-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-io.d.ts","sourceRoot":"","sources":["../src/file-io.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAQzE"}
|
package/dist/file-io.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
export function writeFileAtomic(filePath, bytes) {
|
|
4
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
5
|
+
const tmpPath = path.join(path.dirname(filePath), `.${path.basename(filePath)}.${process.pid}.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`);
|
|
6
|
+
fs.writeFileSync(tmpPath, bytes);
|
|
7
|
+
fs.renameSync(tmpPath, filePath);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=file-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-io.js","sourceRoot":"","sources":["../src/file-io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAiB;IACjE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CACtG,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { DEVNODE_ACCOUNTS, getDefaultAccount } from "./accounts.js";
|
|
2
|
+
export { AleoConnection, type ConnectionOptions, TransactionShapeParseError, } from "./connection.js";
|
|
3
|
+
export { clearDevnodeBackendProbeCacheForTests, type DevnodeBackend, preflightDevnode, type ResolveDevnodeBackendOptions, resolveDevnodeBackend, } from "./devnode-backend.js";
|
|
4
|
+
export { DevnodeManager } from "./devnode-manager.js";
|
|
5
|
+
export { NamedAccountManager } from "./named-account-manager.js";
|
|
6
|
+
export { NetworkManagerImpl } from "./network-manager.js";
|
|
7
|
+
export { type CreateSdkObjectsOptions, type CreateSignerSdkObjectsOptions, checkDevnodeSdkSupport, createExecutionKeysFromBytes, createSdkObjects, createSignerSdkObjects, type DecryptOptions, decryptRecordCiphertext, decryptValueCiphertext, deriveViewKey, getSdkRuntimeMetadata, initConsensusHeights, initSdk, makeNetworkTransport, makeParameterTransport, NetworkRecordDecryptionError, NetworkValueDecryptionError, PersistentFunctionKeyProvider, programAddressFromProgramId, type SdkEgressPolicy, type SdkExecutionKeys, type SdkObjects, type SdkRuntimeMetadata, type SignerSdkObjects, } from "./sdk-adapter.js";
|
|
8
|
+
export { captureSdkCall, type SdkCallContext, SdkDiagnostics, type SdkTransportFailure, withSuppressedSdkConsoleNoise, } from "./sdk-diagnostics.js";
|
|
9
|
+
export { selectMatchingTransition } from "./transition-selector.js";
|
|
10
|
+
export type { ConfirmationTimeoutStage, ConfirmedTransaction, ConfirmedTransitionRecord, DevnodeAccount, DevnodeLogMode, DevnodeProvider, DevnodeStartOptions, ExecuteOptions, IdOnlyTransitionOutput, LocalVmExecutionContext, NetworkConfirmationTimeoutContext, NetworkConnection, NetworkManager, RawTransitionOutput, SdkExecutionContext, Signer, TransitionCallResult, TransitionRejectedContext, TransitionSelectionContext, } from "./types.js";
|
|
11
|
+
export { LocalExecutionWasmTrapError, LocalVmExecutionError, NetworkConfirmationTimeoutError, SdkExecutionError, TransitionRejectedError, TransitionSelectionError, } from "./types.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACtB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qCAAqC,EACrC,KAAK,cAAc,EACnB,gBAAgB,EAChB,KAAK,4BAA4B,EACjC,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,sBAAsB,EACtB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,cAAc,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,oBAAoB,EACpB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,KAAK,cAAc,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,cAAc,EACd,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,iCAAiC,EACjC,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,EACN,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAC/B,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { DEVNODE_ACCOUNTS, getDefaultAccount } from "./accounts.js";
|
|
2
|
+
export { AleoConnection, TransactionShapeParseError, } from "./connection.js";
|
|
3
|
+
export { clearDevnodeBackendProbeCacheForTests, preflightDevnode, resolveDevnodeBackend, } from "./devnode-backend.js";
|
|
4
|
+
export { DevnodeManager } from "./devnode-manager.js";
|
|
5
|
+
export { NamedAccountManager } from "./named-account-manager.js";
|
|
6
|
+
export { NetworkManagerImpl } from "./network-manager.js";
|
|
7
|
+
export { checkDevnodeSdkSupport, createExecutionKeysFromBytes, createSdkObjects, createSignerSdkObjects, decryptRecordCiphertext, decryptValueCiphertext, deriveViewKey, getSdkRuntimeMetadata, initConsensusHeights, initSdk, makeNetworkTransport, makeParameterTransport, NetworkRecordDecryptionError, NetworkValueDecryptionError, PersistentFunctionKeyProvider, programAddressFromProgramId, } from "./sdk-adapter.js";
|
|
8
|
+
export { captureSdkCall, SdkDiagnostics, withSuppressedSdkConsoleNoise, } from "./sdk-diagnostics.js";
|
|
9
|
+
export { selectMatchingTransition } from "./transition-selector.js";
|
|
10
|
+
export { LocalExecutionWasmTrapError, LocalVmExecutionError, NetworkConfirmationTimeoutError, SdkExecutionError, TransitionRejectedError, TransitionSelectionError, } from "./types.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EACL,cAAc,EAEd,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qCAAqC,EAErC,gBAAgB,EAEhB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAGL,sBAAsB,EACtB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EAEtB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,oBAAoB,EACpB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,GAM5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EAEd,cAAc,EAEd,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAsBpE,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAC/B,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NamedAccountManager — resolves named account config to runtime NamedAccount values.
|
|
3
|
+
*
|
|
4
|
+
* Called during NetworkManager.connect() after a connection is established.
|
|
5
|
+
* For private key entries, address derivation is performed via the SDK here,
|
|
6
|
+
* so callers have `lre.namedAccounts` available immediately after connect().
|
|
7
|
+
*/
|
|
8
|
+
import type { AleoNetwork, NamedAccounts, ResolvedNamedAccountsConfig } from "@lionden/config";
|
|
9
|
+
import type { SdkEgressPolicy } from "./sdk-adapter.js";
|
|
10
|
+
export interface ResolveForNetworkOptions {
|
|
11
|
+
networkName: string;
|
|
12
|
+
networkType: "devnode" | "http";
|
|
13
|
+
networkId: AleoNetwork;
|
|
14
|
+
endpoint: string;
|
|
15
|
+
apiKey?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Egress policy from the connection. Forwarded to SDK address-derivation
|
|
18
|
+
* so the bare AleoNetworkClient still flips `hasCustomTransport=true`
|
|
19
|
+
* even on a fixture path that never proves. Address derivation itself
|
|
20
|
+
* is local-only, but consistency keeps the policy enforced repo-wide.
|
|
21
|
+
*/
|
|
22
|
+
egressPolicy: SdkEgressPolicy;
|
|
23
|
+
}
|
|
24
|
+
export declare class NamedAccountManager {
|
|
25
|
+
private readonly config;
|
|
26
|
+
/** Cache: networkName → resolved accounts */
|
|
27
|
+
private readonly cache;
|
|
28
|
+
constructor(config: ResolvedNamedAccountsConfig);
|
|
29
|
+
/**
|
|
30
|
+
* Resolve all named accounts for the given network.
|
|
31
|
+
*
|
|
32
|
+
* Results are cached per network name and returned from cache on repeated calls.
|
|
33
|
+
* Cache is cleared by `invalidate()` (called from `NetworkManagerImpl.disconnectAll()`).
|
|
34
|
+
*/
|
|
35
|
+
resolveForNetwork(opts: ResolveForNetworkOptions): Promise<NamedAccounts>;
|
|
36
|
+
/** Clear all cached resolved accounts (called on disconnectAll). */
|
|
37
|
+
invalidate(): void;
|
|
38
|
+
private resolveValue;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=named-account-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-account-manager.d.ts","sourceRoot":"","sources":["../src/named-account-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,WAAW,EAEX,aAAa,EACb,2BAA2B,EAE5B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAE9C,MAAM,EAAE,2BAA2B;IAI/C;;;;;OAKG;IACG,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC;IAmC/E,oEAAoE;IACpE,UAAU,IAAI,IAAI;YAQJ,YAAY;CA2D3B"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NamedAccountManager — resolves named account config to runtime NamedAccount values.
|
|
3
|
+
*
|
|
4
|
+
* Called during NetworkManager.connect() after a connection is established.
|
|
5
|
+
* For private key entries, address derivation is performed via the SDK here,
|
|
6
|
+
* so callers have `lre.namedAccounts` available immediately after connect().
|
|
7
|
+
*/
|
|
8
|
+
import { DEVNODE_ACCOUNTS } from "./accounts.js";
|
|
9
|
+
export class NamedAccountManager {
|
|
10
|
+
config;
|
|
11
|
+
/** Cache: networkName → resolved accounts */
|
|
12
|
+
cache = new Map();
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolve all named accounts for the given network.
|
|
18
|
+
*
|
|
19
|
+
* Results are cached per network name and returned from cache on repeated calls.
|
|
20
|
+
* Cache is cleared by `invalidate()` (called from `NetworkManagerImpl.disconnectAll()`).
|
|
21
|
+
*/
|
|
22
|
+
async resolveForNetwork(opts) {
|
|
23
|
+
const { networkName } = opts;
|
|
24
|
+
const cached = this.cache.get(networkName);
|
|
25
|
+
if (cached) {
|
|
26
|
+
return cached;
|
|
27
|
+
}
|
|
28
|
+
const result = {};
|
|
29
|
+
for (const [accountName, entry] of Object.entries(this.config)) {
|
|
30
|
+
// Pick value: network-specific override if present, else default, else error
|
|
31
|
+
const value = entry.networks[networkName] !== undefined ? entry.networks[networkName] : entry.default;
|
|
32
|
+
if (value === undefined) {
|
|
33
|
+
throw new Error(`Named account "${accountName}" has no value for network "${networkName}" and no default. ` +
|
|
34
|
+
`Add a "default" or a "${networkName}" override in your namedAccounts config.`);
|
|
35
|
+
}
|
|
36
|
+
const account = await this.resolveValue(accountName, value, opts);
|
|
37
|
+
// Freeze each account too, not just the map. Object.freeze is shallow, so without
|
|
38
|
+
// this a caller could mutate a nested account (e.g. `accounts.treasury.address = ...`)
|
|
39
|
+
// and poison the shared cached entry. NamedAccount fields are all primitives, so a
|
|
40
|
+
// single freeze per account fully seals it.
|
|
41
|
+
result[accountName] = Object.freeze(account);
|
|
42
|
+
}
|
|
43
|
+
const frozen = Object.freeze(result);
|
|
44
|
+
this.cache.set(networkName, frozen);
|
|
45
|
+
return frozen;
|
|
46
|
+
}
|
|
47
|
+
/** Clear all cached resolved accounts (called on disconnectAll). */
|
|
48
|
+
invalidate() {
|
|
49
|
+
this.cache.clear();
|
|
50
|
+
}
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Private helpers
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
async resolveValue(accountName, value, opts) {
|
|
55
|
+
const { networkName, networkType } = opts;
|
|
56
|
+
switch (value.type) {
|
|
57
|
+
case "index": {
|
|
58
|
+
if (networkType === "http") {
|
|
59
|
+
throw new Error(`Named account "${accountName}" uses devnode account index ${value.index}, ` +
|
|
60
|
+
`but network "${networkName}" is an HTTP network. ` +
|
|
61
|
+
`Provide an explicit private key or address override for "${networkName}".`);
|
|
62
|
+
}
|
|
63
|
+
if (value.index >= DEVNODE_ACCOUNTS.length) {
|
|
64
|
+
throw new Error(`Named account "${accountName}" references devnode account index ${value.index}, ` +
|
|
65
|
+
`but only ${DEVNODE_ACCOUNTS.length} devnode accounts exist (indices 0–${DEVNODE_ACCOUNTS.length - 1}).`);
|
|
66
|
+
}
|
|
67
|
+
const devAccount = DEVNODE_ACCOUNTS[value.index];
|
|
68
|
+
const signable = {
|
|
69
|
+
type: "signable",
|
|
70
|
+
name: accountName,
|
|
71
|
+
address: devAccount.address,
|
|
72
|
+
privateKey: devAccount.privateKey,
|
|
73
|
+
};
|
|
74
|
+
return signable;
|
|
75
|
+
}
|
|
76
|
+
case "address": {
|
|
77
|
+
const addressOnly = {
|
|
78
|
+
type: "address-only",
|
|
79
|
+
name: accountName,
|
|
80
|
+
address: value.address,
|
|
81
|
+
};
|
|
82
|
+
return addressOnly;
|
|
83
|
+
}
|
|
84
|
+
case "privateKey": {
|
|
85
|
+
const address = await deriveAddressFromPrivateKey(value.privateKey, opts.networkId, opts.endpoint, opts.apiKey, opts.egressPolicy);
|
|
86
|
+
const signable = {
|
|
87
|
+
type: "signable",
|
|
88
|
+
name: accountName,
|
|
89
|
+
address,
|
|
90
|
+
privateKey: value.privateKey,
|
|
91
|
+
};
|
|
92
|
+
return signable;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
// Address derivation
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
/**
|
|
101
|
+
* Derive the Aleo address for a private key using the Provable SDK.
|
|
102
|
+
* Address derivation is a local operation — no network calls required.
|
|
103
|
+
*/
|
|
104
|
+
async function deriveAddressFromPrivateKey(privateKey, network, endpoint, apiKey, egressPolicy) {
|
|
105
|
+
const { createSdkObjects } = await import("./sdk-adapter.js");
|
|
106
|
+
const sdk = await createSdkObjects({
|
|
107
|
+
network,
|
|
108
|
+
endpoint,
|
|
109
|
+
privateKey,
|
|
110
|
+
apiKey,
|
|
111
|
+
egressPolicy,
|
|
112
|
+
});
|
|
113
|
+
const account = sdk.account;
|
|
114
|
+
return account.address().to_string();
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=named-account-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-account-manager.js","sourceRoot":"","sources":["../src/named-account-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NetworkManagerImpl — manages connections to Aleo networks.
|
|
3
|
+
*
|
|
4
|
+
* Injected into lre.network by @lionden/plugin-network.
|
|
5
|
+
* Contract wrappers call execute(), getMappingValue(), and storage query helpers on this object.
|
|
6
|
+
*/
|
|
7
|
+
import type { LionDenResolvedConfig, NamedAccounts } from "@lionden/config";
|
|
8
|
+
import type { DevnodeAccount, ExecuteOptions, NetworkConnection, NetworkManager, TransitionCallResult } from "./types.js";
|
|
9
|
+
export declare class NetworkManagerImpl implements NetworkManager {
|
|
10
|
+
private readonly config;
|
|
11
|
+
private activeConnection;
|
|
12
|
+
private readonly connections;
|
|
13
|
+
private readonly namedAccountManager;
|
|
14
|
+
/** Per-network named account cache (survives connection close/reopen). */
|
|
15
|
+
private readonly resolvedNamedAccountsCache;
|
|
16
|
+
private readonly inFlightConnects;
|
|
17
|
+
private activeNamedAccounts;
|
|
18
|
+
constructor(config: LionDenResolvedConfig);
|
|
19
|
+
connect(name?: string): Promise<NetworkConnection>;
|
|
20
|
+
getConnection(): NetworkConnection | null;
|
|
21
|
+
disconnectAll(): Promise<void>;
|
|
22
|
+
getAccounts(): DevnodeAccount[];
|
|
23
|
+
getNamedAccounts(): NamedAccounts;
|
|
24
|
+
execute(programId: string, transitionName: string, args: string[], options?: ExecuteOptions): Promise<TransitionCallResult>;
|
|
25
|
+
checkLocalExecution(programId: string, transitionName: string, args: string[], options?: ExecuteOptions): Promise<void>;
|
|
26
|
+
getMappingValue(programId: string, mappingName: string, key: string): Promise<string | null>;
|
|
27
|
+
getStorageValue(programId: string, variableName: string): Promise<string | null>;
|
|
28
|
+
getStorageVectorLength(programId: string, variableName: string): Promise<number>;
|
|
29
|
+
getStorageVectorValue(programId: string, variableName: string, index: number): Promise<string | null>;
|
|
30
|
+
waitForConfirmation(txId: string, timeout?: number): Promise<import("./types.js").ConfirmedTransaction>;
|
|
31
|
+
getTransitionOutputs(txId: string, programId: string, transitionName: string, timeout?: number): Promise<TransitionCallResult>;
|
|
32
|
+
private requireConnection;
|
|
33
|
+
private getUsableActiveConnection;
|
|
34
|
+
private createConnection;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=network-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-manager.d.ts","sourceRoot":"","sources":["../src/network-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EAGd,MAAM,iBAAiB,CAAC;AAKzB,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAwBpB,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAoC;IAC/E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiD;IAClF,OAAO,CAAC,mBAAmB,CAAqB;gBAEpC,MAAM,EAAE,qBAAqB;IAKnC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuExD,aAAa,IAAI,iBAAiB,GAAG,IAAI;IAInC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpC,WAAW,IAAI,cAAc,EAAE;IAI/B,gBAAgB,IAAI,aAAa;IAO3B,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC;IAK1B,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAeV,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKnB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKhF,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhF,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKnB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAKlD,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM;IAMlB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,yBAAyB;IAkBjC,OAAO,CAAC,gBAAgB;CA0CzB"}
|