@agenticprimitives/a2a 0.0.0-alpha.4 → 0.0.0-alpha.40
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/CLAUDE.md +60 -21
- package/README.md +2 -0
- package/bin/a2a-conform.mjs +17 -0
- package/dist/agent.d.ts +170 -3
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +358 -66
- package/dist/agent.js.map +1 -1
- package/dist/auth.d.ts +72 -9
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +62 -19
- package/dist/auth.js.map +1 -1
- package/dist/authority-extension.d.ts +58 -0
- package/dist/authority-extension.d.ts.map +1 -0
- package/dist/authority-extension.js +70 -0
- package/dist/authority-extension.js.map +1 -0
- package/dist/card-audience.d.ts +87 -0
- package/dist/card-audience.d.ts.map +1 -0
- package/dist/card-audience.js +135 -0
- package/dist/card-audience.js.map +1 -0
- package/dist/client.d.ts +23 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +74 -13
- package/dist/client.js.map +1 -1
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +10 -2
- package/dist/cloudflare/index.js.map +1 -1
- package/dist/conform/index.d.ts +36 -0
- package/dist/conform/index.d.ts.map +1 -0
- package/dist/conform/index.js +232 -0
- package/dist/conform/index.js.map +1 -0
- package/dist/discovery.d.ts +4 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +6 -2
- package/dist/discovery.js.map +1 -1
- package/dist/engagement.d.ts +37 -0
- package/dist/engagement.d.ts.map +1 -0
- package/dist/engagement.js +83 -0
- package/dist/engagement.js.map +1 -0
- package/dist/grant.d.ts +4 -2
- package/dist/grant.d.ts.map +1 -1
- package/dist/grant.js +21 -13
- package/dist/grant.js.map +1 -1
- package/dist/handoff.d.ts +42 -0
- package/dist/handoff.d.ts.map +1 -0
- package/dist/handoff.js +28 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +25 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/payment-gate.d.ts +17 -2
- package/dist/payment-gate.d.ts.map +1 -1
- package/dist/payment-gate.js +4 -2
- package/dist/payment-gate.js.map +1 -1
- package/dist/run-provenance-extension.d.ts +22 -0
- package/dist/run-provenance-extension.d.ts.map +1 -0
- package/dist/run-provenance-extension.js +23 -0
- package/dist/run-provenance-extension.js.map +1 -0
- package/dist/runtime.d.ts +13 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +35 -10
- package/dist/runtime.js.map +1 -1
- package/dist/session-wire.d.ts +90 -0
- package/dist/session-wire.d.ts.map +1 -0
- package/dist/session-wire.js +226 -0
- package/dist/session-wire.js.map +1 -0
- package/dist/skill-handler.d.ts +21 -1
- package/dist/skill-handler.d.ts.map +1 -1
- package/dist/skill-handler.js.map +1 -1
- package/dist/standard/app-delegation.d.ts +60 -0
- package/dist/standard/app-delegation.d.ts.map +1 -0
- package/dist/standard/app-delegation.js +43 -0
- package/dist/standard/app-delegation.js.map +1 -0
- package/dist/standard/caller.d.ts +107 -0
- package/dist/standard/caller.d.ts.map +1 -0
- package/dist/standard/caller.js +176 -0
- package/dist/standard/caller.js.map +1 -0
- package/dist/standard/client.d.ts +53 -0
- package/dist/standard/client.d.ts.map +1 -0
- package/dist/standard/client.js +88 -0
- package/dist/standard/client.js.map +1 -0
- package/dist/standard/delegated.d.ts +121 -0
- package/dist/standard/delegated.d.ts.map +1 -0
- package/dist/standard/delegated.js +170 -0
- package/dist/standard/delegated.js.map +1 -0
- package/dist/standard/errors.d.ts +31 -0
- package/dist/standard/errors.d.ts.map +1 -0
- package/dist/standard/errors.js +75 -0
- package/dist/standard/errors.js.map +1 -0
- package/dist/standard/from-agent.d.ts +41 -0
- package/dist/standard/from-agent.d.ts.map +1 -0
- package/dist/standard/from-agent.js +133 -0
- package/dist/standard/from-agent.js.map +1 -0
- package/dist/standard/index.d.ts +10 -0
- package/dist/standard/index.d.ts.map +1 -0
- package/dist/standard/index.js +14 -0
- package/dist/standard/index.js.map +1 -0
- package/dist/standard/mount.d.ts +94 -0
- package/dist/standard/mount.d.ts.map +1 -0
- package/dist/standard/mount.js +186 -0
- package/dist/standard/mount.js.map +1 -0
- package/dist/standard/server.d.ts +130 -0
- package/dist/standard/server.d.ts.map +1 -0
- package/dist/standard/server.js +497 -0
- package/dist/standard/server.js.map +1 -0
- package/dist/standard/types.d.ts +186 -0
- package/dist/standard/types.d.ts.map +1 -0
- package/dist/standard/types.js +14 -0
- package/dist/standard/types.js.map +1 -0
- package/dist/subject-ask.d.ts +96 -0
- package/dist/subject-ask.d.ts.map +1 -0
- package/dist/subject-ask.js +45 -0
- package/dist/subject-ask.js.map +1 -0
- package/dist/subject-hop.d.ts +117 -0
- package/dist/subject-hop.d.ts.map +1 -0
- package/dist/subject-hop.js +187 -0
- package/dist/subject-hop.js.map +1 -0
- package/dist/task-store.d.ts +9 -3
- package/dist/task-store.d.ts.map +1 -1
- package/dist/task-store.js +12 -6
- package/dist/task-store.js.map +1 -1
- package/dist/wire-verify.d.ts +35 -0
- package/dist/wire-verify.d.ts.map +1 -0
- package/dist/wire-verify.js +51 -0
- package/dist/wire-verify.js.map +1 -0
- package/package.json +35 -12
- package/dist/jsonrpc.d.ts +0 -25
- package/dist/jsonrpc.d.ts.map +0 -1
- package/dist/jsonrpc.js +0 -52
- package/dist/jsonrpc.js.map +0 -1
package/dist/agent.js
CHANGED
|
@@ -7,18 +7,157 @@ import { hashDelegation } from '@agenticprimitives/delegation';
|
|
|
7
7
|
import { isTerminal } from './types.js';
|
|
8
8
|
import { newTaskRecord, applyTransition, dispatchTask } from './runtime.js';
|
|
9
9
|
import { buildSkillRegistry } from './skill-handler.js';
|
|
10
|
-
import { authorizeA2aMessage } from './auth.js';
|
|
10
|
+
import { authorizeA2aMessage, hashA2aMessage, hashA2aTaskRequest, hashPushConfigParams, hashArtifactParams } from './auth.js';
|
|
11
|
+
// Spec 303 W3 — the A2A verification-receipt mint point. The primitive (commitment
|
|
12
|
+
// profile, canonical receiptHash, injected signing) lives in the leaf package; the
|
|
13
|
+
// agent only assembles what the auth gate already computed.
|
|
14
|
+
import { mintVerificationReceipt, } from '@agenticprimitives/verification-receipts';
|
|
11
15
|
import { deliverPush } from './push.js';
|
|
16
|
+
import { apAuthorityExtension } from './authority-extension.js';
|
|
12
17
|
import { x402AgentCardExtension } from './payment-gate.js';
|
|
18
|
+
const EXPOSURE_RANK = {
|
|
19
|
+
public: 0,
|
|
20
|
+
authenticated: 1,
|
|
21
|
+
private: 2,
|
|
22
|
+
'service-only': 3,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Card visibility for one skill. Fail-closed: `service-only` is never carded at any audience, and a
|
|
26
|
+
* `private` skill with no matching requester is visible to nobody.
|
|
27
|
+
*
|
|
28
|
+
* This is DISCLOSURE, not authorization — hiding a skill does not protect it, and showing one does
|
|
29
|
+
* not permit it. The delegation + policy gates run regardless (ADR-0056).
|
|
30
|
+
*/
|
|
31
|
+
function isSkillVisible(h, audience, requester) {
|
|
32
|
+
const exposure = h.exposure ?? 'public';
|
|
33
|
+
const ceiling = EXPOSURE_RANK[audience];
|
|
34
|
+
if (EXPOSURE_RANK[exposure] > ceiling)
|
|
35
|
+
return false;
|
|
36
|
+
if (exposure === 'private') {
|
|
37
|
+
return requester !== undefined && (h.audience?.includes(requester) ?? false);
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
13
41
|
const RPC_INVALID_REQUEST = -32600;
|
|
14
42
|
const RPC_UNAUTHORIZED = -32001;
|
|
15
43
|
const RPC_NOT_FOUND = -32004;
|
|
44
|
+
const RPC_BUDGET_EXHAUSTED = -32005;
|
|
16
45
|
const eq = (a, b) => a.toLowerCase() === b.toLowerCase();
|
|
17
46
|
export function createA2aAgent(config) {
|
|
18
|
-
|
|
47
|
+
// A2A-5 (seam audit): fail closed at construction — a PRICED handler (declares `payment`) with no
|
|
48
|
+
// `paymentGate` wired would otherwise run for free (the gate is a no-op without a rail). Force the
|
|
49
|
+
// operator to wire the gate rather than silently serve priced skills unpaid.
|
|
50
|
+
const pricedWithoutGate = config.handlers.filter((h) => h.payment).map((h) => h.skill);
|
|
51
|
+
if (pricedWithoutGate.length > 0 && !config.paymentGate) {
|
|
52
|
+
throw new Error(`[a2a] priced skill(s) [${pricedWithoutGate.join(', ')}] registered without a paymentGate — wire ` +
|
|
53
|
+
`config.paymentGate (they would otherwise execute for free), or remove the skill's payment (A2A-5)`);
|
|
54
|
+
}
|
|
55
|
+
const staticRegistry = buildSkillRegistry(config.handlers);
|
|
56
|
+
// Static first, resolver second — a registered handler always wins, so the seam cannot be used to
|
|
57
|
+
// override a skill the integrator declared.
|
|
58
|
+
const registry = {
|
|
59
|
+
get: (skill) => staticRegistry.get(skill) ?? config.resolveHandler?.(skill),
|
|
60
|
+
};
|
|
19
61
|
const now = () => (config.now ? config.now() : Date.now());
|
|
62
|
+
// NEW-A2A-3: a cryptographically-random 32-byte task id when the integrator doesn't inject one. The
|
|
63
|
+
// previous fallback was a CONSTANT (0x00..01), so every task collided / could be poisoned.
|
|
64
|
+
const defaultTaskId = () => {
|
|
65
|
+
const b = new Uint8Array(32);
|
|
66
|
+
globalThis.crypto.getRandomValues(b);
|
|
67
|
+
return `0x${Array.from(b, (x) => x.toString(16).padStart(2, '0')).join('')}`;
|
|
68
|
+
};
|
|
20
69
|
let artCounter = 0;
|
|
21
70
|
const newArtifactId = () => config.newArtifactId ? config.newArtifactId() : (`0x${(++artCounter).toString(16).padStart(64, '0')}`);
|
|
71
|
+
// AUDIT NEW-A2A-2 — the caller of a read/control op MUST prove control of `caller` by signing the
|
|
72
|
+
// request digest. Fail-closed: missing or invalid signature → UNAUTHORIZED, before any party check.
|
|
73
|
+
async function verifyCaller(method, taskId, caller, signature, paramsHash, issuedAt) {
|
|
74
|
+
if (!signature || signature === '0x')
|
|
75
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature required' };
|
|
76
|
+
// N-2: when the operator configures a freshness window, the caller MUST stamp `issuedAt` and it must be
|
|
77
|
+
// recent — bounding replay of a captured read/control signature to that window instead of the life of
|
|
78
|
+
// the task. Fail-closed: window configured but no/stale/future issuedAt → reject.
|
|
79
|
+
if (config.callerSigMaxAgeSec !== undefined) {
|
|
80
|
+
const nowSec = Math.floor(now() / 1000);
|
|
81
|
+
if (typeof issuedAt !== 'number' || issuedAt <= 0)
|
|
82
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'issuedAt required (freshness)' };
|
|
83
|
+
if (issuedAt > nowSec + 30)
|
|
84
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'issuedAt in the future' };
|
|
85
|
+
if (nowSec - issuedAt > config.callerSigMaxAgeSec)
|
|
86
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature expired' };
|
|
87
|
+
}
|
|
88
|
+
// N-1: `paramsHash` binds method-specific params (e.g. the push url/token) into the signed digest so a
|
|
89
|
+
// captured signature can't be replayed with swapped parameters. The agent re-derives it server-side.
|
|
90
|
+
const digest = hashA2aTaskRequest({ method, taskId, agentSA: config.agentSA, chainId: config.chainId, paramsHash, issuedAt });
|
|
91
|
+
let valid = false;
|
|
92
|
+
try {
|
|
93
|
+
valid = await config.checks.verifyCallerSignature(caller, digest, signature);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
valid = false;
|
|
97
|
+
}
|
|
98
|
+
if (!valid)
|
|
99
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature invalid' };
|
|
100
|
+
return { ok: true, result: true };
|
|
101
|
+
}
|
|
102
|
+
/** The party test + the transition, shared by the signed and the transport-authenticated entries. */
|
|
103
|
+
async function cancelForParty(rec, caller) {
|
|
104
|
+
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
105
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
106
|
+
}
|
|
107
|
+
const t = applyTransition(rec, 'canceled', { now: now() });
|
|
108
|
+
if (!t.ok)
|
|
109
|
+
return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
|
|
110
|
+
await config.taskStore.put(t.record);
|
|
111
|
+
return { ok: true, result: { taskId: rec.task.taskId, state: 'canceled' } };
|
|
112
|
+
}
|
|
113
|
+
// ─── Spec 303 W3 — verification-receipt mint (message/send + resubmit terminals) ───
|
|
114
|
+
// Assembles ONLY values the auth gate already computed: the signed bodyHash IS the
|
|
115
|
+
// exact-arguments binding, hashA2aMessage IS the invocation binding, and the real
|
|
116
|
+
// delegation EIP-712 hash is available here (unlike the MCP path). The coarse public
|
|
117
|
+
// reason mirrors the rpc message the caller sees (the raw auth reason is already
|
|
118
|
+
// suppressed, NEW-A2A-1). Fail posture per receipts.failClosed (spec 291 §5).
|
|
119
|
+
const mintReceipt = async (input) => {
|
|
120
|
+
const rc = config.receipts;
|
|
121
|
+
if (!rc)
|
|
122
|
+
return undefined;
|
|
123
|
+
try {
|
|
124
|
+
const ev = rc.statusEvidence ? await rc.statusEvidence() : undefined;
|
|
125
|
+
const minted = await mintVerificationReceipt({
|
|
126
|
+
verifier: rc.verifier,
|
|
127
|
+
decision: input.decision,
|
|
128
|
+
reasonCode: input.reasonCode,
|
|
129
|
+
principal: input.principal ?? 'unknown',
|
|
130
|
+
toolName: `a2a.${input.message.skill}`,
|
|
131
|
+
argsHash: input.message.bodyHash,
|
|
132
|
+
delegationHash: hashDelegation(input.delegation, config.chainId, config.delegationManager),
|
|
133
|
+
invocationProofHash: hashA2aMessage(input.message),
|
|
134
|
+
scopeDecision: input.scopeDecision,
|
|
135
|
+
status: {
|
|
136
|
+
revocation: input.decision === 'allow' ? 'active' : 'unavailable',
|
|
137
|
+
chainId: config.chainId,
|
|
138
|
+
blockNumber: ev?.blockNumber ?? '0',
|
|
139
|
+
blockHash: ev?.blockHash ?? `0x${'0'.repeat(64)}`,
|
|
140
|
+
},
|
|
141
|
+
verifiedAt: new Date(now()).toISOString(),
|
|
142
|
+
verifierPolicyVersion: rc.policyVersion,
|
|
143
|
+
correlationId: input.message.messageId,
|
|
144
|
+
receiptKey: rc.receiptKey,
|
|
145
|
+
}, rc.sign ? { sign: rc.sign } : undefined);
|
|
146
|
+
await rc.onReceipt(minted, {
|
|
147
|
+
outcome: input.decision,
|
|
148
|
+
messageId: input.message.messageId,
|
|
149
|
+
skill: input.message.skill,
|
|
150
|
+
taskId: input.taskId,
|
|
151
|
+
});
|
|
152
|
+
return minted.receipt;
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
if (rc.failClosed)
|
|
156
|
+
throw e;
|
|
157
|
+
console.error('[a2a] receipt mint failed (fail-soft):', e);
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
};
|
|
22
161
|
return {
|
|
23
162
|
async messageSend(params) {
|
|
24
163
|
const auth = await authorizeA2aMessage({
|
|
@@ -31,36 +170,82 @@ export function createA2aAgent(config) {
|
|
|
31
170
|
checks: config.checks,
|
|
32
171
|
store: config.taskStore,
|
|
33
172
|
now: now(),
|
|
173
|
+
scopeCovers: config.scopeCovers,
|
|
34
174
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
175
|
+
// NEW-A2A-1: do NOT surface the raw authorization reason — it's an oracle (reveals delegation
|
|
176
|
+
// revocation / party / method-scope state to an unauthorized caller). Return a generic denial.
|
|
177
|
+
if (!auth.ok) {
|
|
178
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'unauthorized', scopeDecision: 'not_evaluated', message: params.message, delegation: params.delegation });
|
|
179
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'unauthorized' };
|
|
180
|
+
}
|
|
181
|
+
// Spec 290 §6 Stage-3 — reserve the per-SA hard budget AFTER authority (victim-bucket rule §9:
|
|
182
|
+
// verified-identity buckets only post-verify), keyed by the verified principal (= sponsorAgent).
|
|
183
|
+
// Idempotency = the single-use messageId. COMMIT only after the task is durably created; RELEASE on
|
|
184
|
+
// any pre-creation failure so a denied/failed submit never burns budget (the §3 A2A pattern).
|
|
185
|
+
let reservation;
|
|
186
|
+
if (config.budget) {
|
|
187
|
+
reservation = await config.budget.reserve({
|
|
188
|
+
sponsorAgent: auth.principal,
|
|
189
|
+
capabilityId: `a2a.${params.message.skill}`,
|
|
190
|
+
idempotencyKey: params.message.messageId,
|
|
191
|
+
});
|
|
192
|
+
if (!reservation.allowed) {
|
|
193
|
+
await auth.messageIdReservation.release(); // spec 290 §3 — don't burn the nonce on a budget reject
|
|
194
|
+
// Scope DID pass (the auth gate evaluated targets/skill/window) — the budget denied.
|
|
195
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'budget-exhausted', scopeDecision: 'in_scope', principal: auth.principal, message: params.message, delegation: params.delegation });
|
|
196
|
+
return { ok: false, code: RPC_BUDGET_EXHAUSTED, message: 'budget exhausted' };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Spec 290 §3 — release BOTH the in-flight message-id reservation AND the budget on any pre-acceptance
|
|
200
|
+
// failure: a rejected/failed submit must consume neither the single-use nonce nor the budget.
|
|
201
|
+
const release = async () => {
|
|
202
|
+
await auth.messageIdReservation.release();
|
|
203
|
+
if (config.budget && reservation?.reservationId)
|
|
204
|
+
await config.budget.release(reservation.reservationId);
|
|
205
|
+
};
|
|
206
|
+
try {
|
|
207
|
+
// FR-2.2 — body integrity + vault residency: the signed bodyHash must match the input; persist the
|
|
208
|
+
// input to THIS agent's vault namespace; the message keeps only the ref + hash.
|
|
209
|
+
if (!eq(config.hashBody(params.input), params.message.bodyHash)) {
|
|
210
|
+
await release();
|
|
211
|
+
// The presented input diverges from the SIGNED bodyHash — the A2A form of out-of-scope args.
|
|
212
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'invalid-request', scopeDecision: 'out_of_scope', principal: auth.principal, message: params.message, delegation: params.delegation });
|
|
213
|
+
return { ok: false, code: RPC_INVALID_REQUEST, message: 'input does not match signed bodyHash' };
|
|
214
|
+
}
|
|
215
|
+
const bodyRef = await config.vault.write({
|
|
216
|
+
owner: config.agentSA,
|
|
217
|
+
recordType: `a2a:msg:${params.message.messageId}`,
|
|
218
|
+
data: params.input,
|
|
219
|
+
});
|
|
220
|
+
const message = { ...params.message, bodyRef };
|
|
221
|
+
const taskId = config.newTaskId ? config.newTaskId() : defaultTaskId();
|
|
222
|
+
const record = newTaskRecord({
|
|
223
|
+
taskId,
|
|
224
|
+
principal: auth.principal,
|
|
225
|
+
assignee: config.agentSA,
|
|
226
|
+
sender: params.requester,
|
|
227
|
+
skill: message.skill,
|
|
228
|
+
delegation: params.delegation,
|
|
229
|
+
inbound: message,
|
|
230
|
+
permissionGrantRef: hashDelegation(params.delegation, config.chainId, config.delegationManager),
|
|
231
|
+
inputHash: message.bodyHash,
|
|
232
|
+
now: now(),
|
|
233
|
+
});
|
|
234
|
+
const withPush = params.pushConfig ? { ...record, pushConfig: params.pushConfig } : record;
|
|
235
|
+
await config.taskStore.put(withPush); // FR-2.4 — schedule processing (listDue → alarm)
|
|
236
|
+
// Durably created → COMMIT the single-use message-id (permanently consumed) + charge the budget
|
|
237
|
+
// (the over-estimate, if any, is freed). Only now is the authorization truly spent (spec 290 §3).
|
|
238
|
+
await auth.messageIdReservation.commit();
|
|
239
|
+
if (config.budget && reservation?.reservationId)
|
|
240
|
+
await config.budget.commit(reservation.reservationId);
|
|
241
|
+
// Spec 303 W3 — the accept receipt rides the result so the SENDER retains it.
|
|
242
|
+
const receipt = await mintReceipt({ decision: 'allow', reasonCode: 'verified', scopeDecision: 'in_scope', principal: auth.principal, message, delegation: params.delegation, taskId });
|
|
243
|
+
return { ok: true, result: { taskId, state: 'submitted', ...(receipt ? { receipt } : {}) } }; // FR-2.3 — return immediately
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
await release();
|
|
247
|
+
throw e;
|
|
41
248
|
}
|
|
42
|
-
const bodyRef = await config.vault.write({
|
|
43
|
-
owner: config.agentSA,
|
|
44
|
-
recordType: `a2a:msg:${params.message.messageId}`,
|
|
45
|
-
data: params.input,
|
|
46
|
-
});
|
|
47
|
-
const message = { ...params.message, bodyRef };
|
|
48
|
-
const taskId = config.newTaskId ? config.newTaskId() : (`0x${'00'.repeat(31)}01`);
|
|
49
|
-
const record = newTaskRecord({
|
|
50
|
-
taskId,
|
|
51
|
-
principal: auth.principal,
|
|
52
|
-
assignee: config.agentSA,
|
|
53
|
-
sender: params.requester,
|
|
54
|
-
skill: message.skill,
|
|
55
|
-
delegation: params.delegation,
|
|
56
|
-
inbound: message,
|
|
57
|
-
permissionGrantRef: hashDelegation(params.delegation, config.chainId, config.delegationManager),
|
|
58
|
-
inputHash: message.bodyHash,
|
|
59
|
-
now: now(),
|
|
60
|
-
});
|
|
61
|
-
const withPush = params.pushConfig ? { ...record, pushConfig: params.pushConfig } : record;
|
|
62
|
-
await config.taskStore.put(withPush); // FR-2.4 — schedule processing (listDue → alarm)
|
|
63
|
-
return { ok: true, result: { taskId, state: 'submitted' } }; // FR-2.3 — return immediately
|
|
64
249
|
},
|
|
65
250
|
async resubmit(params) {
|
|
66
251
|
const rec = await config.taskStore.get(params.taskId);
|
|
@@ -77,55 +262,122 @@ export function createA2aAgent(config) {
|
|
|
77
262
|
const auth = await authorizeA2aMessage({
|
|
78
263
|
delegation: params.delegation, requester: params.requester, message: params.message,
|
|
79
264
|
thisAgentSA: config.agentSA, skill: rec.skill, enforcers: config.enforcers,
|
|
80
|
-
checks: config.checks, store: config.taskStore, now: now(),
|
|
265
|
+
checks: config.checks, store: config.taskStore, now: now(), scopeCovers: config.scopeCovers,
|
|
81
266
|
});
|
|
82
|
-
if (!auth.ok)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
267
|
+
if (!auth.ok) {
|
|
268
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'unauthorized', scopeDecision: 'not_evaluated', message: params.message, delegation: params.delegation, taskId: params.taskId });
|
|
269
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'unauthorized' }; // NEW-A2A-1: generic denial
|
|
270
|
+
}
|
|
271
|
+
// Spec 290 §3 — the resubmit's message-id is now reserved IN-FLIGHT; commit only after the durable
|
|
272
|
+
// put, release on any pre-acceptance rejection so a failed resubmit never burns the fresh nonce.
|
|
273
|
+
try {
|
|
274
|
+
if (!eq(config.hashBody(params.input), params.message.bodyHash)) {
|
|
275
|
+
await auth.messageIdReservation.release();
|
|
276
|
+
await mintReceipt({ decision: 'deny', reasonCode: 'invalid-request', scopeDecision: 'out_of_scope', principal: auth.principal, message: params.message, delegation: params.delegation, taskId: params.taskId });
|
|
277
|
+
return { ok: false, code: RPC_INVALID_REQUEST, message: 'input does not match signed bodyHash' };
|
|
278
|
+
}
|
|
279
|
+
const bodyRef = await config.vault.write({
|
|
280
|
+
owner: config.agentSA, recordType: `a2a:msg:${params.message.messageId}`, data: params.input,
|
|
281
|
+
});
|
|
282
|
+
const t = applyTransition(rec, 'submitted', { now: now() });
|
|
283
|
+
if (!t.ok) {
|
|
284
|
+
await auth.messageIdReservation.release();
|
|
285
|
+
return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
|
|
286
|
+
}
|
|
287
|
+
// Replace the grant + append the fresh message (processDue reads the LATEST inbound body).
|
|
288
|
+
const updated = {
|
|
289
|
+
...t.record, delegation: params.delegation,
|
|
290
|
+
task: { ...t.record.task, inputHash: params.message.bodyHash },
|
|
291
|
+
inbound: [...t.record.inbound, { ...params.message, bodyRef }],
|
|
292
|
+
};
|
|
293
|
+
await config.taskStore.put(updated);
|
|
294
|
+
await auth.messageIdReservation.commit(); // durably accepted → the resubmit nonce is consumed
|
|
295
|
+
const receipt = await mintReceipt({ decision: 'allow', reasonCode: 'verified', scopeDecision: 'in_scope', principal: auth.principal, message: params.message, delegation: params.delegation, taskId: params.taskId });
|
|
296
|
+
return { ok: true, result: { taskId: params.taskId, state: 'submitted', ...(receipt ? { receipt } : {}) } };
|
|
297
|
+
}
|
|
298
|
+
catch (e) {
|
|
299
|
+
await auth.messageIdReservation.release();
|
|
300
|
+
throw e;
|
|
86
301
|
}
|
|
87
|
-
const bodyRef = await config.vault.write({
|
|
88
|
-
owner: config.agentSA, recordType: `a2a:msg:${params.message.messageId}`, data: params.input,
|
|
89
|
-
});
|
|
90
|
-
const t = applyTransition(rec, 'submitted', { now: now() });
|
|
91
|
-
if (!t.ok)
|
|
92
|
-
return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
|
|
93
|
-
// Replace the grant + append the fresh message (processDue reads the LATEST inbound body).
|
|
94
|
-
const updated = {
|
|
95
|
-
...t.record, delegation: params.delegation,
|
|
96
|
-
task: { ...t.record.task, inputHash: params.message.bodyHash },
|
|
97
|
-
inbound: [...t.record.inbound, { ...params.message, bodyRef }],
|
|
98
|
-
};
|
|
99
|
-
await config.taskStore.put(updated);
|
|
100
|
-
return { ok: true, result: { taskId: params.taskId, state: 'submitted' } };
|
|
101
302
|
},
|
|
102
|
-
async tasksGet({ taskId, caller }) {
|
|
303
|
+
async tasksGet({ taskId, caller, signature, issuedAt }) {
|
|
103
304
|
const rec = await config.taskStore.get(taskId);
|
|
104
305
|
if (!rec)
|
|
105
306
|
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
307
|
+
const authd = await verifyCaller('tasks/get', taskId, caller, signature, undefined, issuedAt);
|
|
308
|
+
if (!authd.ok)
|
|
309
|
+
return authd;
|
|
106
310
|
// Caller must be the sender or the assignee (FR-2 tasks/get auth).
|
|
107
311
|
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
108
312
|
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
109
313
|
}
|
|
110
314
|
return { ok: true, result: { ...rec.task, error: rec.error, artifactRefs: rec.artifacts.map((a) => a.bodyRef) } };
|
|
111
315
|
},
|
|
112
|
-
async
|
|
316
|
+
async tasksArtifact({ taskId, artifactId, caller, signature, issuedAt }) {
|
|
317
|
+
const rec = await config.taskStore.get(taskId);
|
|
318
|
+
if (!rec)
|
|
319
|
+
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
320
|
+
const authd = await verifyCaller('tasks/artifact', taskId, caller, signature, hashArtifactParams(artifactId), issuedAt);
|
|
321
|
+
if (!authd.ok)
|
|
322
|
+
return authd;
|
|
323
|
+
// Identical party test to tasks/get — this returns what a party could already see the ref of.
|
|
324
|
+
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
325
|
+
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
326
|
+
}
|
|
327
|
+
const artifact = rec.artifacts.find((a) => eq(a.artifactId, artifactId));
|
|
328
|
+
// An artifact of ANOTHER task and one that does not exist read the same: a party to task A
|
|
329
|
+
// must not learn which artifact ids exist on task B.
|
|
330
|
+
if (!artifact)
|
|
331
|
+
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown artifact' };
|
|
332
|
+
const body = await config.vault.read(artifact.bodyRef);
|
|
333
|
+
return { ok: true, result: { artifactId: artifact.artifactId, artifactKind: artifact.artifactKind, bodyRef: artifact.bodyRef, body } };
|
|
334
|
+
},
|
|
335
|
+
async tasksCancel({ taskId, caller, signature, issuedAt }) {
|
|
336
|
+
const rec = await config.taskStore.get(taskId);
|
|
337
|
+
if (!rec)
|
|
338
|
+
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
339
|
+
const authd = await verifyCaller('tasks/cancel', taskId, caller, signature, undefined, issuedAt);
|
|
340
|
+
if (!authd.ok)
|
|
341
|
+
return authd;
|
|
342
|
+
return cancelForParty(rec, caller);
|
|
343
|
+
},
|
|
344
|
+
/**
|
|
345
|
+
* Cancel for a caller the TRANSPORT already authenticated (spec 372 S4). The party test is unchanged —
|
|
346
|
+
* the sender or the assignee, nobody else. What is absent is the per-request signature, and it is
|
|
347
|
+
* absent because it was already made: on the A2A 1.0 wire the caller proves who they are in the
|
|
348
|
+
* `Authorization` header, over the whole request, before any method runs. Passing an unverified address
|
|
349
|
+
* here would be an authority hole, so this is reachable only from a surface that authenticates.
|
|
350
|
+
*/
|
|
351
|
+
async tasksCancelAs({ taskId, caller }) {
|
|
352
|
+
const rec = await config.taskStore.get(taskId);
|
|
353
|
+
if (!rec)
|
|
354
|
+
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
355
|
+
return cancelForParty(rec, caller);
|
|
356
|
+
},
|
|
357
|
+
/** The artifact read for a door-authenticated caller — `tasksArtifact` minus the signature the door already
|
|
358
|
+
* verified. Same party test, same "another task's artifact reads as unknown", same vault read. */
|
|
359
|
+
async tasksArtifactAs({ taskId, artifactId, caller }) {
|
|
113
360
|
const rec = await config.taskStore.get(taskId);
|
|
114
361
|
if (!rec)
|
|
115
362
|
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
116
363
|
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
117
364
|
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
118
365
|
}
|
|
119
|
-
const
|
|
120
|
-
if (!
|
|
121
|
-
return { ok: false, code:
|
|
122
|
-
await config.
|
|
123
|
-
return { ok: true, result: {
|
|
366
|
+
const artifact = rec.artifacts.find((a) => eq(a.artifactId, artifactId));
|
|
367
|
+
if (!artifact)
|
|
368
|
+
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown artifact' };
|
|
369
|
+
const body = await config.vault.read(artifact.bodyRef);
|
|
370
|
+
return { ok: true, result: { artifactId: artifact.artifactId, artifactKind: artifact.artifactKind, bodyRef: artifact.bodyRef, body } };
|
|
124
371
|
},
|
|
125
|
-
async pushConfigSet({ taskId, caller, url, token }) {
|
|
372
|
+
async pushConfigSet({ taskId, caller, signature, url, token, issuedAt }) {
|
|
126
373
|
const rec = await config.taskStore.get(taskId);
|
|
127
374
|
if (!rec)
|
|
128
375
|
return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
|
|
376
|
+
// N-1: bind the presented url + token into the signed digest so the signature authorizes THIS target
|
|
377
|
+
// only — a captured set-signature can't be replayed with an attacker url to hijack the push envelope.
|
|
378
|
+
const authd = await verifyCaller('tasks/pushNotificationConfig/set', taskId, caller, signature, hashPushConfigParams(url, token), issuedAt);
|
|
379
|
+
if (!authd.ok)
|
|
380
|
+
return authd;
|
|
129
381
|
if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
|
|
130
382
|
return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
|
|
131
383
|
}
|
|
@@ -136,10 +388,21 @@ export function createA2aAgent(config) {
|
|
|
136
388
|
async processDue() {
|
|
137
389
|
const events = [];
|
|
138
390
|
const due = await config.taskStore.listDue(now());
|
|
391
|
+
// DIAGNOSTIC: is the task even considered? A task accepted by message/send and never picked up
|
|
392
|
+
// here is indistinguishable, from outside, from one that ran and produced nothing.
|
|
393
|
+
if (due.length)
|
|
394
|
+
console.log('[a2a processDue] due:', due.length, 'agent:', config.agentSA);
|
|
139
395
|
for (const taskId of due) {
|
|
140
396
|
const rec = await config.taskStore.get(taskId);
|
|
141
|
-
if (!rec
|
|
397
|
+
if (!rec) {
|
|
398
|
+
console.log('[a2a processDue] no record for', taskId);
|
|
142
399
|
continue;
|
|
400
|
+
}
|
|
401
|
+
if (rec.task.state !== 'submitted') {
|
|
402
|
+
console.log('[a2a processDue] skip', rec.skill, rec.task.state);
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
console.log('[a2a processDue] dispatching', rec.skill, taskId);
|
|
143
406
|
// Per-task context: read the input from the vault, persist emitted artifact bodies to the
|
|
144
407
|
// assignee's vault (A2A-INV-04), expose vault/mcp.
|
|
145
408
|
const captured = [];
|
|
@@ -161,13 +424,14 @@ export function createA2aAgent(config) {
|
|
|
161
424
|
disclosurePolicy: a.disclosurePolicy ?? 'private',
|
|
162
425
|
bodyRef,
|
|
163
426
|
createdAt: now(),
|
|
427
|
+
...(a.metadata ? { metadata: a.metadata } : {}),
|
|
164
428
|
});
|
|
165
429
|
return artifactId;
|
|
166
430
|
},
|
|
167
431
|
});
|
|
168
432
|
const input = await config.vault.read(rec.inbound[rec.inbound.length - 1].bodyRef);
|
|
169
433
|
const ctxBase = makeContext(rec);
|
|
170
|
-
const { record: processed, events: evs } = await dispatchTask(rec, registry, () => ({ ...ctxBase, input }), now(), config.handoffPolicy ? { handoffPolicy: config.handoffPolicy } :
|
|
434
|
+
const { record: processed, events: evs } = await dispatchTask(rec, registry, () => ({ ...ctxBase, input }), now(), { ...(config.handoffPolicy ? { handoffPolicy: config.handoffPolicy } : {}), paymentGate: config.paymentGate });
|
|
171
435
|
const merged = { ...processed, artifacts: [...processed.artifacts, ...captured] };
|
|
172
436
|
await config.taskStore.put(merged);
|
|
173
437
|
events.push(...evs);
|
|
@@ -178,19 +442,47 @@ export function createA2aAgent(config) {
|
|
|
178
442
|
}
|
|
179
443
|
return events;
|
|
180
444
|
},
|
|
181
|
-
agentCard() {
|
|
182
|
-
|
|
445
|
+
agentCard(forAudience) {
|
|
446
|
+
// Default to the PUBLIC card. A caller that has not stated an audience has not authenticated
|
|
447
|
+
// anyone, so it must not receive extended content (spec 338 §8).
|
|
448
|
+
const { audience, requester } = forAudience ?? { audience: 'public' };
|
|
449
|
+
const visible = config.handlers.filter((h) => isSkillVisible(h, audience, requester));
|
|
450
|
+
// Only priced skills THIS audience can see may advertise the extension — otherwise the public
|
|
451
|
+
// card leaks the existence of a priced private skill through its capabilities block.
|
|
452
|
+
const priced = visible.some((h) => h.payment);
|
|
453
|
+
// The authority extension is the ONE that is NOT audience-conditional. x402 is hidden from an
|
|
454
|
+
// audience that cannot see the priced skill, because its presence would leak that the skill
|
|
455
|
+
// exists. Authority leaks nothing — it describes how anyone would authenticate to whatever they
|
|
456
|
+
// can already see — and hiding it from the public card would defeat its entire purpose, which is
|
|
457
|
+
// letting an unknown peer discover how to become authorized (spec 341 §2 exit criterion).
|
|
458
|
+
const authority = config.authority ? [apAuthorityExtension(config.authority)] : [];
|
|
183
459
|
return {
|
|
184
460
|
name: config.agentSA,
|
|
185
461
|
url: `/api/a2a`,
|
|
186
462
|
version: '0.1.0',
|
|
463
|
+
// ADR-0059 — the Card MUST NOT misdescribe the agent. These were hard-coded `true`, which meant
|
|
464
|
+
// an agent with push DISABLED (`signTerminal`/`pushSender` omitted — the documented way to turn
|
|
465
|
+
// it off) still advertised `pushNotifications: true`. A peer would register a webhook against
|
|
466
|
+
// an agent that can never call it, and nothing would report the mismatch: the registration
|
|
467
|
+
// succeeds, the callback simply never arrives.
|
|
468
|
+
//
|
|
469
|
+
// Push is DERIVED because it is knowable here. Streaming is DECLARED because it is not — the
|
|
470
|
+
// SSE transport is mounted by the embedding worker — and it defaults to false, because
|
|
471
|
+
// over-claiming a capability costs more than under-claiming one.
|
|
187
472
|
capabilities: {
|
|
188
|
-
streaming:
|
|
189
|
-
pushNotifications:
|
|
190
|
-
stateTransitionHistory: true,
|
|
191
|
-
...(
|
|
473
|
+
streaming: config.declaredCapabilities?.streaming ?? false,
|
|
474
|
+
pushNotifications: Boolean(config.signTerminal && config.pushSender),
|
|
475
|
+
stateTransitionHistory: config.declaredCapabilities?.stateTransitionHistory ?? true,
|
|
476
|
+
...(authority.length || priced
|
|
477
|
+
? { extensions: [...authority, ...(priced ? [x402AgentCardExtension()] : [])] }
|
|
478
|
+
: {}),
|
|
192
479
|
},
|
|
193
|
-
skills:
|
|
480
|
+
skills: [
|
|
481
|
+
...visible.map((h) => (h.payment ? { id: h.skill, payment: h.payment } : { id: h.skill })),
|
|
482
|
+
// Dynamic (method-family) skills are advertised only on non-public cards: the family is
|
|
483
|
+
// resolver-driven and its membership is not statically reviewable for exposure.
|
|
484
|
+
...(audience === 'public' ? [] : (config.dynamicSkills?.() ?? []).map((id) => ({ id }))),
|
|
485
|
+
],
|
|
194
486
|
};
|
|
195
487
|
},
|
|
196
488
|
};
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,yGAAyG;AACzG,2GAA2G;AAC3G,2GAA2G;AAC3G,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAK/D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAuD,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EACpF,kBAAkB,EAAwC,MAAM,WAAW,CAAC;AAC9E,mFAAmF;AACnF,mFAAmF;AACnF,4DAA4D;AAC5D,OAAO,EACL,uBAAuB,GAKxB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,WAAW,EAAwC,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAmC,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAuC,MAAM,mBAAmB,CAAC;AA0MhG,MAAM,aAAa,GAA0D;IAC3E,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,CAAC;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,CAAe,EACf,QAAgD,EAChD,SAAkB;IAElB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAK,CAAC;AACnC,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC;AAChC,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC;AAC7B,MAAM,oBAAoB,GAAG,CAAC,KAAK,CAAC;AACpC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAEzE,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,kGAAkG;IAClG,mGAAmG;IACnG,6EAA6E;IAC7E,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,0BAA0B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C;YAChG,mGAAmG,CACtG,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,kGAAkG;IAClG,4CAA4C;IAC5C,MAAM,QAAQ,GAAG;QACf,GAAG,EAAE,CAAC,KAAa,EAA4B,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;KAC9G,CAAC;IACF,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,oGAAoG;IACpG,2FAA2F;IAC3F,MAAM,aAAa,GAAG,GAAQ,EAAE;QAC9B,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7B,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAS,CAAC;IACtF,CAAC,CAAC;IACF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,aAAa,GAAG,GAAG,EAAE,CACzB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAQ,CAAC;IAEhH,kGAAkG;IAClG,oGAAoG;IACpG,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,MAAW,EAAE,MAAe,EAAE,SAAc,EAAE,UAAgB,EAAE,QAAiB;QAC3H,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACzH,wGAAwG;QACxG,sGAAsG;QACtG,kFAAkF;QAClF,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;YAC1I,IAAI,QAAQ,GAAG,MAAM,GAAG,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;YAC5G,IAAI,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,kBAAkB;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QACvI,CAAC;QACD,uGAAuG;QACvG,qGAAqG;QACrG,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9H,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YAAC,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,KAAK,GAAG,KAAK,CAAC;QAAC,CAAC;QAC9G,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QAC9F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,qGAAqG;IACrG,KAAK,UAAU,cAAc,CAAC,GAAe,EAAE,MAAe;QAC5D,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9E,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED,sFAAsF;IACtF,mFAAmF;IACnF,kFAAkF;IAClF,qFAAqF;IACrF,iFAAiF;IACjF,8EAA8E;IAC9E,MAAM,WAAW,GAAG,KAAK,EAAE,KAQ1B,EAA8C,EAAE;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C;gBACE,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;gBACvC,QAAQ,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;gBACtC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;gBAChC,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC;gBAC1F,mBAAmB,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;gBAClD,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,MAAM,EAAE;oBACN,UAAU,EAAE,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa;oBACjE,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,WAAW,EAAE,EAAE,EAAE,WAAW,IAAI,GAAG;oBACnC,SAAS,EAAE,EAAE,EAAE,SAAS,IAAK,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAU;iBAC3D;gBACD,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;gBACzC,qBAAqB,EAAE,EAAE,CAAC,aAAa;gBACvC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;gBACtC,UAAU,EAAE,EAAE,CAAC,UAAU;aAC1B,EACD,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CACxC,CAAC;YACF,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE;gBACzB,OAAO,EAAE,KAAK,CAAC,QAAQ;gBACvB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;gBAClC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,EAAE,CAAC,UAAU;gBAAE,MAAM,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,OAAO;gBAC3B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,SAAS;gBACvB,GAAG,EAAE,GAAG,EAAE;gBACV,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;YACH,8FAA8F;YAC9F,+FAA+F;YAC/F,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC5J,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YACxE,CAAC;YAED,+FAA+F;YAC/F,iGAAiG;YACjG,oGAAoG;YACpG,8FAA8F;YAC9F,IAAI,WAAqE,CAAC;YAC1E,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBACxC,YAAY,EAAE,IAAI,CAAC,SAAS;oBAC5B,YAAY,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC3C,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;iBACzC,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,wDAAwD;oBACnG,qFAAqF;oBACrF,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBACtL,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;gBAChF,CAAC;YACH,CAAC;YACD,uGAAuG;YACvG,8FAA8F;YAC9F,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACzB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,aAAa;oBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC1G,CAAC,CAAC;YAEF,IAAI,CAAC;gBACH,mGAAmG;gBACnG,gFAAgF;gBAChF,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChE,MAAM,OAAO,EAAE,CAAC;oBAChB,6FAA6F;oBAC7F,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBACzL,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;gBACnG,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvC,KAAK,EAAE,MAAM,CAAC,OAAO;oBACrB,UAAU,EAAE,WAAW,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;oBACjD,IAAI,EAAE,MAAM,CAAC,KAAK;iBACnB,CAAC,CAAC;gBACH,MAAM,OAAO,GAAe,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;gBAE3D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBACvE,MAAM,MAAM,GAAG,aAAa,CAAC;oBAC3B,MAAM;oBACN,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,MAAM,CAAC,OAAO;oBACxB,MAAM,EAAE,MAAM,CAAC,SAAS;oBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,OAAO,EAAE,OAAO;oBAChB,kBAAkB,EAAE,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC;oBAC/F,SAAS,EAAE,OAAO,CAAC,QAAQ;oBAC3B,GAAG,EAAE,GAAG,EAAE;iBACX,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAe,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,iDAAiD;gBACvF,gGAAgG;gBAChG,kGAAkG;gBAClG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;gBACzC,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,aAAa;oBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACvG,8EAA8E;gBAC9E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvL,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,8BAA8B;YAC9H,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,OAAO,EAAE,CAAC;gBAChB,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,MAAM;YACnB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,+FAA+F;YAC/F,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;YAC9H,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;YACtI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;YACjI,iGAAiG;YACjG,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;gBACnF,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC1E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW;aAC5F,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnL,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,4BAA4B;YACrG,CAAC;YACD,mGAAmG;YACnG,iGAAiG;YACjG,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChE,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;oBAC1C,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBAChN,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;gBACnG,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK;iBAC7F,CAAC,CAAC;gBACH,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACV,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;oBAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;gBACrE,CAAC;gBACD,2FAA2F;gBAC3F,MAAM,OAAO,GAAe;oBAC1B,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC1C,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;oBAC9D,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;iBAC/D,CAAC;gBACF,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,oDAAoD;gBAC9F,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtN,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9G,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;gBAC1C,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;YACpD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC9F,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,mEAAmE;YACnE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACpF,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACpH,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;YACrE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxH,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,8FAA8F;YAC9F,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACpF,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YACzE,2FAA2F;YAC3F,qDAAqD;YACrD,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;YACtF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACzI,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;YACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACjG,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;YACpC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAED;2GACmG;QACnG,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;YAClD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACpF,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;YACtF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACzI,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;YACrE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,qGAAqG;YACrG,sGAAsG;YACtG,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,kCAAkC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC5I,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACpF,CAAC;YACD,MAAM,UAAU,GAAe,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;YAChE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;YACnD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,UAAU;YACd,MAAM,MAAM,GAAgB,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAClD,+FAA+F;YAC/F,mFAAmF;YACnF,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3F,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;oBAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAC9E,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAClH,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAE/D,0FAA0F;gBAC1F,mDAAmD;gBACnD,MAAM,QAAQ,GAAkB,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC;oBACtC,KAAK,EAAE,SAAoB,EAAE,4CAA4C;oBACzE,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,YAAY,EAAE,KAAK,EAAE,CAAiJ,EAAgB,EAAE;wBACtL,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;wBACnC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC5H,QAAQ,CAAC,IAAI,CAAC;4BACZ,UAAU;4BACV,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAQ;4BACnD,QAAQ,EAAE,MAAM,CAAC,OAAO;4BACxB,YAAY,EAAE,CAAC,CAAC,YAAY;4BAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;4BACjC,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,kBAAkB;4BACxD,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,SAAS;4BACjD,OAAO;4BACP,SAAS,EAAE,GAAG,EAAE;4BAChB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAChD,CAAC,CAAC;wBACH,OAAO,UAAU,CAAC;oBACpB,CAAC;iBACF,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC;gBACpF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAC3D,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EACnD,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAC9G,CAAC;gBACF,MAAM,MAAM,GAAe,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;gBAC9F,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBAEpB,+FAA+F;gBAC/F,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACnG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,SAAS,CAAC,WAAW;YACnB,6FAA6F;YAC7F,iEAAiE;YACjE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,WAAW,IAAI,EAAE,QAAQ,EAAE,QAAiB,EAAE,CAAC;YAE/E,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YACtF,8FAA8F;YAC9F,qFAAqF;YACrF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAE9C,8FAA8F;YAC9F,4FAA4F;YAC5F,gGAAgG;YAChG,iGAAiG;YACjG,0FAA0F;YAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnF,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE,OAAO;gBAChB,gGAAgG;gBAChG,gGAAgG;gBAChG,8FAA8F;gBAC9F,2FAA2F;gBAC3F,+CAA+C;gBAC/C,EAAE;gBACF,6FAA6F;gBAC7F,uFAAuF;gBACvF,iEAAiE;gBACjE,YAAY,EAAE;oBACZ,SAAS,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,IAAI,KAAK;oBAC1D,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC;oBACpE,sBAAsB,EAAE,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,IAAI,IAAI;oBACnF,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM;wBAC5B,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;wBAC/E,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,MAAM,EAAE;oBACN,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC1F,wFAAwF;oBACxF,gFAAgF;oBAChF,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;iBACzF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|