@inco/js 0.6.8 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +8 -8
  2. package/dist/cjs/advancedacl/session-key.d.ts +39 -19
  3. package/dist/cjs/advancedacl/session-key.js +59 -108
  4. package/dist/cjs/attestedcompute/attested-compute.d.ts +6 -6
  5. package/dist/cjs/attestedcompute/attested-compute.js +5 -28
  6. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +68 -16
  7. package/dist/cjs/attesteddecrypt/attested-decrypt.js +108 -66
  8. package/dist/cjs/attesteddecrypt/types.d.ts +8 -3
  9. package/dist/cjs/attesteddecrypt/types.js +1 -1
  10. package/dist/cjs/encryption/encryption.d.ts +8 -10
  11. package/dist/cjs/encryption/encryption.js +6 -6
  12. package/dist/cjs/generated/abis/add-two.d.ts +1 -1
  13. package/dist/cjs/generated/abis/add-two.js +1 -1
  14. package/dist/cjs/generated/abis/lightning-preview.d.ts +40 -0
  15. package/dist/cjs/generated/abis/lightning-preview.js +29 -1
  16. package/dist/cjs/generated/abis/lightning.d.ts +1 -1
  17. package/dist/cjs/generated/abis/lightning.js +1 -1
  18. package/dist/cjs/generated/abis/verifier.d.ts +126 -67
  19. package/dist/cjs/generated/abis/verifier.js +108 -54
  20. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
  21. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
  22. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +87 -132
  23. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +21 -27
  24. package/dist/cjs/generated/lightning.d.ts +40 -32
  25. package/dist/cjs/generated/lightning.js +43 -33
  26. package/dist/cjs/generated/local-node.d.ts +11 -11
  27. package/dist/cjs/generated/local-node.js +28 -12
  28. package/dist/cjs/kms/client.d.ts +8 -4
  29. package/dist/cjs/kms/client.js +9 -4
  30. package/dist/cjs/kms/quorumClient.d.ts +58 -0
  31. package/dist/cjs/kms/quorumClient.js +378 -0
  32. package/dist/cjs/kms/thresholdPromises.d.ts +7 -0
  33. package/dist/cjs/kms/thresholdPromises.js +52 -0
  34. package/dist/cjs/lite/deployments.d.ts +20 -2
  35. package/dist/cjs/lite/deployments.js +1 -1
  36. package/dist/cjs/lite/index.d.ts +1 -2
  37. package/dist/cjs/lite/index.js +1 -2
  38. package/dist/cjs/lite/lightning.d.ts +109 -77
  39. package/dist/cjs/lite/lightning.js +279 -112
  40. package/dist/cjs/local/local-node.d.ts +1 -2
  41. package/dist/cjs/local/local-node.js +2 -3
  42. package/dist/cjs/test/mocks.d.ts +15 -0
  43. package/dist/cjs/test/mocks.js +45 -0
  44. package/dist/cjs/viem.d.ts +1 -1
  45. package/dist/esm/advancedacl/session-key.d.ts +39 -19
  46. package/dist/esm/advancedacl/session-key.js +52 -100
  47. package/dist/esm/attestedcompute/attested-compute.d.ts +6 -6
  48. package/dist/esm/attestedcompute/attested-compute.js +6 -29
  49. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +68 -16
  50. package/dist/esm/attesteddecrypt/attested-decrypt.js +109 -68
  51. package/dist/esm/attesteddecrypt/types.d.ts +8 -3
  52. package/dist/esm/attesteddecrypt/types.js +1 -1
  53. package/dist/esm/encryption/encryption.d.ts +8 -10
  54. package/dist/esm/encryption/encryption.js +6 -6
  55. package/dist/esm/generated/abis/add-two.d.ts +1 -1
  56. package/dist/esm/generated/abis/add-two.js +1 -1
  57. package/dist/esm/generated/abis/lightning-preview.d.ts +40 -0
  58. package/dist/esm/generated/abis/lightning-preview.js +29 -1
  59. package/dist/esm/generated/abis/lightning.d.ts +1 -1
  60. package/dist/esm/generated/abis/lightning.js +1 -1
  61. package/dist/esm/generated/abis/verifier.d.ts +126 -67
  62. package/dist/esm/generated/abis/verifier.js +108 -54
  63. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
  64. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
  65. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +87 -132
  66. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +19 -25
  67. package/dist/esm/generated/lightning.d.ts +40 -32
  68. package/dist/esm/generated/lightning.js +43 -33
  69. package/dist/esm/generated/local-node.d.ts +11 -11
  70. package/dist/esm/generated/local-node.js +28 -12
  71. package/dist/esm/kms/client.d.ts +8 -4
  72. package/dist/esm/kms/client.js +8 -4
  73. package/dist/esm/kms/quorumClient.d.ts +58 -0
  74. package/dist/esm/kms/quorumClient.js +374 -0
  75. package/dist/esm/kms/thresholdPromises.d.ts +7 -0
  76. package/dist/esm/kms/thresholdPromises.js +49 -0
  77. package/dist/esm/lite/deployments.d.ts +20 -2
  78. package/dist/esm/lite/deployments.js +1 -1
  79. package/dist/esm/lite/index.d.ts +1 -2
  80. package/dist/esm/lite/index.js +1 -2
  81. package/dist/esm/lite/lightning.d.ts +109 -77
  82. package/dist/esm/lite/lightning.js +278 -111
  83. package/dist/esm/local/local-node.d.ts +1 -2
  84. package/dist/esm/local/local-node.js +2 -3
  85. package/dist/esm/test/mocks.d.ts +15 -0
  86. package/dist/esm/test/mocks.js +39 -0
  87. package/dist/esm/viem.d.ts +1 -1
  88. package/dist/types/advancedacl/session-key.d.ts +39 -19
  89. package/dist/types/attestedcompute/attested-compute.d.ts +6 -6
  90. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +68 -16
  91. package/dist/types/attesteddecrypt/types.d.ts +8 -3
  92. package/dist/types/encryption/encryption.d.ts +8 -10
  93. package/dist/types/generated/abis/add-two.d.ts +1 -1
  94. package/dist/types/generated/abis/lightning-preview.d.ts +40 -0
  95. package/dist/types/generated/abis/lightning.d.ts +1 -1
  96. package/dist/types/generated/abis/verifier.d.ts +126 -67
  97. package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
  98. package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +87 -132
  99. package/dist/types/generated/lightning.d.ts +40 -32
  100. package/dist/types/generated/local-node.d.ts +11 -11
  101. package/dist/types/kms/client.d.ts +8 -4
  102. package/dist/types/kms/quorumClient.d.ts +58 -0
  103. package/dist/types/kms/thresholdPromises.d.ts +7 -0
  104. package/dist/types/lite/deployments.d.ts +20 -2
  105. package/dist/types/lite/index.d.ts +1 -2
  106. package/dist/types/lite/lightning.d.ts +109 -77
  107. package/dist/types/local/local-node.d.ts +1 -2
  108. package/dist/types/test/mocks.d.ts +15 -0
  109. package/dist/types/viem.d.ts +1 -1
  110. package/package.json +3 -3
  111. package/dist/cjs/attestedreveal/attested-reveal.d.ts +0 -21
  112. package/dist/cjs/attestedreveal/attested-reveal.js +0 -67
  113. package/dist/cjs/attestedreveal/index.d.ts +0 -1
  114. package/dist/cjs/attestedreveal/index.js +0 -18
  115. package/dist/cjs/attestedreveal/types.d.ts +0 -7
  116. package/dist/cjs/attestedreveal/types.js +0 -16
  117. package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
  118. package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.js +0 -118
  119. package/dist/cjs/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
  120. package/dist/cjs/generated/es/inco/fhe/v1/types_pb.js +0 -136
  121. package/dist/cjs/lite/reencrypt.d.ts +0 -23
  122. package/dist/cjs/lite/reencrypt.js +0 -131
  123. package/dist/esm/attestedreveal/attested-reveal.d.ts +0 -21
  124. package/dist/esm/attestedreveal/attested-reveal.js +0 -64
  125. package/dist/esm/attestedreveal/index.d.ts +0 -1
  126. package/dist/esm/attestedreveal/index.js +0 -2
  127. package/dist/esm/attestedreveal/types.d.ts +0 -7
  128. package/dist/esm/attestedreveal/types.js +0 -12
  129. package/dist/esm/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
  130. package/dist/esm/generated/es/cosmos_proto/cosmos_pb.js +0 -115
  131. package/dist/esm/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
  132. package/dist/esm/generated/es/inco/fhe/v1/types_pb.js +0 -133
  133. package/dist/esm/lite/reencrypt.d.ts +0 -23
  134. package/dist/esm/lite/reencrypt.js +0 -122
  135. package/dist/types/attestedreveal/attested-reveal.d.ts +0 -21
  136. package/dist/types/attestedreveal/index.d.ts +0 -1
  137. package/dist/types/attestedreveal/types.d.ts +0 -7
  138. package/dist/types/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
  139. package/dist/types/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
  140. package/dist/types/lite/reencrypt.d.ts +0 -23
package/README.md CHANGED
@@ -24,7 +24,7 @@ A typical usage of `@inco/js` includes 3 steps:
24
24
 
25
25
  1. Encrypting a value.
26
26
  2. Posting the ciphertext to the contract, which will perform confidential computes on it.
27
- 3. Requesting a reencryption of the result of the computation.
27
+ 3. Requesting an attested decryption of the result of the computation.
28
28
 
29
29
  ### 1. Encrypt a value
30
30
 
@@ -66,13 +66,13 @@ import { Hex } from "viem";
66
66
 
67
67
  // Request a re-encryption of the result ciphertext
68
68
  const resultHandle = "0x..." as Hex; // Retrieve the handle from the contract, e.g. using viem
69
- const reencryptor = await zap.getReencryptor(walletClient); // Use same walletClient as previous step
70
- const resultPlaintext = await reencryptor({ handle: resultHandle });
69
+ // Use same walletClient as previous step
70
+ const resultPlaintext = await zap.attestedDecrypt(walletClient, [resultHandle]);
71
71
 
72
- console.log(resultPlaintext.value); // The decrypted value
72
+ console.log(resultPlaintext[0].plaintext.value); // The decrypted value
73
73
  ```
74
74
 
75
- Handles are processed asynchronously so you may need to wait for our covalidators to catch and compute the value. If you request a reencrypt before it has been processed you will get an error. To help ameliorate this the `reencryptor` has built-in retries, you can further customise by passing a `BackoffConfig` as a second argument:
75
+ Handles are processed asynchronously so you may need to wait for our covalidators to catch and compute the value. If you request an attested decryption before it has been processed you will get an error. To help ameliorate this the `attestedDecrypt` has built-in retries, you can further customise by passing a `BackoffConfig` as an extra argument:
76
76
 
77
77
  ```ts
78
78
  type BackoffConfig = {
@@ -82,15 +82,15 @@ type BackoffConfig = {
82
82
  };
83
83
 
84
84
  const resultHandle = "0x..." as Hex;
85
- const reencryptor = await zap.getReencryptor(walletClient);
86
85
  // Default backoff config shown for reference
87
86
  const backoffConfig: BackoffConfig = {
88
87
  maxRetries: 10,
89
88
  baseDelayInMs: 1000,
90
89
  backoffFactor: 1.5,
91
90
  };
92
- const resultPlaintext = await reencryptor(
93
- { handle: resultHandle },
91
+ const resultPlaintext = await zap.attestedDecrypt(
92
+ walletClient,
93
+ [resultHandle],
94
94
  backoffConfig,
95
95
  );
96
96
  ```
@@ -1,14 +1,13 @@
1
- import type { Client } from '@connectrpc/connect';
2
1
  import { type Account, type Address, type Chain, type Hex, type Transport, type WalletClient } from 'viem';
3
- import { DecryptionAttestation } from '../attesteddecrypt/index.js';
2
+ import { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/index.js';
4
3
  import { SupportedChainId } from '../chain.js';
5
4
  import { type EciesScheme, SupportedFheType } from '../encryption/encryption.js';
6
5
  import { HexString } from '../index.js';
7
- import type { KmsService, Secp256k1Keypair } from '../lite/index.js';
8
- import { type ReencryptFnArgs } from '../reencryption/index.js';
6
+ import type { Secp256k1Keypair } from '../lite/index.js';
9
7
  import { BackoffConfig } from '../retry.js';
10
8
  import type { AllowanceVoucher, AllowanceVoucherWithSig } from './types.js';
11
9
  import { AttestedComputeOP } from '../attestedcompute/types.js';
10
+ import { KmsQuorumClient } from '../kms/quorumClient.js';
12
11
  export interface Session {
13
12
  decrypter: Address;
14
13
  expiresAt: bigint;
@@ -23,35 +22,56 @@ export interface GrantSessionKeyArgs {
23
22
  expiresAt: Date;
24
23
  }
25
24
  export declare function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContractAddress, granteeAddress, sharerWalletClient, expiresAt, }: GrantSessionKeyArgs): Promise<AllowanceVoucherWithSig>;
26
- export interface SessionKeyReencryptorArgs {
27
- chainId: bigint;
28
- ephemeralKeypair: Secp256k1Keypair;
29
- kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>;
30
- allowanceVoucherWithSig: AllowanceVoucherWithSig;
31
- }
32
- export declare function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }: SessionKeyReencryptorArgs): Promise<(<T extends SupportedFheType>({ handle, }: ReencryptFnArgs<EciesScheme, T>) => Promise<import("../encryption/encryption.js").PlaintextOf<1, 0 | 5 | 7 | 8>>)>;
33
25
  export declare function updateActiveVouchersSessionNonce(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>): Promise<`0x${string}`>;
34
26
  export interface SessionKeyAttestedComputeArgs {
35
27
  chainId: SupportedChainId;
36
28
  ephemeralKeypair: Secp256k1Keypair;
37
- kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>;
29
+ kmsQuorumClient: KmsQuorumClient;
38
30
  allowanceVoucherWithSig: AllowanceVoucherWithSig;
39
31
  lhsHandle: HexString;
40
32
  op: AttestedComputeOP;
41
33
  rhsPlaintext: bigint | boolean;
42
34
  backoffConfig?: Partial<BackoffConfig> | undefined;
43
35
  }
44
- export declare function sessionKeyAttestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }: SessionKeyAttestedComputeArgs): Promise<{
45
- handle: HexString;
46
- plaintext: import("../encryption/encryption.js").PlaintextOf<1, T>;
47
- covalidatorSignature: Uint8Array<ArrayBufferLike>;
48
- }>;
36
+ export declare function sessionKeyAttestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralKeypair, allowanceVoucherWithSig, }: SessionKeyAttestedComputeArgs): Promise<DecryptionAttestation<EciesScheme, SupportedFheType>>;
49
37
  export interface SessionKeyAttestedDecryptArgs {
50
38
  chainId: SupportedChainId;
51
39
  ephemeralKeypair: Secp256k1Keypair;
52
- kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>;
40
+ kmsQuorumClient: KmsQuorumClient;
53
41
  allowanceVoucherWithSig: AllowanceVoucherWithSig;
54
42
  handles: HexString[];
55
43
  backoffConfig?: Partial<BackoffConfig> | undefined;
44
+ reencryptPubKey?: Uint8Array | undefined;
45
+ reencryptKeypair?: Secp256k1Keypair | undefined;
56
46
  }
57
- export declare function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
47
+ /**
48
+ * Performs attested decrypts using a voucher-backed session key.
49
+ *
50
+ * @example Plaintext results
51
+ * ```ts
52
+ * const attestations = await sessionKeyAttestedDecrypt({
53
+ * chainId,
54
+ * kmsConnectRpcEndpointOrClient: covalidatorUrl,
55
+ * allowanceVoucherWithSig: voucher,
56
+ * ephemeralKeypair,
57
+ * handles,
58
+ * });
59
+ * console.log(attestations[0].plaintext.value);
60
+ * ```
61
+ *
62
+ * @example Encrypted results
63
+ * ```ts
64
+ * const encryptedResults = await sessionKeyAttestedDecrypt({
65
+ * chainId,
66
+ * kmsConnectRpcEndpointOrClient: covalidatorUrl,
67
+ * allowanceVoucherWithSig: voucher,
68
+ * ephemeralKeypair,
69
+ * handles,
70
+ * reencryptPubKey: recipientPubKey,
71
+ * });
72
+ * console.log(
73
+ * encryptedResults[0].encryptedPlaintext.ciphertext.value,
74
+ * );
75
+ * ```
76
+ */
77
+ export declare function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType> | EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>>;
@@ -2,23 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createAllowanceVoucher = createAllowanceVoucher;
4
4
  exports.grantSessionKey = grantSessionKey;
5
- exports.sessionKeyReencryptor = sessionKeyReencryptor;
6
5
  exports.updateActiveVouchersSessionNonce = updateActiveVouchersSessionNonce;
7
6
  exports.sessionKeyAttestedCompute = sessionKeyAttestedCompute;
8
7
  exports.sessionKeyAttestedDecrypt = sessionKeyAttestedDecrypt;
9
8
  const protobuf_1 = require("@bufbuild/protobuf");
10
9
  const viem_1 = require("viem");
11
10
  const accounts_1 = require("viem/accounts");
12
- const index_js_1 = require("../attesteddecrypt/index.js");
13
- const chain_js_1 = require("../chain.js");
14
11
  const encryption_js_1 = require("../encryption/encryption.js");
15
12
  const lightning_preview_js_1 = require("../generated/abis/lightning-preview.js");
16
13
  const lightning_js_1 = require("../generated/abis/lightning.js");
17
14
  const verifier_js_1 = require("../generated/abis/verifier.js");
18
- const index_js_2 = require("../index.js");
19
- const index_js_3 = require("../lite/index.js");
20
- const index_js_4 = require("../reencryption/index.js");
21
- const retry_js_1 = require("../retry.js");
15
+ const index_js_1 = require("../index.js");
16
+ const index_js_2 = require("../lite/index.js");
17
+ const index_js_3 = require("../reencryption/index.js");
18
+ const attested_decrypt_js_1 = require("../attesteddecrypt/attested-decrypt.js");
22
19
  const kms_service_pb_js_1 = require("../generated/es/inco/kms/lite/v1/kms_service_pb.js");
23
20
  const types_pb_js_1 = require("../generated/es/inco/kms/lite/v1/types_pb.js");
24
21
  // Given a sharer's wallet client, an incoLite contract address, and a
@@ -64,7 +61,7 @@ async function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContra
64
61
  // Careful that the verifying contract here is the SessionVerifier contract,
65
62
  // not the incoLite contract.
66
63
  sessionVerifierContractAddress, (0, viem_1.toFunctionSelector)(getCanUseSessionAbi()), sharerArgData);
67
- const eip712Payload = (0, index_js_4.createEIP712Payload)({
64
+ const eip712Payload = (0, index_js_3.createEIP712Payload)({
68
65
  chainId,
69
66
  primaryType: 'AllowanceVoucher',
70
67
  primaryTypeFields: getAllowanceVoucherAbi(),
@@ -84,52 +81,6 @@ async function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContra
84
81
  voucherSignature,
85
82
  };
86
83
  }
87
- // The sessionKeyReencryptor function is a reencryptor that uses a session key
88
- // to reencrypt data.
89
- async function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }) {
90
- const kmsClient = (0, index_js_3.getKmsClient)(kmsConnectRpcEndpointOrClient ||
91
- (0, index_js_3.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
92
- const requesterAccount = (0, accounts_1.privateKeyToAccount)(`0x${ephemeralKeypair.kp.getPrivate('hex')}`);
93
- const ephemeralPubKey = ephemeralKeypair.encodePublicKey();
94
- // Sign the EIP712 attesting that the requester has access to the private key
95
- // corresponding to the ephemeral public key.
96
- const eip712Payload = (0, index_js_3.reencryptEIP712)(chainId, ephemeralPubKey);
97
- // Since the account is an ephemeral keypair stored in memory (not in Metamask),
98
- // this step will NOT prompt the user with a pop-up.
99
- const eip712Signature = await requesterAccount.signTypedData(eip712Payload);
100
- return async function reencrypt({ handle, }) {
101
- const reencryptRequest = (0, protobuf_1.create)(kms_service_pb_js_1.ReencryptRequestSchema, {
102
- userAddress: requesterAccount.address,
103
- ephemeralPubKey,
104
- eip712Signature: (0, viem_1.hexToBytes)(eip712Signature),
105
- handlesWithProofs: [
106
- (0, protobuf_1.create)(types_pb_js_1.HandleWithProofSchema, {
107
- handle,
108
- aclProof: {
109
- proof: {
110
- case: 'incoLiteAdvancedAclProof',
111
- value: (0, protobuf_1.create)(types_pb_js_1.IncoLiteAdvancedACLProofSchema, {
112
- allowanceProof: (0, protobuf_1.create)(types_pb_js_1.AllowanceProofSchema, {
113
- sharer: allowanceVoucherWithSig.sharer,
114
- voucher: (0, protobuf_1.create)(types_pb_js_1.AllowanceVoucherSchema, {
115
- sessionNonce: (0, viem_1.hexToBytes)(allowanceVoucherWithSig.voucher.sessionNonce),
116
- verifyingContract: allowanceVoucherWithSig.voucher.verifyingContract,
117
- callFunction: (0, viem_1.hexToBytes)(allowanceVoucherWithSig.voucher.callFunction),
118
- sharerArgData: (0, viem_1.hexToBytes)(allowanceVoucherWithSig.voucher.sharerArgData),
119
- }),
120
- voucherSignature: (0, viem_1.hexToBytes)(allowanceVoucherWithSig.voucherSignature),
121
- requesterArgData: new Uint8Array(),
122
- }),
123
- }),
124
- },
125
- },
126
- }),
127
- ],
128
- });
129
- const response = await kmsClient.reencrypt(reencryptRequest);
130
- return (0, index_js_3.decryptGrpcResponse)(response, ephemeralKeypair, handle);
131
- };
132
- }
133
84
  async function updateActiveVouchersSessionNonce(incoLiteAddress, sharerWalletClient) {
134
85
  const verifier = await getIncoVerifier(incoLiteAddress, sharerWalletClient);
135
86
  const txHash = await verifier.write.updateActiveVouchersSessionNonce();
@@ -137,15 +88,13 @@ async function updateActiveVouchersSessionNonce(incoLiteAddress, sharerWalletCli
137
88
  }
138
89
  // The sessionKeyAttestedCompute function is a decryptor that uses a session key
139
90
  // to compute on a handle.
140
- async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }) {
141
- const kmsClient = (0, index_js_3.getKmsClient)(kmsConnectRpcEndpointOrClient ||
142
- (0, index_js_3.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
91
+ async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralKeypair, allowanceVoucherWithSig, }) {
143
92
  const requesterAccount = (0, accounts_1.privateKeyToAccount)(`0x${ephemeralKeypair.kp.getPrivate('hex')}`);
144
93
  const rhsPlaintextBig = BigInt(rhsPlaintext);
145
- const rhsValueBytes = (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, (0, index_js_2.getHandleType)(lhsHandle), rhsPlaintextBig);
94
+ const rhsValueBytes = (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, (0, index_js_1.getHandleType)(lhsHandle), rhsPlaintextBig);
146
95
  // Sign the EIP712 attesting that the requester has access to the private key
147
96
  // corresponding to the ephemeral public key.
148
- const eip712Payload = (0, index_js_4.createEIP712Payload)({
97
+ const eip712Payload = (0, index_js_3.createEIP712Payload)({
149
98
  chainId: BigInt(chainId),
150
99
  primaryType: 'AttestedComputeRequest',
151
100
  primaryTypeFields: [
@@ -156,10 +105,10 @@ async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffC
156
105
  message: {
157
106
  op: op,
158
107
  lhsHandle: lhsHandle,
159
- rhsPlaintext: (0, index_js_2.bigintToBytes32)(rhsPlaintextBig),
108
+ rhsPlaintext: (0, index_js_1.bigintToBytes32)(rhsPlaintextBig),
160
109
  },
161
- domainName: index_js_3.ATTESTED_COMPUTE_DOMAIN_NAME,
162
- domainVersion: index_js_3.ATTESTED_COMPUTE_DOMAIN_VERSION,
110
+ domainName: index_js_2.ATTESTED_COMPUTE_DOMAIN_NAME,
111
+ domainVersion: index_js_2.ATTESTED_COMPUTE_DOMAIN_VERSION,
163
112
  });
164
113
  // Since the account is an ephemeral keypair stored in memory (not in Metamask),
165
114
  // this step will NOT prompt the user with a pop-up.
@@ -190,40 +139,56 @@ async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffC
190
139
  },
191
140
  },
192
141
  });
193
- const response = await (0, retry_js_1.retryWithBackoff)(async () => {
194
- return await kmsClient.attestedCompute(attestedComputeRequest);
195
- }, backoffConfig);
196
- if (!response.decryptionAttestation) {
197
- throw new Error('Failed to get decryption attestation from attested compute');
198
- }
199
- const decryptionAttestation = response.decryptionAttestation;
200
- if (decryptionAttestation.plaintext === undefined) {
201
- throw new Error('No plaintext in compute response');
202
- }
203
- const bigIntValue = (0, index_js_2.bytesToBigInt)(decryptionAttestation.plaintext);
204
- return {
205
- handle: decryptionAttestation.handle,
206
- plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, (0, index_js_2.getHandleType)(lhsHandle), bigIntValue),
207
- covalidatorSignature: decryptionAttestation.signature,
208
- };
142
+ let response = await kmsQuorumClient.attestedCompute(attestedComputeRequest, backoffConfig);
143
+ return response;
209
144
  }
210
- // The sessionKeyAttestedDecrypt function is a decryptor that uses a session key
211
- // to decrypt data.
212
- async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, }) {
213
- const kmsClient = (0, index_js_3.getKmsClient)(kmsConnectRpcEndpointOrClient ||
214
- (0, index_js_3.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
145
+ /**
146
+ * Performs attested decrypts using a voucher-backed session key.
147
+ *
148
+ * @example Plaintext results
149
+ * ```ts
150
+ * const attestations = await sessionKeyAttestedDecrypt({
151
+ * chainId,
152
+ * kmsConnectRpcEndpointOrClient: covalidatorUrl,
153
+ * allowanceVoucherWithSig: voucher,
154
+ * ephemeralKeypair,
155
+ * handles,
156
+ * });
157
+ * console.log(attestations[0].plaintext.value);
158
+ * ```
159
+ *
160
+ * @example Encrypted results
161
+ * ```ts
162
+ * const encryptedResults = await sessionKeyAttestedDecrypt({
163
+ * chainId,
164
+ * kmsConnectRpcEndpointOrClient: covalidatorUrl,
165
+ * allowanceVoucherWithSig: voucher,
166
+ * ephemeralKeypair,
167
+ * handles,
168
+ * reencryptPubKey: recipientPubKey,
169
+ * });
170
+ * console.log(
171
+ * encryptedResults[0].encryptedPlaintext.ciphertext.value,
172
+ * );
173
+ * ```
174
+ */
175
+ async function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, reencryptPubKey, reencryptKeypair, }) {
215
176
  const requesterAccount = (0, accounts_1.privateKeyToAccount)(`0x${ephemeralKeypair.kp.getPrivate('hex')}`);
216
177
  // Sign the EIP712 attesting that the requester has access to the private key
217
178
  // corresponding to the ephemeral public key.
218
- const eip712Payload = (0, index_js_4.createEIP712Payload)({
179
+ const eip712Payload = (0, index_js_3.createEIP712Payload)({
219
180
  chainId: BigInt(chainId),
220
181
  primaryType: 'AttestedDecryptRequest',
221
- primaryTypeFields: [{ name: 'handles', type: 'bytes32[]' }],
182
+ primaryTypeFields: [
183
+ { name: 'handles', type: 'bytes32[]' },
184
+ { name: 'publicKey', type: 'bytes' },
185
+ ],
222
186
  message: {
223
187
  handles: handles,
188
+ publicKey: (0, viem_1.bytesToHex)(reencryptPubKey ? reencryptPubKey : Uint8Array.from([])),
224
189
  },
225
- domainName: index_js_3.ATTESTED_DECRYPT_DOMAIN_NAME,
226
- domainVersion: index_js_3.ATTESTED_DECRYPT_DOMAIN_VERSION,
190
+ domainName: index_js_2.ATTESTED_DECRYPT_DOMAIN_NAME,
191
+ domainVersion: index_js_2.ATTESTED_DECRYPT_DOMAIN_VERSION,
227
192
  });
228
193
  // Since the account is an ephemeral keypair stored in memory (not in Metamask),
229
194
  // this step will NOT prompt the user with a pop-up.
@@ -255,28 +220,14 @@ async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClien
255
220
  userAddress: requesterAccount.address,
256
221
  handlesWithProofs: handlesWithProofs,
257
222
  eip712Signature: (0, viem_1.hexToBytes)(eip712Signature),
223
+ reencryptPubKey: reencryptPubKey ? reencryptPubKey : Uint8Array.from([]),
258
224
  });
259
- const response = await (0, retry_js_1.retryWithBackoff)(async () => {
260
- return await kmsClient.attestedDecrypt(attestedDecryptRequest);
261
- }, backoffConfig);
262
- if (!response.decryptionAttestations ||
263
- response.decryptionAttestations.length === 0) {
264
- throw new index_js_1.AttestedDecryptError('No decryption attestations in response');
225
+ let response = await kmsQuorumClient.attestedDecrypt(attestedDecryptRequest, backoffConfig);
226
+ // If reencryptPubKey is provided with a keypair, decrypt the encrypted attestations
227
+ if (reencryptPubKey !== undefined && reencryptKeypair) {
228
+ response = await (0, attested_decrypt_js_1.decryptEncryptedAttestations)(response, reencryptKeypair);
265
229
  }
266
- const results = response.decryptionAttestations.map((att) => {
267
- if (att.plaintext === undefined) {
268
- throw new index_js_1.AttestedDecryptError('No plaintext in attestation');
269
- }
270
- const h = att.handle;
271
- const handleType = (0, index_js_2.getHandleType)(h);
272
- const bigIntValue = (0, index_js_2.bytesToBigInt)(att.plaintext);
273
- return {
274
- handle: h,
275
- plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
276
- covalidatorSignature: att.signature,
277
- };
278
- });
279
- return results;
230
+ return response;
280
231
  }
281
232
  // Below are helpers to get ABIs of functions/structs from the SessionVerifier
282
233
  // contract.
@@ -341,4 +292,4 @@ async function getIncoVerifier(incoLiteAddress, walletClient) {
341
292
  client: walletClient,
342
293
  });
343
294
  }
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnR0Esd0RBcUJDO0FBd0JELDBDQWlFQztBQXNCRCxzREFrRUM7QUFFRCw0RUFPQztBQTZCRCw4REE4R0M7QUEwQkQsOERBMEdDO0FBOWpCRCxpREFBNEM7QUFFNUMsK0JBV2M7QUFDZCw0Q0FBb0Q7QUFDcEQsMERBR3FDO0FBQ3JDLDBDQUFrRTtBQUNsRSwrREFLcUM7QUFDckMsaUZBR2dEO0FBQ2hELGlFQUd3QztBQUN4QywrREFBZ0U7QUFDaEUsMENBS3FCO0FBU3JCLCtDQVMwQjtBQUMxQix1REFHa0M7QUFDbEMsMENBQThEO0FBSTlELDBGQUk0RDtBQUM1RCw4RUFLc0Q7QUFnQnRELHNFQUFzRTtBQUN0RSx3RUFBd0U7QUFDeEUsK0JBQStCO0FBQ3hCLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsZUFBd0IsRUFDeEIsa0JBQTJELEVBQzNELGlCQUEwQixFQUMxQixZQUFpQixFQUNqQixhQUFrQjtJQUVsQixNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUU1RSwwRUFBMEU7SUFDMUUsd0NBQXdDO0lBQ3hDLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztRQUNyRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTztLQUNuQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsWUFBWTtRQUNaLGlCQUFpQjtRQUNqQixZQUFZO1FBQ1osYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDO0FBdUJELG1EQUFtRDtBQUM1QyxLQUFLLFVBQVUsZUFBZSxDQUFDLEVBQ3BDLE9BQU8sRUFDUCxlQUFlLEVBQ2YsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsU0FB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
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFvRkEsd0RBcUJDO0FBd0JELDBDQWlFQztBQUVELDRFQU9DO0FBMEJELDhEQXlGQztBQXVERCw4REE4RkM7QUFuZEQsaURBQTRDO0FBQzVDLCtCQVljO0FBQ2QsNENBQW9EO0FBTXBELCtEQUtxQztBQUNyQyxpRkFHZ0Q7QUFDaEQsaUVBR3dDO0FBQ3hDLCtEQUFnRTtBQUNoRSwwQ0FBd0U7QUFPeEUsK0NBSzBCO0FBQzFCLHVEQUErRDtBQUsvRCxnRkFBc0Y7QUFDdEYsMEZBRzREO0FBQzVELDhFQUtzRDtBQWtCdEQsc0VBQXNFO0FBQ3RFLHdFQUF3RTtBQUN4RSwrQkFBK0I7QUFDeEIsS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxlQUF3QixFQUN4QixrQkFBMkQsRUFDM0QsaUJBQTBCLEVBQzFCLFlBQWlCLEVBQ2pCLGFBQWtCO0lBRWxCLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBRTVFLDBFQUEwRTtJQUMxRSx3Q0FBd0M7SUFDeEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDO1FBQ3JFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPO0tBQ25DLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLFlBQVk7UUFDWixhQUFhO0tBQ2QsQ0FBQztBQUNKLENBQUM7QUF1QkQsbURBQW1EO0FBQzVDLEtBQUssVUFBVSxlQUFlLENBQUMsRUFDcEMsT0FBTyxFQUNQLGVBQWUsRUFDZiw4QkFBOEIsRUFDOUIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixTQUFTLEdBQ1c7SUFDcEIsTUFBTSxPQUFPLEdBQUc7UUFDZCxTQUFTLEVB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
@@ -3,19 +3,19 @@ import { DecryptionAttestation } from '../attesteddecrypt/types.js';
3
3
  import { HexString } from '../binary.js';
4
4
  import { SupportedChainId } from '../chain.js';
5
5
  import { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
6
- import type { KmsClient } from '../kms/client.js';
6
+ import { KmsQuorumClient } from '../kms/quorumClient.js';
7
7
  import type { BackoffConfig } from '../retry.js';
8
8
  import { AttestedComputeOP } from './types.js';
9
9
  export declare const ATTESTED_COMPUTE_DOMAIN_NAME = "IncoAttestedCompute";
10
- export declare const ATTESTED_COMPUTE_DOMAIN_VERSION = "0.1.0";
10
+ export declare const ATTESTED_COMPUTE_DOMAIN_VERSION = "1";
11
11
  /**
12
12
  * Arguments for creating an attested compute.
13
13
  */
14
14
  export interface IncoLiteAttestedComputeArgs {
15
15
  /** The wallet used to interact with the blockchain and sign the compute request */
16
16
  walletClient: WalletClient<Transport, Chain, Account>;
17
- /** The KMS connect RPC endpoint or client instance */
18
- kmsConnectRpcEndpointOrClient?: string | KmsClient;
17
+ /** The KMS quorum client instance */
18
+ kmsQuorumClient: KmsQuorumClient;
19
19
  /** The chain ID to use */
20
20
  chainId: SupportedChainId;
21
21
  }
@@ -27,12 +27,12 @@ export interface IncoLiteAttestedComputeArgs {
27
27
  *
28
28
  * @todo Support multiple operations in a single request.
29
29
  */
30
- export declare function attestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsConnectRpcEndpointOrClient, chainId, }: {
30
+ export declare function attestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, }: {
31
31
  lhsHandle: HexString;
32
32
  op: AttestedComputeOP;
33
33
  rhsPlaintext: bigint | boolean;
34
34
  backoffConfig?: Partial<BackoffConfig> | undefined;
35
35
  walletClient: WalletClient<Transport, Chain, Account>;
36
- kmsConnectRpcEndpointOrClient?: string | KmsClient;
36
+ kmsQuorumClient: KmsQuorumClient;
37
37
  chainId: SupportedChainId;
38
38
  }): Promise<DecryptionAttestation<EciesScheme, T>>;
@@ -6,16 +6,11 @@ const protobuf_1 = require("@bufbuild/protobuf");
6
6
  const viem_1 = require("viem");
7
7
  const attested_decrypt_js_1 = require("../attesteddecrypt/attested-decrypt.js");
8
8
  const binary_js_1 = require("../binary.js");
9
- const chain_js_1 = require("../chain.js");
10
- const encryption_js_1 = require("../encryption/encryption.js");
11
9
  const kms_service_pb_js_1 = require("../generated/es/inco/kms/lite/v1/kms_service_pb.js");
12
- const handle_js_1 = require("../handle.js");
13
- const client_js_1 = require("../kms/client.js");
14
10
  const eip712_js_1 = require("../reencryption/eip712.js");
15
- const retry_js_1 = require("../retry.js");
16
11
  const types_js_1 = require("./types.js");
17
12
  exports.ATTESTED_COMPUTE_DOMAIN_NAME = 'IncoAttestedCompute';
18
- exports.ATTESTED_COMPUTE_DOMAIN_VERSION = '0.1.0';
13
+ exports.ATTESTED_COMPUTE_DOMAIN_VERSION = '1';
19
14
  /**
20
15
  * Creates an attested compute function that can decrypt handles with an attached attestation from the covalidator.
21
16
  * @param args - The arguments for creating the attested compute function
@@ -24,10 +19,8 @@ exports.ATTESTED_COMPUTE_DOMAIN_VERSION = '0.1.0';
24
19
  *
25
20
  * @todo Support multiple operations in a single request.
26
21
  */
27
- async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsConnectRpcEndpointOrClient, chainId, }) {
22
+ async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, }) {
28
23
  try {
29
- const kmsClient = (0, client_js_1.getKmsClient)(kmsConnectRpcEndpointOrClient ||
30
- (0, client_js_1.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
31
24
  (0, attested_decrypt_js_1.validateHandle)(lhsHandle);
32
25
  const rhsPlaintextBig = typeof rhsPlaintext === 'boolean'
33
26
  ? rhsPlaintext
@@ -66,24 +59,8 @@ async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, wal
66
59
  },
67
60
  },
68
61
  });
69
- const response = await (0, retry_js_1.retryWithBackoff)(async () => {
70
- return await kmsClient.attestedCompute(attestedComputeRequest);
71
- }, backoffConfig);
72
- const decryptionAttestation = response.decryptionAttestation;
73
- if (decryptionAttestation?.plaintext === undefined) {
74
- throw new types_js_1.AttestedComputeError('No plaintext in compute response');
75
- }
76
- const computeResultHandle = response.decryptionAttestation?.handle;
77
- if (!computeResultHandle) {
78
- throw new types_js_1.AttestedComputeError('No compute result handle in response');
79
- }
80
- const handleType = (0, handle_js_1.getHandleType)(computeResultHandle);
81
- const bigIntValue = (0, binary_js_1.bytesToBigInt)(decryptionAttestation.plaintext);
82
- return {
83
- handle: computeResultHandle,
84
- plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
85
- covalidatorSignature: decryptionAttestation.signature,
86
- };
62
+ let decryptionAttestation = await kmsQuorumClient.attestedCompute(attestedComputeRequest, backoffConfig);
63
+ return decryptionAttestation;
87
64
  }
88
65
  catch (error) {
89
66
  if (error instanceof types_js_1.AttestedComputeError) {
@@ -92,4 +69,4 @@ async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, wal
92
69
  throw new types_js_1.AttestedComputeError('Failed to perform attested compute', error);
93
70
  }
94
71
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGNvbXB1dGUvYXR0ZXN0ZWQtY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnREEsMENBc0dDO0FBdEpELGlEQUE0QztBQUU1QywrQkFBa0M7QUFDbEMsZ0ZBQXdFO0FBRXhFLDRDQUF5RTtBQUN6RSwwQ0FBa0U7QUFDbEUsK0RBS3FDO0FBQ3JDLDBGQUc0RDtBQUM1RCw0Q0FBNkM7QUFFN0MsZ0RBQXdFO0FBQ3hFLHlEQUFnRTtBQUVoRSwwQ0FBK0M7QUFDL0MseUNBQXFFO0FBRXhELFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFjdkQ7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxlQUFlLENBQTZCLEVBQ2hFLFNBQVMsRUFDVCxFQUFFLEVBQ0YsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLE9BQU8sR0FTUjtJQUNDLElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUEsd0JBQVksRUFDNUIsNkJBQTZCO1lBQzNCLElBQUEsa0NBQXNCLEVBQUMsSUFBQSw0QkFBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRCxDQUFDO1FBQ0YsSUFBQSxvQ0FBYyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTFCLE1BQU0sZUFBZSxHQUNuQixPQUFPLFlBQVksS0FBSyxTQUFTO1lBQy9CLENBQUMsQ0FBQyxZQUFZO2dCQUNaLENBQUMsQ0FBQyxFQUFFO2dCQUNKLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUzQix1REFBdUQ7UUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBQSwrQkFBbUIsRUFBQztZQUN4QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztZ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
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGNvbXB1dGUvYXR0ZXN0ZWQtY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF3Q0EsMENBNkVDO0FBckhELGlEQUE0QztBQUU1QywrQkFBa0M7QUFDbEMsZ0ZBQXdFO0FBRXhFLDRDQUEwRDtBQUcxRCwwRkFHNEQ7QUFFNUQseURBQWdFO0FBRWhFLHlDQUFxRTtBQUV4RCxRQUFBLDRCQUE0QixHQUFHLHFCQUFxQixDQUFDO0FBQ3JELFFBQUEsK0JBQStCLEdBQUcsR0FBRyxDQUFDO0FBY25EOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUE2QixFQUNoRSxTQUFTLEVBQ1QsRUFBRSxFQUNGLFlBQVksRUFDWixhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixPQUFPLEdBU1I7SUFDQyxJQUFJLENBQUM7UUFDSCxJQUFBLG9DQUFjLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUIsTUFBTSxlQUFlLEdBQ25CLE9BQU8sWUFBWSxLQUFLLFNBQVM7WUFDL0IsQ0FBQyxDQUFDLFlBQVk7Z0JBQ1osQ0FBQyxDQUFDLEVBQUU7Z0JBQ0osQ0FBQyxDQUFDLEVBQUU7WUFDTixDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNCLHVEQUF1RDtRQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFBLCtCQUFtQixFQUFDO1lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3hCLFdBQVcsRUFBRSx3QkFBd0I7WUFDckMsaUJBQWlCLEVBQUU7Z0JBQ2pCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO2dCQUM3QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtnQkFDdEMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7YUFDMUM7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFlBQVksRUFBRSxJQUFBLDJCQUFlLEVBQUMsZUFBZSxDQUFDO2FBQy9DO1lBQ0QsVUFBVSxFQUFFLG9DQUE0QjtZQUN4QyxhQUFhLEVBQUUsdUNBQStCO1NBQy9DLENBQUMsQ0FBQztRQUVILDBCQUEwQjtRQUMxQixNQUFNLGVBQWUsR0FBRyxNQUFNLFlBQVksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEUsTUFBTSxzQkFBc0IsR0FBMkIsSUFBQSxpQkFBTSxFQUMzRCxnREFBNEIsRUFDNUI7WUFDRSxXQUFXLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQ3pDLEVBQUUsRUFBRSxFQUFFO1lBQ04sU0FBUyxFQUFFLFNBQVM7WUFDcEIsWUFBWSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzFDLGVBQWUsRUFBRSxJQUFBLGlCQUFVLEVBQUMsZUFBZSxDQUFDO1lBQzVDLFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLHVCQUF1QjtvQkFDN0IsS0FBSyxFQUFFLEVBQUU7aUJBQ1Y7YUFDRjtTQUNGLENBQ0YsQ0FBQztRQUVGLElBQUkscUJBQXFCLEdBQUcsTUFBTSxlQUFlLENBQUMsZUFBZSxDQUMvRCxzQkFBc0IsRUFDdEIsYUFBYSxDQUNkLENBQUM7UUFFRixPQUFPLHFCQUE4RCxDQUFDO0lBQ3hFLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksK0JBQW9CLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLElBQUksK0JBQW9CLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUUsQ0FBQztBQUNILENBQUMifQ==