@arcanetech/privacy-sdk-stellar 0.3.0 → 0.4.1

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.
@@ -31,71 +31,7 @@ if (typeof window !== "undefined") {
31
31
  }
32
32
 
33
33
 
34
- export const networks = {
35
- testnet: {
36
- networkPassphrase: "Test SDF Network ; September 2015",
37
- contractId: "CD56SAQXVPM3MWTTNVDBDVUEQC6DPRIIYHP67C3ICH6JGMLJSWWUFUON",
38
- }
39
- } as const
40
-
41
-
42
- /**
43
- * Per-application audit public key allowlist entry (runtime/config state).
44
- */
45
- export interface AppAuditState {
46
- audit_public_key_x: Buffer;
47
- audit_public_key_y: Buffer;
48
- enabled: boolean;
49
- }
50
-
51
-
52
- /**
53
- * Ephemeral BabyJubJub / ECDH point (not hashed into the Merkle tree).
54
- */
55
- export interface EphemeralKeyCoords {
56
- x: Buffer;
57
- y: Buffer;
58
- }
59
-
60
-
61
- /**
62
- * Admin-managed, nonce-keyed ZK circuit configuration: verification key plus every dynamic
63
- * shape parameter of the `Transaction(...)` circuit instantiation used to verify a `transact`
64
- * call for that nonce (see `circuits/main.circom` / `libs/zk::ZkLayoutParams`).
65
- */
66
- export interface ZkConfig {
67
- audit_offset: u32;
68
- deprecated: boolean;
69
- n_audit_slots: u32;
70
- n_ins: u32;
71
- n_outs: u32;
72
- note_audit_len: u32;
73
- note_output_len: u32;
74
- output_note_offset: u32;
75
- public_n_inputs: u32;
76
- public_n_outputs: u32;
77
- vk_bytes: Buffer;
78
- }
79
-
80
- /**
81
- * Persistent storage key for the per-nonce [`ZkConfig`] registry.
82
- */
83
- export type ZkConfigKey = {tag: "Config", values: readonly [u64]};
84
34
 
85
- /**
86
- * Storage key for tree leaves — each leaf stored by index for O(1) write on deposit.
87
- */
88
- export type TreeDataKey = {tag: "Leaf", values: readonly [u32]} | {tag: "LeafCount", values: void} | {tag: "LeafEphemeral", values: readonly [u32]} | {tag: "PairwiseFrontier", values: void};
89
-
90
- /**
91
- * Storage key for nullifiers — each nullifier hash maps to bool (consumed or not).
92
- */
93
- export type NulifierDataKey = {tag: "Nulifier", values: readonly [Buffer]};
94
-
95
- /**
96
- * Ring buffer of historical Merkle roots (for proofs generated against recent states).
97
- */
98
- export type RootHistoryKey = {tag: "CurrentRootIndex", values: void} | {tag: "Root", values: readonly [u32]};
99
35
 
100
36
  export const Errors = {
101
37
  1: {message:"NullifierUsed"},
@@ -123,11 +59,11 @@ export const Errors = {
123
59
  */
124
60
  12: {message:"KytRegistryMissing"},
125
61
  /**
126
- * Public note audit key is not registered for any enabled application.
62
+ * Reserved (H1): on-chain application audit-key allowlist removed. Do not reuse.
127
63
  */
128
64
  13: {message:"UnknownAuditPublicKey"},
129
65
  /**
130
- * Public note audit key coordinates are not a valid BabyJubJub point.
66
+ * Reserved (H1): on-chain application audit-key allowlist removed. Do not reuse.
131
67
  */
132
68
  14: {message:"InvalidAuditPublicKey"},
133
69
  /**
@@ -147,71 +83,102 @@ export const Errors = {
147
83
  * `n_audit_slots`, an `audit_offset`/`output_note_offset` that doesn't match the
148
84
  * formula-derived value, or a VK whose `ic` length doesn't match the shape).
149
85
  */
150
- 18: {message:"InvalidZkConfig"}
86
+ 18: {message:"InvalidZkConfig"},
87
+ /**
88
+ * `__constructor` was called with `tree_depth > MAX_TREE_DEPTH`.
89
+ */
90
+ 19: {message:"InvalidTreeDepth"},
91
+ /**
92
+ * Duplicate nullifier hashes appear in a single `transact` public-signal vector (C3).
93
+ */
94
+ 20: {message:"DuplicateNullifier"},
95
+ /**
96
+ * Calldata escrow recipient does not match the public-signal escrow limbs.
97
+ */
98
+ 21: {message:"EscrowRecipientMismatch"},
99
+ /**
100
+ * A sweep (non-zero public escrow recipient) requires a registry record for that account.
101
+ */
102
+ 22: {message:"SweepRequiresRegisteredRecipient"}
151
103
  }
152
104
 
153
105
 
154
-
155
- export interface OutputNoteEventPayload {
156
- ciphertext: Buffer;
157
- ephemeral_x: Buffer;
158
- ephemeral_y: Buffer;
159
- output_index: u32;
160
- tag: Buffer;
106
+ /**
107
+ * Admin-managed, nonce-keyed ZK circuit configuration: verification key plus every dynamic
108
+ * shape parameter of the `Transaction(...)` circuit instantiation used to verify a `transact`
109
+ * call for that nonce (see `circuits/main.circom` / `libs/zk::ZkLayoutParams`).
110
+ */
111
+ export interface ZkConfig {
112
+ audit_offset: u32;
113
+ deprecated: boolean;
114
+ n_audit_slots: u32;
115
+ n_ins: u32;
116
+ n_outs: u32;
117
+ note_audit_len: u32;
118
+ note_output_len: u32;
119
+ output_note_offset: u32;
120
+ public_n_inputs: u32;
121
+ public_n_outputs: u32;
122
+ vk_bytes: Buffer;
161
123
  }
162
124
 
125
+ /**
126
+ * Storage key for tree leaves — each leaf stored by index for O(1) write on deposit.
127
+ */
128
+ export type TreeDataKey = {tag: "Leaf", values: readonly [u32]} | {tag: "LeafCount", values: void} | {tag: "LeafEphemeral", values: readonly [u32]} | {tag: "PairwiseFrontier", values: void};
163
129
 
130
+ /**
131
+ * Persistent storage key for the per-nonce [`ZkConfig`] registry.
132
+ */
133
+ export type ZkConfigKey = {tag: "Config", values: readonly [u64]};
164
134
 
165
- export interface AuditSlotEventPayload {
166
- ciphertext: Buffer;
167
- ephemeral_x: Buffer;
168
- ephemeral_y: Buffer;
169
- tag: Buffer;
170
- }
171
135
 
172
136
 
173
- export const Groth16Error = {
174
- 0: {message:"MalformedVerifyingKey"}
175
- }
137
+ /**
138
+ * Ring buffer of historical Merkle roots (for proofs generated against recent states).
139
+ */
140
+ export type RootHistoryKey = {tag: "CurrentRootIndex", values: void} | {tag: "Root", values: readonly [u32]};
176
141
 
177
142
 
178
143
  /**
179
- * Plaintext note fields stored in registry for onboarding claim.
144
+ * Storage key for nullifiers — each nullifier hash maps to bool (consumed or not).
180
145
  */
181
- export interface PlaintextNote {
182
- asset_hi: Buffer;
183
- asset_lo: Buffer;
184
- /**
185
- * Must remain `None`; registry rejects payloads that expose the sender ephemeral scalar.
146
+ export type NulifierDataKey = {tag: "Nulifier", values: readonly [Buffer]};
147
+
148
+
149
+ /**
150
+ * Ephemeral BabyJubJub / ECDH point (not hashed into the Merkle tree).
186
151
  */
187
- deposited_ephemeral_scalar: Option<Buffer>;
188
- nullifier: Buffer;
189
- secret: Buffer;
190
- value: i128;
152
+ export interface EphemeralKeyCoords {
153
+ x: Buffer;
154
+ y: Buffer;
191
155
  }
192
156
 
193
157
 
194
- export interface PendingNotePayload {
195
- notes: Array<PlaintextNote>;
196
- }
197
158
 
198
159
 
199
- export interface PrivateAddressRegistration {
200
- owner: string;
201
- public_key_x: Buffer;
202
- public_key_y: Buffer;
160
+
161
+
162
+ export interface AuditSlotEventPayload {
163
+ ciphertext: Buffer;
164
+ ephemeral_x: Buffer;
165
+ ephemeral_y: Buffer;
166
+ tag: Buffer;
203
167
  }
204
168
 
205
- export type OptionalPrivateAddressRegistration = {tag: "None", values: void} | {tag: "Some", values: readonly [PrivateAddressRegistration]};
206
169
 
170
+ export interface OutputNoteEventPayload {
171
+ ciphertext: Buffer;
172
+ ephemeral_x: Buffer;
173
+ ephemeral_y: Buffer;
174
+ output_index: u32;
175
+ tag: Buffer;
176
+ }
207
177
 
208
- export interface OnboardingPayload {
209
- encrypted_private_key: Buffer;
210
- notes: PendingNotePayload;
211
- owner: string;
212
- private_address_registration: OptionalPrivateAddressRegistration;
213
- temp_public_key_x: Buffer;
214
- temp_public_key_y: Buffer;
178
+
179
+ export interface KytPassageRecord {
180
+ consumed: boolean;
181
+ expires_at_ledger: u32;
215
182
  }
216
183
 
217
184
 
@@ -223,103 +190,108 @@ export interface PrivateAddressRecord {
223
190
  }
224
191
 
225
192
 
226
- export interface PendingNullifierRecord {
227
- created_at_ledger: u32;
228
- created_by: string;
229
- encrypted_private_key: Buffer;
230
- note: PlaintextNote;
231
- owner: string;
232
- temp_public_key_x: Buffer;
233
- temp_public_key_y: Buffer;
234
- }
235
-
236
-
237
- export interface KytPassageRecord {
238
- expires_at_ledger: u32;
239
- }
240
-
241
-
242
193
  export interface KytPassageAuthorization {
243
194
  expiration_ledger: u32;
244
195
  signature: Buffer;
245
196
  }
246
197
 
247
- export interface Client {
248
- /**
249
- * Construct and simulate a add_zk_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
250
- * Registers a new per-nonce ZK circuit configuration (VK + full circuit shape). Admin-only;
251
- * fails if `nonce` already has a config. Validates `n_outs` is even (leaves are inserted
252
- * pairwise via `PairwiseLeanIMT::insert_two`), `n_audit_slots >= n_ins + n_outs`, that
253
- * `audit_offset`/`output_note_offset` match the formula-derived layout, and that the VK's
254
- * `ic` length matches the resulting total public-signal count.
255
- */
256
- add_zk_config: ({admin, nonce, vk_bytes, n_ins, n_outs, public_n_inputs, public_n_outputs, n_audit_slots, note_audit_len, audit_offset, note_output_len, output_note_offset}: {admin: string, nonce: u64, vk_bytes: Buffer, n_ins: u32, n_outs: u32, public_n_inputs: u32, public_n_outputs: u32, n_audit_slots: u32, note_audit_len: u32, audit_offset: u32, note_output_len: u32, output_note_offset: u32}, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>
257
198
 
199
+ export interface PrivateAddressRegistration {
200
+ owner: string;
201
+ public_key_x: Buffer;
202
+ public_key_y: Buffer;
203
+ }
204
+
205
+ export const Groth16Error = {
206
+ 0: {message:"MalformedVerifyingKey"},
258
207
  /**
259
- * Construct and simulate a deprecate_zk_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
260
- * Marks a registered ZK config as deprecated; subsequent `transact` calls referencing this
261
- * `nonce` fail with [`Error::ZkConfigDeprecated`]. Admin-only.
208
+ * `Proof::from_bytes` received a `proof_bytes` argument that is too short (or otherwise
209
+ * fails to parse as `a || b || c`) for the fixed G1/G2 encoding lengths.
262
210
  */
263
- deprecate_zk_config: ({admin, nonce}: {admin: string, nonce: u64}, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>
264
-
211
+ 1: {message:"MalformedProof"},
265
212
  /**
266
- * Construct and simulate a get_zk_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
267
- * Reads a registered ZK config (extending its persistent TTL), or `None` if absent.
213
+ * `PublicSignals::from_bytes` received a length prefix that does not match the remaining
214
+ * payload (too short, truncated Fr limbs, or a claimed length that overflows).
268
215
  */
269
- get_zk_config: ({nonce}: {nonce: u64}, options?: MethodOptions) => Promise<AssembledTransaction<Option<ZkConfig>>>
216
+ 2: {message:"MalformedPublicSignals"}
217
+ }
270
218
 
219
+ export interface Client {
271
220
  /**
272
221
  * Construct and simulate a transact transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
273
222
  * Single entrypoint: verifies `circuits/main.circom` Groth16 proof and public signals, checks
274
223
  * tree root and nullifiers, appends new output commitments (with ephemeral keys, not in Merkle),
275
- * optionally forwards onboarding payload to the registry, then applies public token deposits /
276
- * withdrawals: `publicDepositedAssets` + `publicDeposits` pull from `from`, and
277
- * `publicWithdrawnAssets` + `publicWithdrawals` send to the Stellar account from
278
- * `withdrawAddressHi` / `withdrawAddressLo`.
224
+ * then applies public token deposits / withdrawals: `publicDepositedAssets` + `publicDeposits`
225
+ * pull from `from`, and `publicWithdrawnAssets` + `publicWithdrawals` send to the Stellar
226
+ * account from `withdrawAddressHi` / `withdrawAddressLo`.
279
227
  *
280
- * Asset ids: Stellar **contract** token `C...` addresses encoded as two field elements (same 32-byte
281
- * split as account keys — see `circuits/main.circom`).
228
+ * The proof-bound escrow recipient reconstructed from public signals is the only
229
+ * authorization subject. Both limbs zero means a non-sweep: both sweep output owner
230
+ * coordinates must also be zero. A nonzero pair is a sweep: that account must
231
+ * `require_auth()` (host account credentials, so multisig and rotated signers work; a
232
+ * revoked key cannot), must already have a private address in the registry, and both
233
+ * sweep output owner coordinates must equal that registry key.
282
234
  *
283
- * Withdraw destination account: Stellar **account** Ed25519 key (G-address strkey payload) split into two
284
- * public field elements `withdrawAddressHi` / `withdrawAddressLo` — big-endian `u128` chunks
285
- * `bytes[0..16]` and `bytes[16..32]` (see `circuits/main.circom`). Avoids mod-`r` loss from a single `Fr`.
235
+ * Asset ids: Stellar **contract** token `C...` addresses encoded as two field elements (same 32-byte
236
+ * split as account keys — see `cir
286
237
  */
287
- transact: ({from, nonce, proof_bytes, pub_signals_bytes, onboarding, kyt_authorization}: {from: string, nonce: u64, proof_bytes: Buffer, pub_signals_bytes: Buffer, onboarding: Option<OnboardingPayload>, kyt_authorization: Option<KytPassageAuthorization>}, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>
238
+ transact: ({from, nonce, proof_bytes, pub_signals_bytes, ciphertext_bytes, kyt_authorization}: {from: string, nonce: u64, proof_bytes: Buffer, pub_signals_bytes: Buffer, ciphertext_bytes: Buffer, kyt_authorization: Option<KytPassageAuthorization>}, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>
288
239
 
289
240
  /**
290
- * Construct and simulate a set_kyt_registry transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
241
+ * Construct and simulate a get_admin transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
242
+ * Gets the admin address (the contract deployer)
291
243
  */
292
- set_kyt_registry: ({admin, kyt_registry}: {admin: string, kyt_registry: string}, options?: MethodOptions) => Promise<AssembledTransaction<null>>
244
+ get_admin: (options?: MethodOptions) => Promise<AssembledTransaction<string>>
293
245
 
294
246
  /**
295
- * Construct and simulate a get_kyt_registry transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
247
+ * Construct and simulate a get_registry transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
296
248
  */
297
- get_kyt_registry: (options?: MethodOptions) => Promise<AssembledTransaction<Option<string>>>
249
+ get_registry: (options?: MethodOptions) => Promise<AssembledTransaction<Option<string>>>
298
250
 
299
251
  /**
300
- * Construct and simulate a require_kyt_passage transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
252
+ * Construct and simulate a set_registry transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
301
253
  */
302
- require_kyt_passage: ({passage_id}: {passage_id: Buffer}, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>
254
+ set_registry: ({registry}: {registry: string}, options?: MethodOptions) => Promise<AssembledTransaction<null>>
303
255
 
304
256
  /**
305
- * Construct and simulate a set_app_audit_key transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
257
+ * Construct and simulate a add_zk_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
258
+ * Registers a new per-nonce ZK circuit configuration (VK + full circuit shape). Admin-only;
259
+ * fails if `nonce` already has a config. Validates `n_outs` is even (leaves are inserted
260
+ * pairwise via `PairwiseLeanIMT::insert_two`), `n_audit_slots >= n_ins + n_outs`, that
261
+ * `audit_offset`/`output_note_offset` match the formula-derived layout, and that the VK's
262
+ * `ic` length matches the resulting total public-signal count.
306
263
  */
307
- set_app_audit_key: ({admin, application_id, audit_public_key_x, audit_public_key_y, enabled}: {admin: string, application_id: Buffer, audit_public_key_x: Buffer, audit_public_key_y: Buffer, enabled: boolean}, options?: MethodOptions) => Promise<AssembledTransaction<null>>
264
+ add_zk_config: ({nonce, vk_bytes, n_ins, n_outs, public_n_inputs, public_n_outputs, n_audit_slots, note_audit_len, audit_offset, note_output_len, output_note_offset}: {nonce: u64, vk_bytes: Buffer, n_ins: u32, n_outs: u32, public_n_inputs: u32, public_n_outputs: u32, n_audit_slots: u32, note_audit_len: u32, audit_offset: u32, note_output_len: u32, output_note_offset: u32}, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>
308
265
 
309
266
  /**
310
- * Construct and simulate a get_app_audit_state transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
267
+ * Construct and simulate a get_zk_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
268
+ * Reads a registered ZK config (extending its persistent TTL), or `None` if absent.
311
269
  */
312
- get_app_audit_state: ({application_id}: {application_id: Buffer}, options?: MethodOptions) => Promise<AssembledTransaction<Option<AppAuditState>>>
270
+ get_zk_config: ({nonce}: {nonce: u64}, options?: MethodOptions) => Promise<AssembledTransaction<Option<ZkConfig>>>
313
271
 
314
272
  /**
315
- * Construct and simulate a set_registry transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
273
+ * Construct and simulate a is_known_root transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
274
+ * Returns true if `root` appears in the recent root history (ring buffer).
275
+ * All-zero bytes are never accepted.
316
276
  */
317
- set_registry: ({admin, registry}: {admin: string, registry: string}, options?: MethodOptions) => Promise<AssembledTransaction<null>>
277
+ is_known_root: ({root}: {root: Buffer}, options?: MethodOptions) => Promise<AssembledTransaction<boolean>>
318
278
 
319
279
  /**
320
- * Construct and simulate a get_registry transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
280
+ * Construct and simulate a get_commitments transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
281
+ * Gets all commitments (leaves) in the merkle tree. Read-only view helper (not called from
282
+ * `transact`/`add_zk_config` or any other state-mutating entrypoint) intended for off-chain
283
+ * simulation/queries; its cost scales with `count`, which grows with real pool usage rather
284
+ * than with a single caller-controlled input, so it does not let one transaction consume a
285
+ * disproportionate share of a block's resources the way an admin/user-controlled shape
286
+ * parameter would. Acknowledged `dos-unbounded-operation` finding.
287
+ *
288
+ * `leaves` is a local in-memory `Vec` (`vec![&env]`), not persistent contract storage, so
289
+ * there is no storage-side access-control concern in the `push_back` below either;
290
+ * acknowledged `dos-unexpected-revert-with-storage` false positive. Both acknowledgments are
291
+ * function-level because neither detector respects a `#[allow]` placed on the loop/statement
292
+ * itself.
321
293
  */
322
- get_registry: (options?: MethodOptions) => Promise<AssembledTransaction<Option<string>>>
294
+ get_commitments: (options?: MethodOptions) => Promise<AssembledTransaction<Array<Buffer>>>
323
295
 
324
296
  /**
325
297
  * Construct and simulate a get_merkle_root transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
@@ -327,6 +299,11 @@ export interface Client {
327
299
  */
328
300
  get_merkle_root: (options?: MethodOptions) => Promise<AssembledTransaction<Buffer>>
329
301
 
302
+ /**
303
+ * Construct and simulate a get_kyt_registry transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
304
+ */
305
+ get_kyt_registry: (options?: MethodOptions) => Promise<AssembledTransaction<Option<string>>>
306
+
330
307
  /**
331
308
  * Construct and simulate a get_merkle_depth transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
332
309
  * Gets the current depth of the merkle tree
@@ -334,61 +311,59 @@ export interface Client {
334
311
  get_merkle_depth: (options?: MethodOptions) => Promise<AssembledTransaction<u32>>
335
312
 
336
313
  /**
337
- * Construct and simulate a get_commitment_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
338
- * Gets the number of commitments (leaves) in the merkle tree
314
+ * Construct and simulate a set_kyt_registry transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
339
315
  */
340
- get_commitment_count: (options?: MethodOptions) => Promise<AssembledTransaction<u32>>
316
+ set_kyt_registry: ({kyt_registry}: {kyt_registry: string}, options?: MethodOptions) => Promise<AssembledTransaction<null>>
341
317
 
342
318
  /**
343
- * Construct and simulate a get_leaf_ephemeral transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
344
- * Ephemeral key (x, y) for a leaf index, if present.
319
+ * Construct and simulate a get_token_balance transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
320
+ * Token balance held by this contract for a Stellar asset contract (`C...`).
345
321
  */
346
- get_leaf_ephemeral: ({leaf_index}: {leaf_index: u32}, options?: MethodOptions) => Promise<AssembledTransaction<Option<EphemeralKeyCoords>>>
322
+ get_token_balance: ({token}: {token: string}, options?: MethodOptions) => Promise<AssembledTransaction<i128>>
347
323
 
348
324
  /**
349
- * Construct and simulate a get_pairwise_frontier transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
350
- * Filled-subtree frontier after the last pairwise insert (reload on the next deposit).
325
+ * Construct and simulate a get_leaf_ephemeral transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
326
+ * Ephemeral key (x, y) for a leaf index, if present.
351
327
  */
352
- get_pairwise_frontier: (options?: MethodOptions) => Promise<AssembledTransaction<Array<Buffer>>>
328
+ get_leaf_ephemeral: ({leaf_index}: {leaf_index: u32}, options?: MethodOptions) => Promise<AssembledTransaction<Option<EphemeralKeyCoords>>>
353
329
 
354
330
  /**
355
- * Construct and simulate a get_commitments transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
356
- * Gets all commitments (leaves) in the merkle tree
331
+ * Construct and simulate a deprecate_zk_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
332
+ * Marks a registered ZK config as deprecated; subsequent `transact` calls referencing this
333
+ * `nonce` fail with [`Error::ZkConfigDeprecated`]. Admin-only.
357
334
  */
358
- get_commitments: (options?: MethodOptions) => Promise<AssembledTransaction<Array<Buffer>>>
335
+ deprecate_zk_config: ({nonce}: {nonce: u64}, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>
359
336
 
360
337
  /**
361
- * Construct and simulate a is_nulifier_hash_consumed transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
362
- * Returns true if the given nullifier hash has already been consumed (used in a withdrawal).
338
+ * Construct and simulate a require_kyt_passage transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
363
339
  */
364
- is_nulifier_hash_consumed: ({hash}: {hash: Buffer}, options?: MethodOptions) => Promise<AssembledTransaction<boolean>>
340
+ require_kyt_passage: ({passage_id}: {passage_id: Buffer}, options?: MethodOptions) => Promise<AssembledTransaction<Result<void>>>
365
341
 
366
342
  /**
367
- * Construct and simulate a is_known_root transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
368
- * Returns true if `root` appears in the recent root history (ring buffer).
369
- * All-zero bytes are never accepted.
343
+ * Construct and simulate a get_commitment_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
344
+ * Gets the number of commitments (leaves) in the merkle tree
370
345
  */
371
- is_known_root: ({root}: {root: Buffer}, options?: MethodOptions) => Promise<AssembledTransaction<boolean>>
346
+ get_commitment_count: (options?: MethodOptions) => Promise<AssembledTransaction<u32>>
372
347
 
373
348
  /**
374
- * Construct and simulate a get_token_balance transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
375
- * Token balance held by this contract for a Stellar asset contract (`C...`).
349
+ * Construct and simulate a get_pairwise_frontier transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
350
+ * Filled-subtree frontier after the last pairwise insert (reload on the next deposit).
376
351
  */
377
- get_token_balance: ({token}: {token: string}, options?: MethodOptions) => Promise<AssembledTransaction<i128>>
352
+ get_pairwise_frontier: (options?: MethodOptions) => Promise<AssembledTransaction<Array<Buffer>>>
378
353
 
379
354
  /**
380
355
  * Construct and simulate a get_public_slot_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
381
- * `publicNInputs` / `publicNOutputs` for the nonce-`0` ("standard") ZK config, if registered.
382
- * Thin backward-compatible wrapper over [`Self::get_zk_config`]; prefer reading the relevant
383
- * nonce's config directly for new code, since a pool may have several registered configs.
356
+ * `publicNInputs` / `publicNOutputs` for the nonce-`0` ("standard") ZK config.
357
+ * Panics with [`Error::ZkConfigNotFound`] when nonce `0` is unregistered. Prefer
358
+ * [`Self::get_zk_config`] for a specific nonce.
384
359
  */
385
360
  get_public_slot_config: (options?: MethodOptions) => Promise<AssembledTransaction<readonly [u32, u32]>>
386
361
 
387
362
  /**
388
- * Construct and simulate a get_admin transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
389
- * Gets the admin address (the contract deployer)
363
+ * Construct and simulate a is_nulifier_hash_consumed transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
364
+ * Returns true if the given nullifier hash has already been consumed (used in a withdrawal).
390
365
  */
391
- get_admin: (options?: MethodOptions) => Promise<AssembledTransaction<string>>
366
+ is_nulifier_hash_consumed: ({hash}: {hash: Buffer}, options?: MethodOptions) => Promise<AssembledTransaction<boolean>>
392
367
 
393
368
  }
394
369
  export class Client extends ContractClient {
@@ -410,77 +385,71 @@ export class Client extends ContractClient {
410
385
  }
411
386
  constructor(public readonly options: ContractClientOptions) {
412
387
  super(
413
- new ContractSpec([ "AAAAAQAAAEhQZXItYXBwbGljYXRpb24gYXVkaXQgcHVibGljIGtleSBhbGxvd2xpc3QgZW50cnkgKHJ1bnRpbWUvY29uZmlnIHN0YXRlKS4AAAAAAAAADUFwcEF1ZGl0U3RhdGUAAAAAAAADAAAAAAAAABJhdWRpdF9wdWJsaWNfa2V5X3gAAAAAA+4AAAAgAAAAAAAAABJhdWRpdF9wdWJsaWNfa2V5X3kAAAAAA+4AAAAgAAAAAAAAAAdlbmFibGVkAAAAAAE=",
414
- "AAAAAQAAAERFcGhlbWVyYWwgQmFieUp1Ykp1YiAvIEVDREggcG9pbnQgKG5vdCBoYXNoZWQgaW50byB0aGUgTWVya2xlIHRyZWUpLgAAAAAAAAASRXBoZW1lcmFsS2V5Q29vcmRzAAAAAAACAAAAAAAAAAF4AAAAAAAD7gAAACAAAAAAAAAAAXkAAAAAAAPuAAAAIA==",
388
+ new ContractSpec([ "AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAFgAAAAAAAAANTnVsbGlmaWVyVXNlZAAAAAAAAAEAAAAAAAAAE0luc3VmZmljaWVudEJhbGFuY2UAAAAAAgAAAAAAAAAXUHJvb2ZWZXJpZmljYXRpb25GYWlsZWQAAAAAAwAAAAAAAAAJT25seUFkbWluAAAAAAAABAAAAAAAAAAOVHJlZUF0Q2FwYWNpdHkAAAAAAAUAAAAAAAAAF0Fzc29jaWF0aW9uUm9vdE1pc21hdGNoAAAAAAYAAAAAAAAAFEludmFsaWRQdWJsaWNTaWduYWxzAAAABwAAAAAAAAASSW52YWxpZFRva2VuQW1vdW50AAAAAAAIAAAAPFByb29mIGBzdGF0ZV9yb290YCBpcyBub3QgaW4gdGhlIHJlY2VudCByb290IGhpc3Rvcnkgd2luZG93LgAAAAtVbmtub3duUm9vdAAAAAAJAAAAXkV4YWN0bHkgb25lIG91dHB1dCBjb21taXRtZW50IGlzIG5vbi16ZXJvOyBvbmx5IHplcm8vemVybyBvciB0d28gbm9uLXplcm8gb3V0cHV0cyBhcmUgYWxsb3dlZC4AAAAAABVJbnZhbGlkQ29tbWl0bWVudFBhaXIAAAAAAAAKAAAAXVN0b3JlZCBNZXJrbGUgZnJvbnRpZXIgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIHRyZWUgZGVwdGggKGNvcnJ1cHQgb3Igb3V0ZGF0ZWQgc3RvcmFnZSBsYXlvdXQpLgAAAAAAABVJbnZhbGlkTWVya2xlRnJvbnRpZXIAAAAAAAALAAAASUtZVCBwYXNzYWdlIHJlZ2lzdHJ5IGlzIG5vdCBjb25maWd1cmVkIChyZXF1aXJlZCBmb3IgdGhlIGN1cnJlbnQgbGF5b3V0KS4AAAAAAAASS3l0UmVnaXN0cnlNaXNzaW5nAAAAAAAMAAAATlJlc2VydmVkIChIMSk6IG9uLWNoYWluIGFwcGxpY2F0aW9uIGF1ZGl0LWtleSBhbGxvd2xpc3QgcmVtb3ZlZC4gRG8gbm90IHJldXNlLgAAAAAAFVVua25vd25BdWRpdFB1YmxpY0tleQAAAAAAAA0AAABOUmVzZXJ2ZWQgKEgxKTogb24tY2hhaW4gYXBwbGljYXRpb24gYXVkaXQta2V5IGFsbG93bGlzdCByZW1vdmVkLiBEbyBub3QgcmV1c2UuAAAAAAAVSW52YWxpZEF1ZGl0UHVibGljS2V5AAAAAAAADgAAADRObyBgWmtDb25maWdgIGlzIHJlZ2lzdGVyZWQgZm9yIHRoZSByZXF1ZXN0ZWQgbm9uY2UuAAAAEFprQ29uZmlnTm90Rm91bmQAAAAPAAAASFRoZSBgWmtDb25maWdgIGZvciB0aGUgcmVxdWVzdGVkIG5vbmNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgdGhlIGFkbWluLgAAABJaa0NvbmZpZ0RlcHJlY2F0ZWQAAAAAABAAAABPYGFkZF96a19jb25maWdgIHdhcyBjYWxsZWQgd2l0aCBhIGBub25jZWAgdGhhdCBhbHJlYWR5IGhhcyBhIGNvbmZpZyByZWdpc3RlcmVkLgAAAAAVWmtDb25maWdBbHJlYWR5RXhpc3RzAAAAAAAAEQAAAOdgYWRkX3prX2NvbmZpZ2Agc2hhcGUgcGFyYW1ldGVycyBhcmUgaW5jb25zaXN0ZW50IChvZGQgYG5fb3V0c2AsIGluc3VmZmljaWVudApgbl9hdWRpdF9zbG90c2AsIGFuIGBhdWRpdF9vZmZzZXRgL2BvdXRwdXRfbm90ZV9vZmZzZXRgIHRoYXQgZG9lc24ndCBtYXRjaCB0aGUKZm9ybXVsYS1kZXJpdmVkIHZhbHVlLCBvciBhIFZLIHdob3NlIGBpY2AgbGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggdGhlIHNoYXBlKS4AAAAAD0ludmFsaWRaa0NvbmZpZwAAAAASAAAAPmBfX2NvbnN0cnVjdG9yYCB3YXMgY2FsbGVkIHdpdGggYHRyZWVfZGVwdGggPiBNQVhfVFJFRV9ERVBUSGAuAAAAAAAQSW52YWxpZFRyZWVEZXB0aAAAABMAAABTRHVwbGljYXRlIG51bGxpZmllciBoYXNoZXMgYXBwZWFyIGluIGEgc2luZ2xlIGB0cmFuc2FjdGAgcHVibGljLXNpZ25hbCB2ZWN0b3IgKEMzKS4AAAAAEkR1cGxpY2F0ZU51bGxpZmllcgAAAAAAFAAAAEhDYWxsZGF0YSBlc2Nyb3cgcmVjaXBpZW50IGRvZXMgbm90IG1hdGNoIHRoZSBwdWJsaWMtc2lnbmFsIGVzY3JvdyBsaW1icy4AAAAXRXNjcm93UmVjaXBpZW50TWlzbWF0Y2gAAAAAFQAAAFdBIHN3ZWVwIChub24temVybyBwdWJsaWMgZXNjcm93IHJlY2lwaWVudCkgcmVxdWlyZXMgYSByZWdpc3RyeSByZWNvcmQgZm9yIHRoYXQgYWNjb3VudC4AAAAAIFN3ZWVwUmVxdWlyZXNSZWdpc3RlcmVkUmVjaXBpZW50AAAAFg==",
415
389
  "AAAAAQAAAQJBZG1pbi1tYW5hZ2VkLCBub25jZS1rZXllZCBaSyBjaXJjdWl0IGNvbmZpZ3VyYXRpb246IHZlcmlmaWNhdGlvbiBrZXkgcGx1cyBldmVyeSBkeW5hbWljCnNoYXBlIHBhcmFtZXRlciBvZiB0aGUgYFRyYW5zYWN0aW9uKC4uLilgIGNpcmN1aXQgaW5zdGFudGlhdGlvbiB1c2VkIHRvIHZlcmlmeSBhIGB0cmFuc2FjdGAKY2FsbCBmb3IgdGhhdCBub25jZSAoc2VlIGBjaXJjdWl0cy9tYWluLmNpcmNvbWAgLyBgbGlicy96azo6WmtMYXlvdXRQYXJhbXNgKS4AAAAAAAAAAAAIWmtDb25maWcAAAALAAAAAAAAAAxhdWRpdF9vZmZzZXQAAAAEAAAAAAAAAApkZXByZWNhdGVkAAAAAAABAAAAAAAAAA1uX2F1ZGl0X3Nsb3RzAAAAAAAABAAAAAAAAAAFbl9pbnMAAAAAAAAEAAAAAAAAAAZuX291dHMAAAAAAAQAAAAAAAAADm5vdGVfYXVkaXRfbGVuAAAAAAAEAAAAAAAAAA9ub3RlX291dHB1dF9sZW4AAAAABAAAAAAAAAASb3V0cHV0X25vdGVfb2Zmc2V0AAAAAAAEAAAAAAAAAA9wdWJsaWNfbl9pbnB1dHMAAAAABAAAAAAAAAAQcHVibGljX25fb3V0cHV0cwAAAAQAAAAAAAAACHZrX2J5dGVzAAAADg==",
416
- "AAAAAgAAAD9QZXJzaXN0ZW50IHN0b3JhZ2Uga2V5IGZvciB0aGUgcGVyLW5vbmNlIFtgWmtDb25maWdgXSByZWdpc3RyeS4AAAAAAAAAAAtaa0NvbmZpZ0tleQAAAAABAAAAAQAAAAAAAAAGQ29uZmlnAAAAAAABAAAABg==",
417
390
  "AAAAAgAAAFRTdG9yYWdlIGtleSBmb3IgdHJlZSBsZWF2ZXMg4oCUIGVhY2ggbGVhZiBzdG9yZWQgYnkgaW5kZXggZm9yIE8oMSkgd3JpdGUgb24gZGVwb3NpdC4AAAAAAAAAC1RyZWVEYXRhS2V5AAAAAAQAAAABAAAAAAAAAARMZWFmAAAAAQAAAAQAAAAAAAAAAAAAAAlMZWFmQ291bnQAAAAAAAABAAAAVEVwaGVtZXJhbCBwdWJsaWMga2V5IChFQ0RIIHBvaW50IHgsIHkpIHN0b3JlZCBwZXIgbGVhZjsgbm90IHBhcnQgb2YgdGhlIE1lcmtsZSBoYXNoLgAAAA1MZWFmRXBoZW1lcmFsAAAAAAAAAQAAAAQAAAAAAAAAXlJpZ2h0LXNwaW5lIC8gZmlsbGVkLXN1YnRyZWUgZnJvbnRpZXIgYWZ0ZXIgdGhlIGxhc3QgYGluc2VydF90d29gIChsZW5ndGggYG1lcmtsZV9kZXB0aCAtIDFgKS4AAAAAABBQYWlyd2lzZUZyb250aWVy",
418
- "AAAAAgAAAFJTdG9yYWdlIGtleSBmb3IgbnVsbGlmaWVycyDigJQgZWFjaCBudWxsaWZpZXIgaGFzaCBtYXBzIHRvIGJvb2wgKGNvbnN1bWVkIG9yIG5vdCkuAAAAAAAAAAAAD051bGlmaWVyRGF0YUtleQAAAAABAAAAAQAAAAAAAAAITnVsaWZpZXIAAAABAAAD7gAAACA=",
391
+ "AAAAAgAAAD9QZXJzaXN0ZW50IHN0b3JhZ2Uga2V5IGZvciB0aGUgcGVyLW5vbmNlIFtgWmtDb25maWdgXSByZWdpc3RyeS4AAAAAAAAAAAtaa0NvbmZpZ0tleQAAAAABAAAAAQAAAAAAAAAGQ29uZmlnAAAAAAABAAAABg==",
392
+ "AAAABQAAADJFbWl0dGVkIGJ5IFtgUHJpdmFjeVBvb2xzQ29udHJhY3Q6OnNldF9yZWdpc3RyeWBdLgAAAAAAAAAAAAtSZWdpc3RyeVNldAAAAAACAAAABWFkbWluAAAAAAAADHJlZ2lzdHJ5X3NldAAAAAEAAAAAAAAACHJlZ2lzdHJ5AAAAEwAAAAAAAAAA",
393
+ "AAAABQAAADNFbWl0dGVkIGJ5IFtgUHJpdmFjeVBvb2xzQ29udHJhY3Q6OmFkZF96a19jb25maWdgXS4AAAAAAAAAAA1aa0NvbmZpZ0FkZGVkAAAAAAAAAgAAAAVhZG1pbgAAAAAAAA96a19jb25maWdfYWRkZWQAAAAAAQAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAQAAAAA=",
419
394
  "AAAAAgAAAFRSaW5nIGJ1ZmZlciBvZiBoaXN0b3JpY2FsIE1lcmtsZSByb290cyAoZm9yIHByb29mcyBnZW5lcmF0ZWQgYWdhaW5zdCByZWNlbnQgc3RhdGVzKS4AAAAAAAAADlJvb3RIaXN0b3J5S2V5AAAAAAACAAAAAAAAACpOZXdlc3Qgcm9vdCBzbG90IGluZGV4IGluIHRoZSByaW5nIGJ1ZmZlci4AAAAAABBDdXJyZW50Um9vdEluZGV4AAAAAQAAAC5Sb290IHZhbHVlIGF0IHNsb3QgYGlgICgwLi5ST09UX0hJU1RPUllfU0laRSkuAAAAAAAEUm9vdAAAAAEAAAAE",
420
- "AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAEgAAAAAAAAANTnVsbGlmaWVyVXNlZAAAAAAAAAEAAAAAAAAAE0luc3VmZmljaWVudEJhbGFuY2UAAAAAAgAAAAAAAAAXUHJvb2ZWZXJpZmljYXRpb25GYWlsZWQAAAAAAwAAAAAAAAAJT25seUFkbWluAAAAAAAABAAAAAAAAAAOVHJlZUF0Q2FwYWNpdHkAAAAAAAUAAAAAAAAAF0Fzc29jaWF0aW9uUm9vdE1pc21hdGNoAAAAAAYAAAAAAAAAFEludmFsaWRQdWJsaWNTaWduYWxzAAAABwAAAAAAAAASSW52YWxpZFRva2VuQW1vdW50AAAAAAAIAAAAPFByb29mIGBzdGF0ZV9yb290YCBpcyBub3QgaW4gdGhlIHJlY2VudCByb290IGhpc3Rvcnkgd2luZG93LgAAAAtVbmtub3duUm9vdAAAAAAJAAAAXkV4YWN0bHkgb25lIG91dHB1dCBjb21taXRtZW50IGlzIG5vbi16ZXJvOyBvbmx5IHplcm8vemVybyBvciB0d28gbm9uLXplcm8gb3V0cHV0cyBhcmUgYWxsb3dlZC4AAAAAABVJbnZhbGlkQ29tbWl0bWVudFBhaXIAAAAAAAAKAAAAXVN0b3JlZCBNZXJrbGUgZnJvbnRpZXIgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIHRyZWUgZGVwdGggKGNvcnJ1cHQgb3Igb3V0ZGF0ZWQgc3RvcmFnZSBsYXlvdXQpLgAAAAAAABVJbnZhbGlkTWVya2xlRnJvbnRpZXIAAAAAAAALAAAASUtZVCBwYXNzYWdlIHJlZ2lzdHJ5IGlzIG5vdCBjb25maWd1cmVkIChyZXF1aXJlZCBmb3IgdGhlIGN1cnJlbnQgbGF5b3V0KS4AAAAAAAASS3l0UmVnaXN0cnlNaXNzaW5nAAAAAAAMAAAARFB1YmxpYyBub3RlIGF1ZGl0IGtleSBpcyBub3QgcmVnaXN0ZXJlZCBmb3IgYW55IGVuYWJsZWQgYXBwbGljYXRpb24uAAAAFVVua25vd25BdWRpdFB1YmxpY0tleQAAAAAAAA0AAABDUHVibGljIG5vdGUgYXVkaXQga2V5IGNvb3JkaW5hdGVzIGFyZSBub3QgYSB2YWxpZCBCYWJ5SnViSnViIHBvaW50LgAAAAAVSW52YWxpZEF1ZGl0UHVibGljS2V5AAAAAAAADgAAADRObyBgWmtDb25maWdgIGlzIHJlZ2lzdGVyZWQgZm9yIHRoZSByZXF1ZXN0ZWQgbm9uY2UuAAAAEFprQ29uZmlnTm90Rm91bmQAAAAPAAAASFRoZSBgWmtDb25maWdgIGZvciB0aGUgcmVxdWVzdGVkIG5vbmNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgdGhlIGFkbWluLgAAABJaa0NvbmZpZ0RlcHJlY2F0ZWQAAAAAABAAAABPYGFkZF96a19jb25maWdgIHdhcyBjYWxsZWQgd2l0aCBhIGBub25jZWAgdGhhdCBhbHJlYWR5IGhhcyBhIGNvbmZpZyByZWdpc3RlcmVkLgAAAAAVWmtDb25maWdBbHJlYWR5RXhpc3RzAAAAAAAAEQAAAOdgYWRkX3prX2NvbmZpZ2Agc2hhcGUgcGFyYW1ldGVycyBhcmUgaW5jb25zaXN0ZW50IChvZGQgYG5fb3V0c2AsIGluc3VmZmljaWVudApgbl9hdWRpdF9zbG90c2AsIGFuIGBhdWRpdF9vZmZzZXRgL2BvdXRwdXRfbm90ZV9vZmZzZXRgIHRoYXQgZG9lc24ndCBtYXRjaCB0aGUKZm9ybXVsYS1kZXJpdmVkIHZhbHVlLCBvciBhIFZLIHdob3NlIGBpY2AgbGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggdGhlIHNoYXBlKS4AAAAAD0ludmFsaWRaa0NvbmZpZwAAAAAS",
395
+ "AAAABQAAADZFbWl0dGVkIGJ5IFtgUHJpdmFjeVBvb2xzQ29udHJhY3Q6OnNldF9reXRfcmVnaXN0cnlgXS4AAAAAAAAAAAAOS3l0UmVnaXN0cnlTZXQAAAAAAAIAAAAFYWRtaW4AAAAAAAAQa3l0X3JlZ2lzdHJ5X3NldAAAAAEAAAAAAAAACHJlZ2lzdHJ5AAAAEwAAAAAAAAAA",
396
+ "AAAAAgAAAFJTdG9yYWdlIGtleSBmb3IgbnVsbGlmaWVycyDigJQgZWFjaCBudWxsaWZpZXIgaGFzaCBtYXBzIHRvIGJvb2wgKGNvbnN1bWVkIG9yIG5vdCkuAAAAAAAAAAAAD051bGlmaWVyRGF0YUtleQAAAAABAAAAAQAAAAAAAAAITnVsaWZpZXIAAAABAAAD7gAAACA=",
397
+ "AAAAAQAAAERFcGhlbWVyYWwgQmFieUp1Ykp1YiAvIEVDREggcG9pbnQgKG5vdCBoYXNoZWQgaW50byB0aGUgTWVya2xlIHRyZWUpLgAAAAAAAAASRXBoZW1lcmFsS2V5Q29vcmRzAAAAAAACAAAAAAAAAAF4AAAAAAAD7gAAACAAAAAAAAAAAXkAAAAAAAPuAAAAIA==",
398
+ "AAAABQAAALdPbmUgZXZlbnQgcGVyIGF1ZGl0IHNsb3QgKGAwLi5uX2F1ZGl0X3Nsb3RzYCkgaW4gYSBgdHJhbnNhY3RgIGNhbGwncyBwdWJsaWMgc2lnbmFscyDigJQgbGV0cwpvZmYtY2hhaW4gc2Nhbm5lcnMgcmVjb3ZlciBhdWRpdG9yIGNpcGhlcnRleHRzIGZyb20gZXZlbnRzIGluc3RlYWQgb2YgcmUtcGFyc2luZyBjYWxsZGF0YS4AAAAAAAAAABJBdWRpdFNsb3RFbmNyeXB0ZWQAAAAAAAIAAAAFYXVkaXQAAAAAAAAKYXVkaXRfc2xvdAAAAAAAAgAAAAAAAAAKc2xvdF9pbmRleAAAAAAABAAAAAEAAAAAAAAAB3BheWxvYWQAAAAH0AAAABVBdWRpdFNsb3RFdmVudFBheWxvYWQAAAAAAAAAAAAAAA==",
421
399
  "AAAABQAAAAAAAAAAAAAAEkt5dFBhc3NhZ2VUcmFuc2FjdAAAAAAAAgAAAAVhdWRpdAAAAAAAAAtreXRfcGFzc2FnZQAAAAACAAAAAAAAAApwYXNzYWdlX2lkAAAAAAPuAAAAIAAAAAEAAAAAAAAAEnB1YmxpY19zaWduYWxfaGFzaAAAAAAD7gAAACAAAAAAAAAAAA==",
422
- "AAAAAQAAAAAAAAAAAAAAFk91dHB1dE5vdGVFdmVudFBheWxvYWQAAAAAAAUAAAAAAAAACmNpcGhlcnRleHQAAAAAAA4AAAAAAAAAC2VwaGVtZXJhbF94AAAAA+4AAAAgAAAAAAAAAAtlcGhlbWVyYWxfeQAAAAPuAAAAIAAAAAAAAAAMb3V0cHV0X2luZGV4AAAABAAAAAAAAAADdGFnAAAAA+4AAAAg",
400
+ "AAAABQAAADlFbWl0dGVkIGJ5IFtgUHJpdmFjeVBvb2xzQ29udHJhY3Q6OmRlcHJlY2F0ZV96a19jb25maWdgXS4AAAAAAAAAAAAAElprQ29uZmlnRGVwcmVjYXRlZAAAAAAAAgAAAAVhZG1pbgAAAAAAABR6a19jb25maWdfZGVwcmVjYXRlZAAAAAEAAAAAAAAABW5vbmNlAAAAAAAABgAAAAEAAAAA",
423
401
  "AAAABQAAAAAAAAAAAAAAE091dHB1dE5vdGVFbmNyeXB0ZWQAAAAAAgAAAAVhdWRpdAAAAAAAAAtvdXRwdXRfbm90ZQAAAAACAAAAAAAAAA9jb21taXRtZW50X2hhc2gAAAAD7gAAACAAAAABAAAAAAAAAAdwYXlsb2FkAAAAB9AAAAAWT3V0cHV0Tm90ZUV2ZW50UGF5bG9hZAAAAAAAAAAAAAA=",
424
402
  "AAAAAQAAAAAAAAAAAAAAFUF1ZGl0U2xvdEV2ZW50UGF5bG9hZAAAAAAAAAQAAAAAAAAACmNpcGhlcnRleHQAAAAAAA4AAAAAAAAAC2VwaGVtZXJhbF94AAAAA+4AAAAgAAAAAAAAAAtlcGhlbWVyYWxfeQAAAAPuAAAAIAAAAAAAAAADdGFnAAAAA+4AAAAg",
425
- "AAAABQAAALdPbmUgZXZlbnQgcGVyIGF1ZGl0IHNsb3QgKGAwLi5uX2F1ZGl0X3Nsb3RzYCkgaW4gYSBgdHJhbnNhY3RgIGNhbGwncyBwdWJsaWMgc2lnbmFscyDigJQgbGV0cwpvZmYtY2hhaW4gc2Nhbm5lcnMgcmVjb3ZlciBhdWRpdG9yIGNpcGhlcnRleHRzIGZyb20gZXZlbnRzIGluc3RlYWQgb2YgcmUtcGFyc2luZyBjYWxsZGF0YS4AAAAAAAAAABJBdWRpdFNsb3RFbmNyeXB0ZWQAAAAAAAIAAAAFYXVkaXQAAAAAAAAKYXVkaXRfc2xvdAAAAAAAAgAAAAAAAAAKc2xvdF9pbmRleAAAAAAABAAAAAEAAAAAAAAAB3BheWxvYWQAAAAH0AAAABVBdWRpdFNsb3RFdmVudFBheWxvYWQAAAAAAAAAAAAAAA==",
403
+ "AAAAAAAABABTaW5nbGUgZW50cnlwb2ludDogdmVyaWZpZXMgYGNpcmN1aXRzL21haW4uY2lyY29tYCBHcm90aDE2IHByb29mIGFuZCBwdWJsaWMgc2lnbmFscywgY2hlY2tzCnRyZWUgcm9vdCBhbmQgbnVsbGlmaWVycywgYXBwZW5kcyBuZXcgb3V0cHV0IGNvbW1pdG1lbnRzICh3aXRoIGVwaGVtZXJhbCBrZXlzLCBub3QgaW4gTWVya2xlKSwKdGhlbiBhcHBsaWVzIHB1YmxpYyB0b2tlbiBkZXBvc2l0cyAvIHdpdGhkcmF3YWxzOiBgcHVibGljRGVwb3NpdGVkQXNzZXRzYCArIGBwdWJsaWNEZXBvc2l0c2AKcHVsbCBmcm9tIGBmcm9tYCwgYW5kIGBwdWJsaWNXaXRoZHJhd25Bc3NldHNgICsgYHB1YmxpY1dpdGhkcmF3YWxzYCBzZW5kIHRvIHRoZSBTdGVsbGFyCmFjY291bnQgZnJvbSBgd2l0aGRyYXdBZGRyZXNzSGlgIC8gYHdpdGhkcmF3QWRkcmVzc0xvYC4KClRoZSBwcm9vZi1ib3VuZCBlc2Nyb3cgcmVjaXBpZW50IHJlY29uc3RydWN0ZWQgZnJvbSBwdWJsaWMgc2lnbmFscyBpcyB0aGUgb25seQphdXRob3JpemF0aW9uIHN1YmplY3QuIEJvdGggbGltYnMgemVybyBtZWFucyBhIG5vbi1zd2VlcDogYm90aCBzd2VlcCBvdXRwdXQgb3duZXIKY29vcmRpbmF0ZXMgbXVzdCBhbHNvIGJlIHplcm8uIEEgbm9uemVybyBwYWlyIGlzIGEgc3dlZXA6IHRoYXQgYWNjb3VudCBtdXN0CmByZXF1aXJlX2F1dGgoKWAgKGhvc3QgYWNjb3VudCBjcmVkZW50aWFscywgc28gbXVsdGlzaWcgYW5kIHJvdGF0ZWQgc2lnbmVycyB3b3JrOyBhCnJldm9rZWQga2V5IGNhbm5vdCksIG11c3QgYWxyZWFkeSBoYXZlIGEgcHJpdmF0ZSBhZGRyZXNzIGluIHRoZSByZWdpc3RyeSwgYW5kIGJvdGgKc3dlZXAgb3V0cHV0IG93bmVyIGNvb3JkaW5hdGVzIG11c3QgZXF1YWwgdGhhdCByZWdpc3RyeSBrZXkuCgpBc3NldCBpZHM6IFN0ZWxsYXIgKipjb250cmFjdCoqIHRva2VuIGBDLi4uYCBhZGRyZXNzZXMgZW5jb2RlZCBhcyB0d28gZmllbGQgZWxlbWVudHMgKHNhbWUgMzItYnl0ZQpzcGxpdCBhcyBhY2NvdW50IGtleXMg4oCUIHNlZSBgY2lyAAAACHRyYW5zYWN0AAAABgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAALcHJvb2ZfYnl0ZXMAAAAADgAAAAAAAAARcHViX3NpZ25hbHNfYnl0ZXMAAAAAAAAOAAAAAAAAABBjaXBoZXJ0ZXh0X2J5dGVzAAAADgAAAAAAAAARa3l0X2F1dGhvcml6YXRpb24AAAAAAAPoAAAH0AAAABdLeXRQYXNzYWdlQXV0aG9yaXphdGlvbgAAAAABAAAD6QAAAAIAAAAD",
404
+ "AAAAAQAAAAAAAAAAAAAAFk91dHB1dE5vdGVFdmVudFBheWxvYWQAAAAAAAUAAAAAAAAACmNpcGhlcnRleHQAAAAAAA4AAAAAAAAAC2VwaGVtZXJhbF94AAAAA+4AAAAgAAAAAAAAAAtlcGhlbWVyYWxfeQAAAAPuAAAAIAAAAAAAAAAMb3V0cHV0X2luZGV4AAAABAAAAAAAAAADdGFnAAAAA+4AAAAg",
405
+ "AAAAAAAAAC5HZXRzIHRoZSBhZG1pbiBhZGRyZXNzICh0aGUgY29udHJhY3QgZGVwbG95ZXIpAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAAT",
406
+ "AAAAAAAAAAAAAAAMZ2V0X3JlZ2lzdHJ5AAAAAAAAAAEAAAPoAAAAEw==",
407
+ "AAAAAAAAAAAAAAAMc2V0X3JlZ2lzdHJ5AAAAAQAAAAAAAAAIcmVnaXN0cnkAAAATAAAAAA==",
426
408
  "AAAAAAAAAAAAAAANX19jb25zdHJ1Y3RvcgAAAAAAAAIAAAAAAAAACnRyZWVfZGVwdGgAAAAAAAQAAAAAAAAABWFkbWluAAAAAAAAEwAAAAA=",
427
- "AAAAAAAAAZpSZWdpc3RlcnMgYSBuZXcgcGVyLW5vbmNlIFpLIGNpcmN1aXQgY29uZmlndXJhdGlvbiAoVksgKyBmdWxsIGNpcmN1aXQgc2hhcGUpLiBBZG1pbi1vbmx5OwpmYWlscyBpZiBgbm9uY2VgIGFscmVhZHkgaGFzIGEgY29uZmlnLiBWYWxpZGF0ZXMgYG5fb3V0c2AgaXMgZXZlbiAobGVhdmVzIGFyZSBpbnNlcnRlZApwYWlyd2lzZSB2aWEgYFBhaXJ3aXNlTGVhbklNVDo6aW5zZXJ0X3R3b2ApLCBgbl9hdWRpdF9zbG90cyA+PSBuX2lucyArIG5fb3V0c2AsIHRoYXQKYGF1ZGl0X29mZnNldGAvYG91dHB1dF9ub3RlX29mZnNldGAgbWF0Y2ggdGhlIGZvcm11bGEtZGVyaXZlZCBsYXlvdXQsIGFuZCB0aGF0IHRoZSBWSydzCmBpY2AgbGVuZ3RoIG1hdGNoZXMgdGhlIHJlc3VsdGluZyB0b3RhbCBwdWJsaWMtc2lnbmFsIGNvdW50LgAAAAAADWFkZF96a19jb25maWcAAAAAAAAMAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAIdmtfYnl0ZXMAAAAOAAAAAAAAAAVuX2lucwAAAAAAAAQAAAAAAAAABm5fb3V0cwAAAAAABAAAAAAAAAAPcHVibGljX25faW5wdXRzAAAAAAQAAAAAAAAAEHB1YmxpY19uX291dHB1dHMAAAAEAAAAAAAAAA1uX2F1ZGl0X3Nsb3RzAAAAAAAABAAAAAAAAAAObm90ZV9hdWRpdF9sZW4AAAAAAAQAAAAAAAAADGF1ZGl0X29mZnNldAAAAAQAAAAAAAAAD25vdGVfb3V0cHV0X2xlbgAAAAAEAAAAAAAAABJvdXRwdXRfbm90ZV9vZmZzZXQAAAAAAAQAAAABAAAD6QAAAAIAAAAD",
428
- "AAAAAAAAAJVNYXJrcyBhIHJlZ2lzdGVyZWQgWksgY29uZmlnIGFzIGRlcHJlY2F0ZWQ7IHN1YnNlcXVlbnQgYHRyYW5zYWN0YCBjYWxscyByZWZlcmVuY2luZyB0aGlzCmBub25jZWAgZmFpbCB3aXRoIFtgRXJyb3I6OlprQ29uZmlnRGVwcmVjYXRlZGBdLiBBZG1pbi1vbmx5LgAAAAAAABNkZXByZWNhdGVfemtfY29uZmlnAAAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAQAAA+kAAAACAAAAAw==",
409
+ "AAAAAAAAAZpSZWdpc3RlcnMgYSBuZXcgcGVyLW5vbmNlIFpLIGNpcmN1aXQgY29uZmlndXJhdGlvbiAoVksgKyBmdWxsIGNpcmN1aXQgc2hhcGUpLiBBZG1pbi1vbmx5OwpmYWlscyBpZiBgbm9uY2VgIGFscmVhZHkgaGFzIGEgY29uZmlnLiBWYWxpZGF0ZXMgYG5fb3V0c2AgaXMgZXZlbiAobGVhdmVzIGFyZSBpbnNlcnRlZApwYWlyd2lzZSB2aWEgYFBhaXJ3aXNlTGVhbklNVDo6aW5zZXJ0X3R3b2ApLCBgbl9hdWRpdF9zbG90cyA+PSBuX2lucyArIG5fb3V0c2AsIHRoYXQKYGF1ZGl0X29mZnNldGAvYG91dHB1dF9ub3RlX29mZnNldGAgbWF0Y2ggdGhlIGZvcm11bGEtZGVyaXZlZCBsYXlvdXQsIGFuZCB0aGF0IHRoZSBWSydzCmBpY2AgbGVuZ3RoIG1hdGNoZXMgdGhlIHJlc3VsdGluZyB0b3RhbCBwdWJsaWMtc2lnbmFsIGNvdW50LgAAAAAADWFkZF96a19jb25maWcAAAAAAAALAAAAAAAAAAVub25jZQAAAAAAAAYAAAAAAAAACHZrX2J5dGVzAAAADgAAAAAAAAAFbl9pbnMAAAAAAAAEAAAAAAAAAAZuX291dHMAAAAAAAQAAAAAAAAAD3B1YmxpY19uX2lucHV0cwAAAAAEAAAAAAAAABBwdWJsaWNfbl9vdXRwdXRzAAAABAAAAAAAAAANbl9hdWRpdF9zbG90cwAAAAAAAAQAAAAAAAAADm5vdGVfYXVkaXRfbGVuAAAAAAAEAAAAAAAAAAxhdWRpdF9vZmZzZXQAAAAEAAAAAAAAAA9ub3RlX291dHB1dF9sZW4AAAAABAAAAAAAAAASb3V0cHV0X25vdGVfb2Zmc2V0AAAAAAAEAAAAAQAAA+kAAAACAAAAAw==",
429
410
  "AAAAAAAAAFFSZWFkcyBhIHJlZ2lzdGVyZWQgWksgY29uZmlnIChleHRlbmRpbmcgaXRzIHBlcnNpc3RlbnQgVFRMKSwgb3IgYE5vbmVgIGlmIGFic2VudC4AAAAAAAANZ2V0X3prX2NvbmZpZwAAAAAAAAEAAAAAAAAABW5vbmNlAAAAAAAABgAAAAEAAAPoAAAH0AAAAAhaa0NvbmZpZw==",
430
- "AAAAAAAAA6lTaW5nbGUgZW50cnlwb2ludDogdmVyaWZpZXMgYGNpcmN1aXRzL21haW4uY2lyY29tYCBHcm90aDE2IHByb29mIGFuZCBwdWJsaWMgc2lnbmFscywgY2hlY2tzCnRyZWUgcm9vdCBhbmQgbnVsbGlmaWVycywgYXBwZW5kcyBuZXcgb3V0cHV0IGNvbW1pdG1lbnRzICh3aXRoIGVwaGVtZXJhbCBrZXlzLCBub3QgaW4gTWVya2xlKSwKb3B0aW9uYWxseSBmb3J3YXJkcyBvbmJvYXJkaW5nIHBheWxvYWQgdG8gdGhlIHJlZ2lzdHJ5LCB0aGVuIGFwcGxpZXMgcHVibGljIHRva2VuIGRlcG9zaXRzIC8Kd2l0aGRyYXdhbHM6IGBwdWJsaWNEZXBvc2l0ZWRBc3NldHNgICsgYHB1YmxpY0RlcG9zaXRzYCBwdWxsIGZyb20gYGZyb21gLCBhbmQKYHB1YmxpY1dpdGhkcmF3bkFzc2V0c2AgKyBgcHVibGljV2l0aGRyYXdhbHNgIHNlbmQgdG8gdGhlIFN0ZWxsYXIgYWNjb3VudCBmcm9tCmB3aXRoZHJhd0FkZHJlc3NIaWAgLyBgd2l0aGRyYXdBZGRyZXNzTG9gLgoKQXNzZXQgaWRzOiBTdGVsbGFyICoqY29udHJhY3QqKiB0b2tlbiBgQy4uLmAgYWRkcmVzc2VzIGVuY29kZWQgYXMgdHdvIGZpZWxkIGVsZW1lbnRzIChzYW1lIDMyLWJ5dGUKc3BsaXQgYXMgYWNjb3VudCBrZXlzIOKAlCBzZWUgYGNpcmN1aXRzL21haW4uY2lyY29tYCkuCgpXaXRoZHJhdyBkZXN0aW5hdGlvbiBhY2NvdW50OiBTdGVsbGFyICoqYWNjb3VudCoqIEVkMjU1MTkga2V5IChHLWFkZHJlc3Mgc3Rya2V5IHBheWxvYWQpIHNwbGl0IGludG8gdHdvCnB1YmxpYyBmaWVsZCBlbGVtZW50cyBgd2l0aGRyYXdBZGRyZXNzSGlgIC8gYHdpdGhkcmF3QWRkcmVzc0xvYCDigJQgYmlnLWVuZGlhbiBgdTEyOGAgY2h1bmtzCmBieXRlc1swLi4xNl1gIGFuZCBgYnl0ZXNbMTYuLjMyXWAgKHNlZSBgY2lyY3VpdHMvbWFpbi5jaXJjb21gKS4gQXZvaWRzIG1vZC1gcmAgbG9zcyBmcm9tIGEgc2luZ2xlIGBGcmAuAAAAAAAACHRyYW5zYWN0AAAABgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAALcHJvb2ZfYnl0ZXMAAAAADgAAAAAAAAARcHViX3NpZ25hbHNfYnl0ZXMAAAAAAAAOAAAAAAAAAApvbmJvYXJkaW5nAAAAAAPoAAAH0AAAABFPbmJvYXJkaW5nUGF5bG9hZAAAAAAAAAAAAAARa3l0X2F1dGhvcml6YXRpb24AAAAAAAPoAAAH0AAAABdLeXRQYXNzYWdlQXV0aG9yaXphdGlvbgAAAAABAAAD6QAAAAIAAAAD",
431
- "AAAAAAAAAAAAAAAQc2V0X2t5dF9yZWdpc3RyeQAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAMa3l0X3JlZ2lzdHJ5AAAAEwAAAAA=",
432
- "AAAAAAAAAAAAAAAQZ2V0X2t5dF9yZWdpc3RyeQAAAAAAAAABAAAD6AAAABM=",
433
- "AAAAAAAAAAAAAAATcmVxdWlyZV9reXRfcGFzc2FnZQAAAAABAAAAAAAAAApwYXNzYWdlX2lkAAAAAAPuAAAAIAAAAAEAAAPpAAAAAgAAAAM=",
434
- "AAAAAAAAAAAAAAARc2V0X2FwcF9hdWRpdF9rZXkAAAAAAAAFAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAADmFwcGxpY2F0aW9uX2lkAAAAAAPuAAAAIAAAAAAAAAASYXVkaXRfcHVibGljX2tleV94AAAAAAPuAAAAIAAAAAAAAAASYXVkaXRfcHVibGljX2tleV95AAAAAAPuAAAAIAAAAAAAAAAHZW5hYmxlZAAAAAABAAAAAA==",
435
- "AAAAAAAAAAAAAAATZ2V0X2FwcF9hdWRpdF9zdGF0ZQAAAAABAAAAAAAAAA5hcHBsaWNhdGlvbl9pZAAAAAAD7gAAACAAAAABAAAD6AAAB9AAAAANQXBwQXVkaXRTdGF0ZQAAAA==",
436
- "AAAAAAAAAAAAAAAMc2V0X3JlZ2lzdHJ5AAAAAgAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAhyZWdpc3RyeQAAABMAAAAA",
437
- "AAAAAAAAAAAAAAAMZ2V0X3JlZ2lzdHJ5AAAAAAAAAAEAAAPoAAAAEw==",
411
+ "AAAAAAAAAGtSZXR1cm5zIHRydWUgaWYgYHJvb3RgIGFwcGVhcnMgaW4gdGhlIHJlY2VudCByb290IGhpc3RvcnkgKHJpbmcgYnVmZmVyKS4KQWxsLXplcm8gYnl0ZXMgYXJlIG5ldmVyIGFjY2VwdGVkLgAAAAANaXNfa25vd25fcm9vdAAAAAAAAAEAAAAAAAAABHJvb3QAAAPuAAAAIAAAAAEAAAAB",
412
+ "AAAAAAAAA2NHZXRzIGFsbCBjb21taXRtZW50cyAobGVhdmVzKSBpbiB0aGUgbWVya2xlIHRyZWUuIFJlYWQtb25seSB2aWV3IGhlbHBlciAobm90IGNhbGxlZCBmcm9tCmB0cmFuc2FjdGAvYGFkZF96a19jb25maWdgIG9yIGFueSBvdGhlciBzdGF0ZS1tdXRhdGluZyBlbnRyeXBvaW50KSBpbnRlbmRlZCBmb3Igb2ZmLWNoYWluCnNpbXVsYXRpb24vcXVlcmllczsgaXRzIGNvc3Qgc2NhbGVzIHdpdGggYGNvdW50YCwgd2hpY2ggZ3Jvd3Mgd2l0aCByZWFsIHBvb2wgdXNhZ2UgcmF0aGVyCnRoYW4gd2l0aCBhIHNpbmdsZSBjYWxsZXItY29udHJvbGxlZCBpbnB1dCwgc28gaXQgZG9lcyBub3QgbGV0IG9uZSB0cmFuc2FjdGlvbiBjb25zdW1lIGEKZGlzcHJvcG9ydGlvbmF0ZSBzaGFyZSBvZiBhIGJsb2NrJ3MgcmVzb3VyY2VzIHRoZSB3YXkgYW4gYWRtaW4vdXNlci1jb250cm9sbGVkIHNoYXBlCnBhcmFtZXRlciB3b3VsZC4gQWNrbm93bGVkZ2VkIGBkb3MtdW5ib3VuZGVkLW9wZXJhdGlvbmAgZmluZGluZy4KCmBsZWF2ZXNgIGlzIGEgbG9jYWwgaW4tbWVtb3J5IGBWZWNgIChgdmVjIVsmZW52XWApLCBub3QgcGVyc2lzdGVudCBjb250cmFjdCBzdG9yYWdlLCBzbwp0aGVyZSBpcyBubyBzdG9yYWdlLXNpZGUgYWNjZXNzLWNvbnRyb2wgY29uY2VybiBpbiB0aGUgYHB1c2hfYmFja2AgYmVsb3cgZWl0aGVyOwphY2tub3dsZWRnZWQgYGRvcy11bmV4cGVjdGVkLXJldmVydC13aXRoLXN0b3JhZ2VgIGZhbHNlIHBvc2l0aXZlLiBCb3RoIGFja25vd2xlZGdtZW50cyBhcmUKZnVuY3Rpb24tbGV2ZWwgYmVjYXVzZSBuZWl0aGVyIGRldGVjdG9yIHJlc3BlY3RzIGEgYCNbYWxsb3ddYCBwbGFjZWQgb24gdGhlIGxvb3Avc3RhdGVtZW50Cml0c2VsZi4AAAAAD2dldF9jb21taXRtZW50cwAAAAAAAAAAAQAAA+oAAAPuAAAAIA==",
438
413
  "AAAAAAAAADRHZXRzIHRoZSBjdXJyZW50IG1lcmtsZSByb290IG9mIHRoZSBjb21taXRtZW50IHRyZWUuAAAAD2dldF9tZXJrbGVfcm9vdAAAAAAAAAAAAQAAA+4AAAAg",
414
+ "AAAAAAAAAAAAAAAQZ2V0X2t5dF9yZWdpc3RyeQAAAAAAAAABAAAD6AAAABM=",
439
415
  "AAAAAAAAAClHZXRzIHRoZSBjdXJyZW50IGRlcHRoIG9mIHRoZSBtZXJrbGUgdHJlZQAAAAAAABBnZXRfbWVya2xlX2RlcHRoAAAAAAAAAAEAAAAE",
440
- "AAAAAAAAADpHZXRzIHRoZSBudW1iZXIgb2YgY29tbWl0bWVudHMgKGxlYXZlcykgaW4gdGhlIG1lcmtsZSB0cmVlAAAAAAAUZ2V0X2NvbW1pdG1lbnRfY291bnQAAAAAAAAAAQAAAAQ=",
416
+ "AAAAAAAAAAAAAAAQc2V0X2t5dF9yZWdpc3RyeQAAAAEAAAAAAAAADGt5dF9yZWdpc3RyeQAAABMAAAAA",
417
+ "AAAAAAAAAEpUb2tlbiBiYWxhbmNlIGhlbGQgYnkgdGhpcyBjb250cmFjdCBmb3IgYSBTdGVsbGFyIGFzc2V0IGNvbnRyYWN0IChgQy4uLmApLgAAAAAAEWdldF90b2tlbl9iYWxhbmNlAAAAAAAAAQAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAAAs=",
441
418
  "AAAAAAAAADJFcGhlbWVyYWwga2V5ICh4LCB5KSBmb3IgYSBsZWFmIGluZGV4LCBpZiBwcmVzZW50LgAAAAAAEmdldF9sZWFmX2VwaGVtZXJhbAAAAAAAAQAAAAAAAAAKbGVhZl9pbmRleAAAAAAABAAAAAEAAAPoAAAH0AAAABJFcGhlbWVyYWxLZXlDb29yZHMAAA==",
419
+ "AAAAAAAAAJVNYXJrcyBhIHJlZ2lzdGVyZWQgWksgY29uZmlnIGFzIGRlcHJlY2F0ZWQ7IHN1YnNlcXVlbnQgYHRyYW5zYWN0YCBjYWxscyByZWZlcmVuY2luZyB0aGlzCmBub25jZWAgZmFpbCB3aXRoIFtgRXJyb3I6OlprQ29uZmlnRGVwcmVjYXRlZGBdLiBBZG1pbi1vbmx5LgAAAAAAABNkZXByZWNhdGVfemtfY29uZmlnAAAAAAEAAAAAAAAABW5vbmNlAAAAAAAABgAAAAEAAAPpAAAAAgAAAAM=",
420
+ "AAAAAAAAAAAAAAATcmVxdWlyZV9reXRfcGFzc2FnZQAAAAABAAAAAAAAAApwYXNzYWdlX2lkAAAAAAPuAAAAIAAAAAEAAAPpAAAAAgAAAAM=",
421
+ "AAAAAAAAADpHZXRzIHRoZSBudW1iZXIgb2YgY29tbWl0bWVudHMgKGxlYXZlcykgaW4gdGhlIG1lcmtsZSB0cmVlAAAAAAAUZ2V0X2NvbW1pdG1lbnRfY291bnQAAAAAAAAAAQAAAAQ=",
442
422
  "AAAAAAAAAFRGaWxsZWQtc3VidHJlZSBmcm9udGllciBhZnRlciB0aGUgbGFzdCBwYWlyd2lzZSBpbnNlcnQgKHJlbG9hZCBvbiB0aGUgbmV4dCBkZXBvc2l0KS4AAAAVZ2V0X3BhaXJ3aXNlX2Zyb250aWVyAAAAAAAAAAAAAAEAAAPqAAAD7gAAACA=",
443
- "AAAAAAAAADBHZXRzIGFsbCBjb21taXRtZW50cyAobGVhdmVzKSBpbiB0aGUgbWVya2xlIHRyZWUAAAAPZ2V0X2NvbW1pdG1lbnRzAAAAAAAAAAABAAAD6gAAA+4AAAAg",
423
+ "AAAAAAAAAMlgcHVibGljTklucHV0c2AgLyBgcHVibGljTk91dHB1dHNgIGZvciB0aGUgbm9uY2UtYDBgICgic3RhbmRhcmQiKSBaSyBjb25maWcuClBhbmljcyB3aXRoIFtgRXJyb3I6OlprQ29uZmlnTm90Rm91bmRgXSB3aGVuIG5vbmNlIGAwYCBpcyB1bnJlZ2lzdGVyZWQuIFByZWZlcgpbYFNlbGY6OmdldF96a19jb25maWdgXSBmb3IgYSBzcGVjaWZpYyBub25jZS4AAAAAAAAWZ2V0X3B1YmxpY19zbG90X2NvbmZpZwAAAAAAAAAAAAEAAAPtAAAAAgAAAAQAAAAE",
444
424
  "AAAAAAAAAFpSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIG51bGxpZmllciBoYXNoIGhhcyBhbHJlYWR5IGJlZW4gY29uc3VtZWQgKHVzZWQgaW4gYSB3aXRoZHJhd2FsKS4AAAAAABlpc19udWxpZmllcl9oYXNoX2NvbnN1bWVkAAAAAAAAAQAAAAAAAAAEaGFzaAAAA+4AAAAgAAAAAQAAAAE=",
445
- "AAAAAAAAAGtSZXR1cm5zIHRydWUgaWYgYHJvb3RgIGFwcGVhcnMgaW4gdGhlIHJlY2VudCByb290IGhpc3RvcnkgKHJpbmcgYnVmZmVyKS4KQWxsLXplcm8gYnl0ZXMgYXJlIG5ldmVyIGFjY2VwdGVkLgAAAAANaXNfa25vd25fcm9vdAAAAAAAAAEAAAAAAAAABHJvb3QAAAPuAAAAIAAAAAEAAAAB",
446
- "AAAAAAAAAEpUb2tlbiBiYWxhbmNlIGhlbGQgYnkgdGhpcyBjb250cmFjdCBmb3IgYSBTdGVsbGFyIGFzc2V0IGNvbnRyYWN0IChgQy4uLmApLgAAAAAAEWdldF90b2tlbl9iYWxhbmNlAAAAAAAAAQAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAAAs=",
447
- "AAAAAAAAAQ5gcHVibGljTklucHV0c2AgLyBgcHVibGljTk91dHB1dHNgIGZvciB0aGUgbm9uY2UtYDBgICgic3RhbmRhcmQiKSBaSyBjb25maWcsIGlmIHJlZ2lzdGVyZWQuClRoaW4gYmFja3dhcmQtY29tcGF0aWJsZSB3cmFwcGVyIG92ZXIgW2BTZWxmOjpnZXRfemtfY29uZmlnYF07IHByZWZlciByZWFkaW5nIHRoZSByZWxldmFudApub25jZSdzIGNvbmZpZyBkaXJlY3RseSBmb3IgbmV3IGNvZGUsIHNpbmNlIGEgcG9vbCBtYXkgaGF2ZSBzZXZlcmFsIHJlZ2lzdGVyZWQgY29uZmlncy4AAAAAABZnZXRfcHVibGljX3Nsb3RfY29uZmlnAAAAAAAAAAAAAQAAA+0AAAACAAAABAAAAAQ=",
448
- "AAAAAAAAAC5HZXRzIHRoZSBhZG1pbiBhZGRyZXNzICh0aGUgY29udHJhY3QgZGVwbG95ZXIpAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAAT",
449
- "AAAABAAAAAAAAAAAAAAADEdyb3RoMTZFcnJvcgAAAAEAAAAAAAAAFU1hbGZvcm1lZFZlcmlmeWluZ0tleQAAAAAAAAA=",
450
- "AAAAAQAAAD5QbGFpbnRleHQgbm90ZSBmaWVsZHMgc3RvcmVkIGluIHJlZ2lzdHJ5IGZvciBvbmJvYXJkaW5nIGNsYWltLgAAAAAAAAAAAA1QbGFpbnRleHROb3RlAAAAAAAABgAAAAAAAAAIYXNzZXRfaGkAAAPuAAAAIAAAAAAAAAAIYXNzZXRfbG8AAAPuAAAAIAAAAFZNdXN0IHJlbWFpbiBgTm9uZWA7IHJlZ2lzdHJ5IHJlamVjdHMgcGF5bG9hZHMgdGhhdCBleHBvc2UgdGhlIHNlbmRlciBlcGhlbWVyYWwgc2NhbGFyLgAAAAAAGmRlcG9zaXRlZF9lcGhlbWVyYWxfc2NhbGFyAAAAAAPoAAAD7gAAACAAAAAAAAAACW51bGxpZmllcgAAAAAAA+4AAAAgAAAAAAAAAAZzZWNyZXQAAAAAA+4AAAAgAAAAAAAAAAV2YWx1ZQAAAAAAAAs=",
451
- "AAAAAQAAAAAAAAAAAAAAElBlbmRpbmdOb3RlUGF5bG9hZAAAAAAAAQAAAAAAAAAFbm90ZXMAAAAAAAPqAAAH0AAAAA1QbGFpbnRleHROb3RlAAAA",
452
- "AAAAAQAAAAAAAAAAAAAAGlByaXZhdGVBZGRyZXNzUmVnaXN0cmF0aW9uAAAAAAADAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAADHB1YmxpY19rZXlfeAAAA+4AAAAgAAAAAAAAAAxwdWJsaWNfa2V5X3kAAAPuAAAAIA==",
453
- "AAAAAgAAAAAAAAAAAAAAIk9wdGlvbmFsUHJpdmF0ZUFkZHJlc3NSZWdpc3RyYXRpb24AAAAAAAIAAAAAAAAAAAAAAAROb25lAAAAAQAAAAAAAAAEU29tZQAAAAEAAAfQAAAAGlByaXZhdGVBZGRyZXNzUmVnaXN0cmF0aW9uAAA=",
454
- "AAAAAQAAAAAAAAAAAAAAEU9uYm9hcmRpbmdQYXlsb2FkAAAAAAAABgAAAAAAAAAVZW5jcnlwdGVkX3ByaXZhdGVfa2V5AAAAAAAADgAAAAAAAAAFbm90ZXMAAAAAAAfQAAAAElBlbmRpbmdOb3RlUGF5bG9hZAAAAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAAHHByaXZhdGVfYWRkcmVzc19yZWdpc3RyYXRpb24AAAfQAAAAIk9wdGlvbmFsUHJpdmF0ZUFkZHJlc3NSZWdpc3RyYXRpb24AAAAAAAAAAAARdGVtcF9wdWJsaWNfa2V5X3gAAAAAAAPuAAAAIAAAAAAAAAARdGVtcF9wdWJsaWNfa2V5X3kAAAAAAAPuAAAAIA==",
425
+ "AAAAAQAAAAAAAAAAAAAAEEt5dFBhc3NhZ2VSZWNvcmQAAAACAAAAAAAAAAhjb25zdW1lZAAAAAEAAAAAAAAAEWV4cGlyZXNfYXRfbGVkZ2VyAAAAAAAABA==",
455
426
  "AAAAAQAAAAAAAAAAAAAAFFByaXZhdGVBZGRyZXNzUmVjb3JkAAAABAAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAAxwdWJsaWNfa2V5X3gAAAPuAAAAIAAAAAAAAAAMcHVibGljX2tleV95AAAD7gAAACAAAAAAAAAAEXVwZGF0ZWRfYXRfbGVkZ2VyAAAAAAAABA==",
456
- "AAAAAQAAAAAAAAAAAAAAFlBlbmRpbmdOdWxsaWZpZXJSZWNvcmQAAAAAAAcAAAAAAAAAEWNyZWF0ZWRfYXRfbGVkZ2VyAAAAAAAABAAAAAAAAAAKY3JlYXRlZF9ieQAAAAAAEwAAAAAAAAAVZW5jcnlwdGVkX3ByaXZhdGVfa2V5AAAAAAAADgAAAAAAAAAEbm90ZQAAB9AAAAANUGxhaW50ZXh0Tm90ZQAAAAAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAABF0ZW1wX3B1YmxpY19rZXlfeAAAAAAAA+4AAAAgAAAAAAAAABF0ZW1wX3B1YmxpY19rZXlfeQAAAAAAA+4AAAAg",
457
- "AAAAAQAAAAAAAAAAAAAAEEt5dFBhc3NhZ2VSZWNvcmQAAAABAAAAAAAAABFleHBpcmVzX2F0X2xlZGdlcgAAAAAAAAQ=",
458
- "AAAAAQAAAAAAAAAAAAAAF0t5dFBhc3NhZ2VBdXRob3JpemF0aW9uAAAAAAIAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABAAAAAAAAAAJc2lnbmF0dXJlAAAAAAAD7gAAAEA=" ]),
427
+ "AAAAAQAAAAAAAAAAAAAAF0t5dFBhc3NhZ2VBdXRob3JpemF0aW9uAAAAAAIAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABAAAAAAAAAAJc2lnbmF0dXJlAAAAAAAD7gAAAEA=",
428
+ "AAAAAQAAAAAAAAAAAAAAGlByaXZhdGVBZGRyZXNzUmVnaXN0cmF0aW9uAAAAAAADAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAADHB1YmxpY19rZXlfeAAAA+4AAAAgAAAAAAAAAAxwdWJsaWNfa2V5X3kAAAPuAAAAIA==",
429
+ "AAAABAAAAAAAAAAAAAAADEdyb3RoMTZFcnJvcgAAAAMAAAAAAAAAFU1hbGZvcm1lZFZlcmlmeWluZ0tleQAAAAAAAAAAAACcYFByb29mOjpmcm9tX2J5dGVzYCByZWNlaXZlZCBhIGBwcm9vZl9ieXRlc2AgYXJndW1lbnQgdGhhdCBpcyB0b28gc2hvcnQgKG9yIG90aGVyd2lzZQpmYWlscyB0byBwYXJzZSBhcyBgYSB8fCBiIHx8IGNgKSBmb3IgdGhlIGZpeGVkIEcxL0cyIGVuY29kaW5nIGxlbmd0aHMuAAAADk1hbGZvcm1lZFByb29mAAAAAAABAAAAo2BQdWJsaWNTaWduYWxzOjpmcm9tX2J5dGVzYCByZWNlaXZlZCBhIGxlbmd0aCBwcmVmaXggdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgcmVtYWluaW5nCnBheWxvYWQgKHRvbyBzaG9ydCwgdHJ1bmNhdGVkIEZyIGxpbWJzLCBvciBhIGNsYWltZWQgbGVuZ3RoIHRoYXQgb3ZlcmZsb3dzKS4AAAAAFk1hbGZvcm1lZFB1YmxpY1NpZ25hbHMAAAAAAAI=" ]),
459
430
  options
460
431
  )
461
432
  }
462
433
  public readonly fromJSON = {
463
- add_zk_config: this.txFromJSON<Result<void>>,
464
- deprecate_zk_config: this.txFromJSON<Result<void>>,
465
- get_zk_config: this.txFromJSON<Option<ZkConfig>>,
466
- transact: this.txFromJSON<Result<void>>,
467
- set_kyt_registry: this.txFromJSON<null>,
468
- get_kyt_registry: this.txFromJSON<Option<string>>,
469
- require_kyt_passage: this.txFromJSON<Result<void>>,
470
- set_app_audit_key: this.txFromJSON<null>,
471
- get_app_audit_state: this.txFromJSON<Option<AppAuditState>>,
472
- set_registry: this.txFromJSON<null>,
434
+ transact: this.txFromJSON<Result<void>>,
435
+ get_admin: this.txFromJSON<string>,
473
436
  get_registry: this.txFromJSON<Option<string>>,
437
+ set_registry: this.txFromJSON<null>,
438
+ add_zk_config: this.txFromJSON<Result<void>>,
439
+ get_zk_config: this.txFromJSON<Option<ZkConfig>>,
440
+ is_known_root: this.txFromJSON<boolean>,
441
+ get_commitments: this.txFromJSON<Array<Buffer>>,
474
442
  get_merkle_root: this.txFromJSON<Buffer>,
443
+ get_kyt_registry: this.txFromJSON<Option<string>>,
475
444
  get_merkle_depth: this.txFromJSON<u32>,
476
- get_commitment_count: this.txFromJSON<u32>,
445
+ set_kyt_registry: this.txFromJSON<null>,
446
+ get_token_balance: this.txFromJSON<i128>,
477
447
  get_leaf_ephemeral: this.txFromJSON<Option<EphemeralKeyCoords>>,
448
+ deprecate_zk_config: this.txFromJSON<Result<void>>,
449
+ require_kyt_passage: this.txFromJSON<Result<void>>,
450
+ get_commitment_count: this.txFromJSON<u32>,
478
451
  get_pairwise_frontier: this.txFromJSON<Array<Buffer>>,
479
- get_commitments: this.txFromJSON<Array<Buffer>>,
480
- is_nulifier_hash_consumed: this.txFromJSON<boolean>,
481
- is_known_root: this.txFromJSON<boolean>,
482
- get_token_balance: this.txFromJSON<i128>,
483
452
  get_public_slot_config: this.txFromJSON<readonly [u32, u32]>,
484
- get_admin: this.txFromJSON<string>
453
+ is_nulifier_hash_consumed: this.txFromJSON<boolean>
485
454
  }
486
455
  }