@inco/js 0.8.0-devnet-6 → 0.8.0-devnet-8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/advancedacl/session-key.d.ts +10 -9
- package/dist/cjs/advancedacl/session-key.js +7 -8
- package/dist/cjs/attestedcompute/attested-compute.d.ts +2 -2
- package/dist/cjs/attestedcompute/attested-compute.js +2 -2
- package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +3 -3
- package/dist/cjs/attesteddecrypt/attested-decrypt.js +5 -5
- package/dist/cjs/encryption/encryption.d.ts +8 -10
- package/dist/cjs/encryption/encryption.js +2 -5
- package/dist/cjs/generated/abis/lightning-preview.d.ts +56 -0
- package/dist/cjs/generated/abis/lightning-preview.js +51 -1
- package/dist/cjs/generated/abis/lightning.d.ts +74 -4
- package/dist/cjs/generated/abis/lightning.js +65 -3
- package/dist/cjs/generated/abis/verifier.d.ts +6 -20
- package/dist/cjs/generated/abis/verifier.js +6 -21
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +234 -7
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +86 -10
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +0 -6
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +2 -8
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +213 -0
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +36 -11
- package/dist/cjs/handle.js +3 -3
- package/dist/cjs/kms/quorumClient.d.ts +3 -2
- package/dist/cjs/kms/quorumClient.js +30 -27
- package/dist/cjs/lite/index.d.ts +1 -2
- package/dist/cjs/lite/index.js +5 -18
- package/dist/cjs/lite/lightning.d.ts +16 -16
- package/dist/cjs/lite/lightning.js +28 -39
- package/dist/cjs/lite/xwing.d.ts +5 -1
- package/dist/cjs/lite/xwing.js +10 -5
- package/dist/cjs/reencryption/types.d.ts +2 -2
- package/dist/esm/advancedacl/session-key.d.ts +10 -9
- package/dist/esm/advancedacl/session-key.js +7 -8
- package/dist/esm/attestedcompute/attested-compute.d.ts +2 -2
- package/dist/esm/attestedcompute/attested-compute.js +2 -2
- package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +3 -3
- package/dist/esm/attesteddecrypt/attested-decrypt.js +3 -3
- package/dist/esm/encryption/encryption.d.ts +8 -10
- package/dist/esm/encryption/encryption.js +2 -5
- package/dist/esm/generated/abis/lightning-preview.d.ts +56 -0
- package/dist/esm/generated/abis/lightning-preview.js +51 -1
- package/dist/esm/generated/abis/lightning.d.ts +74 -4
- package/dist/esm/generated/abis/lightning.js +65 -3
- package/dist/esm/generated/abis/verifier.d.ts +6 -20
- package/dist/esm/generated/abis/verifier.js +6 -21
- package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +234 -7
- package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +85 -9
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +0 -6
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +2 -8
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +213 -0
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +35 -10
- package/dist/esm/handle.js +3 -3
- package/dist/esm/kms/quorumClient.d.ts +3 -2
- package/dist/esm/kms/quorumClient.js +30 -27
- package/dist/esm/lite/index.d.ts +1 -2
- package/dist/esm/lite/index.js +2 -5
- package/dist/esm/lite/lightning.d.ts +16 -16
- package/dist/esm/lite/lightning.js +29 -40
- package/dist/esm/lite/xwing.d.ts +5 -1
- package/dist/esm/lite/xwing.js +9 -4
- package/dist/esm/reencryption/types.d.ts +2 -2
- package/dist/types/advancedacl/session-key.d.ts +10 -9
- package/dist/types/attestedcompute/attested-compute.d.ts +2 -2
- package/dist/types/attesteddecrypt/attested-decrypt.d.ts +3 -3
- package/dist/types/encryption/encryption.d.ts +8 -10
- package/dist/types/generated/abis/lightning-preview.d.ts +56 -0
- package/dist/types/generated/abis/lightning.d.ts +74 -4
- package/dist/types/generated/abis/verifier.d.ts +6 -20
- package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +234 -7
- package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +0 -6
- package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +213 -0
- package/dist/types/kms/quorumClient.d.ts +3 -2
- package/dist/types/lite/index.d.ts +1 -2
- package/dist/types/lite/lightning.d.ts +16 -16
- package/dist/types/lite/xwing.d.ts +5 -1
- package/dist/types/reencryption/types.d.ts +2 -2
- package/package.json +3 -6
- package/dist/cjs/lite/ecies.d.ts +0 -26
- package/dist/cjs/lite/ecies.js +0 -146
- package/dist/esm/lite/ecies.d.ts +0 -26
- package/dist/esm/lite/ecies.js +0 -134
- package/dist/types/lite/ecies.d.ts +0 -26
|
@@ -17,11 +17,15 @@ const index_js_2 = require("../index.js");
|
|
|
17
17
|
const quorumClient_js_1 = require("../kms/quorumClient.js");
|
|
18
18
|
const index_js_3 = require("../local/index.js");
|
|
19
19
|
const schema_js_1 = require("../schema.js");
|
|
20
|
-
const ecies_js_1 = require("./ecies.js");
|
|
21
20
|
const xwing_js_1 = require("./xwing.js");
|
|
22
21
|
const DefaultPepper = 'testnet';
|
|
23
|
-
function
|
|
24
|
-
return !!value &&
|
|
22
|
+
function isXwingKeypair(value) {
|
|
23
|
+
return (!!value &&
|
|
24
|
+
typeof value === 'object' &&
|
|
25
|
+
'publicKey' in value &&
|
|
26
|
+
'privateKey' in value &&
|
|
27
|
+
'encodePublicKey' in value &&
|
|
28
|
+
typeof value.encodePublicKey === 'function');
|
|
25
29
|
}
|
|
26
30
|
function isLocalNodeEnvFileSource(value) {
|
|
27
31
|
return (!!value &&
|
|
@@ -42,7 +46,6 @@ class Lightning {
|
|
|
42
46
|
executorAddress;
|
|
43
47
|
chainId;
|
|
44
48
|
kmsQuorumClient;
|
|
45
|
-
ephemeralKeypair;
|
|
46
49
|
encryptor = null;
|
|
47
50
|
encryptionScheme = null;
|
|
48
51
|
constructor(_deployment, covalidatorUrls, signers, threshold, networkPubkey) {
|
|
@@ -53,27 +56,13 @@ class Lightning {
|
|
|
53
56
|
this.networkPubkey = networkPubkey;
|
|
54
57
|
this.executorAddress = (0, binary_js_1.parseAddress)(_deployment.executorAddress);
|
|
55
58
|
this.chainId = BigInt(_deployment.chainId);
|
|
56
|
-
this.ephemeralKeypair = (0, ecies_js_1.generateSecp256k1Keypair)();
|
|
57
59
|
this.kmsQuorumClient = quorumClient_js_1.KmsQuorumClient.fromUrls(this.covalidatorUrls, this.signers, this.threshold);
|
|
58
60
|
}
|
|
59
61
|
async getEncryptor() {
|
|
60
62
|
if (!this.encryptor || !this.encryptionScheme) {
|
|
61
63
|
const pubKeyBytes = (0, viem_1.hexToBytes)((0, schema_js_1.parse)(binary_js_1.HexString, this.networkPubkey));
|
|
62
64
|
// Detect encryption scheme based on public key length
|
|
63
|
-
|
|
64
|
-
// X-Wing: 1216 bytes
|
|
65
|
-
if (pubKeyBytes.length === 33) {
|
|
66
|
-
// ECIES encryption
|
|
67
|
-
const pubKeyA = (0, ecies_js_1.decodeSecp256k1PublicKey)(pubKeyBytes);
|
|
68
|
-
// Safe cast: ECIES encryptor processes plaintexts with scheme=1,
|
|
69
|
-
// and we ensure scheme matches when calling encrypt()
|
|
70
|
-
this.encryptor = (0, ecies_js_1.getEciesEncryptor)({
|
|
71
|
-
pubKeyA,
|
|
72
|
-
privKeyB: this.ephemeralKeypair,
|
|
73
|
-
});
|
|
74
|
-
this.encryptionScheme = index_js_1.encryptionSchemes.ecies;
|
|
75
|
-
}
|
|
76
|
-
else if (pubKeyBytes.length === 1216) {
|
|
65
|
+
if (pubKeyBytes.length === xwing_js_1.XWING_PUBLIC_KEY_SIZE) {
|
|
77
66
|
// X-Wing encryption
|
|
78
67
|
const pubKeyA = await (0, xwing_js_1.decodeXwingPublicKey)(pubKeyBytes);
|
|
79
68
|
// Safe cast: X-Wing encryptor processes plaintexts with scheme=2,
|
|
@@ -82,7 +71,7 @@ class Lightning {
|
|
|
82
71
|
this.encryptionScheme = index_js_1.encryptionSchemes.xwing;
|
|
83
72
|
}
|
|
84
73
|
else {
|
|
85
|
-
throw new Error(`Invalid network public key length: expected
|
|
74
|
+
throw new Error(`Invalid network public key length: expected ${xwing_js_1.XWING_PUBLIC_KEY_SIZE} (X-Wing), got ${pubKeyBytes.length}`);
|
|
86
75
|
}
|
|
87
76
|
}
|
|
88
77
|
return { encryptor: this.encryptor, scheme: this.encryptionScheme };
|
|
@@ -352,12 +341,12 @@ class Lightning {
|
|
|
352
341
|
updateActiveVouchersSessionNonce(walletClient) {
|
|
353
342
|
return (0, session_key_js_1.updateActiveVouchersSessionNonce)(this.executorAddress, walletClient);
|
|
354
343
|
}
|
|
355
|
-
attestedDecrypt(walletClient, handles, arg3, arg4, arg5) {
|
|
344
|
+
async attestedDecrypt(walletClient, handles, arg3, arg4, arg5) {
|
|
356
345
|
if (arg3 instanceof Uint8Array) {
|
|
357
346
|
const reencryptPubKey = arg3;
|
|
358
347
|
let reencryptKeypair;
|
|
359
348
|
let backoffConfig;
|
|
360
|
-
if (arg4 &&
|
|
349
|
+
if (arg4 && isXwingKeypair(arg4)) {
|
|
361
350
|
reencryptKeypair = arg4;
|
|
362
351
|
backoffConfig = arg5;
|
|
363
352
|
}
|
|
@@ -387,7 +376,7 @@ class Lightning {
|
|
|
387
376
|
});
|
|
388
377
|
}
|
|
389
378
|
const backoffConfig = arg3;
|
|
390
|
-
const reencryptKeypair = (0,
|
|
379
|
+
const reencryptKeypair = await (0, xwing_js_1.generateXwingKeypair)();
|
|
391
380
|
const reencryptPubKey = reencryptKeypair.encodePublicKey();
|
|
392
381
|
return (0, attested_decrypt_js_1.attestedDecrypt)({
|
|
393
382
|
handles,
|
|
@@ -400,13 +389,13 @@ class Lightning {
|
|
|
400
389
|
reencryptKeypair,
|
|
401
390
|
});
|
|
402
391
|
}
|
|
403
|
-
attestedDecryptWithVoucher(
|
|
392
|
+
async attestedDecryptWithVoucher(ephemeralAccount, allowanceVoucherWithSig, ethClient, handles, arg4, arg5, arg6, arg7) {
|
|
404
393
|
if (arg4 instanceof Uint8Array) {
|
|
405
394
|
const reencryptPubKey = arg4;
|
|
406
395
|
let reencryptKeypair;
|
|
407
396
|
let requesterArgData;
|
|
408
397
|
let backoffConfig;
|
|
409
|
-
if (arg5 &&
|
|
398
|
+
if (arg5 && isXwingKeypair(arg5)) {
|
|
410
399
|
reencryptKeypair = arg5;
|
|
411
400
|
requesterArgData = arg6;
|
|
412
401
|
backoffConfig = arg7;
|
|
@@ -420,7 +409,7 @@ class Lightning {
|
|
|
420
409
|
backoffConfig,
|
|
421
410
|
chainId: Number(this.chainId),
|
|
422
411
|
kmsQuorumClient: this.kmsQuorumClient,
|
|
423
|
-
|
|
412
|
+
ephemeralAccount,
|
|
424
413
|
allowanceVoucherWithSig,
|
|
425
414
|
handles,
|
|
426
415
|
requesterArgData,
|
|
@@ -434,7 +423,7 @@ class Lightning {
|
|
|
434
423
|
backoffConfig,
|
|
435
424
|
chainId: Number(this.chainId),
|
|
436
425
|
kmsQuorumClient: this.kmsQuorumClient,
|
|
437
|
-
|
|
426
|
+
ephemeralAccount,
|
|
438
427
|
allowanceVoucherWithSig,
|
|
439
428
|
handles,
|
|
440
429
|
requesterArgData,
|
|
@@ -445,13 +434,13 @@ class Lightning {
|
|
|
445
434
|
}
|
|
446
435
|
const requesterArgData = arg4;
|
|
447
436
|
const backoffConfig = arg5;
|
|
448
|
-
const reencryptKeypair = (0,
|
|
437
|
+
const reencryptKeypair = await (0, xwing_js_1.generateXwingKeypair)();
|
|
449
438
|
const reencryptPubKey = reencryptKeypair.encodePublicKey();
|
|
450
439
|
return (0, session_key_js_1.sessionKeyAttestedDecrypt)({
|
|
451
440
|
backoffConfig,
|
|
452
441
|
chainId: Number(this.chainId),
|
|
453
442
|
kmsQuorumClient: this.kmsQuorumClient,
|
|
454
|
-
|
|
443
|
+
ephemeralAccount,
|
|
455
444
|
allowanceVoucherWithSig,
|
|
456
445
|
handles,
|
|
457
446
|
requesterArgData,
|
|
@@ -461,13 +450,13 @@ class Lightning {
|
|
|
461
450
|
reencryptKeypair,
|
|
462
451
|
});
|
|
463
452
|
}
|
|
464
|
-
attestedCompute(walletClient, lhsHandle, op, rhsPlaintext, arg5, arg6, arg7) {
|
|
453
|
+
async attestedCompute(walletClient, lhsHandle, op, rhsPlaintext, arg5, arg6, arg7) {
|
|
465
454
|
// Reencrypt path (with or without local keypair)
|
|
466
455
|
if (arg5 instanceof Uint8Array) {
|
|
467
456
|
const reencryptPubKey = arg5;
|
|
468
457
|
let reencryptKeypair;
|
|
469
458
|
let backoffConfig;
|
|
470
|
-
if (arg6 &&
|
|
459
|
+
if (arg6 && isXwingKeypair(arg6)) {
|
|
471
460
|
reencryptKeypair = arg6;
|
|
472
461
|
backoffConfig = arg7;
|
|
473
462
|
}
|
|
@@ -502,7 +491,7 @@ class Lightning {
|
|
|
502
491
|
}
|
|
503
492
|
// Plaintext path
|
|
504
493
|
const backoffConfig = arg5;
|
|
505
|
-
const reencryptKeypair = (0,
|
|
494
|
+
const reencryptKeypair = await (0, xwing_js_1.generateXwingKeypair)();
|
|
506
495
|
const reencryptPubKey = reencryptKeypair.encodePublicKey();
|
|
507
496
|
return (0, attested_compute_js_1.attestedCompute)({
|
|
508
497
|
executorAddress: this.executorAddress,
|
|
@@ -517,14 +506,14 @@ class Lightning {
|
|
|
517
506
|
backoffConfig,
|
|
518
507
|
});
|
|
519
508
|
}
|
|
520
|
-
attestedComputeWithVoucher(
|
|
509
|
+
async attestedComputeWithVoucher(ephemeralAccount, allowanceVoucherWithSig, ethClient, lhsHandle, op, rhsPlaintext, arg6, arg7, arg8, arg9) {
|
|
521
510
|
// Reencrypt path (with or without local keypair)
|
|
522
511
|
if (arg6 instanceof Uint8Array) {
|
|
523
512
|
const reencryptPubKey = arg6;
|
|
524
513
|
let reencryptKeypair;
|
|
525
514
|
let requesterArgData;
|
|
526
515
|
let backoffConfig;
|
|
527
|
-
if (arg7 &&
|
|
516
|
+
if (arg7 && isXwingKeypair(arg7)) {
|
|
528
517
|
reencryptKeypair = arg7;
|
|
529
518
|
requesterArgData = arg8;
|
|
530
519
|
backoffConfig = arg9;
|
|
@@ -537,7 +526,7 @@ class Lightning {
|
|
|
537
526
|
return (0, session_key_js_1.sessionKeyAttestedCompute)({
|
|
538
527
|
chainId: Number(this.chainId),
|
|
539
528
|
kmsQuorumClient: this.kmsQuorumClient,
|
|
540
|
-
|
|
529
|
+
ephemeralAccount,
|
|
541
530
|
allowanceVoucherWithSig,
|
|
542
531
|
lhsHandle,
|
|
543
532
|
op,
|
|
@@ -553,7 +542,7 @@ class Lightning {
|
|
|
553
542
|
return (0, session_key_js_1.sessionKeyAttestedCompute)({
|
|
554
543
|
chainId: Number(this.chainId),
|
|
555
544
|
kmsQuorumClient: this.kmsQuorumClient,
|
|
556
|
-
|
|
545
|
+
ephemeralAccount,
|
|
557
546
|
allowanceVoucherWithSig,
|
|
558
547
|
lhsHandle,
|
|
559
548
|
op,
|
|
@@ -568,12 +557,12 @@ class Lightning {
|
|
|
568
557
|
// Plaintext path
|
|
569
558
|
const requesterArgData = arg6;
|
|
570
559
|
const backoffConfig = arg7;
|
|
571
|
-
const reencryptKeypair = (0,
|
|
560
|
+
const reencryptKeypair = await (0, xwing_js_1.generateXwingKeypair)();
|
|
572
561
|
const reencryptPubKey = reencryptKeypair.encodePublicKey();
|
|
573
562
|
return (0, session_key_js_1.sessionKeyAttestedCompute)({
|
|
574
563
|
chainId: Number(this.chainId),
|
|
575
564
|
kmsQuorumClient: this.kmsQuorumClient,
|
|
576
|
-
|
|
565
|
+
ephemeralAccount,
|
|
577
566
|
allowanceVoucherWithSig,
|
|
578
567
|
lhsHandle,
|
|
579
568
|
op,
|
|
@@ -737,4 +726,4 @@ class Lightning {
|
|
|
737
726
|
}
|
|
738
727
|
}
|
|
739
728
|
exports.Lightning = Lightning;
|
|
740
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQVljO0FBQ2Qsd0NBQTBDO0FBQzFDLGtFQU11QztBQUV2QyxnRkFBbUc7QUFFbkcsZ0ZBQXlFO0FBS3pFLDRDQUFnRTtBQUVoRSxxREFNZ0M7QUFDaEMsaUVBQWtFO0FBQ2xFLCtEQUFnRTtBQUNoRSw0REFBaUU7QUFDakUsOERBQXNFO0FBQ3RFLDRDQUFvRDtBQUNwRCwwQ0FBMkM7QUFDM0MsNERBQXlEO0FBQ3pELGdEQUFnRTtBQUVoRSw0Q0FBcUM7QUFDckMseUNBS29CO0FBQ3BCLHlDQUlvQjtBQTZCcEIsTUFBTSxhQUFhLEdBQW9CLFNBQVMsQ0FBQztBQUVqRCxTQUFTLGtCQUFrQixDQUFDLEtBQWM7SUFDeEMsT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDO0FBQy9ELENBQUM7QUF3Q0QsU0FBUyx3QkFBd0IsQ0FDL0IsS0FBMkQ7SUFFM0QsT0FBTyxDQUNMLENBQUMsQ0FBQyxLQUFLO1FBQ1AsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixVQUFVLElBQUksS0FBSztRQUNuQixPQUFRLEtBQWlDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FDaEUsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFNBQVM7SUFVRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBYkgsZUFBZSxDQUFVO0lBQ3pCLE9BQU8sQ0FBUztJQUVmLGVBQWUsQ0FBa0I7SUFDakMsZ0JBQWdCLENBQW1CO0lBQzVDLFNBQVMsR0FBcUIsSUFBSSxDQUFDO0lBQ25DLGdCQUFnQixHQUE0QixJQUFJLENBQUM7SUFFekQsWUFDbUIsV0FBYyxFQUNkLGVBQXlCLEVBQ3pCLE9BQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLGFBQXdCO1FBSnhCLGdCQUFXLEdBQVgsV0FBVyxDQUFHO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQVU7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUNsQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFXO1FBRXpDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBQSx3QkFBWSxFQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLGlDQUFlLENBQUMsUUFBUSxDQUM3QyxJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWTtRQUl4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUEsaUJBQVUsRUFBQyxJQUFBLGlCQUFLLEVBQUMscUJBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUVyRSxzREFBc0Q7WUFDdEQsb0RBQW9EO1lBQ3BELHFCQUFxQjtZQUNyQixJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzlCLG1CQUFtQjtnQkFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBQSxtQ0FBd0IsRUFBQyxXQUFXLENBQUMsQ0FBQztnQkFDdEQsaUVBQWlFO2dCQUNqRSxzREFBc0Q7Z0JBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBQSw0QkFBaUIsRUFBQztvQkFDakMsT0FBTztvQkFDUCxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtpQkFDaEMsQ0FBYyxDQUFDO2dCQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsNEJBQWlCLENBQUMsS0FBSyxDQUFDO1lBQ2xELENBQUM7aUJBQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN2QyxvQkFBb0I7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwrQkFBb0IsRUFBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsa0VBQWtFO2dCQUNsRSxzREFBc0Q7Z0JBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBQSw0QkFBaUIsRUFBQyxFQUFFLE9BQU8sRUFBRSxDQUFjLENBQUM7Z0JBQzdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyw0QkFBaUIsQ0FBQyxLQUFLLENBQUM7WUFDbEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FDckcsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxtQkFBbUI7UUFDdkIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCO1FBQzdCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsb0JBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDcEIsR0FBb0M7UUFFcEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxNQUFNLEdBQUcsd0NBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkQsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUN0QixHQUFHLE1BQU07Z0JBQ1QsZUFBZSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO2dCQUM1QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQVksRUFBQyxDQUFDLENBQUMsQ0FBQzthQUNwRCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixNQUFNLE1BQU0sR0FBRyx3Q0FBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLEdBQUcsTUFBTTtnQkFDVCxlQUFlLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7Z0JBQzVDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBWSxFQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3BELENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyx3Q0FBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVyRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsc0VBQXNFO1lBQ3RFLE9BQU8sRUFBRSxHQUFHLENBQUMseUJBQXlCO2dCQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2hCLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZTtnQkFDbEMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzdCLE9BQU8sRUFBRSxHQUFHLENBQUMscUJBQXFCO2dCQUNoQyxDQUFDLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNuRCxJQUFBLHdCQUFZLEVBQUMsT0FBTyxDQUFDLENBQ3RCO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBWSxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLGVBQWUsRUFDYixHQUFHLENBQUMsOEJBQThCO2dCQUNsQyxJQUFJLENBQUMsZUFBZTtnQkFDcEIsdUJBQXVCO1lBQ3pCLHVDQUF1QztZQUN2QyxlQUFlLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtZQUNyQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsa0JBQWtCO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsTUFBaUQ7UUFFakQsSUFBSSxVQUF1QyxDQUFDO1FBQzVDLElBQUksd0JBQXdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQzlELE1BQU0sSUFBSSxLQUFLLENBQ2IscUZBQXFGLENBQ3RGLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLDJDQUFhLGFBQWEsRUFBQyxDQUFDO1lBQ2pELFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFBLHdCQUFhLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsT0FBTyxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFnQjtRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxDQUFDLENBQUMsbUNBQW9CLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FDdEQ7WUFDSCxDQUFDLENBQUMsbUNBQW9CLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLGVBQWUsS0FBSyxFQUFFLENBQUMsZUFBZTtnQkFDeEMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUMsT0FBTyxDQUMzQixDQUFDO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFBLHVCQUFZLEVBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxNQUFNLEdBQUcsSUFBQSx5QkFBa0IsRUFBQztZQUNoQyxLQUFLO1lBQ0wsU0FBUyxFQUFFLElBQUEsV0FBSSxHQUFFO1NBQ2xCLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUN6QyxNQUFNLFNBQVMsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJELE9BQU8sSUFBSSxTQUFTLENBQ2xCLFVBQVUsRUFDVixTQUFTLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUNuRCxPQUFPLEVBQ1AsU0FBUyxFQUNULGFBQWEsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2pCLE1BQVM7UUFFVCxNQUFNLEtBQUssR0FBRyxJQUFBLHVCQUFZLEVBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBQSx5QkFBa0IsRUFBQztZQUNoQyxLQUFLO1lBQ0wsU0FBUyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUEsV0FBSSxFQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxXQUFJLEdBQUU7U0FDMUUsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQ3pDLE1BQU0sU0FBUyxDQUFDLDBCQUEwQixDQUN4QyxNQUFNLENBQUMsZUFBMEIsRUFDakMsTUFBTSxDQUNQLENBQUM7UUFFSixPQUFPLElBQUksU0FBUyxDQUNsQixNQUFNLEVBQ04sTUFBTSxDQUFDLGVBQWUsRUFDdEIsT0FBTyxFQUNQLFNBQVMsRUFDVCxhQUFhLENBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLE1BQVMsRUFDVCxPQUFnQjtRQUVoQixzRUFBc0U7UUFDdEUsTUFBTSxjQUFjLEdBQUcsbUNBQW9CLENBQUMsSUFBSSxDQUM5QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQ3BELENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsNEdBQTRHO1lBQzVHLHdCQUF3QjtZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUNqQixNQUFTLEVBQ1QsT0FBZ0I7UUFFaEIsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUNYLEtBQVEsRUFDUixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFxQjtRQUU5RCxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQztZQUNyQyxTQUFTLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDO1lBQ2xFLE9BQU8sRUFBRTtnQkFDUCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDaEMsV0FBVyxFQUFFLElBQUEsd0JBQVksRUFBQyxjQUFjLENBQUM7Z0JBQ3pDLGVBQWUsRUFBRSxJQUFBLHdCQUFZLEVBQUMsV0FBVyxDQUFDO2dCQUMxQyxPQUFPLEVBQUUsTUFBTTthQUNoQjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FzQkc7SUFDSCwrQkFBK0IsQ0FDN0IsWUFBcUQsRUFDckQsY0FBc0IsRUFDdEIsU0FBZSxFQUNmLHNCQUE4QjtRQUU5QixPQUFPLElBQUEsZ0NBQWUsRUFBQztZQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLDhCQUE4QixFQUFFLElBQUEsd0JBQVksRUFBQyxzQkFBc0IsQ0FBQztZQUNwRSxjQUFjLEVBQUUsSUFBQSx3QkFBWSxFQUFDLGNBQWMsQ0FBQztZQUM1QyxrQkFBa0IsRUFBRSxZQUFZO1lBQ2hDLFNBQVM7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F5Qkc7SUFDSCxxQ0FBcUMsQ0FDbkMsWUFBcUQsRUFDckQsc0JBQThCLEVBQzlCLGFBQXdCO1FBRXhCLE9BQU8sSUFBQSw4Q0FBNkIsRUFBQztZQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLDhCQUE4QixFQUFFLElBQUEsd0JBQVksRUFBQyxzQkFBc0IsQ0FBQztZQUNwRSxrQkFBa0IsRUFBRSxZQUFZO1lBQ2hDLGFBQWEsRUFBRSxhQUFhO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGdDQUFnQyxDQUM5QixZQUFxRDtRQUVyRCxPQUFPLElBQUEsaURBQWdDLEVBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBb0RELGVBQWUsQ0FDYixZQUFxRCxFQUNyRCxPQUFvQixFQUNwQixJQUEwQyxFQUMxQyxJQUFnRCxFQUNoRCxJQUE2QjtRQVE3QixJQUFJLElBQUksWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUMvQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxnQkFBOEMsQ0FBQztZQUNuRCxJQUFJLGFBQWlELENBQUM7WUFFdEQsSUFBSSxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixhQUFhLEdBQUcsSUFBMEMsQ0FBQztZQUM3RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sYUFBYSxHQUFHLElBQTBDLENBQUM7WUFDN0QsQ0FBQztZQUVELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxJQUFBLHFDQUFlLEVBQUM7b0JBQ3JCLE9BQU87b0JBQ1AsYUFBYTtvQkFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXFCO29CQUNqRCxZQUFZO29CQUNaLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDckMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO29CQUNyQyxlQUFlO29CQUNmLGdCQUFnQjtpQkFDakIsQ0FFQSxDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sSUFBQSxxQ0FBZSxFQUFDO2dCQUNyQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQ3JDLE9BQU87Z0JBQ1AsYUFBYTtnQkFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXFCO2dCQUNqRCxZQUFZO2dCQUNaLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsZUFBZTthQUNoQixDQUlBLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBMEMsQ0FBQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUNwRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzRCxPQUFPLElBQUEscUNBQWUsRUFBQztZQUNyQixPQUFPO1lBQ1AsYUFBYTtZQUNiLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBcUI7WUFDakQsWUFBWTtZQUNaLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsZUFBZTtZQUNmLGdCQUFnQjtTQUNqQixDQUVBLENBQUM7SUFDSixDQUFDO0lBbUVELDBCQUEwQixDQUN4QixnQkFBa0MsRUFDbEMsdUJBQWdELEVBQ2hELFNBRTJDLEVBQzNDLE9BQW9CLEVBQ3BCLElBQXNELEVBQ3RELElBQTRELEVBQzVELElBQXlDLEVBQ3pDLElBQTZCO1FBUTdCLElBQUksSUFBSSxZQUFZLFVBQVUsRUFBRSxDQUFDO1lBQy9CLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLGdCQUE4QyxDQUFDO1lBQ25ELElBQUksZ0JBQXVDLENBQUM7WUFDNUMsSUFBSSxhQUFpRCxDQUFDO1lBRXRELElBQUksSUFBSSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLGdCQUFnQixHQUFHLElBQUksQ0FBQztnQkFDeEIsZ0JBQWdCLEdBQUcsSUFBNkIsQ0FBQztnQkFDakQsYUFBYSxHQUFHLElBQTBDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGdCQUFnQixHQUFHLElBQTZCLENBQUM7Z0JBQ2pELGFBQWEsR0FBRyxJQUEwQyxDQUFDO1lBQzdELENBQUM7WUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sSUFBQSwwQ0FBeUIsRUFBQztvQkFDL0IsYUFBYTtvQkFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXFCO29CQUNqRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3JDLGdCQUFnQjtvQkFDaEIsdUJBQXVCO29CQUN2QixPQUFPO29CQUNQLGdCQUFnQjtvQkFDaEIsZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLFNBQVM7b0JBRVQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO2lCQUN0QyxDQUVBLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxJQUFBLDBDQUF5QixFQUFDO2dCQUMvQixhQUFhO2dCQUNiLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBcUI7Z0JBQ2pELGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsZ0JBQWdCO2dCQUNoQix1QkFBdUI7Z0JBQ3ZCLE9BQU87Z0JBQ1AsZ0JBQWdCO2dCQUNoQixlQUFlO2dCQUNmLFNBQVM7Z0JBQ1QsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO2FBQ3RDLENBSUEsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQTZCLENBQUM7UUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBMEMsQ0FBQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUNwRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzRCxPQUFPLElBQUEsMENBQXlCLEVBQUM7WUFDL0IsYUFBYTtZQUNiLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBcUI7WUFDakQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLGdCQUFnQjtZQUNoQix1QkFBdUI7WUFDdkIsT0FBTztZQUNQLGdCQUFnQjtZQUNoQixTQUFTO1lBQ1QsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLGVBQWU7WUFDZixnQkFBZ0I7U0FDakIsQ0FFQSxDQUFDO0lBQ0osQ0FBQztJQXlFRCxlQUFlLENBQ2IsWUFBcUQsRUFDckQsU0FBb0IsRUFDcEIsRUFBcUIsRUFDckIsWUFBOEIsRUFDOUIsSUFBMEMsRUFDMUMsSUFBZ0QsRUFDaEQsSUFBNkI7UUFNN0IsaURBQWlEO1FBQ2pELElBQUksSUFBSSxZQUFZLFVBQVUsRUFBRSxDQUFDO1lBQy9CLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLGdCQUE4QyxDQUFDO1lBQ25ELElBQUksYUFBaUQsQ0FBQztZQUV0RCxJQUFJLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLGFBQWEsR0FBRyxJQUEwQyxDQUFDO1lBQzdELENBQUM7aUJBQU0sQ0FBQztnQkFDTixhQUFhLEdBQUcsSUFBMEMsQ0FBQztZQUM3RCxDQUFDO1lBRUQsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQixPQUFPLElBQUEscUNBQXNCLEVBQUM7b0JBQzVCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDckMsWUFBWTtvQkFDWixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBcUI7b0JBQ2pELFNBQVM7b0JBQ1QsRUFBRTtvQkFDRixZQUFZO29CQUNaLGVBQWU7b0JBQ2YsZ0JBQWdCO29CQUNoQixhQUFhO2lCQUNkLENBRUEsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLElBQUEscUNBQXNCLEVBQUM7Z0JBQzVCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsWUFBWTtnQkFDWixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBcUI7Z0JBQ2pELFNBQVM7Z0JBQ1QsRUFBRTtnQkFDRixZQUFZO2dCQUNaLGVBQWU7Z0JBQ2YsYUFBYTthQUNkLENBRUEsQ0FBQztRQUNKLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsTUFBTSxhQUFhLEdBQUcsSUFBMEMsQ0FBQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUNwRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzRCxPQUFPLElBQUEscUNBQXNCLEVBQUM7WUFDNUIsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLFlBQVk7WUFDWixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFxQjtZQUNqRCxTQUFTO1lBQ1QsRUFBRTtZQUNGLFlBQVk7WUFDWixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGFBQWE7U0FDZCxDQUF1RSxDQUFDO0lBQzNFLENBQUM7SUFxRkQsMEJBQTBCLENBQ3hCLGdCQUFrQyxFQUNsQyx1QkFBZ0QsRUFDaEQsU0FFMkMsRUFDM0MsU0FBb0IsRUFDcEIsRUFBcUIsRUFDckIsWUFBOEIsRUFDOUIsSUFBc0QsRUFDdEQsSUFBNEQsRUFDNUQsSUFBeUMsRUFDekMsSUFBNkI7UUFNN0IsaURBQWlEO1FBQ2pELElBQUksSUFBSSxZQUFZLFVBQVUsRUFBRSxDQUFDO1lBQy9CLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLGdCQUE4QyxDQUFDO1lBQ25ELElBQUksZ0JBQXVDLENBQUM7WUFDNUMsSUFBSSxhQUFpRCxDQUFDO1lBRXRELElBQUksSUFBSSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLGdCQUFnQixHQUFHLElBQUksQ0FBQztnQkFDeEIsZ0JBQWdCLEdBQUcsSUFBNkIsQ0FBQztnQkFDakQsYUFBYSxHQUFHLElBQTBDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGdCQUFnQixHQUFHLElBQTZCLENBQUM7Z0JBQ2pELGFBQWEsR0FBRyxJQUEwQyxDQUFDO1lBQzdELENBQUM7WUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sSUFBQSwwQ0FBeUIsRUFBQztvQkFDL0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFxQjtvQkFDakQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO29CQUNyQyxnQkFBZ0I7b0JBQ2hCLHVCQUF1QjtvQkFDdkIsU0FBUztvQkFDVCxFQUFFO29CQUNGLFlBQVk7b0JBQ1osZ0JBQWdCO29CQUNoQixTQUFTO29CQUNULGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDckMsZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLGFBQWE7aUJBQ2QsQ0FFQSxDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sSUFBQSwwQ0FBeUIsRUFBQztnQkFDL0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFxQjtnQkFDakQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNyQyxnQkFBZ0I7Z0JBQ2hCLHVCQUF1QjtnQkFDdkIsU0FBUztnQkFDVCxFQUFFO2dCQUNGLFlBQVk7Z0JBQ1osZ0JBQWdCO2dCQUNoQixTQUFTO2dCQUNULGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsZUFBZTtnQkFDZixhQUFhO2FBQ2QsQ0FFQSxDQUFDO1FBQ0osQ0FBQztRQUVELGlCQUFpQjtRQUNqQixNQUFNLGdCQUFnQixHQUFHLElBQTZCLENBQUM7UUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBMEMsQ0FBQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUNwRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzRCxPQUFPLElBQUEsMENBQXlCLEVBQUM7WUFDL0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFxQjtZQUNqRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsZ0JBQWdCO1lBQ2hCLHVCQUF1QjtZQUN2QixTQUFTO1lBQ1QsRUFBRTtZQUNGLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsU0FBUztZQUNULGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGFBQWE7U0FDZCxDQUF1RSxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxjQUFjLENBQ1osT0FBb0IsRUFDcEIsYUFBc0M7UUFFdEMsT0FBTyxJQUFBLHFDQUFlLEVBQUM7WUFDckIsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLE9BQU87WUFDUCxhQUFhO1lBQ2IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFxQjtZQUNqRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUM5QixVQUFnRCxFQUNoRCxTQUFpQjtRQUVqQixNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDeEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUNyQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNQLHVDQUF1QztRQUN2QyxXQUFXLGVBQWUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxPQUFPLElBQUksTUFBTSxXQUFXLENBQzNFLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFnQjtRQUN4QyxPQUFRLEVBQXVCLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sTUFBTSxDQUFDLGtCQUFrQixDQUkvQixLQUFRLEVBQ1IsSUFBeUIsRUFDekIsTUFBUztRQUVULElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTztnQkFDTCxNQUFNO2dCQUNOLElBQUksRUFBRSx1QkFBVyxDQUFDLEtBQUs7Z0JBQ3ZCLEtBQUssRUFBRSxLQUFLO2FBQzRCLENBQUM7UUFDN0MsQ0FBQzthQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xFLE9BQU87Z0JBQ0wsTUFBTTtnQkFDTixJQUFJLEVBQUUsSUFBSSxJQUFJLHVCQUFXLENBQUMsUUFBUTtnQkFDbEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDb0IsQ0FBQztRQUM3QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQ2xDLE1BQW9CLEVBQ3BCLGVBQXdCO1FBRXhCLE1BQU0sWUFBWSxHQUFHLE1BQU0sU0FBUyxDQUFDLHVCQUF1QixDQUMxRCxNQUFNLEVBQ04sZUFBZSxDQUNoQixDQUFDO1FBRUYsZ0ZBQWdGO1FBQ2hGLGdDQUFnQztRQUNoQyxtR0FBbUc7UUFDbkcsRUFBRTtRQUNGLDZEQUE2RDtRQUM3RCwrSEFBK0g7UUFDL0gscUJBQXFCO1FBQ3JCLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxzREFBc0Q7WUFDdEQsdUNBQXVDO1lBQ3ZDLGNBQWM7WUFDZCw4REFBOEQ7WUFDOUQsTUFBTTtZQUNOLE1BQU0sY0FBYyxHQUFHO2dCQUNyQjtvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsTUFBTSxFQUFFLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLGFBQWE7b0JBQ25CLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDN0QsZUFBZSxFQUFFLE1BQU07aUJBQ3hCO2FBQ08sQ0FBQztZQUVYLE1BQU0saUJBQWlCLEdBQUcsSUFBQSxrQkFBVyxFQUFDO2dCQUNwQyxHQUFHLEVBQUUsY0FBYztnQkFDbkIsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPO2dCQUM3QixNQUFNO2FBQ1AsQ0FBQyxDQUFDO1lBRUgsT0FBTyxNQUFNLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQ3pDLE1BQW9CLEVBQ3BCLGVBQXdCO1FBSXhCLE1BQU0scUJBQXFCLEdBQUcsSUFBQSxrQkFBVyxFQUFDO1lBQ3hDLEdBQUcsRUFBRSwrQkFBZ0I7WUFDckIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUNILE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUUsTUFBTSxZQUFZLEdBQUcsSUFBQSxrQkFBVyxFQUFDO1lBQy9CLEdBQUcsRUFBRSw2QkFBZTtZQUNwQixPQUFPLEVBQUUsbUJBQThCO1lBQ3ZDLE1BQU07U0FDUCxDQUFDLENBQUM7UUFFSCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FDN0MsZUFBd0IsRUFDeEIsTUFBb0I7UUFFcEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxTQUFTLENBQUMsdUJBQXVCLENBQzFELE1BQU0sRUFDTixlQUFlLENBQ2hCLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxTQUFTLENBQUMsZ0JBQWdCLENBQ3BELE1BQU0sRUFDTixlQUFlLENBQ2hCLENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDL0QsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM5QyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVuRCxPQUFPO1lBQ0wsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDNUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQVksQ0FBQztZQUNsQyxhQUFhO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FDakMsVUFBc0IsRUFDdEIsTUFBb0I7UUFFcEIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxPQUFPLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUMxQyxVQUFVLENBQUMsZUFBMEIsRUFDckMsTUFBTSxDQUNQLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsNEVBQTRFO0lBQ3BFLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxVQUFzQjtRQUM5RCxpSUFBaUk7UUFDakksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxPQUFPLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsb0dBQW9HO0lBQ3BHLG1GQUFtRjtJQUNuRiwwR0FBMEc7SUFDbEcsTUFBTSxDQUFDLDZCQUE2QjtRQUMxQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQyxrQkFBc0IsQ0FBQztZQUNqQyxhQUFhLEVBQUUsb0NBQXlCO1NBQ3pDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF4ckNELDhCQXdyQ0MifQ==
|
|
729
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQVljO0FBRWQsd0NBQTBDO0FBQzFDLGtFQU11QztBQUV2QyxnRkFBbUc7QUFFbkcsZ0ZBQXlFO0FBS3pFLDRDQUFnRTtBQUVoRSxxREFNZ0M7QUFDaEMsaUVBQWtFO0FBQ2xFLCtEQUFnRTtBQUNoRSw0REFBaUU7QUFDakUsOERBQXNFO0FBQ3RFLDRDQUFvRDtBQUNwRCwwQ0FBMkM7QUFDM0MsNERBQXlEO0FBQ3pELGdEQUFnRTtBQUVoRSw0Q0FBcUM7QUFDckMseUNBT29CO0FBNEJwQixNQUFNLGFBQWEsR0FBb0IsU0FBUyxDQUFDO0FBRWpELFNBQVMsY0FBYyxDQUFDLEtBQWM7SUFDcEMsT0FBTyxDQUNMLENBQUMsQ0FBQyxLQUFLO1FBQ1AsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixXQUFXLElBQUksS0FBSztRQUNwQixZQUFZLElBQUksS0FBSztRQUNyQixpQkFBaUIsSUFBSSxLQUFLO1FBQzFCLE9BQVEsS0FBc0IsQ0FBQyxlQUFlLEtBQUssVUFBVSxDQUM5RCxDQUFDO0FBQ0osQ0FBQztBQXdDRCxTQUFTLHdCQUF3QixDQUMvQixLQUEyRDtJQUUzRCxPQUFPLENBQ0wsQ0FBQyxDQUFDLEtBQUs7UUFDUCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLFVBQVUsSUFBSSxLQUFLO1FBQ25CLE9BQVEsS0FBaUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUNoRSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQWEsU0FBUztJQVNEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFaSCxlQUFlLENBQVU7SUFDekIsT0FBTyxDQUFTO0lBRWYsZUFBZSxDQUFrQjtJQUMxQyxTQUFTLEdBQXFCLElBQUksQ0FBQztJQUNuQyxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lB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
|
package/dist/cjs/lite/xwing.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { Decryptor, Encryptor, XwingScheme } from '../encryption/encryption.js';
|
|
2
2
|
import { PubKeyEncodable } from '../reencryption/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* X-Wing public key size in bytes.
|
|
5
|
+
* Combining ML-KEM-768 (1184 bytes) and X25519 (32 bytes).
|
|
6
|
+
*/
|
|
7
|
+
export declare const XWING_PUBLIC_KEY_SIZE: number;
|
|
3
8
|
export declare const TEST_NETWORK_SEED_KEY = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
4
9
|
export declare const TEST_NETWORK_XWING_PUBKEY = "0xca882388911c7c762aafc20debd63e845b3bed28c9d5262cdea7771fb31bd660a1ae7b395a9a7df3d12c7b118e8eda5057572c1ba05cd9b635edf33dabca4cac7291e0848f19c20e5beb850c3818f3543d49b3a5c729cb86a28fda539775d04feda112fe0c81d138aaf623aea7d507a4e826e890105db6065a44aba76a10d771c00d1b33f4ac51869806aae18eada68f19047024542d64a7aa1c91a5e1aa49d93613b5224b415bcc7aa166e4b55033438d20c641f9664fdb1689b53208181463e3d1325d46b30f07c5945b7e3fa1418bf833d975258461b294664eaf60795964924a280729c10a37fc6e967440bdd55d4ca53596286383481291152365303d44517cef369c00933b0b30368a230353e729c031075e8388673678a56b3ba84a165b28096ee9bd684483e1844258b451c365c41fa534152a3b64120041450128e960c7d6437d717ee266bdde7aaeec225ed93b958d188e97407349f1382976ca47d761ecc59a6f394487eb015c083abb490584677240eb47f838c838568a496119378b8bb81484610a50792b5d9c9939db188e7d0249d3cb918c436f111a2898849b286b0743a22c57464c709c5eaceac1ba493adca3328c0b14b5e38d3aea74e328b622b17e7181c35ad11c2103bdb7f2b209d93dcbc4ab61a06bc37139e6d2b7a06c5b7e9267bef3a8918a706f793271a5acc2574532da79e5a10cf074b998147a3c43586a411a513bba0d11cc19a36c83b19277f28022c88b120abfdba7076a8263e05336e3245aef7033eb3c762b5bbfa5791ac960398b649d5cbb652ddc6b2398143a0861ab3b410b696328879c099098adf819fbf7ac170030e86675e7f45c22ac9e1cf52c3102487bb0b91ab592afdc69c6e3a9b71876b86260b6c736b8291098f1130d3b763525cbad540ce2d042eacb6ed43b7bcba898f712c412f26066e09945f44ec7026c8ef959831abc10719d2017a12a41728b41c02371a5f5756ebc79406be708ea41bbd21563c874a0b791a3b4e4224a609967004f065c5ab4f3b4c61cb35df70573269da53179c3701fc5205f61974426f9b794c1b5826494b70842b6920c17752029369264dc8590b898b85c9d89a258e1f46c1b0490efd17c485cb51687cea272041e90b8e629521d3c5e3fa7518161bad7a159295b63cc6c0077897b53d47db8bc0ecb820f550705b65715a1a1094d04854f56acd26aa0baa10cb8447fad6211f53105796a42882328e6852e8de821c283b51eaab9bc95c4dc53615626049d63b1f9a457193805276b1905b0ab39353b5cf91fdd6023d4d816aef9cce4a3cfb3d12190172df221ae61d427563a098cc60e3dc9997ef54959180be5dc64a911157db6be3a01be2ee343caab33b8729abf0c50c674758c511291941fceac646232920907c2e88b9ec10211161729c797643a553a6ae5c4b7483c04e3263bd291e311c609071348b7c3310aa97d6b8318e0a4afe8399fa22f951049a9bb8860f7c69a333d3cc1aaf0129ab560713bf29eb3a01f9a276c78e54e3a3648b2447c80242b271b11406866389426d8b59796540d6b5702092ab21ee217c075cfc0c17ef826ce9ea29b9e61617457a5b1aaa23a58615dc53c59183beb36ea19498c21820b70ab47adeb678f1c52bf8768b3597b608ea1a8a15cd62e8a29bec4a1ac248ef9f02de0144bca06025f95a42bd6c8eaaaaaa2366328561d";
|
|
5
10
|
/**
|
|
@@ -13,7 +18,6 @@ export interface XwingKeypair extends PubKeyEncodable {
|
|
|
13
18
|
scheme: XwingScheme;
|
|
14
19
|
publicKey: CryptoKey;
|
|
15
20
|
privateKey: CryptoKey;
|
|
16
|
-
publicKeyBytes: Uint8Array;
|
|
17
21
|
}
|
|
18
22
|
/**
|
|
19
23
|
* Derive X-Wing keypair from a 32-byte seed (deterministic).
|
package/dist/cjs/lite/xwing.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TEST_NETWORK_XWING_PUBKEY = exports.TEST_NETWORK_SEED_KEY = void 0;
|
|
3
|
+
exports.TEST_NETWORK_XWING_PUBKEY = exports.TEST_NETWORK_SEED_KEY = exports.XWING_PUBLIC_KEY_SIZE = void 0;
|
|
4
4
|
exports.deriveXwingKeypairFromSeed = deriveXwingKeypairFromSeed;
|
|
5
5
|
exports.generateXwingKeypair = generateXwingKeypair;
|
|
6
6
|
exports.decodeXwingPublicKey = decodeXwingPublicKey;
|
|
@@ -18,6 +18,13 @@ const encryption_js_1 = require("../encryption/encryption.js");
|
|
|
18
18
|
const handle_js_1 = require("../handle.js");
|
|
19
19
|
const schema_js_1 = require("../schema.js");
|
|
20
20
|
const hadu_js_1 = require("./hadu.js");
|
|
21
|
+
// Get X-Wing key sizes from the library
|
|
22
|
+
const xwingKem = new hybridkem_x_wing_1.XWing();
|
|
23
|
+
/**
|
|
24
|
+
* X-Wing public key size in bytes.
|
|
25
|
+
* Combining ML-KEM-768 (1184 bytes) and X25519 (32 bytes).
|
|
26
|
+
*/
|
|
27
|
+
exports.XWING_PUBLIC_KEY_SIZE = xwingKem.publicKeySize;
|
|
21
28
|
// Test network private key for testing
|
|
22
29
|
exports.TEST_NETWORK_SEED_KEY = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
23
30
|
// Test network X-Wing public key (1216 bytes)
|
|
@@ -61,7 +68,6 @@ async function deriveXwingKeypairFromSeed(seed) {
|
|
|
61
68
|
scheme: encryption_js_1.encryptionSchemes.xwing,
|
|
62
69
|
publicKey: keyPair.publicKey,
|
|
63
70
|
privateKey: keyPair.privateKey,
|
|
64
|
-
publicKeyBytes,
|
|
65
71
|
encodePublicKey() {
|
|
66
72
|
return publicKeyBytes;
|
|
67
73
|
},
|
|
@@ -80,7 +86,6 @@ async function generateXwingKeypair() {
|
|
|
80
86
|
scheme: encryption_js_1.encryptionSchemes.xwing,
|
|
81
87
|
publicKey: keyPair.publicKey,
|
|
82
88
|
privateKey: keyPair.privateKey,
|
|
83
|
-
publicKeyBytes,
|
|
84
89
|
encodePublicKey() {
|
|
85
90
|
return publicKeyBytes;
|
|
86
91
|
},
|
|
@@ -95,7 +100,7 @@ async function generateXwingKeypair() {
|
|
|
95
100
|
async function decodeXwingPublicKey(pubKeyBytes) {
|
|
96
101
|
const suite = await createXwingSuite();
|
|
97
102
|
if (pubKeyBytes.length !== suite.kem.publicKeySize) {
|
|
98
|
-
throw new Error(`Invalid X-Wing public key length: expected
|
|
103
|
+
throw new Error(`Invalid X-Wing public key length: expected ${exports.XWING_PUBLIC_KEY_SIZE} bytes, got ${pubKeyBytes.length}`);
|
|
99
104
|
}
|
|
100
105
|
// Create a fresh ArrayBuffer copy to avoid SharedArrayBuffer issues
|
|
101
106
|
const pubKeyCopy = new Uint8Array(pubKeyBytes);
|
|
@@ -267,4 +272,4 @@ function getXwingDecryptor({ privKeyA, }) {
|
|
|
267
272
|
return (0, encryption_js_1.bytesToPlaintext)(computable.value.value, encryption_js_1.encryptionSchemes.xwing, typ);
|
|
268
273
|
};
|
|
269
274
|
}
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHdpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGl0ZS94d2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpRkEsZ0VBMEJDO0FBT0Qsb0RBZUM7QUFRRCxvREFhQztBQVNELHNEQUlDO0FBUUQsb0RBS0M7QUE2QkQsMEJBNEJDO0FBYUQsMEJBb0NDO0FBZUQsOENBc0RDO0FBZUQsOENBNENDO0FBMVpELDZEQUEwRDtBQUMxRCxxQ0FBcUQ7QUFDckQsNkRBQStDO0FBQy9DLDRDQUF5RTtBQUN6RSwrREFjcUM7QUFDckMsNENBQStEO0FBRS9ELDRDQUFxQztBQUNyQyx1Q0FBcUQ7QUFFckQsd0NBQXdDO0FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksd0JBQUssRUFBRSxDQUFDO0FBRTdCOzs7R0FHRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztBQUU1RCx1Q0FBdUM7QUFDMUIsUUFBQSxxQkFBcUIsR0FDaEMsb0VBQW9FLENBQUM7QUFFdkUsOENBQThDO0FBQzlDLHlHQUF5RztBQUN6RyxzR0FBc0c7QUFDekYsUUFBQSx5QkFBeUIsR0FDcEMsbzRFQUFvNEUsQ0FBQztBQWV2NEU7Ozs7O0dBS0c7QUFDSCxLQUFLLFVBQVUsZ0JBQWdCO0lBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksd0JBQUssRUFBRSxDQUFDO0lBQ3hCLHFFQUFxRTtJQUNyRSxpRkFBaUY7SUFDakYsTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkIsT0FBTyxJQUFJLGtCQUFXLENBQUM7UUFDckIsR0FBRztRQUNILEdBQUcsRUFBRSxJQUFJLGlCQUFVLEVBQUU7UUFDckIsSUFBSSxFQUFFLElBQUksbUNBQWdCLEVBQUU7S0FDN0IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSwwQkFBMEIsQ0FDOUMsSUFBZ0I7SUFFaEIsSUFBSSxJQUFJLENBQUMs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
|
|
@@ -2,7 +2,7 @@ import { Address } from 'viem';
|
|
|
2
2
|
import { HexString } from '../binary.js';
|
|
3
3
|
import { CiphertextOf, EncryptionScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
|
|
4
4
|
import { Handle } from '../handle.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { XwingKeypair } from '../lite/xwing.js';
|
|
6
6
|
import type { BackoffConfig } from '../retry.js';
|
|
7
7
|
export type Reencryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: ReencryptFnArgs<S, T>, backoffConfig?: Partial<BackoffConfig>) => Promise<PlaintextOf<S, T>>;
|
|
8
8
|
export interface ReencryptorArgs {
|
|
@@ -12,7 +12,7 @@ export type ReencryptFnArgs<S extends EncryptionScheme, T extends SupportedFheTy
|
|
|
12
12
|
handle: Handle;
|
|
13
13
|
ciphertext?: CiphertextOf<S, T>;
|
|
14
14
|
};
|
|
15
|
-
export type SupportedEphemeralKeypairs =
|
|
15
|
+
export type SupportedEphemeralKeypairs = XwingKeypair;
|
|
16
16
|
export interface PubKeyEncodable {
|
|
17
17
|
encodePublicKey(): Uint8Array;
|
|
18
18
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type Account, type Address, type Chain, type Hex, PublicClient, type Transport, type WalletClient } from 'viem';
|
|
2
|
+
import type { PrivateKeyAccount } from 'viem/accounts';
|
|
2
3
|
import { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/index.js';
|
|
3
4
|
import { SupportedChainId } from '../chain.js';
|
|
4
5
|
import { EncryptionScheme, SupportedFheType } from '../encryption/encryption.js';
|
|
5
6
|
import { HexString } from '../index.js';
|
|
6
|
-
import type {
|
|
7
|
+
import type { XwingKeypair } from '../lite/index.js';
|
|
7
8
|
import { BackoffConfig } from '../retry.js';
|
|
8
9
|
import type { AllowanceVoucher, AllowanceVoucherWithSig } from './types.js';
|
|
9
10
|
import { AttestedComputeOP } from '../attestedcompute/types.js';
|
|
@@ -33,7 +34,7 @@ export declare function grantSessionKeyCustomVerifier({ chainId, incoLiteAddress
|
|
|
33
34
|
export declare function updateActiveVouchersSessionNonce(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>): Promise<`0x${string}`>;
|
|
34
35
|
export interface SessionKeyAttestedComputeArgs {
|
|
35
36
|
chainId: SupportedChainId;
|
|
36
|
-
|
|
37
|
+
ephemeralAccount: PrivateKeyAccount;
|
|
37
38
|
kmsQuorumClient: KmsQuorumClient;
|
|
38
39
|
allowanceVoucherWithSig: AllowanceVoucherWithSig;
|
|
39
40
|
lhsHandle: HexString;
|
|
@@ -44,19 +45,19 @@ export interface SessionKeyAttestedComputeArgs {
|
|
|
44
45
|
ethClient?: PublicClient<Transport, Chain> | WalletClient<Transport, Chain, Account> | undefined;
|
|
45
46
|
executorAddress?: HexString | undefined;
|
|
46
47
|
reencryptPubKey?: Uint8Array | undefined;
|
|
47
|
-
reencryptKeypair?:
|
|
48
|
+
reencryptKeypair?: XwingKeypair | undefined;
|
|
48
49
|
}
|
|
49
|
-
export declare function sessionKeyAttestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient,
|
|
50
|
+
export declare function sessionKeyAttestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, ethClient, executorAddress, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedComputeArgs): Promise<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
|
|
50
51
|
export interface SessionKeyAttestedDecryptArgs {
|
|
51
52
|
chainId: SupportedChainId;
|
|
52
|
-
|
|
53
|
+
ephemeralAccount: PrivateKeyAccount;
|
|
53
54
|
kmsQuorumClient: KmsQuorumClient;
|
|
54
55
|
allowanceVoucherWithSig: AllowanceVoucherWithSig;
|
|
55
56
|
handles: HexString[];
|
|
56
57
|
requesterArgData?: Hex | undefined;
|
|
57
58
|
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
58
59
|
reencryptPubKey?: Uint8Array | undefined;
|
|
59
|
-
reencryptKeypair?:
|
|
60
|
+
reencryptKeypair?: XwingKeypair | undefined;
|
|
60
61
|
ethClient?: PublicClient<Transport, Chain> | WalletClient<Transport, Chain, Account> | undefined;
|
|
61
62
|
executorAddress?: HexString | undefined;
|
|
62
63
|
}
|
|
@@ -69,7 +70,7 @@ export interface SessionKeyAttestedDecryptArgs {
|
|
|
69
70
|
* chainId,
|
|
70
71
|
* kmsConnectRpcEndpointOrClient: covalidatorUrl,
|
|
71
72
|
* allowanceVoucherWithSig: voucher,
|
|
72
|
-
*
|
|
73
|
+
* ephemeralAccount,
|
|
73
74
|
* handles,
|
|
74
75
|
* });
|
|
75
76
|
* console.log(attestations[0].plaintext.value);
|
|
@@ -81,7 +82,7 @@ export interface SessionKeyAttestedDecryptArgs {
|
|
|
81
82
|
* chainId,
|
|
82
83
|
* kmsConnectRpcEndpointOrClient: covalidatorUrl,
|
|
83
84
|
* allowanceVoucherWithSig: voucher,
|
|
84
|
-
*
|
|
85
|
+
* ephemeralAccount,
|
|
85
86
|
* handles,
|
|
86
87
|
* reencryptPubKey: recipientPubKey,
|
|
87
88
|
* });
|
|
@@ -90,4 +91,4 @@ export interface SessionKeyAttestedDecryptArgs {
|
|
|
90
91
|
* );
|
|
91
92
|
* ```
|
|
92
93
|
*/
|
|
93
|
-
export declare function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles,
|
|
94
|
+
export declare function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, backoffConfig, reencryptPubKey, reencryptKeypair, ethClient, executorAddress, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { create } from '@bufbuild/protobuf';
|
|
2
2
|
import { bytesToHex, encodeAbiParameters, getContract, hexToBytes, toFunctionSelector, } from 'viem';
|
|
3
|
-
import { privateKeyToAccount } from 'viem/accounts';
|
|
4
3
|
import { abiHelperAbi, advancedAccessControlAbi, } from '../generated/abis/lightning-preview.js';
|
|
5
4
|
import { incoLightningAbi, sessionVerifierAbi, } from '../generated/abis/lightning.js';
|
|
6
5
|
import { incoVerifierAbi } from '../generated/abis/verifier.js';
|
|
@@ -117,8 +116,8 @@ export async function updateActiveVouchersSessionNonce(incoLiteAddress, sharerWa
|
|
|
117
116
|
}
|
|
118
117
|
// The sessionKeyAttestedCompute function is a decryptor that uses a session key
|
|
119
118
|
// to compute on a handle.
|
|
120
|
-
export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient,
|
|
121
|
-
const requesterAccount =
|
|
119
|
+
export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, ethClient, executorAddress, reencryptPubKey, reencryptKeypair, }) {
|
|
120
|
+
const requesterAccount = ephemeralAccount;
|
|
122
121
|
const rhsPlaintextBig = BigInt(rhsPlaintext);
|
|
123
122
|
const eip712DomainVersion = await fetchEip712DomainVersion(executorAddress, DEFAULT_ATTESTED_COMPUTE_DOMAIN_VERSION, ethClient);
|
|
124
123
|
// Sign the EIP712 attesting that the requester has access to the private key
|
|
@@ -190,7 +189,7 @@ export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, b
|
|
|
190
189
|
* chainId,
|
|
191
190
|
* kmsConnectRpcEndpointOrClient: covalidatorUrl,
|
|
192
191
|
* allowanceVoucherWithSig: voucher,
|
|
193
|
-
*
|
|
192
|
+
* ephemeralAccount,
|
|
194
193
|
* handles,
|
|
195
194
|
* });
|
|
196
195
|
* console.log(attestations[0].plaintext.value);
|
|
@@ -202,7 +201,7 @@ export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, b
|
|
|
202
201
|
* chainId,
|
|
203
202
|
* kmsConnectRpcEndpointOrClient: covalidatorUrl,
|
|
204
203
|
* allowanceVoucherWithSig: voucher,
|
|
205
|
-
*
|
|
204
|
+
* ephemeralAccount,
|
|
206
205
|
* handles,
|
|
207
206
|
* reencryptPubKey: recipientPubKey,
|
|
208
207
|
* });
|
|
@@ -211,8 +210,8 @@ export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, b
|
|
|
211
210
|
* );
|
|
212
211
|
* ```
|
|
213
212
|
*/
|
|
214
|
-
export async function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles,
|
|
215
|
-
const requesterAccount =
|
|
213
|
+
export async function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, backoffConfig, reencryptPubKey, reencryptKeypair, ethClient, executorAddress, }) {
|
|
214
|
+
const requesterAccount = ephemeralAccount;
|
|
216
215
|
const eip712DomainVersion = await fetchEip712DomainVersion(executorAddress, DEFAULT_ATTESTED_DECRYPT_DOMAIN_VERSION, ethClient);
|
|
217
216
|
// Sign the EIP712 attesting that the requester has access to the private key
|
|
218
217
|
// corresponding to the ephemeral public key.
|
|
@@ -335,4 +334,4 @@ async function getIncoVerifier(incoLiteAddress, walletClient) {
|
|
|
335
334
|
client: walletClient,
|
|
336
335
|
});
|
|
337
336
|
}
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFHTCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFdBQVcsRUFFWCxVQUFVLEVBRVYsa0JBQWtCLEdBR25CLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVXBELE9BQU8sRUFDTCxZQUFZLEVBQ1osd0JBQXdCLEdBQ3pCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsR0FDbkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBYSxNQUFNLGFBQWEsQ0FBQztBQU96RCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1Qix1Q0FBdUMsRUFDdkMsdUNBQXVDLEdBQ3hDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFLL0QsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qix3QkFBd0IsR0FDekIsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixHQUM3QixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSw4Q0FBOEMsQ0FBQztBQWtCdEQsc0VBQXNFO0FBQ3RFLHdFQUF3RTtBQUN4RSwrQkFBK0I7QUFDL0IsTUFBTSxDQUFDLEtBQUssVUFBVSxz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
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFHTCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFdBQVcsRUFFWCxVQUFVLEVBRVYsa0JBQWtCLEdBR25CLE1BQU0sTUFBTSxDQUFDO0FBV2QsT0FBTyxFQUNMLFlBQVksRUFDWix3QkFBd0IsR0FDekIsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sYUFBYSxDQUFDO0FBT3pELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsR0FDeEMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUsvRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHdCQUF3QixHQUN6QixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsNEJBQTRCLEdBQzdCLE1BQU0sb0RBQW9ELENBQUM7QUFDNUQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLDhCQUE4QixHQUMvQixNQUFNLDhDQUE4QyxDQUFDO0FBa0J0RCxzRUFBc0U7QUFDdEUsd0VBQXdFO0FBQ3hFLCtCQUErQjtBQUMvQixNQUFNLENBQUMsS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxlQUF3QixFQUN4QixrQkFBMkQsRUFDM0QsaUJBQTBC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
|