@agentunion/fastaun-browser 0.5.18 → 0.5.20
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/CHANGELOG.md +172 -79
- package/_packed_docs/CHANGELOG.md +172 -79
- package/_packed_docs/INDEX.md +244 -116
- package/_packed_docs/KITE_DOCS_GUIDE.md +98 -69
- package/_packed_docs/agent.md/SCHEMA.md +245 -205
- package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +11 -11
- package/_packed_docs/aun/345/210/206/345/270/203/345/274/217/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +42 -15
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +4 -4
- package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +45 -134
- package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1072 -1072
- package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +5 -20
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +687 -668
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +19 -28
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +443 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.0.md +161 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +658 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2113.0.md +233 -0
- package/_packed_docs/protocol/agent.md/SCHEMA.md +4 -0
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +1 -1
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +68 -61
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +279 -285
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +3 -3
- package/_packed_docs/sdk/09-group-rpc-manual.md +271 -235
- package/_packed_docs/sdk/09-message-rpc-manual.md +47 -6
- package/_packed_docs/sdk/09-storage-rpc-manual.md +70 -68
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +63 -34
- package/_packed_docs/sdk/INDEX.md +105 -34
- package/_packed_docs/sdk/Ownership-SDK/345/256/236/347/216/260/346/214/207/345/215/227.md +169 -0
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/227.md +349 -0
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +922 -0
- package/_packed_docs/sdk/Ownership-SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +270 -0
- package/_packed_docs/sdk/Ownership2.1-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +300 -0
- package/_packed_docs/sdk/Ownership2.1-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +382 -0
- package/_packed_docs/sdk/Ownership2.1-TDD/345/210/206/351/230/266/346/256/265/345/256/236/346/226/275/350/256/241/345/210/222.md +708 -0
- package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +476 -0
- package/_packed_docs/sdk/Ownership/347/256/241/347/220/206/344/270/223/351/242/230.md +559 -0
- package/_packed_docs/sdk/ProtectedHeaders/347/224/250/346/263/225/344/270/223/351/242/230.md +299 -0
- package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +173 -0
- package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +211 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/345/256/236/347/216/260/347/247/273/346/244/215/346/214/207/345/215/227.md +331 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +207 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +252 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/345/256/236/346/226/275/350/256/241/345/210/222.md +156 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/346/226/271/346/241/210.md +273 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/350/257/246/347/273/206/350/256/276/350/256/241.md +211 -0
- package/dist/agent-md-schema.d.ts +17 -3
- package/dist/agent-md-schema.d.ts.map +1 -1
- package/dist/agent-md-schema.js +94 -26
- package/dist/agent-md-schema.js.map +1 -1
- package/dist/agent-md.d.ts +54 -3
- package/dist/agent-md.d.ts.map +1 -1
- package/dist/agent-md.js +711 -65
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.d.ts +58 -46
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +254 -248
- package/dist/aid-store.js.map +1 -1
- package/dist/aid.d.ts +4 -1
- package/dist/aid.d.ts.map +1 -1
- package/dist/aid.js +27 -33
- package/dist/aid.js.map +1 -1
- package/dist/auth.d.ts +4 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +426 -39
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +38179 -32054
- package/dist/cert-utils.d.ts +50 -2
- package/dist/cert-utils.d.ts.map +1 -1
- package/dist/cert-utils.js +105 -47
- package/dist/cert-utils.js.map +1 -1
- package/dist/client/delivery.d.ts +22 -1
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +389 -78
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +103 -77
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +1 -0
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +182 -89
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +100 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1220 -25
- package/dist/client.js.map +1 -1
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +8 -6
- package/dist/crypto.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -2
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +9 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +72 -13
- package/dist/events.js.map +1 -1
- package/dist/facades.d.ts +82 -2
- package/dist/facades.d.ts.map +1 -1
- package/dist/facades.js +100 -6
- package/dist/facades.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/keystore/index.d.ts +17 -0
- package/dist/keystore/index.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.d.ts +10 -1
- package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.js +111 -0
- package/dist/keystore/indexeddb-shared.js.map +1 -1
- package/dist/keystore/indexeddb-token-store.d.ts +7 -1
- package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-token-store.js +30 -1
- package/dist/keystore/indexeddb-token-store.js.map +1 -1
- package/dist/org-protocol.d.ts +98 -0
- package/dist/org-protocol.d.ts.map +1 -0
- package/dist/org-protocol.js +1802 -0
- package/dist/org-protocol.js.map +1 -0
- package/dist/ownership-proof.d.ts +93 -5
- package/dist/ownership-proof.d.ts.map +1 -1
- package/dist/ownership-proof.js +239 -53
- package/dist/ownership-proof.js.map +1 -1
- package/dist/ownership-v21.d.ts +194 -0
- package/dist/ownership-v21.d.ts.map +1 -0
- package/dist/ownership-v21.js +678 -0
- package/dist/ownership-v21.js.map +1 -0
- package/dist/ownership-workflow.d.ts +151 -0
- package/dist/ownership-workflow.d.ts.map +1 -0
- package/dist/ownership-workflow.js +1229 -0
- package/dist/ownership-workflow.js.map +1 -0
- package/dist/seq-tracker.d.ts +1 -0
- package/dist/seq-tracker.d.ts.map +1 -1
- package/dist/seq-tracker.js +10 -2
- package/dist/seq-tracker.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +83 -0
- package/dist/tools/cross-sdk-agent.d.ts.map +1 -1
- package/dist/tools/cross-sdk-agent.js +415 -7
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +7 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +90 -2
- package/dist/transport.js.map +1 -1
- package/dist/v2/e2ee/decrypt.d.ts +1 -0
- package/dist/v2/e2ee/decrypt.d.ts.map +1 -1
- package/dist/v2/e2ee/decrypt.js +9 -1
- package/dist/v2/e2ee/decrypt.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/ownership-proof.js
CHANGED
|
@@ -1,37 +1,108 @@
|
|
|
1
1
|
import { canonicalJson } from './v2/crypto/canonical.js';
|
|
2
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
2
3
|
import { validateAIDFormat } from './validators.js';
|
|
3
|
-
import { isStrictBase64, verifySignatureWithCert, certFingerprint } from './cert-utils.js';
|
|
4
|
+
import { isStrictBase64, verifySignatureWithCert, certFingerprint, parseCertMetadata } from './cert-utils.js';
|
|
4
5
|
import { ValidationError } from './errors.js';
|
|
5
6
|
export const OWNERSHIP_RELATION_DOMAIN = 'AUN-AID-OWNER-RELATION-V1;';
|
|
7
|
+
export const OWNERSHIP_RELEASE_DOMAIN = 'AUN-AID-OWNER-RELEASE-V1;';
|
|
8
|
+
export const OWNERSHIP_MESSAGE_TYPE = 'aun.ownership.v1';
|
|
9
|
+
export const CERT_ESCROW_VERSION = 1;
|
|
10
|
+
export const CERT_ESCROW_ITERATIONS = 200_000;
|
|
11
|
+
export const CERT_ESCROW_AAD = 'AUN-CERT-ESCROW-V1';
|
|
6
12
|
const PROOF_ID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
7
13
|
const FINGERPRINT_RE = /^sha256:[0-9a-f]{64}$/i;
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
14
|
+
function base64Encode(bytes) {
|
|
15
|
+
let binary = '';
|
|
16
|
+
for (const value of bytes)
|
|
17
|
+
binary += String.fromCharCode(value);
|
|
18
|
+
return btoa(binary);
|
|
19
|
+
}
|
|
20
|
+
function base64Decode(value) {
|
|
21
|
+
const binary = atob(value);
|
|
22
|
+
const result = new Uint8Array(binary.length);
|
|
23
|
+
for (let index = 0; index < binary.length; index += 1)
|
|
24
|
+
result[index] = binary.charCodeAt(index);
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
function webCrypto() {
|
|
28
|
+
const value = globalThis.crypto;
|
|
29
|
+
if (!value?.subtle)
|
|
30
|
+
throw new ValidationError('Web Crypto API is unavailable');
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
function asArrayBuffer(value) {
|
|
34
|
+
const copy = new Uint8Array(value.byteLength);
|
|
35
|
+
copy.set(value);
|
|
36
|
+
return copy.buffer;
|
|
37
|
+
}
|
|
38
|
+
async function encryptEscrowBytes(plaintext, password) {
|
|
39
|
+
if (!plaintext.length)
|
|
40
|
+
throw new ValidationError('certificate escrow plaintext is empty');
|
|
41
|
+
const crypto = webCrypto();
|
|
42
|
+
const secret = String(password ?? '').trim() || base64Encode(crypto.getRandomValues(new Uint8Array(24))).replace(/[^A-Za-z0-9]/g, '');
|
|
43
|
+
const salt = crypto.getRandomValues(new Uint8Array(16));
|
|
44
|
+
const nonce = crypto.getRandomValues(new Uint8Array(12));
|
|
45
|
+
const material = await crypto.subtle.importKey('raw', new TextEncoder().encode(secret), 'PBKDF2', false, ['deriveKey']);
|
|
46
|
+
const key = await crypto.subtle.deriveKey({ name: 'PBKDF2', hash: 'SHA-256', salt: asArrayBuffer(salt), iterations: CERT_ESCROW_ITERATIONS }, material, { name: 'AES-GCM', length: 256 }, false, ['encrypt']);
|
|
47
|
+
const ciphertext = new Uint8Array(await crypto.subtle.encrypt({ name: 'AES-GCM', iv: asArrayBuffer(nonce), additionalData: asArrayBuffer(new TextEncoder().encode(CERT_ESCROW_AAD)), tagLength: 128 }, key, asArrayBuffer(plaintext)));
|
|
48
|
+
const digest = sha256Hex(plaintext);
|
|
49
|
+
return {
|
|
50
|
+
envelope: { version: CERT_ESCROW_VERSION, alg: 'AES-256-GCM', kdf: 'PBKDF2-SHA256', iterations: CERT_ESCROW_ITERATIONS, salt: base64Encode(salt), nonce: base64Encode(nonce), ciphertext: base64Encode(ciphertext), sha256: digest },
|
|
51
|
+
password: secret,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async function decryptEscrowBytes(envelope, password) {
|
|
55
|
+
if (!envelope || envelope.version !== CERT_ESCROW_VERSION || envelope.alg !== 'AES-256-GCM' || envelope.kdf !== 'PBKDF2-SHA256' || envelope.iterations !== CERT_ESCROW_ITERATIONS)
|
|
56
|
+
throw new ValidationError('unsupported certificate escrow envelope');
|
|
57
|
+
const crypto = webCrypto();
|
|
58
|
+
const salt = base64Decode(String(envelope.salt ?? ''));
|
|
59
|
+
const nonce = base64Decode(String(envelope.nonce ?? ''));
|
|
60
|
+
const ciphertext = base64Decode(String(envelope.ciphertext ?? ''));
|
|
61
|
+
if (salt.length !== 16 || nonce.length !== 12 || ciphertext.length <= 16)
|
|
62
|
+
throw new ValidationError('invalid certificate escrow fields');
|
|
63
|
+
const material = await crypto.subtle.importKey('raw', new TextEncoder().encode(String(password ?? '')), 'PBKDF2', false, ['deriveKey']);
|
|
64
|
+
const key = await crypto.subtle.deriveKey({ name: 'PBKDF2', hash: 'SHA-256', salt: asArrayBuffer(salt), iterations: CERT_ESCROW_ITERATIONS }, material, { name: 'AES-GCM', length: 256 }, false, ['decrypt']);
|
|
65
|
+
let plaintext;
|
|
66
|
+
try {
|
|
67
|
+
plaintext = new Uint8Array(await crypto.subtle.decrypt({ name: 'AES-GCM', iv: asArrayBuffer(nonce), additionalData: asArrayBuffer(new TextEncoder().encode(CERT_ESCROW_AAD)), tagLength: 128 }, key, asArrayBuffer(ciphertext)));
|
|
33
68
|
}
|
|
34
|
-
|
|
69
|
+
catch (error) {
|
|
70
|
+
throw new ValidationError(`certificate escrow decryption failed: ${String(error)}`);
|
|
71
|
+
}
|
|
72
|
+
if (sha256Hex(plaintext) !== String(envelope.sha256 ?? '').toLowerCase())
|
|
73
|
+
throw new ValidationError('certificate escrow hash mismatch');
|
|
74
|
+
return plaintext;
|
|
75
|
+
}
|
|
76
|
+
export async function encryptCertificate(certPem, password) {
|
|
77
|
+
return encryptEscrowBytes(new TextEncoder().encode(String(certPem ?? '')), password);
|
|
78
|
+
}
|
|
79
|
+
export async function decryptCertificate(envelope, password) {
|
|
80
|
+
return new TextDecoder().decode(await decryptEscrowBytes(envelope, password));
|
|
81
|
+
}
|
|
82
|
+
export async function encryptIdentity(identity, password) {
|
|
83
|
+
if (!identity || typeof identity !== 'object' || Array.isArray(identity))
|
|
84
|
+
throw new ValidationError('identity escrow package must be an object');
|
|
85
|
+
if (!String(identity.aid ?? '').trim() || !String(identity.private_key_pem ?? '').trim() || !String(identity.cert ?? '').trim())
|
|
86
|
+
throw new ValidationError('identity escrow package is incomplete');
|
|
87
|
+
return encryptEscrowBytes(new TextEncoder().encode(JSON.stringify(identity)), password);
|
|
88
|
+
}
|
|
89
|
+
export async function decryptIdentity(envelope, password) {
|
|
90
|
+
let value;
|
|
91
|
+
try {
|
|
92
|
+
value = JSON.parse(new TextDecoder().decode(await decryptEscrowBytes(envelope, password)));
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
throw new ValidationError(`certificate escrow identity package is invalid JSON: ${String(error)}`);
|
|
96
|
+
}
|
|
97
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
98
|
+
throw new ValidationError('certificate escrow identity package must be an object');
|
|
99
|
+
const result = value;
|
|
100
|
+
if (!String(result.aid ?? '').trim() || !String(result.private_key_pem ?? '').trim() || !String(result.cert ?? '').trim())
|
|
101
|
+
throw new ValidationError('certificate escrow identity package is incomplete');
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
function sha256Hex(input) {
|
|
105
|
+
return Array.from(sha256(input), (value) => value.toString(16).padStart(2, '0')).join('');
|
|
35
106
|
}
|
|
36
107
|
export class OwnershipStatement {
|
|
37
108
|
proofId;
|
|
@@ -39,9 +110,19 @@ export class OwnershipStatement {
|
|
|
39
110
|
ownerAid;
|
|
40
111
|
canonicalFact;
|
|
41
112
|
canonicalStatement;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
113
|
+
signerAid;
|
|
114
|
+
role;
|
|
115
|
+
extensions;
|
|
116
|
+
version;
|
|
117
|
+
signedAt;
|
|
118
|
+
constructor(proofId, subjectAid, ownerAid, signerAid = '', role = '', extensions, version = 1, signedAt = 0) { this.proofId = proofId; this.subjectAid = subjectAid; this.ownerAid = ownerAid; this.signerAid = signerAid; this.role = role; this.extensions = extensions && Object.keys(extensions).length ? { ...extensions } : undefined; this.version = version; this.signedAt = signedAt; this.canonicalFact = canonicalJson({ subject_aid: subjectAid, owner_aid: ownerAid }); const value = { proof_id: proofId, subject_aid: subjectAid, owner_aid: ownerAid }; if (version === 2) {
|
|
119
|
+
value.version = 2;
|
|
120
|
+
value.signer_aid = signerAid;
|
|
121
|
+
value.role = role;
|
|
122
|
+
value.signed_at = signedAt;
|
|
123
|
+
if (this.extensions)
|
|
124
|
+
value.extensions = this.extensions;
|
|
125
|
+
} this.canonicalStatement = canonicalJson(value); }
|
|
45
126
|
static create(proofId, subjectAid, ownerAid) { const id = String(proofId ?? '').trim(); if (!PROOF_ID_RE.test(id))
|
|
46
127
|
throw new ValidationError('invalid proof_id'); let s, o; try {
|
|
47
128
|
s = validateAIDFormat(subjectAid, 'subject_aid');
|
|
@@ -50,25 +131,96 @@ export class OwnershipStatement {
|
|
|
50
131
|
catch (e) {
|
|
51
132
|
throw new ValidationError(String(e instanceof Error ? e.message : e));
|
|
52
133
|
} return new OwnershipStatement(id, s, o); }
|
|
134
|
+
static createSigned(proofId, subjectAid, ownerAid, options) { const base = OwnershipStatement.create(proofId, subjectAid, ownerAid), signer = validateAIDFormat(options.signerAid, 'signer_aid'), expected = options.role === 'subject' ? base.subjectAid : options.role === 'owner' ? base.ownerAid : ''; if (!expected)
|
|
135
|
+
throw new ValidationError('ownership signer role must be subject or owner'); if (signer !== expected)
|
|
136
|
+
throw new ValidationError('ownership signer does not match role'); if (options.extensions !== undefined && (!options.extensions || typeof options.extensions !== 'object' || Array.isArray(options.extensions)))
|
|
137
|
+
throw new ValidationError('ownership extensions must be an object'); const signedAt = options.signedAt ?? Math.floor(Date.now() / 1000); if (!Number.isSafeInteger(signedAt) || signedAt <= 0)
|
|
138
|
+
throw new ValidationError('signed_at must be a positive integer'); return new OwnershipStatement(base.proofId, base.subjectAid, base.ownerAid, signer, options.role, options.extensions, 2, signedAt); }
|
|
139
|
+
static fromMapping(value) { const version = Number(value.version ?? 1) || 1; if (version === 2) {
|
|
140
|
+
if (!Number.isSafeInteger(value.signed_at) || Number(value.signed_at) <= 0)
|
|
141
|
+
throw new ValidationError('signed_at must be a positive integer');
|
|
142
|
+
return OwnershipStatement.createSigned(String(value.proof_id ?? ''), String(value.subject_aid ?? ''), String(value.owner_aid ?? ''), { signerAid: String(value.signer_aid ?? ''), role: String(value.role ?? ''), extensions: value.extensions, signedAt: value.signed_at });
|
|
143
|
+
} return OwnershipStatement.create(String(value.proof_id ?? ''), String(value.subject_aid ?? ''), String(value.owner_aid ?? '')); }
|
|
144
|
+
toMapping() { const value = { proof_id: this.proofId, subject_aid: this.subjectAid, owner_aid: this.ownerAid }; if (this.version === 2) {
|
|
145
|
+
value.version = 2;
|
|
146
|
+
value.signer_aid = this.signerAid;
|
|
147
|
+
value.role = this.role;
|
|
148
|
+
value.signed_at = this.signedAt;
|
|
149
|
+
if (this.extensions)
|
|
150
|
+
value.extensions = { ...this.extensions };
|
|
151
|
+
} return value; }
|
|
53
152
|
get signingBytes() { const p = new TextEncoder().encode(OWNERSHIP_RELATION_DOMAIN), r = new Uint8Array(p.length + this.canonicalStatement.length); r.set(p); r.set(this.canonicalStatement, p.length); return r; }
|
|
54
153
|
}
|
|
55
|
-
export function
|
|
56
|
-
|
|
154
|
+
export function isOwnershipPayload(value) { return !!value && typeof value === 'object' && !Array.isArray(value) && String(value.type ?? '').trim() === OWNERSHIP_MESSAGE_TYPE; }
|
|
155
|
+
export function ownershipMessageBody(message) { if (!message || typeof message !== 'object' || Array.isArray(message))
|
|
156
|
+
return null; const record = message; if (record.payload && typeof record.payload === 'object' && !Array.isArray(record.payload))
|
|
157
|
+
return record.payload; return isOwnershipPayload(record) ? record : null; }
|
|
158
|
+
export function buildOwnershipMessage(action, options) { const payload = { type: OWNERSHIP_MESSAGE_TYPE, action: String(action ?? '').trim(), request_id: String(options.requestId ?? '').trim(), proof_id: String(options.proofId ?? '').trim(), subject_aid: String(options.subjectAid ?? '').trim().toLowerCase(), owner_aid: String(options.ownerAid ?? '').trim().toLowerCase() }; for (const [key, value] of Object.entries(options)) {
|
|
159
|
+
if (!['requestId', 'proofId', 'subjectAid', 'ownerAid'].includes(key) && value !== undefined)
|
|
160
|
+
payload[key] = value;
|
|
161
|
+
} return payload; }
|
|
162
|
+
function validSignature(s) { return !!s && FINGERPRINT_RE.test(String(s?.cert_fingerprint ?? '').trim()) && isStrictBase64(String(s?.signature ?? '')); }
|
|
163
|
+
function validateNestedSignature(signature, relation, expectedSigner, expectedRole, name) { if (signature.statement === undefined)
|
|
164
|
+
return; if (!signature.statement || typeof signature.statement !== 'object' || Array.isArray(signature.statement))
|
|
165
|
+
throw new ValidationError(`${name} statement is invalid`); const statement = OwnershipStatement.fromMapping(signature.statement); if (statement.version !== 2 || statement.proofId !== relation.proofId || statement.subjectAid !== relation.subjectAid || statement.ownerAid !== relation.ownerAid)
|
|
166
|
+
throw new ValidationError(`${name} statement does not match ownership relation`); if (statement.signerAid !== expectedSigner || statement.role !== expectedRole)
|
|
167
|
+
throw new ValidationError(`${name} statement signer does not match role`); if (signature.signer_aid && signature.signer_aid !== statement.signerAid)
|
|
168
|
+
throw new ValidationError(`${name} signer_aid mismatch`); if (signature.role && signature.role !== statement.role)
|
|
169
|
+
throw new ValidationError(`${name} role mismatch`); }
|
|
170
|
+
export function validateOwnershipFrontmatter(frontmatter, expectedAid) { const op = Object.prototype.hasOwnProperty.call(frontmatter, 'owner'), pp = Object.prototype.hasOwnProperty.call(frontmatter, 'ownership_proof'), rp = Object.prototype.hasOwnProperty.call(frontmatter, 'ownership_release'); if (rp) {
|
|
171
|
+
if (op || pp)
|
|
172
|
+
throw new ValidationError('ownership_release cannot be combined with owner or ownership_proof');
|
|
173
|
+
validateOwnershipRelease(frontmatter.ownership_release, String(frontmatter.aid ?? expectedAid ?? ''));
|
|
174
|
+
return;
|
|
175
|
+
} if (pp && !op)
|
|
176
|
+
throw new ValidationError('ownership_proof requires owner'); const type = String(frontmatter.type ?? '').trim().toLowerCase(); if (type === 'human' && (op || pp))
|
|
57
177
|
throw new ValidationError('human AID cannot specify owner'); if (!op)
|
|
58
178
|
return; const aid = validateAIDFormat(frontmatter.aid, 'aid'), owner = validateAIDFormat(frontmatter.owner, 'owner'); if (String(frontmatter.aid).trim() !== aid || String(frontmatter.owner).trim() !== owner)
|
|
59
179
|
throw new ValidationError('owner and subject AID must be lowercase'); if (expectedAid && aid !== expectedAid.trim().toLowerCase())
|
|
60
|
-
throw new ValidationError('ownership subject AID does not match expected AID'); if (!
|
|
61
|
-
|
|
62
|
-
throw new ValidationError('ownership_proof
|
|
63
|
-
throw new ValidationError('ownership_proof
|
|
64
|
-
throw new ValidationError('
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (
|
|
180
|
+
throw new ValidationError('ownership subject AID does not match expected AID'); if (!pp)
|
|
181
|
+
return; if (!frontmatter.ownership_proof || typeof frontmatter.ownership_proof !== 'object' || Array.isArray(frontmatter.ownership_proof))
|
|
182
|
+
throw new ValidationError('ownership_proof must be an object'); const raw = frontmatter.ownership_proof, allowed = new Set(['proof_id', 'subject_aid', 'owner_aid', 'subject_signature', 'owner_signature']); if (Object.keys(raw).some(k => !allowed.has(k)))
|
|
183
|
+
throw new ValidationError('ownership_proof contains unknown fields'); if (raw.subject_aid !== undefined && raw.subject_aid !== aid || raw.owner_aid !== undefined && raw.owner_aid !== owner)
|
|
184
|
+
throw new ValidationError('ownership_proof does not match agent.md owner'); if (!('proof_id' in raw) && Object.keys(raw).every(k => ['subject_aid', 'owner_aid'].includes(k)))
|
|
185
|
+
return; const statement = OwnershipStatement.create(String(raw.proof_id ?? ''), String(raw.subject_aid ?? aid), String(raw.owner_aid ?? owner)); if ('subject_signature' in raw) {
|
|
186
|
+
const subjectSignature = raw.subject_signature;
|
|
187
|
+
if (!validSignature(subjectSignature) || Array.isArray(subjectSignature) || Object.keys(subjectSignature).some(k => !['cert_fingerprint', 'signature', 'signer_aid', 'role', 'statement'].includes(k)))
|
|
188
|
+
throw new ValidationError('subject_signature is invalid');
|
|
189
|
+
validateNestedSignature(subjectSignature, statement, aid, 'subject', 'subject_signature');
|
|
190
|
+
} if (aid === owner) {
|
|
191
|
+
if ('owner_signature' in raw)
|
|
68
192
|
throw new ValidationError('self-owner proof must not contain owner_signature');
|
|
69
193
|
}
|
|
70
|
-
else if (
|
|
71
|
-
|
|
194
|
+
else if ('owner_signature' in raw) {
|
|
195
|
+
const ownerSignature = raw.owner_signature;
|
|
196
|
+
if (!validSignature(ownerSignature) || Array.isArray(ownerSignature) || Object.keys(ownerSignature).some(k => !['cert_fingerprint', 'signature', 'signer_aid', 'role', 'statement'].includes(k)))
|
|
197
|
+
throw new ValidationError('owner_signature is invalid');
|
|
198
|
+
validateNestedSignature(ownerSignature, statement, owner, 'owner', 'owner_signature');
|
|
199
|
+
} }
|
|
200
|
+
export function createOwnershipReleaseStatement(proofId, subjectAid, ownerAid, signedAt = Math.floor(Date.now() / 1000)) { const relation = OwnershipStatement.create(proofId, subjectAid, ownerAid); if (!Number.isSafeInteger(signedAt) || signedAt <= 0)
|
|
201
|
+
throw new ValidationError('signed_at must be a positive integer'); return { version: 1, action: 'release', proof_id: relation.proofId, subject_aid: relation.subjectAid, owner_aid: relation.ownerAid, signer_aid: relation.ownerAid, role: 'owner', signed_at: signedAt }; }
|
|
202
|
+
function parseOwnershipReleaseStatement(value) { if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
203
|
+
throw new ValidationError('ownership_release statement is invalid'); const raw = value, allowed = new Set(['version', 'action', 'proof_id', 'subject_aid', 'owner_aid', 'signer_aid', 'role', 'signed_at']); if (Object.keys(raw).some(k => !allowed.has(k)))
|
|
204
|
+
throw new ValidationError('ownership_release statement contains unknown fields'); const statement = createOwnershipReleaseStatement(String(raw.proof_id ?? ''), String(raw.subject_aid ?? ''), String(raw.owner_aid ?? ''), Number(raw.signed_at)); if (raw.version !== 1 || raw.action !== 'release' || String(raw.signer_aid ?? '').trim().toLowerCase() !== statement.owner_aid || raw.role !== 'owner')
|
|
205
|
+
throw new ValidationError('ownership_release statement is invalid'); return statement; }
|
|
206
|
+
function ownershipReleaseBytes(statement) { const prefix = new TextEncoder().encode(OWNERSHIP_RELEASE_DOMAIN), canonical = canonicalJson(statement), result = new Uint8Array(prefix.length + canonical.length); result.set(prefix); result.set(canonical, prefix.length); return result; }
|
|
207
|
+
function validateOwnershipRelease(value, expectedSubject) { if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
208
|
+
throw new ValidationError('ownership_release must be an object'); const release = value; if (Object.keys(release).some(k => !['cert_fingerprint', 'signature', 'signer_aid', 'role', 'statement'].includes(k)))
|
|
209
|
+
throw new ValidationError('ownership_release contains unknown fields'); const signature = release; if (!validSignature(signature) || !signature.statement)
|
|
210
|
+
throw new ValidationError('ownership_release signature is invalid'); const statement = parseOwnershipReleaseStatement(signature.statement); if (expectedSubject && statement.subject_aid !== expectedSubject.trim().toLowerCase())
|
|
211
|
+
throw new ValidationError('ownership_release subject does not match agent.md AID'); if (signature.signer_aid && signature.signer_aid.trim().toLowerCase() !== statement.owner_aid)
|
|
212
|
+
throw new ValidationError('ownership_release signer does not match owner'); if (signature.role && signature.role !== 'owner')
|
|
213
|
+
throw new ValidationError('ownership_release role must be owner'); signature.statement = statement; return signature; }
|
|
214
|
+
export async function signOwnershipRelease(aid, statement) { const signed = await aid.sign(ownershipReleaseBytes(statement)); if (!signed.ok || !signed.data)
|
|
215
|
+
throw new ValidationError(signed.error?.message ?? 'ownership release signature failed'); if (!FINGERPRINT_RE.test(aid.certFingerprint))
|
|
216
|
+
throw new ValidationError('certificate fingerprint is unavailable'); return { cert_fingerprint: aid.certFingerprint, signature: signed.data.signature, signer_aid: statement.owner_aid, role: 'owner', statement }; }
|
|
217
|
+
export async function verifyOwnershipRelease(certPem, value) { try {
|
|
218
|
+
const release = validateOwnershipRelease(value, ''), statement = release.statement, cert = parseCertMetadata(certPem);
|
|
219
|
+
return cert.subject.toLowerCase() === statement.owner_aid && cert.notBefore.getTime() <= statement.signed_at * 1000 && cert.notAfter.getTime() >= statement.signed_at * 1000 && (await certFingerprint(certPem)).toLowerCase() === release.cert_fingerprint.toLowerCase() && await verifySignatureWithCert(certPem, release.signature, ownershipReleaseBytes(statement));
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return false;
|
|
223
|
+
} }
|
|
72
224
|
export function validateOwnershipProof(proof, expectedSubject, expectedOwner) { let s, o; try {
|
|
73
225
|
s = validateAIDFormat(expectedSubject, 'subject_aid');
|
|
74
226
|
o = validateAIDFormat(expectedOwner, 'owner_aid');
|
|
@@ -76,22 +228,56 @@ export function validateOwnershipProof(proof, expectedSubject, expectedOwner) {
|
|
|
76
228
|
catch (e) {
|
|
77
229
|
throw new ValidationError(String(e instanceof Error ? e.message : e));
|
|
78
230
|
} if (proof.statement.subjectAid !== s || proof.statement.ownerAid !== o)
|
|
79
|
-
throw new ValidationError('ownership proof statement does not match owner or subject'); if (
|
|
80
|
-
throw new ValidationError('
|
|
81
|
-
throw new ValidationError('statement_hash mismatch'); if (!validSignature(proof.subject_signature))
|
|
82
|
-
throw new ValidationError('subject_signature is invalid'); if (s === o) {
|
|
231
|
+
throw new ValidationError('ownership proof statement does not match owner or subject'); if (!validSignature(proof.subject_signature))
|
|
232
|
+
throw new ValidationError('subject_signature is invalid'); validateNestedSignature(proof.subject_signature, proof.statement, s, 'subject', 'subject_signature'); if (s === o) {
|
|
83
233
|
if (proof.owner_signature)
|
|
84
234
|
throw new ValidationError('self-owner proof must not contain owner_signature');
|
|
85
235
|
}
|
|
86
236
|
else if (!proof.owner_signature || !validSignature(proof.owner_signature))
|
|
87
|
-
throw new ValidationError('owner_signature is required');
|
|
88
|
-
|
|
237
|
+
throw new ValidationError('owner_signature is required');
|
|
238
|
+
else
|
|
239
|
+
validateNestedSignature(proof.owner_signature, proof.statement, o, 'owner', 'owner_signature'); }
|
|
89
240
|
export async function signOwnershipStatement(aid, statement) { const sig = await aid.sign(statement.signingBytes); if (!sig.ok || !sig.data)
|
|
90
241
|
throw new ValidationError(sig.error?.message ?? 'ownership signature failed'); if (!FINGERPRINT_RE.test(aid.certFingerprint))
|
|
91
|
-
throw new ValidationError('certificate fingerprint is unavailable'); return { cert_fingerprint: aid.certFingerprint, signature: sig.data.signature }; }
|
|
242
|
+
throw new ValidationError('certificate fingerprint is unavailable'); return { cert_fingerprint: aid.certFingerprint, signature: sig.data.signature, ...(statement.version === 2 ? { signer_aid: statement.signerAid, role: statement.role, statement: statement.toMapping() } : {}) }; }
|
|
92
243
|
export async function verifyOwnershipSignature(certPem, statement, signature) { if (!validSignature(signature))
|
|
93
|
-
return false;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
244
|
+
return false; try {
|
|
245
|
+
const signedStatement = signature.statement ? OwnershipStatement.fromMapping(signature.statement) : statement;
|
|
246
|
+
if (signedStatement.version !== 2 || signedStatement.proofId !== statement.proofId || signedStatement.subjectAid !== statement.subjectAid || signedStatement.ownerAid !== statement.ownerAid)
|
|
247
|
+
return false;
|
|
248
|
+
if (signature.signer_aid && signature.signer_aid !== signedStatement.signerAid || signature.role && signature.role !== signedStatement.role)
|
|
249
|
+
return false;
|
|
250
|
+
const cert = parseCertMetadata(certPem), signedAt = signedStatement.signedAt * 1000;
|
|
251
|
+
if (cert.subject.toLowerCase() !== signedStatement.signerAid || signedAt < cert.notBefore.getTime() || signedAt > cert.notAfter.getTime())
|
|
252
|
+
return false;
|
|
253
|
+
if ((await certFingerprint(certPem)).toLowerCase() !== signature.cert_fingerprint.toLowerCase())
|
|
254
|
+
return false;
|
|
255
|
+
return await verifySignatureWithCert(certPem, signature.signature, signedStatement.signingBytes);
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
return false;
|
|
259
|
+
} }
|
|
260
|
+
export async function verifyOwnershipProof(proof, subjectCertPem, ownerCertPem) { validateOwnershipProof(proof, proof.statement.subjectAid, proof.statement.ownerAid); if (parseCertMetadata(subjectCertPem).subject.toLowerCase() !== proof.statement.subjectAid.toLowerCase() || !await verifyOwnershipSignature(subjectCertPem, proof.statement, proof.subject_signature))
|
|
261
|
+
return false; return proof.statement.subjectAid === proof.statement.ownerAid || !!ownerCertPem && !!proof.owner_signature && parseCertMetadata(ownerCertPem).subject.toLowerCase() === proof.statement.ownerAid.toLowerCase() && await verifyOwnershipSignature(ownerCertPem, proof.statement, proof.owner_signature); }
|
|
262
|
+
export async function verifyOwnershipFrontmatterStatus(frontmatter, subjectCertPem, ownerCertPem) { try {
|
|
263
|
+
validateOwnershipFrontmatter(frontmatter);
|
|
264
|
+
if (!Object.prototype.hasOwnProperty.call(frontmatter, 'owner')) {
|
|
265
|
+
if (frontmatter.ownership_release !== undefined)
|
|
266
|
+
return ownerCertPem && await verifyOwnershipRelease(ownerCertPem, frontmatter.ownership_release) ? 'released' : 'invalid';
|
|
267
|
+
return 'unbound';
|
|
268
|
+
}
|
|
269
|
+
const raw = (frontmatter.ownership_proof ?? {}), subjectSignature = raw.subject_signature, ownerSignature = raw.owner_signature;
|
|
270
|
+
if (!subjectSignature && !ownerSignature)
|
|
271
|
+
return 'incomplete';
|
|
272
|
+
const statement = OwnershipStatement.create(String(raw.proof_id ?? ''), String(raw.subject_aid ?? frontmatter.aid), String(raw.owner_aid ?? frontmatter.owner));
|
|
273
|
+
if (subjectSignature && (!subjectCertPem || !await verifyOwnershipSignature(subjectCertPem, statement, subjectSignature)))
|
|
274
|
+
return 'invalid';
|
|
275
|
+
if (ownerSignature && (!ownerCertPem || !await verifyOwnershipSignature(ownerCertPem, statement, ownerSignature)))
|
|
276
|
+
return 'invalid';
|
|
277
|
+
return subjectSignature && (statement.subjectAid === statement.ownerAid || ownerSignature) ? 'complete' : 'incomplete';
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
return 'invalid';
|
|
281
|
+
} }
|
|
282
|
+
export async function verifyOwnershipFrontmatter(frontmatter, subjectCertPem, ownerCertPem) { const status = await verifyOwnershipFrontmatterStatus(frontmatter, subjectCertPem, ownerCertPem); return status === 'unbound' || status === 'complete'; }
|
|
97
283
|
//# sourceMappingURL=ownership-proof.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownership-proof.js","sourceRoot":"","sources":["../src/ownership-proof.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ownership-proof.js","sourceRoot":"","sources":["../src/ownership-proof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AACpD,MAAM,WAAW,GAAG,uEAAuE,CAAC;AAC5F,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAKhD,SAAS,YAAY,CAAC,KAAiB;IACrC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,KAAK;QAAE,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC;QAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChG,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,MAAM,IAAI,eAAe,CAAC,+BAA+B,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAiB;IACtC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,SAAqB,EAAE,QAAiB;IACxE,IAAI,CAAC,SAAS,CAAC,MAAM;QAAE,MAAM,IAAI,eAAe,CAAC,uCAAuC,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACtI,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACxH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,sBAAsB,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9M,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvO,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO;QACL,QAAQ,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;QACpO,QAAQ,EAAE,MAAM;KACjB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,QAAmC,EAAE,QAAgB;IACrF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,mBAAmB,IAAI,QAAQ,CAAC,GAAG,KAAK,aAAa,IAAI,QAAQ,CAAC,GAAG,KAAK,eAAe,IAAI,QAAQ,CAAC,UAAU,KAAK,sBAAsB;QAAE,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC;IACxP,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE;QAAE,MAAM,IAAI,eAAe,CAAC,mCAAmC,CAAC,CAAC;IACzI,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACxI,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,sBAAsB,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9M,IAAI,SAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnO,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,eAAe,CAAC,yCAAyC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;QAAE,MAAM,IAAI,eAAe,CAAC,kCAAkC,CAAC,CAAC;IACxI,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,QAAiB;IACzE,OAAO,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAmC,EAAE,QAAgB;IAC5F,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAiC,EAAE,QAAiB;IACxF,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC;IACjJ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,eAAe,CAAC,uCAAuC,CAAC,CAAC;IACpM,OAAO,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAmC,EAAE,QAAgB;IACzF,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,wDAAwD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;IACzN,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,uDAAuD,CAAC,CAAC;IACpJ,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,eAAe,CAAC,mDAAmD,CAAC,CAAC;IAC1M,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,KAAiB;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,OAAO,kBAAkB;IACpB,OAAO,CAAS;IAAU,UAAU,CAAS;IAAU,QAAQ,CAAS;IAAU,aAAa,CAAa;IAAU,kBAAkB,CAAa;IAAU,SAAS,CAAS;IAAU,IAAI,CAAuB;IAAU,UAAU,CAA0B;IAAU,OAAO,CAAQ;IAAU,QAAQ,CAAQ;IAChU,YAAoB,OAAc,EAAC,UAAiB,EAAC,QAAe,EAAC,SAAS,GAAC,EAAE,EAAC,OAA0B,EAAE,EAAC,UAAkC,EAAC,OAAO,GAAC,CAAC,EAAC,QAAQ,GAAC,CAAC,IAAE,IAAI,CAAC,OAAO,GAAC,OAAO,CAAC,CAAA,IAAI,CAAC,UAAU,GAAC,UAAU,CAAC,CAAA,IAAI,CAAC,QAAQ,GAAC,QAAQ,CAAC,CAAA,IAAI,CAAC,SAAS,GAAC,SAAS,CAAC,CAAA,IAAI,CAAC,IAAI,GAAC,IAAI,CAAC,CAAA,IAAI,CAAC,UAAU,GAAC,UAAU,IAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAA,CAAC,CAAA,EAAC,GAAG,UAAU,EAAC,CAAA,CAAC,CAAA,SAAS,CAAC,CAAA,IAAI,CAAC,OAAO,GAAC,OAAO,CAAC,CAAA,IAAI,CAAC,QAAQ,GAAC,QAAQ,CAAC,CAAA,IAAI,CAAC,aAAa,GAAC,aAAa,CAAC,EAAC,WAAW,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAA,MAAM,KAAK,GAAwB,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,CAAA,IAAG,OAAO,KAAG,CAAC,EAAC,CAAC;QAAA,KAAK,CAAC,OAAO,GAAC,CAAC,CAAC;QAAA,KAAK,CAAC,UAAU,GAAC,SAAS,CAAC;QAAA,KAAK,CAAC,IAAI,GAAC,IAAI,CAAC;QAAA,KAAK,CAAC,SAAS,GAAC,QAAQ,CAAC;QAAA,IAAG,IAAI,CAAC,UAAU;YAAC,KAAK,CAAC,UAAU,GAAC,IAAI,CAAC,UAAU,CAAC;IAAA,CAAC,CAAA,IAAI,CAAC,kBAAkB,GAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA,CAAC;IAC7wB,MAAM,CAAC,MAAM,CAAC,OAAc,EAAC,UAAiB,EAAC,QAAe,IAAqB,MAAM,EAAE,GAAC,MAAM,CAAC,OAAO,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA,IAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA,IAAI,CAAQ,EAAC,CAAQ,CAAC,CAAA,IAAG,CAAC;QAAA,CAAC,GAAC,iBAAiB,CAAC,UAAU,EAAC,aAAa,CAAC,CAAC;QAAA,CAAC,GAAC,iBAAiB,CAAC,QAAQ,EAAC,WAAW,CAAC,CAAC;IAAA,CAAC;IAAA,OAAM,CAAC,EAAC,CAAC;QAAA,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,CAAA,CAAC,CAAA,CAAC,CAAC,OAAO,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;IAAA,CAAC,CAAA,OAAO,IAAI,kBAAkB,CAAC,EAAE,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAA,CAAC;IACpa,MAAM,CAAC,YAAY,CAAC,OAAc,EAAC,UAAiB,EAAC,QAAe,EAAC,OAAqG,IAAqB,MAAM,IAAI,GAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAC,UAAU,EAAC,QAAQ,CAAC,EAAC,MAAM,GAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAC,YAAY,CAAC,EAAC,QAAQ,GAAC,OAAO,CAAC,IAAI,KAAG,SAAS,CAAA,CAAC,CAAA,IAAI,CAAC,UAAU,CAAA,CAAC,CAAA,OAAO,CAAC,IAAI,KAAG,OAAO,CAAA,CAAC,CAAA,IAAI,CAAC,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAC,CAAA,IAAG,CAAC,QAAQ;QAAC,MAAM,IAAI,eAAe,CAAC,gDAAgD,CAAC,CAAC,CAAA,IAAG,MAAM,KAAG,QAAQ;QAAC,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC,CAAA,IAAG,OAAO,CAAC,UAAU,KAAG,SAAS,IAAE,CAAC,CAAC,OAAO,CAAC,UAAU,IAAE,OAAO,OAAO,CAAC,UAAU,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC,CAAA,MAAM,QAAQ,GAAC,OAAO,CAAC,QAAQ,IAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,CAAC,CAAA,IAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAE,QAAQ,IAAE,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC,CAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAC,IAAI,CAAC,UAAU,EAAC,IAAI,CAAC,QAAQ,EAAC,MAAM,EAAC,OAAO,CAAC,IAAI,EAAC,OAAO,CAAC,UAAU,EAAC,CAAC,EAAC,QAAQ,CAAC,CAAC,CAAA,CAAC;IACtjC,MAAM,CAAC,WAAW,CAAC,KAA4B,IAAqB,MAAM,OAAO,GAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAE,CAAC,CAAC,IAAE,CAAC,CAAC,CAAA,IAAG,OAAO,KAAG,CAAC,EAAC,CAAC;QAAA,IAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,IAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAE,CAAC;YAAC,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC;QAAA,OAAO,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAE,EAAE,CAAC,EAAC,EAAC,SAAS,EAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAE,EAAE,CAAC,EAAC,IAAI,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAE,EAAE,CAAsB,EAAC,UAAU,EAAC,KAAK,CAAC,UAA8C,EAAC,QAAQ,EAAC,KAAK,CAAC,SAAmB,EAAC,CAAC,CAAC;IAAA,CAAC,CAAA,OAAO,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAE,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC;IACzrB,SAAS,KAA0B,MAAM,KAAK,GAAwB,EAAC,QAAQ,EAAC,IAAI,CAAC,OAAO,EAAC,WAAW,EAAC,IAAI,CAAC,UAAU,EAAC,SAAS,EAAC,IAAI,CAAC,QAAQ,EAAC,CAAC,CAAA,IAAG,IAAI,CAAC,OAAO,KAAG,CAAC,EAAC,CAAC;QAAA,KAAK,CAAC,OAAO,GAAC,CAAC,CAAC;QAAA,KAAK,CAAC,UAAU,GAAC,IAAI,CAAC,SAAS,CAAC;QAAA,KAAK,CAAC,IAAI,GAAC,IAAI,CAAC,IAAI,CAAC;QAAA,KAAK,CAAC,SAAS,GAAC,IAAI,CAAC,QAAQ,CAAC;QAAA,IAAG,IAAI,CAAC,UAAU;YAAC,KAAK,CAAC,UAAU,GAAC,EAAC,GAAG,IAAI,CAAC,UAAU,EAAC,CAAC;IAAA,CAAC,CAAA,OAAO,KAAK,CAAC,CAAA,CAAC;IAClV,IAAI,YAAY,KAAc,MAAM,CAAC,GAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAC,CAAC,GAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,GAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAA,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,OAAO,CAAC,CAAC,CAAA,CAAC;CAChN;AAID,MAAM,UAAU,kBAAkB,CAAC,KAAc,IAAoC,OAAO,CAAC,CAAC,KAAK,IAAE,OAAO,KAAK,KAAG,QAAQ,IAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAE,MAAM,CAAE,KAAgC,CAAC,IAAI,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAG,sBAAsB,CAAC,CAAA,CAAC;AACzO,MAAM,UAAU,oBAAoB,CAAC,OAAgB,IAAgC,IAAG,CAAC,OAAO,IAAE,OAAO,OAAO,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IAAC,OAAO,IAAI,CAAC,CAAA,MAAM,MAAM,GAAC,OAAiC,CAAC,CAAA,IAAG,MAAM,CAAC,OAAO,IAAE,OAAO,MAAM,CAAC,OAAO,KAAG,QAAQ,IAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAAC,OAAO,MAAM,CAAC,OAAiC,CAAC,CAAA,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,CAAA,CAAC;AAClY,MAAM,UAAU,qBAAqB,CAAC,MAAa,EAAC,OAAgG,IAAa,MAAM,OAAO,GAAY,EAAC,IAAI,EAAC,sBAAsB,EAAC,MAAM,EAAC,MAAM,CAAC,MAAM,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAC,UAAU,EAAC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAC,WAAW,EAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAC,SAAS,EAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAC,CAAC,CAAA,KAAI,MAAM,CAAC,GAAG,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,CAAC;IAAA,IAAG,CAAC,CAAC,WAAW,EAAC,SAAS,EAAC,YAAY,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAE,KAAK,KAAG,SAAS;QAAC,OAAO,CAAC,GAAG,CAAC,GAAC,KAAkB,CAAC;AAAA,CAAC,CAAA,OAAO,OAAO,CAAC,CAAA,CAAC;AACzoB,SAAS,cAAc,CAAC,CAAoB,IAAU,OAAO,CAAC,CAAC,CAAC,IAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAE,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,IAAE,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC;AACzK,SAAS,uBAAuB,CAAC,SAA4B,EAAC,QAA2B,EAAC,cAAqB,EAAC,YAA8B,EAAC,IAAW,IAAO,IAAG,SAAS,CAAC,SAAS,KAAG,SAAS;IAAC,OAAO,CAAA,IAAG,CAAC,SAAS,CAAC,SAAS,IAAE,OAAO,SAAS,CAAC,SAAS,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC,CAAA,MAAM,SAAS,GAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA,IAAG,SAAS,CAAC,OAAO,KAAG,CAAC,IAAE,SAAS,CAAC,OAAO,KAAG,QAAQ,CAAC,OAAO,IAAE,SAAS,CAAC,UAAU,KAAG,QAAQ,CAAC,UAAU,IAAE,SAAS,CAAC,QAAQ,KAAG,QAAQ,CAAC,QAAQ;IAAC,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC,CAAA,IAAG,SAAS,CAAC,SAAS,KAAG,cAAc,IAAE,SAAS,CAAC,IAAI,KAAG,YAAY;IAAC,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,uCAAuC,CAAC,CAAC,CAAA,IAAG,SAAS,CAAC,UAAU,IAAE,SAAS,CAAC,UAAU,KAAG,SAAS,CAAC,SAAS;IAAC,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAAA,IAAG,SAAS,CAAC,IAAI,IAAE,SAAS,CAAC,IAAI,KAAG,SAAS,CAAC,IAAI;IAAC,MAAM,IAAI,eAAe,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAA,CAAC;AACrgC,MAAM,UAAU,4BAA4B,CAAC,WAAkC,EAAC,WAAmB,IAAO,MAAM,EAAE,GAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAC,OAAO,CAAC,EAAC,EAAE,GAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAC,iBAAiB,CAAC,EAAC,EAAE,GAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAC,mBAAmB,CAAC,CAAC,CAAA,IAAG,EAAE,EAAC,CAAC;IAAA,IAAG,EAAE,IAAE,EAAE;QAAC,MAAM,IAAI,eAAe,CAAC,oEAAoE,CAAC,CAAC;IAAA,wBAAwB,CAAC,WAAW,CAAC,iBAAiB,EAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAE,WAAW,IAAE,EAAE,CAAC,CAAC,CAAC;IAAA,OAAO;AAAA,CAAC,CAAA,IAAG,EAAE,IAAE,CAAC,EAAE;IAAC,MAAM,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC,CAAA,MAAM,IAAI,GAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA,IAAG,IAAI,KAAG,OAAO,IAAE,CAAC,EAAE,IAAE,EAAE,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC,CAAA,IAAG,CAAC,EAAE;IAAC,OAAO,CAAA,MAAM,GAAG,GAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAC,KAAK,CAAC,EAAC,KAAK,GAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAA,IAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAG,GAAG,IAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAG,KAAK;IAAC,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC,CAAA,IAAG,WAAW,IAAE,GAAG,KAAG,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;IAAC,MAAM,IAAI,eAAe,CAAC,mDAAmD,CAAC,CAAC,CAAA,IAAG,CAAC,EAAE;IAAC,OAAO,CAAA,IAAG,CAAC,WAAW,CAAC,eAAe,IAAE,OAAO,WAAW,CAAC,eAAe,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,mCAAmC,CAAC,CAAC,CAAA,MAAM,GAAG,GAAC,WAAW,CAAC,eAAyC,EAAC,OAAO,GAAC,IAAI,GAAG,CAAC,CAAC,UAAU,EAAC,aAAa,EAAC,WAAW,EAAC,mBAAmB,EAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA,IAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC,CAAA,IAAG,GAAG,CAAC,WAAW,KAAG,SAAS,IAAE,GAAG,CAAC,WAAW,KAAG,GAAG,IAAE,GAAG,CAAC,SAAS,KAAG,SAAS,IAAE,GAAG,CAAC,SAAS,KAAG,KAAK;IAAC,MAAM,IAAI,eAAe,CAAC,+CAA+C,CAAC,CAAC,CAAA,IAAG,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,IAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,aAAa,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,CAAA,MAAM,SAAS,GAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAE,GAAG,CAAC,EAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAE,KAAK,CAAC,CAAC,CAAC,CAAA,IAAG,mBAAmB,IAAI,GAAG,EAAC,CAAC;IAAA,MAAM,gBAAgB,GAAC,GAAG,CAAC,iBAAuC,CAAC;IAAA,IAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,kBAAkB,EAAC,WAAW,EAAC,YAAY,EAAC,MAAM,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAC;IAAA,uBAAuB,CAAC,gBAAgB,EAAC,SAAS,EAAC,GAAG,EAAC,SAAS,EAAC,mBAAmB,CAAC,CAAC;AAAA,CAAC,CAAA,IAAG,GAAG,KAAG,KAAK,EAAC,CAAC;IAAA,IAAG,iBAAiB,IAAI,GAAG;QAAC,MAAM,IAAI,eAAe,CAAC,mDAAmD,CAAC,CAAC;AAAA,CAAC;KAAK,IAAG,iBAAiB,IAAI,GAAG,EAAC,CAAC;IAAA,MAAM,cAAc,GAAC,GAAG,CAAC,eAAqC,CAAC;IAAA,IAAG,CAAC,cAAc,CAAC,cAAc,CAAC,IAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,kBAAkB,EAAC,WAAW,EAAC,YAAY,EAAC,MAAM,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,4BAA4B,CAAC,CAAC;IAAA,uBAAuB,CAAC,cAAc,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,EAAC,iBAAiB,CAAC,CAAC;AAAA,CAAC,CAAA,CAAC;AAE97F,MAAM,UAAU,+BAA+B,CAAC,OAAc,EAAC,UAAiB,EAAC,QAAe,EAAC,QAAQ,GAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,IAA4B,MAAM,QAAQ,GAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAC,UAAU,EAAC,QAAQ,CAAC,CAAC,CAAA,IAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAE,QAAQ,IAAE,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC,CAAA,OAAM,EAAC,OAAO,EAAC,CAAC,EAAC,MAAM,EAAC,SAAS,EAAC,QAAQ,EAAC,QAAQ,CAAC,OAAO,EAAC,WAAW,EAAC,QAAQ,CAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,CAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,CAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,CAAA,CAAC;AAChhB,SAAS,8BAA8B,CAAC,KAAa,IAA4B,IAAG,CAAC,KAAK,IAAE,OAAO,KAAK,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC,CAAA,MAAM,GAAG,GAAC,KAA+B,EAAC,OAAO,GAAC,IAAI,GAAG,CAAC,CAAC,SAAS,EAAC,QAAQ,EAAC,UAAU,EAAC,aAAa,EAAC,WAAW,EAAC,YAAY,EAAC,MAAM,EAAC,WAAW,CAAC,CAAC,CAAC,CAAA,IAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,qDAAqD,CAAC,CAAC,CAAA,MAAM,SAAS,GAAC,+BAA+B,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,IAAG,GAAG,CAAC,OAAO,KAAG,CAAC,IAAE,GAAG,CAAC,MAAM,KAAG,SAAS,IAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAG,SAAS,CAAC,SAAS,IAAE,GAAG,CAAC,IAAI,KAAG,OAAO;IAAC,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC,CAAA,OAAO,SAAS,CAAC,CAAA,CAAC;AACn1B,SAAS,qBAAqB,CAAC,SAAmC,IAAa,MAAM,MAAM,GAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,EAAC,SAAS,GAAC,aAAa,CAAC,SAAS,CAAC,EAAC,MAAM,GAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA,MAAM,CAAC,GAAG,CAAC,SAAS,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA,OAAO,MAAM,CAAC,CAAA,CAAC;AAC9S,SAAS,wBAAwB,CAAC,KAAa,EAAC,eAAsB,IAAmB,IAAG,CAAC,KAAK,IAAE,OAAO,KAAK,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,qCAAqC,CAAC,CAAC,CAAA,MAAM,OAAO,GAAC,KAA+B,CAAC,CAAA,IAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,kBAAkB,EAAC,WAAW,EAAC,YAAY,EAAC,MAAM,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC,CAAA,MAAM,SAAS,GAAC,OAAsC,CAAC,CAAA,IAAG,CAAC,cAAc,CAAC,SAAS,CAAC,IAAE,CAAC,SAAS,CAAC,SAAS;IAAC,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC,CAAA,MAAM,SAAS,GAAC,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA,IAAG,eAAe,IAAE,SAAS,CAAC,WAAW,KAAG,eAAe,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;IAAC,MAAM,IAAI,eAAe,CAAC,uDAAuD,CAAC,CAAC,CAAA,IAAG,SAAS,CAAC,UAAU,IAAE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAG,SAAS,CAAC,SAAS;IAAC,MAAM,IAAI,eAAe,CAAC,+CAA+C,CAAC,CAAC,CAAA,IAAG,SAAS,CAAC,IAAI,IAAE,SAAS,CAAC,IAAI,KAAG,OAAO;IAAC,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC,CAAA,SAAS,CAAC,SAAS,GAAC,SAAS,CAAC,CAAA,OAAO,SAAS,CAAC,CAAA,CAAC;AAChpC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAmI,EAAC,SAAmC,IAA4B,MAAM,MAAM,GAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,IAAG,CAAC,MAAM,CAAC,EAAE,IAAE,CAAC,MAAM,CAAC,IAAI;IAAC,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAE,oCAAoC,CAAC,CAAC,CAAA,IAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC,CAAA,OAAM,EAAC,gBAAgB,EAAC,GAAG,CAAC,eAAe,EAAC,SAAS,EAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAC,UAAU,EAAC,SAAS,CAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,CAAC,CAAA,CAAC;AACppB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAc,EAAC,KAAa,IAAmB,IAAG,CAAC;IAAA,MAAM,OAAO,GAAC,wBAAwB,CAAC,KAAK,EAAC,EAAE,CAAC,EAAC,SAAS,GAAC,OAAO,CAAC,SAAS,EAAC,IAAI,GAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAG,SAAS,CAAC,SAAS,IAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAE,SAAS,CAAC,SAAS,GAAC,IAAI,IAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAE,SAAS,CAAC,SAAS,GAAC,IAAI,IAAE,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,KAAG,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAE,MAAM,uBAAuB,CAAC,OAAO,EAAC,OAAO,CAAC,SAAS,EAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AAAA,CAAC;AAAA,MAAK,CAAC;IAAA,OAAO,KAAK,CAAC;AAAA,CAAC,CAAA,CAAC;AACtjB,MAAM,UAAU,sBAAsB,CAAC,KAAoB,EAAC,eAAsB,EAAC,aAAoB,IAAO,IAAI,CAAQ,EAAC,CAAQ,CAAC,CAAA,IAAG,CAAC;IAAA,CAAC,GAAC,iBAAiB,CAAC,eAAe,EAAC,aAAa,CAAC,CAAC;IAAA,CAAC,GAAC,iBAAiB,CAAC,aAAa,EAAC,WAAW,CAAC,CAAC;AAAA,CAAC;AAAA,OAAM,CAAC,EAAC,CAAC;IAAA,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,CAAA,CAAC,CAAA,CAAC,CAAC,OAAO,CAAA,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;AAAA,CAAC,CAAA,IAAG,KAAK,CAAC,SAAS,CAAC,UAAU,KAAG,CAAC,IAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAG,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,2DAA2D,CAAC,CAAC,CAAA,IAAG,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAC,CAAA,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,EAAC,KAAK,CAAC,SAAS,EAAC,CAAC,EAAC,SAAS,EAAC,mBAAmB,CAAC,CAAC,CAAA,IAAG,CAAC,KAAG,CAAC,EAAC,CAAC;IAAA,IAAG,KAAK,CAAC,eAAe;QAAC,MAAM,IAAI,eAAe,CAAC,mDAAmD,CAAC,CAAC;AAAA,CAAC;KAAK,IAAG,CAAC,KAAK,CAAC,eAAe,IAAE,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;;IAAK,uBAAuB,CAAC,KAAK,CAAC,eAAe,EAAC,KAAK,CAAC,SAAS,EAAC,CAAC,EAAC,OAAO,EAAC,iBAAiB,CAAC,CAAC,CAAA,CAAC;AACz+B,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAmI,EAAC,SAA4B,IAA8B,MAAM,GAAG,GAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA,IAAG,CAAC,GAAG,CAAC,EAAE,IAAE,CAAC,GAAG,CAAC,IAAI;IAAC,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAE,4BAA4B,CAAC,CAAC,CAAA,IAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;IAAC,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC,CAAA,OAAM,EAAC,gBAAgB,EAAC,GAAG,CAAC,eAAe,EAAC,SAAS,EAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAC,GAAG,CAAC,SAAS,CAAC,OAAO,KAAG,CAAC,CAAA,CAAC,CAAA,EAAC,UAAU,EAAC,SAAS,CAAC,SAAS,EAAC,IAAI,EAAC,SAAS,CAAC,IAAyB,EAAC,SAAS,EAAC,SAAS,CAAC,SAAS,EAAE,EAAC,CAAA,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAA,CAAC;AACnsB,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAc,EAAC,SAA4B,EAAC,SAA4B,IAAmB,IAAG,CAAC,cAAc,CAAC,SAAS,CAAC;IAAC,OAAO,KAAK,CAAC,CAAA,IAAG,CAAC;IAAA,MAAM,eAAe,GAAC,SAAS,CAAC,SAAS,CAAA,CAAC,CAAA,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,CAAC,CAAA,SAAS,CAAC;IAAA,IAAG,eAAe,CAAC,OAAO,KAAG,CAAC,IAAE,eAAe,CAAC,OAAO,KAAG,SAAS,CAAC,OAAO,IAAE,eAAe,CAAC,UAAU,KAAG,SAAS,CAAC,UAAU,IAAE,eAAe,CAAC,QAAQ,KAAG,SAAS,CAAC,QAAQ;QAAC,OAAO,KAAK,CAAC;IAAA,IAAG,SAAS,CAAC,UAAU,IAAE,SAAS,CAAC,UAAU,KAAG,eAAe,CAAC,SAAS,IAAE,SAAS,CAAC,IAAI,IAAE,SAAS,CAAC,IAAI,KAAG,eAAe,CAAC,IAAI;QAAC,OAAO,KAAK,CAAC;IAAA,MAAM,IAAI,GAAC,iBAAiB,CAAC,OAAO,CAAC,EAAC,QAAQ,GAAC,eAAe,CAAC,QAAQ,GAAC,IAAI,CAAC;IAAA,IAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAG,eAAe,CAAC,SAAS,IAAE,QAAQ,GAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAE,QAAQ,GAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;QAAC,OAAO,KAAK,CAAC;IAAA,IAAG,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,KAAG,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE;QAAC,OAAO,KAAK,CAAC;IAAA,OAAO,MAAM,uBAAuB,CAAC,OAAO,EAAC,SAAS,CAAC,SAAS,EAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AAAA,CAAC;AAAA,MAAK,CAAC;IAAA,OAAO,KAAK,CAAC;AAAA,CAAC,CAAA,CAAC;AACliC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAoB,EAAC,cAAqB,EAAC,YAAoB,IAAmB,sBAAsB,CAAC,KAAK,EAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA,IAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,IAAE,CAAC,MAAM,wBAAwB,CAAC,cAAc,EAAC,KAAK,CAAC,SAAS,EAAC,KAAK,CAAC,iBAAiB,CAAC;IAAC,OAAO,KAAK,CAAC,CAAA,OAAO,KAAK,CAAC,SAAS,CAAC,UAAU,KAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,IAAE,CAAC,CAAC,YAAY,IAAE,CAAC,CAAC,KAAK,CAAC,eAAe,IAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAE,MAAM,wBAAwB,CAAC,YAAY,EAAC,KAAK,CAAC,SAAS,EAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA,CAAC;AACtrB,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,WAAkC,EAAC,cAAsB,EAAC,YAAoB,IAAuC,IAAG,CAAC;IAAA,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAAA,IAAG,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAC,OAAO,CAAC,EAAC,CAAC;QAAA,IAAG,WAAW,CAAC,iBAAiB,KAAG,SAAS;YAAC,OAAO,YAAY,IAAE,MAAM,sBAAsB,CAAC,YAAY,EAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,SAAS,CAAC;QAAA,OAAO,SAAS,CAAC;IAAA,CAAC;IAAA,MAAM,GAAG,GAAC,CAAC,WAAW,CAAC,eAAe,IAAE,EAAE,CAA2B,EAAC,gBAAgB,GAAC,GAAG,CAAC,iBAAiD,EAAC,cAAc,GAAC,GAAG,CAAC,eAA+C,CAAC;IAAA,IAAG,CAAC,gBAAgB,IAAE,CAAC,cAAc;QAAC,OAAO,YAAY,CAAC;IAAA,MAAM,SAAS,GAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAE,EAAE,CAAC,EAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAAA,IAAG,gBAAgB,IAAE,CAAC,CAAC,cAAc,IAAE,CAAC,MAAM,wBAAwB,CAAC,cAAc,EAAC,SAAS,EAAC,gBAAgB,CAAC,CAAC;QAAC,OAAO,SAAS,CAAC;IAAA,IAAG,cAAc,IAAE,CAAC,CAAC,YAAY,IAAE,CAAC,MAAM,wBAAwB,CAAC,YAAY,EAAC,SAAS,EAAC,cAAc,CAAC,CAAC;QAAC,OAAO,SAAS,CAAC;IAAA,OAAO,gBAAgB,IAAE,CAAC,SAAS,CAAC,UAAU,KAAG,SAAS,CAAC,QAAQ,IAAE,cAAc,CAAC,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,YAAY,CAAC;AAAA,CAAC;AAAA,MAAK,CAAC;IAAA,OAAO,SAAS,CAAC;AAAA,CAAC,CAAA,CAAC;AAClvC,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,WAAkC,EAAC,cAAqB,EAAC,YAAoB,IAAmB,MAAM,MAAM,GAAC,MAAM,gCAAgC,CAAC,WAAW,EAAC,cAAc,EAAC,YAAY,CAAC,CAAC,CAAA,OAAO,MAAM,KAAG,SAAS,IAAE,MAAM,KAAG,UAAU,CAAC,CAAA,CAAC"}
|