@aztec/sequencer-client 0.17.0 → 0.19.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.
- package/dest/block_builder/index.d.ts +1 -1
- package/dest/block_builder/index.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.d.ts +5 -5
- package/dest/block_builder/solo_block_builder.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.js +54 -83
- package/dest/block_builder/types.d.ts +0 -11
- package/dest/block_builder/types.d.ts.map +1 -1
- package/dest/client/sequencer-client.d.ts +1 -1
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/prover/empty.js +4 -4
- package/dest/publisher/l1-publisher.d.ts +12 -3
- package/dest/publisher/l1-publisher.d.ts.map +1 -1
- package/dest/publisher/l1-publisher.js +23 -23
- package/dest/publisher/viem-tx-sender.d.ts +2 -1
- package/dest/publisher/viem-tx-sender.d.ts.map +1 -1
- package/dest/publisher/viem-tx-sender.js +6 -2
- package/dest/receiver.d.ts +1 -1
- package/dest/receiver.d.ts.map +1 -1
- package/dest/sequencer/config.d.ts +1 -1
- package/dest/sequencer/config.d.ts.map +1 -1
- package/dest/sequencer/processed_tx.d.ts +1 -1
- package/dest/sequencer/processed_tx.d.ts.map +1 -1
- package/dest/sequencer/processed_tx.js +2 -2
- package/dest/sequencer/public_processor.d.ts +1 -1
- package/dest/sequencer/public_processor.d.ts.map +1 -1
- package/dest/sequencer/public_processor.js +2 -2
- package/dest/sequencer/sequencer.d.ts +1 -1
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +13 -13
- package/dest/simulator/public_executor.d.ts +1 -1
- package/dest/simulator/public_executor.d.ts.map +1 -1
- package/dest/simulator/public_executor.js +2 -2
- package/dest/simulator/public_kernel.d.ts.map +1 -1
- package/dest/simulator/public_kernel.js +1 -1
- package/dest/simulator/rollup.d.ts.map +1 -1
- package/dest/simulator/rollup.js +1 -1
- package/package.json +12 -11
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { L2Block } from '@aztec/circuit-types';
|
|
1
2
|
import { GlobalVariables, Proof } from '@aztec/circuits.js';
|
|
2
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
-
import { L2Block } from '@aztec/types';
|
|
4
4
|
import { ProcessedTx } from '../sequencer/processed_tx.js';
|
|
5
5
|
/**
|
|
6
6
|
* Assembles an L2Block from a set of processed transactions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,YAAY,CACV,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,WAAW,EAAE,EAClB,iBAAiB,EAAE,EAAE,EAAE,GACtB,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;CAC9B"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { L2Block, MerkleTreeId } from '@aztec/circuit-types';
|
|
2
|
+
import { AppendOnlyTreeSnapshot, BaseOrMergeRollupPublicInputs, BaseRollupInputs, ConstantRollupData, GlobalVariables, MembershipWitness, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeafPreimage, PartialStateReference, PreviousKernelData, PreviousRollupData, Proof, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, RollupTypes, RootRollupInputs, RootRollupPublicInputs, StateReference, VerificationKey } from '@aztec/circuits.js';
|
|
2
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
4
|
import { Tuple } from '@aztec/foundation/serialize';
|
|
4
|
-
import { L2Block, MerkleTreeId } from '@aztec/types';
|
|
5
5
|
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
6
6
|
import { VerificationKeys } from '../mocks/verification_keys.js';
|
|
7
7
|
import { RollupProver } from '../prover/index.js';
|
|
8
8
|
import { ProcessedTx } from '../sequencer/processed_tx.js';
|
|
9
9
|
import { RollupSimulator } from '../simulator/index.js';
|
|
10
10
|
import { BlockBuilder } from './index.js';
|
|
11
|
-
import {
|
|
11
|
+
import { TreeNames } from './types.js';
|
|
12
12
|
/**
|
|
13
13
|
* Builds an L2 block out of a set of ProcessedTx's,
|
|
14
14
|
* using the base, merge, and root rollup circuits.
|
|
@@ -38,9 +38,9 @@ export declare class SoloBlockBuilder implements BlockBuilder {
|
|
|
38
38
|
protected rootRollupCircuit(left: [BaseOrMergeRollupPublicInputs, Proof], right: [BaseOrMergeRollupPublicInputs, Proof], newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>): Promise<[RootRollupPublicInputs, Proof]>;
|
|
39
39
|
updateArchive(globalVariables: GlobalVariables): Promise<void>;
|
|
40
40
|
protected calculateBlockHash(globals: GlobalVariables): Promise<Fr>;
|
|
41
|
-
protected
|
|
41
|
+
protected validatePartialState(partialState: PartialStateReference): Promise<void>;
|
|
42
|
+
protected validateState(state: StateReference): Promise<void>;
|
|
42
43
|
protected validateRootOutput(rootOutput: RootRollupPublicInputs): Promise<void>;
|
|
43
|
-
protected validateTree<T extends BaseOrMergeRollupPublicInputs | RootRollupPublicInputs>(output: T, treeId: MerkleTreeId, name: AllowedTreeNames<T>): Promise<void>;
|
|
44
44
|
protected validateSimulatedTree(localTree: AppendOnlyTreeSnapshot, simulatedTree: AppendOnlyTreeSnapshot, name: TreeNames, label?: string): void;
|
|
45
45
|
protected getRootRollupInput(rollupOutputLeft: BaseOrMergeRollupPublicInputs, rollupProofLeft: Proof, rollupOutputRight: BaseOrMergeRollupPublicInputs, rollupProofRight: Proof, newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>): Promise<RootRollupInputs>;
|
|
46
46
|
protected getPreviousRollupDataFromPublicInputs(rollupOutput: BaseOrMergeRollupPublicInputs, rollupProof: Proof, vk: VerificationKey): PreviousRollupData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solo_block_builder.d.ts","sourceRoot":"","sources":["../../src/block_builder/solo_block_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,6BAA6B,EAC7B,gBAAgB,EAGhB,kBAAkB,EAClB,eAAe,EAMf,iBAAiB,EAOjB,mCAAmC,EACnC,qBAAqB,EAIrB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,EACL,kBAAkB,EAClB,0BAA0B,EAE1B,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EAItB,eAAe,
|
|
1
|
+
{"version":3,"file":"solo_block_builder.d.ts","sourceRoot":"","sources":["../../src/block_builder/solo_block_builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ContractData, L2Block, L2BlockL2Logs, MerkleTreeId, PublicDataWrite, TxL2Logs } from '@aztec/circuit-types';
|
|
2
|
+
import { ARCHIVE_HEIGHT, AppendOnlyTreeSnapshot, BaseRollupInputs, CONTRACT_SUBTREE_HEIGHT, CONTRACT_SUBTREE_SIBLING_PATH_LENGTH, ConstantRollupData, L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, MergeRollupInputs, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeafPreimage, PUBLIC_DATA_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH, PUBLIC_DATA_TREE_HEIGHT, PartialStateReference, PreviousKernelData, PreviousRollupData, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, ROLLUP_VK_TREE_HEIGHT, RollupTypes, RootRollupInputs, StateDiffHints, VK_TREE_HEIGHT, } from '@aztec/circuits.js';
|
|
2
3
|
import { computeBlockHash, computeBlockHashWithGlobals, computeContractLeaf, computeGlobalsHash, } from '@aztec/circuits.js/abis';
|
|
3
|
-
import {
|
|
4
|
+
import { makeTuple } from '@aztec/foundation/array';
|
|
4
5
|
import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
|
|
5
6
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
6
7
|
import { Fr } from '@aztec/foundation/fields';
|
|
7
8
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
8
|
-
import { assertLength } from '@aztec/foundation/serialize';
|
|
9
|
-
import { ContractData, L2Block, L2BlockL2Logs, MerkleTreeId, PublicDataWrite, TxL2Logs } from '@aztec/types';
|
|
9
|
+
import { assertLength, toFriendlyJSON } from '@aztec/foundation/serialize';
|
|
10
10
|
import chunk from 'lodash.chunk';
|
|
11
11
|
const frToBigInt = (fr) => toBigIntBE(fr.toBuffer());
|
|
12
12
|
// Denotes fields that are not used now, but will be in the future
|
|
@@ -35,19 +35,10 @@ export class SoloBlockBuilder {
|
|
|
35
35
|
* @returns The new L2 block and a correctness proof as returned by the root rollup circuit.
|
|
36
36
|
*/
|
|
37
37
|
async buildL2Block(globalVariables, txs, newL1ToL2Messages) {
|
|
38
|
-
const [startNoteHashTreeSnapshot, startNullifierTreeSnapshot, startContractTreeSnapshot, startPublicDataTreeSnapshot, startL1ToL2MessageTreeSnapshot, startArchiveSnapshot,] = await Promise.all([
|
|
39
|
-
MerkleTreeId.NOTE_HASH_TREE,
|
|
40
|
-
MerkleTreeId.NULLIFIER_TREE,
|
|
41
|
-
MerkleTreeId.CONTRACT_TREE,
|
|
42
|
-
MerkleTreeId.PUBLIC_DATA_TREE,
|
|
43
|
-
MerkleTreeId.L1_TO_L2_MESSAGE_TREE,
|
|
44
|
-
MerkleTreeId.ARCHIVE,
|
|
45
|
-
].map(tree => this.getTreeSnapshot(tree)));
|
|
46
38
|
// Check txs are good for processing
|
|
47
39
|
this.validateTxs(txs);
|
|
48
40
|
// We fill the tx batch with empty txs, we process only one tx at a time for now
|
|
49
41
|
const [circuitsOutput, proof] = await this.runCircuits(globalVariables, txs, newL1ToL2Messages);
|
|
50
|
-
const { endNoteHashTreeSnapshot, endNullifierTreeSnapshot, endContractTreeSnapshot, endPublicDataTreeSnapshot, endL1ToL2MessageTreeSnapshot, endArchiveSnapshot, } = circuitsOutput;
|
|
51
42
|
// Collect all new nullifiers, commitments, and contracts from all txs in this block
|
|
52
43
|
const newNullifiers = txs.flatMap(tx => tx.data.end.newNullifiers);
|
|
53
44
|
const newCommitments = txs.flatMap(tx => tx.data.end.newCommitments);
|
|
@@ -69,20 +60,8 @@ export class SoloBlockBuilder {
|
|
|
69
60
|
const newEncryptedLogs = new L2BlockL2Logs(encryptedLogsArr);
|
|
70
61
|
const newUnencryptedLogs = new L2BlockL2Logs(unencryptedLogsArr);
|
|
71
62
|
const l2Block = L2Block.fromFields({
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
startNoteHashTreeSnapshot,
|
|
75
|
-
endNoteHashTreeSnapshot,
|
|
76
|
-
startNullifierTreeSnapshot,
|
|
77
|
-
endNullifierTreeSnapshot,
|
|
78
|
-
startContractTreeSnapshot,
|
|
79
|
-
endContractTreeSnapshot,
|
|
80
|
-
startPublicDataTreeSnapshot,
|
|
81
|
-
endPublicDataTreeSnapshot,
|
|
82
|
-
startL1ToL2MessageTreeSnapshot: startL1ToL2MessageTreeSnapshot,
|
|
83
|
-
endL1ToL2MessageTreeSnapshot,
|
|
84
|
-
startArchiveSnapshot,
|
|
85
|
-
endArchiveSnapshot,
|
|
63
|
+
archive: circuitsOutput.archive,
|
|
64
|
+
header: circuitsOutput.header,
|
|
86
65
|
newCommitments: newCommitments.map((c) => c.value),
|
|
87
66
|
newNullifiers: newNullifiers.map((n) => n.value),
|
|
88
67
|
newL2ToL1Msgs,
|
|
@@ -93,10 +72,10 @@ export class SoloBlockBuilder {
|
|
|
93
72
|
newEncryptedLogs,
|
|
94
73
|
newUnencryptedLogs,
|
|
95
74
|
});
|
|
96
|
-
if (!l2Block.getCalldataHash().equals(circuitsOutput.
|
|
97
|
-
throw new Error(`Calldata hash mismatch, ${l2Block
|
|
98
|
-
.
|
|
99
|
-
.toString('hex')} `);
|
|
75
|
+
if (!l2Block.getCalldataHash().equals(circuitsOutput.header.bodyHash)) {
|
|
76
|
+
throw new Error(`Calldata hash mismatch, ${l2Block
|
|
77
|
+
.getCalldataHash()
|
|
78
|
+
.toString('hex')} == ${circuitsOutput.header.bodyHash.toString('hex')} `);
|
|
100
79
|
}
|
|
101
80
|
return [l2Block, proof];
|
|
102
81
|
}
|
|
@@ -150,7 +129,7 @@ export class SoloBlockBuilder {
|
|
|
150
129
|
this.debug(`Running base rollup for ${tx.hash}`);
|
|
151
130
|
const rollupInput = await this.buildBaseRollupInput(tx, globalVariables);
|
|
152
131
|
const rollupOutput = await this.simulator.baseRollupCircuit(rollupInput);
|
|
153
|
-
await this.
|
|
132
|
+
await this.validatePartialState(rollupOutput.end);
|
|
154
133
|
const proof = await this.prover.getBaseRollupProof(rollupInput, rollupOutput);
|
|
155
134
|
return [rollupOutput, proof];
|
|
156
135
|
}
|
|
@@ -208,32 +187,27 @@ export class SoloBlockBuilder {
|
|
|
208
187
|
const blockHash = computeBlockHashWithGlobals(globals, noteHashTreeRoot, nullifierTreeRoot, contractTreeRoot, l1ToL2MessageTreeRoot, publicDataTreeRoot);
|
|
209
188
|
return blockHash;
|
|
210
189
|
}
|
|
211
|
-
|
|
212
|
-
|
|
190
|
+
async validatePartialState(partialState) {
|
|
191
|
+
await Promise.all([
|
|
192
|
+
this.validateSimulatedTree(await this.getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE), partialState.noteHashTree, 'NoteHashTree'),
|
|
193
|
+
this.validateSimulatedTree(await this.getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE), partialState.nullifierTree, 'NullifierTree'),
|
|
194
|
+
this.validateSimulatedTree(await this.getTreeSnapshot(MerkleTreeId.CONTRACT_TREE), partialState.contractTree, 'ContractTree'),
|
|
195
|
+
this.validateSimulatedTree(await this.getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE), partialState.publicDataTree, 'PublicDataTree'),
|
|
196
|
+
]);
|
|
197
|
+
}
|
|
198
|
+
async validateState(state) {
|
|
213
199
|
await Promise.all([
|
|
214
|
-
this.
|
|
215
|
-
this.
|
|
216
|
-
this.validateTree(rollupOutput, MerkleTreeId.NULLIFIER_TREE, 'NullifierTree'),
|
|
217
|
-
this.validateTree(rollupOutput, MerkleTreeId.PUBLIC_DATA_TREE, 'PublicDataTree'),
|
|
200
|
+
this.validateSimulatedTree(await this.getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE), state.l1ToL2MessageTree, 'L1ToL2MessageTree'),
|
|
201
|
+
this.validatePartialState(state.partial),
|
|
218
202
|
]);
|
|
219
203
|
}
|
|
220
204
|
// Validate that the roots of all local trees match the output of the root circuit simulation
|
|
221
205
|
async validateRootOutput(rootOutput) {
|
|
222
206
|
await Promise.all([
|
|
223
|
-
this.
|
|
224
|
-
this.
|
|
225
|
-
this.validateTree(rootOutput, MerkleTreeId.L1_TO_L2_MESSAGE_TREE, 'L1ToL2MessageTree'),
|
|
207
|
+
this.validateState(rootOutput.header.state),
|
|
208
|
+
this.validateSimulatedTree(await this.getTreeSnapshot(MerkleTreeId.ARCHIVE), rootOutput.archive, 'Archive'),
|
|
226
209
|
]);
|
|
227
210
|
}
|
|
228
|
-
// Helper for validating a non-roots tree against a circuit simulation output
|
|
229
|
-
async validateTree(output, treeId, name) {
|
|
230
|
-
if ('endL1ToL2MessageTreeSnapshot' in output && !(output instanceof RootRollupPublicInputs)) {
|
|
231
|
-
throw new Error(`The name 'L1ToL2Message' can only be used when output is of type RootRollupPublicInputs`);
|
|
232
|
-
}
|
|
233
|
-
const localTree = await this.getTreeSnapshot(treeId);
|
|
234
|
-
const simulatedTree = output[`end${name}Snapshot`];
|
|
235
|
-
this.validateSimulatedTree(localTree, simulatedTree, name);
|
|
236
|
-
}
|
|
237
211
|
// Helper for comparing two trees snapshots
|
|
238
212
|
validateSimulatedTree(localTree, simulatedTree, name, label) {
|
|
239
213
|
if (!simulatedTree.root.toBuffer().equals(localTree.root.toBuffer())) {
|
|
@@ -311,7 +285,7 @@ export class SoloBlockBuilder {
|
|
|
311
285
|
mergeRollupVkHash: DELETE_FR,
|
|
312
286
|
privateKernelVkTreeRoot: FUTURE_FR,
|
|
313
287
|
publicKernelVkTreeRoot: FUTURE_FR,
|
|
314
|
-
|
|
288
|
+
lastArchive: await this.getTreeSnapshot(MerkleTreeId.ARCHIVE),
|
|
315
289
|
globalVariables,
|
|
316
290
|
});
|
|
317
291
|
}
|
|
@@ -400,16 +374,12 @@ export class SoloBlockBuilder {
|
|
|
400
374
|
async buildBaseRollupInput(tx, globalVariables) {
|
|
401
375
|
// Get trees info before any changes hit
|
|
402
376
|
const constants = await this.getConstantRollupData(globalVariables);
|
|
403
|
-
const
|
|
404
|
-
const startContractTreeSnapshot = await this.getTreeSnapshot(MerkleTreeId.CONTRACT_TREE);
|
|
405
|
-
const startNoteHashTreeSnapshot = await this.getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE);
|
|
406
|
-
const startPublicDataTreeSnapshot = await this.getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE);
|
|
407
|
-
const startArchiveSnapshot = await this.getTreeSnapshot(MerkleTreeId.ARCHIVE);
|
|
377
|
+
const start = new PartialStateReference(await this.getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE), await this.getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE), await this.getTreeSnapshot(MerkleTreeId.CONTRACT_TREE), await this.getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE));
|
|
408
378
|
// Get the subtree sibling paths for the circuit
|
|
409
|
-
const
|
|
410
|
-
const
|
|
411
|
-
const
|
|
412
|
-
const
|
|
379
|
+
const noteHashSubtreeSiblingPathArray = await this.getSubtreeSiblingPath(MerkleTreeId.NOTE_HASH_TREE, NOTE_HASH_SUBTREE_HEIGHT);
|
|
380
|
+
const noteHashSubtreeSiblingPath = makeTuple(NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, i => i < noteHashSubtreeSiblingPathArray.length ? noteHashSubtreeSiblingPathArray[i] : Fr.ZERO);
|
|
381
|
+
const contractSubtreeSiblingPathArray = await this.getSubtreeSiblingPath(MerkleTreeId.CONTRACT_TREE, CONTRACT_SUBTREE_HEIGHT);
|
|
382
|
+
const contractSubtreeSiblingPath = makeTuple(CONTRACT_SUBTREE_SIBLING_PATH_LENGTH, i => i < contractSubtreeSiblingPathArray.length ? contractSubtreeSiblingPathArray[i] : Fr.ZERO);
|
|
413
383
|
// Update the contract and note hash trees with the new items being inserted to get the new roots
|
|
414
384
|
// that will be used by the next iteration of the base rollup circuit, skipping the empty ones
|
|
415
385
|
const newContracts = tx.data.end.newContracts.map(cd => computeContractLeaf(cd));
|
|
@@ -422,44 +392,45 @@ export class SoloBlockBuilder {
|
|
|
422
392
|
const txPublicDataUpdateRequestInfo = await this.processPublicDataUpdateRequests(tx);
|
|
423
393
|
// Update the nullifier tree, capturing the low nullifier info for each individual operation
|
|
424
394
|
const newNullifiers = tx.data.end.newNullifiers;
|
|
425
|
-
const { lowLeavesWitnessData: nullifierWitnessLeaves, newSubtreeSiblingPath: newNullifiersSubtreeSiblingPath, sortedNewLeaves: sortedNewNullifiers, sortedNewLeavesIndexes
|
|
395
|
+
const { lowLeavesWitnessData: nullifierWitnessLeaves, newSubtreeSiblingPath: newNullifiersSubtreeSiblingPath, sortedNewLeaves: sortedNewNullifiers, sortedNewLeavesIndexes, } = await this.db.batchInsert(MerkleTreeId.NULLIFIER_TREE, newNullifiers.map(sideEffectLinkedToNoteHash => sideEffectLinkedToNoteHash.value.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
426
396
|
if (nullifierWitnessLeaves === undefined) {
|
|
427
397
|
throw new Error(`Could not craft nullifier batch insertion proofs`);
|
|
428
398
|
}
|
|
429
399
|
// Extract witness objects from returned data
|
|
430
|
-
const
|
|
431
|
-
const
|
|
400
|
+
const nullifierPredecessorMembershipWitnessesWithoutPadding = nullifierWitnessLeaves.map(l => MembershipWitness.fromBufferArray(l.index, assertLength(l.siblingPath.toBufferArray(), NULLIFIER_TREE_HEIGHT)));
|
|
401
|
+
const nullifierSubtreeSiblingPathArray = newNullifiersSubtreeSiblingPath.toFieldArray();
|
|
402
|
+
const nullifierSubtreeSiblingPath = makeTuple(NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, i => i < nullifierSubtreeSiblingPathArray.length ? nullifierSubtreeSiblingPathArray[i] : Fr.ZERO);
|
|
403
|
+
const publicDataSiblingPath = txPublicDataUpdateRequestInfo.newPublicDataSubtreeSiblingPath;
|
|
404
|
+
const stateDiffHints = StateDiffHints.from({
|
|
405
|
+
nullifierPredecessorPreimages: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => i < nullifierWitnessLeaves.length
|
|
406
|
+
? nullifierWitnessLeaves[i].leafPreimage
|
|
407
|
+
: NullifierLeafPreimage.empty()),
|
|
408
|
+
nullifierPredecessorMembershipWitnesses: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => i < nullifierPredecessorMembershipWitnessesWithoutPadding.length
|
|
409
|
+
? nullifierPredecessorMembershipWitnessesWithoutPadding[i]
|
|
410
|
+
: this.makeEmptyMembershipWitness(NULLIFIER_TREE_HEIGHT)),
|
|
411
|
+
sortedNullifiers: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => Fr.fromBuffer(sortedNewNullifiers[i])),
|
|
412
|
+
sortedNullifierIndexes: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => sortedNewLeavesIndexes[i]),
|
|
413
|
+
noteHashSubtreeSiblingPath,
|
|
414
|
+
nullifierSubtreeSiblingPath,
|
|
415
|
+
contractSubtreeSiblingPath,
|
|
416
|
+
publicDataSiblingPath,
|
|
417
|
+
});
|
|
432
418
|
return BaseRollupInputs.from({
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
startNoteHashTreeSnapshot,
|
|
437
|
-
startPublicDataTreeSnapshot,
|
|
438
|
-
archiveSnapshot: startArchiveSnapshot,
|
|
419
|
+
kernelData: this.getKernelDataFor(tx),
|
|
420
|
+
start,
|
|
421
|
+
stateDiffHints,
|
|
439
422
|
sortedPublicDataWrites: txPublicDataUpdateRequestInfo.sortedPublicDataWrites,
|
|
440
423
|
sortedPublicDataWritesIndexes: txPublicDataUpdateRequestInfo.sortedPublicDataWritesIndexes,
|
|
441
424
|
lowPublicDataWritesPreimages: txPublicDataUpdateRequestInfo.lowPublicDataWritesPreimages,
|
|
442
425
|
lowPublicDataWritesMembershipWitnesses: txPublicDataUpdateRequestInfo.lowPublicDataWritesMembershipWitnesses,
|
|
443
|
-
publicDataWritesSubtreeSiblingPath: txPublicDataUpdateRequestInfo.newPublicDataSubtreeSiblingPath,
|
|
444
|
-
sortedNewNullifiers: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => Fr.fromBuffer(sortedNewNullifiers[i])),
|
|
445
|
-
sortednewNullifiersIndexes: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => sortednewNullifiersIndexes[i]),
|
|
446
|
-
newCommitmentsSubtreeSiblingPath,
|
|
447
|
-
newContractsSubtreeSiblingPath,
|
|
448
|
-
newNullifiersSubtreeSiblingPath: makeTuple(NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, i => i < newNullifiersSubtreeSiblingPathArray.length ? newNullifiersSubtreeSiblingPathArray[i] : Fr.ZERO),
|
|
449
426
|
publicDataReadsPreimages: txPublicDataReadsInfo.newPublicDataReadsPreimages,
|
|
450
427
|
publicDataReadsMembershipWitnesses: txPublicDataReadsInfo.newPublicDataReadsWitnesses,
|
|
451
|
-
lowNullifierLeafPreimages: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => i < nullifierWitnessLeaves.length
|
|
452
|
-
? nullifierWitnessLeaves[i].leafPreimage
|
|
453
|
-
: NullifierLeafPreimage.empty()),
|
|
454
|
-
lowNullifierMembershipWitness: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => i < lowNullifierMembershipWitnesses.length
|
|
455
|
-
? lowNullifierMembershipWitnesses[i]
|
|
456
|
-
: this.makeEmptyMembershipWitness(NULLIFIER_TREE_HEIGHT)),
|
|
457
|
-
kernelData: this.getKernelDataFor(tx),
|
|
458
428
|
archiveRootMembershipWitness: await this.getHistoricalTreesMembershipWitnessFor(tx),
|
|
429
|
+
constants,
|
|
459
430
|
});
|
|
460
431
|
}
|
|
461
432
|
makeEmptyMembershipWitness(height) {
|
|
462
433
|
return new MembershipWitness(height, 0n, makeTuple(height, () => Fr.ZERO));
|
|
463
434
|
}
|
|
464
435
|
}
|
|
465
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sb19ibG9ja19idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jsb2NrX2J1aWxkZXIvc29sb19ibG9ja19idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsc0JBQXNCLEVBRXRCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsb0NBQW9DLEVBQ3BDLGtCQUFrQixFQUVsQiwyQkFBMkIsRUFDM0Isd0NBQXdDLEVBQ3hDLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsc0NBQXNDLEVBQ3RDLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLHFDQUFxQyxFQUNyQyx3QkFBd0IsRUFDeEIscUNBQXFDLEVBQ3JDLHFCQUFxQixFQUNyQixtQ0FBbUMsRUFDbkMscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQix1Q0FBdUMsRUFDdkMsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFFbEIsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixzQkFBc0IsRUFHdEIsY0FBYyxFQUVkLFNBQVMsR0FDVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsMkJBQTJCLEVBQzNCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQs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
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sb19ibG9ja19idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jsb2NrX2J1aWxkZXIvc29sb19ibG9ja19idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JILE9BQU8sRUFDTCxjQUFjLEVBQ2Qsc0JBQXNCLEVBRXRCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsb0NBQW9DLEVBQ3BDLGtCQUFrQixFQUVsQiwyQkFBMkIsRUFDM0Isd0NBQXdDLEVBQ3hDLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsc0NBQXNDLEVBQ3RDLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLHFDQUFxQyxFQUNyQyx3QkFBd0IsRUFDeEIscUNBQXFDLEVBQ3JDLHFCQUFxQixFQUNyQixtQ0FBbUMsRUFDbkMscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQix1Q0FBdUMsRUFDdkMsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBRWxCLGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxnQkFBZ0IsRUFJaEIsY0FBYyxFQUVkLGNBQWMsR0FFZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsMkJBQTJCLEVBQzNCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFTLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRixPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFTakMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFNLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUV6RCxrRUFBa0U7QUFDbEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBRXJCLHdDQUF3QztBQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUU3Qjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ1ksRUFBd0IsRUFDeEIsR0FBcUIsRUFDckIsU0FBMEIsRUFDMUIsTUFBb0IsRUFDcEIsUUFBUSxpQkFBaUIsQ0FBQyxvQ0FBb0MsQ0FBQztRQUovRCxPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQTBEO0lBQ3hFLENBQUM7SUFFSjs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLFlBQVksQ0FDdkIsZUFBZ0MsRUFDaEMsR0FBa0IsRUFDbEIsaUJBQXVCO1FBRXZCLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLGdGQUFnRjtRQUNoRixNQUFNLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFaEcsb0ZBQW9GO1FBQ3BGLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckUsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEcsTUFBTSxlQUFlLEdBQUcsR0FBRzthQUN4QixPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7YUFDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUMzQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUMzRixDQUFDO1FBQ0YsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5FLHFDQUFxQztRQUNyQyxNQUFNLGdCQUFnQixHQUFlLEVBQUUsQ0FBQztRQUN4QyxNQUFNLGtCQUFrQixHQUFlLEVBQUUsQ0FBQztRQUMxQyxLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRTtZQUNwQixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsYUFBYSxJQUFJLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNELGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyQyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsZUFBZSxJQUFJLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUMxQztRQUNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNqQyxPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU87WUFDL0IsTUFBTSxFQUFFLGNBQWMsQ0FBQyxNQUFNO1lBQzdCLGNBQWMsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzlELGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBNkIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM1RSxhQUFhO1lBQ2IsWUFBWTtZQUNaLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixrQkFBa0I7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyRSxNQUFNLElBQUksS0FBSyxDQUNiLDJCQUEyQixPQUFPO2lCQUMvQixlQUFlLEVBQUU7aUJBQ2pCLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDM0UsQ0FBQztTQUNIO1FBRUQsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRVMsV0FBVyxDQUFDLEdBQWtCO1FBQ3RDLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFO1lBQ3BCLEtBQUssTUFBTSxrQkFBa0IsSUFBSTtnQkFDL0Isa0JBQWtCO2dCQUNsQixrQkFBa0I7Z0JBQ2xCLG1CQUFtQjtnQkFDbkIsdUJBQXVCO2FBQ2YsRUFBRTtnQkFDVixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUM5RCxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsa0JBQWtCLFlBQVksY0FBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDOUU7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBZ0I7UUFDOUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksc0JBQXNCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFUyxLQUFLLENBQUMsV0FBVyxDQUN6QixlQUFnQyxFQUNoQyxHQUFrQixFQUNsQixpQkFBdUI7UUFFdkIsOERBQThEO1FBQzlELCtFQUErRTtRQUMvRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RUFBOEUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDOUc7UUFFRCxxR0FBcUc7UUFDckcsTUFBTSxzQkFBc0IsR0FBRyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO1FBRTVHLDJDQUEyQztRQUMzQyxNQUFNLGlCQUFpQixHQUE2QyxFQUFFLENBQUM7UUFDdkUsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUU7WUFDcEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsNkRBQTZEO1FBQzdELElBQUksaUJBQWlCLEdBQTZDLGlCQUFpQixDQUFDO1FBQ3BGLElBQUksa0JBQWtCLEdBQTZDLEVBQUUsQ0FBQztRQUN0RSxPQUFPLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDaEU7WUFDRCxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztZQUN2QyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7U0FDekI7UUFFRCxvRkFBb0Y7UUFDcEYsTUFBTSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQzlELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFUyxLQUFLLENBQUMsaUJBQWlCLENBQy9CLEVBQWUsRUFDZixlQUFnQztRQUVoQyxJQUFJLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDekUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVTLEtBQUssQ0FBQyxrQkFBa0IsQ0FDaEMsSUFBNEMsRUFDNUMsS0FBNkM7UUFFN0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFDO1lBQ3hDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMscUNBQXFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDbkUsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVTLGtCQUFrQixDQUFDLElBQWlCO1FBQzVDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxXQUFXLENBQUMsSUFBSTtnQkFDbkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDO1lBQ3BDLEtBQUssV0FBVyxDQUFDLEtBQUs7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztZQUNyQztnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxpQkFBaUIsQ0FDL0IsSUFBNEMsRUFDNUMsS0FBNkMsRUFDN0MsaUJBQXdFO1FBRXhFLElBQUksQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMxQyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXRGLDhEQUE4RDtRQUM5RCxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUN4QixZQUFZLENBQUMscUJBQXFCLEVBQ2xDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUN6QyxDQUFDO1FBRUYsOENBQThDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTlFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRixNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNuRSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFakQsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFnQztRQUNsRCwwRUFBMEU7UUFDMUUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakUsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRVMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQXdCO1FBQ3pELE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLENBQ3pHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZjtZQUNFLFlBQVksQ0FBQyxjQUFjO1lBQzNCLFlBQVksQ0FBQyxjQUFjO1lBQzNCLFlBQVksQ0FBQyxhQUFhO1lBQzFCLFlBQVksQ0FBQyxnQkFBZ0I7WUFDN0IsWUFBWSxDQUFDLHFCQUFxQjtTQUNuQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDMUMsQ0FDRixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQixNQUFNLFNBQVMsR0FBRywyQkFBMkIsQ0FDM0MsT0FBTyxFQUNQLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixrQkFBa0IsQ0FDbkIsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFUyxLQUFLLENBQUMsb0JBQW9CLENBQUMsWUFBbUM7UUFDdEUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FDeEIsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFDdkQsWUFBWSxDQUFDLFlBQVksRUFDekIsY0FBYyxDQUNmO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUN4QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUN2RCxZQUFZLENBQUMsYUFBYSxFQUMxQixlQUFlLENBQ2hCO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUN4QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUN0RCxZQUFZLENBQUMsWUFBWSxFQUN6QixjQUFjLENBQ2Y7WUFDRCxJQUFJLENBQUMscUJBQXFCLENBQ3hCLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFDekQsWUFBWSxDQUFDLGNBQWMsRUFDM0IsZ0JBQWdCLENBQ2pCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBcUI7UUFDakQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FDeEIsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxFQUM5RCxLQUFLLENBQUMsaUJBQWlCLEVBQ3ZCLG1CQUFtQixDQUNwQjtZQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw2RkFBNkY7SUFDbkYsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQWtDO1FBQ25FLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO1NBQzVHLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwyQ0FBMkM7SUFDakMscUJBQXFCLENBQzdCLFNBQWlDLEVBQ2pDLGFBQXFDLEVBQ3JDLElBQWUsRUFDZixLQUFjO1FBRWQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtZQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksOEJBQThCLFNBQVMsQ0FBQyxJQUFJLGVBQWUsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7U0FDbkg7UUFDRCxJQUFJLGFBQWEsQ0FBQyxzQkFBc0IsS0FBSyxTQUFTLENBQUMsc0JBQXNCLEVBQUU7WUFDN0UsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLEtBQUssSUFBSSxJQUFJLG1EQUNkLFNBQVMsQ0FBQyxzQkFDWixlQUFlLGFBQWEsQ0FBQyxzQkFBc0IsR0FBRyxDQUN2RCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQscUZBQXFGO0lBQzNFLEtBQUssQ0FBQyxrQkFBa0IsQ0FDaEMsZ0JBQStDLEVBQy9DLGVBQXNCLEVBQ3RCLGlCQUFnRCxFQUNoRCxnQkFBdUIsRUFDdkIsaUJBQXdFO1FBRXhFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRSxNQUFNLGtCQUFrQixHQUEyQztZQUNqRSxJQUFJLENBQUMscUNBQXFDLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNqRixJQUFJLENBQUMscUNBQXFDLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO1NBQ3BGLENBQUM7UUFFRixNQUFNLHNCQUFzQixHQUFHLEtBQUssRUFBRSxNQUFvQixFQUFFLEVBQUU7WUFDNUQsK0VBQStFO1lBQy9FLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELG9DQUFvQztZQUNwQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4RCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixNQUFNLHdDQUF3QyxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUMvRSxZQUFZLENBQUMscUJBQXFCLEVBQ2xDLDJCQUEyQixDQUM1QixDQUFDO1FBRUYsTUFBTSxtQ0FBbUMsR0FBRyxTQUFTLENBQ25ELHdDQUF3QyxFQUN4QyxDQUFDLENBQUMsRUFBRSxDQUNGLENBQUMsR0FBRyx3Q0FBd0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUM3RyxDQUFDLENBQ0YsQ0FBQztRQUVGLHFCQUFxQjtRQUNyQixNQUFNLDhCQUE4QixHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV0RyxrQkFBa0I7UUFDbEIsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlFLE1BQU0sMEJBQTBCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxTQUFTLENBQ3JDLGNBQWMsRUFDZCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDdEYsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUMzQixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLG1DQUFtQztZQUNuQyw4QkFBOEI7WUFDOUIsb0JBQW9CO1lBQ3BCLHFCQUFxQjtTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMscUNBQXFDLENBQzdDLFlBQTJDLEVBQzNDLFdBQWtCLEVBQ2xCLEVBQW1CO1FBRW5CLE9BQU8sSUFBSSxrQkFBa0IsQ0FDM0IsWUFBWSxFQUNaLFdBQVcsRUFDWCxFQUFFO1FBRUYsa0VBQWtFO1FBQ2xFLFVBQVUsRUFDVixJQUFJLGlCQUFpQixDQUNuQixxQkFBcUIsRUFDckIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUNsQixTQUFTLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQ2xELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxFQUFlO1FBQ3hDLE9BQU8sSUFBSSxrQkFBa0IsQ0FDM0IsRUFBRSxDQUFDLElBQUksRUFDUCxFQUFFLENBQUMsS0FBSztRQUVSLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQjtRQUU3QixrRUFBa0U7UUFDbEUsVUFBVSxFQUNWLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUNwRSxDQUFDO0lBQ0osQ0FBQztJQUVELDBGQUEwRjtJQUNoRixLQUFLLENBQUMsdUJBQXVCLENBQ3JDLEtBQVMsRUFDVCxNQUFvQixFQUNwQixNQUFTO1FBRVQsa0RBQWtEO1FBQ2xELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLEtBQUssc0JBQXNCLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdkY7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVTLHNDQUFzQyxDQUFDLEVBQWU7UUFDOUQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ2xELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxHQUN4RyxXQUFXLENBQUM7UUFDZCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FDaEMsV0FBVyxDQUFDLG1CQUFtQixFQUMvQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsa0JBQWtCLENBQ25CLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRVMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLGVBQWdDO1FBQ3BFLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQzdCLGdCQUFnQixFQUFFLFNBQVM7WUFDM0IsaUJBQWlCLEVBQUUsU0FBUztZQUM1Qix1QkFBdUIsRUFBRSxTQUFTO1lBQ2xDLHNCQUFzQixFQUFFLFNBQVM7WUFDakMsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQzdELGVBQWU7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxTQUFhO1FBQy9DLDhDQUE4QztRQUM5QyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsWUFBWSxFQUFFLHFCQUFxQixDQUFDLEtBQUssRUFBRTtnQkFDM0MsT0FBTyxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxxQkFBcUIsQ0FBQzthQUNoRSxDQUFDO1NBQ0g7UUFFRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDO1FBQ3pDLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7U0FDaEU7UUFDRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFFLENBQUM7UUFFdkYsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFOUYsT0FBTztZQUNMLEtBQUssRUFBRSxjQUFjO1lBQ3JCLFlBQVksRUFBRSxpQkFBaUI7WUFDL0IsT0FBTyxFQUFFLElBQUksaUJBQWlCLENBQzVCLHFCQUFxQixFQUNyQixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUM1QixZQUFZLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLEVBQUUscUJBQXFCLENBQUMsQ0FDekU7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVTLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxNQUFvQixFQUFFLGFBQXFCO1FBQy9FLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkYsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUVyRiwyRkFBMkY7UUFDM0YsT0FBTyxlQUFlLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0UsQ0FBQztJQUVTLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxFQUFlO1FBQzdELE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsR0FDNUYsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FDdkIsWUFBWSxDQUFDLGdCQUFnQjtRQUM3QixtREFBbUQ7UUFDbkQsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3ZELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzRixDQUFDLENBQUMsRUFDRiwwQkFBMEIsQ0FDM0IsQ0FBQztRQUVKLElBQUksb0JBQW9CLEtBQUssU0FBUyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztTQUN2RTtRQUVELE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLHNDQUFzQyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ25GLE9BQU8sa0JBQWtCLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSw2QkFBNkIsR0FBRyxTQUFTLENBQUMsc0NBQXNDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDMUYsT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sMEJBQTBCLEdBQUcscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEUsTUFBTSwrQkFBK0IsR0FBRyxTQUFTLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDN0YsT0FBTywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sc0NBQXNDLEdBR3hDLFNBQVMsQ0FBQyxzQ0FBc0MsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUN4RCxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxPQUFPLGlCQUFpQixDQUFDLGVBQWUsQ0FDdEMsT0FBTyxDQUFDLEtBQUssRUFDYixZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsRUFBRSx1QkFBdUIsQ0FBQyxDQUMzRSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLDRCQUE0QixHQUc5QixTQUFTLENBQUMsc0NBQXNDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDeEQsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUEwQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLDRCQUE0QjtZQUM1QixzQ0FBc0M7WUFDdEMsK0JBQStCO1lBQy9CLHNCQUFzQjtZQUN0Qiw2QkFBNkI7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFUyxLQUFLLENBQUMsc0JBQXNCLENBQUMsRUFBZTtRQUNwRCxNQUFNLDJCQUEyQixHQUc3QixTQUFTLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEcsTUFBTSwyQkFBMkIsR0FDL0IsU0FBUyxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDcEYsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUU7WUFDM0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDL0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7YUFDbEU7WUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkcsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlGLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksaUJBQWlCLENBQ3BELHVCQUF1QixFQUN2QixNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUMzQixJQUFJLENBQUMsT0FBTyxFQUFrQyxDQUMvQyxDQUFDO1lBQ0YsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBdUMsQ0FBQztTQUMxRTtRQUNELE9BQU87WUFDTCwyQkFBMkI7WUFDM0IsMkJBQTJCO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsaUdBQWlHO0lBQ3ZGLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFlLEVBQUUsZUFBZ0M7UUFDcEYsd0NBQXdDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLElBQUkscUJBQXFCLENBQ3JDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQ3ZELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQ3ZELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQ3RELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FDMUQsQ0FBQztRQUVGLGdEQUFnRDtRQUNoRCxNQUFNLCtCQUErQixHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUN0RSxZQUFZLENBQUMsY0FBYyxFQUMzQix3QkFBd0IsQ0FDekIsQ0FBQztRQUVGLE1BQU0sMEJBQTBCLEdBQUcsU0FBUyxDQUFDLHFDQUFxQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ3RGLENBQUMsR0FBRywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUMxRixDQUFDO1FBRUYsTUFBTSwrQkFBK0IsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FDdEUsWUFBWSxDQUFDLGFBQWEsRUFDMUIsdUJBQXVCLENBQ3hCLENBQUM7UUFFRixNQUFNLDBCQUEwQixHQUFHLFNBQVMsQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNyRixDQUFDLEdBQUcsK0JBQStCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FDMUYsQ0FBQztRQUVGLGlHQUFpRztRQUNqRyw4RkFBOEY7UUFDOUYsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakYsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUN4QixZQUFZLENBQUMsYUFBYSxFQUMxQixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQ3BDLENBQUM7UUFFRixNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFeEUsc0dBQXNHO1FBQ3RHLHlGQUF5RjtRQUN6RixNQUFNLHFCQUFxQixHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sNkJBQTZCLEdBQUcsTUFBTSxJQUFJLENBQUMsK0JBQStCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckYsNEZBQTRGO1FBQzVGLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUVoRCxNQUFNLEVBQ0osb0JBQW9CLEVBQUUsc0JBQXNCLEVBQzVDLHFCQUFxQixFQUFFLCtCQUErQixFQUN0RCxlQUFlLEVBQUUsbUJBQW1CLEVBQ3BDLHNCQUFzQixHQUN2QixHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQzNCLFlBQVksQ0FBQyxjQUFjLEVBQzNCLGFBQWEsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUM1Rix3QkFBd0IsQ0FDekIsQ0FBQztRQUNGLElBQUksc0JBQXNCLEtBQUssU0FBUyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNyRTtRQUVELDZDQUE2QztRQUM3QyxNQUFNLHFEQUFxRCxHQUN6RCxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDN0IsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUMvRyxDQUFDO1FBRUosTUFBTSxnQ0FBZ0MsR0FBRywrQkFBK0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4RixNQUFNLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUN2RixDQUFDLEdBQUcsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FDNUYsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQUcsNkJBQTZCLENBQUMsK0JBQStCLENBQUM7UUFFNUYsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN6Qyw2QkFBNkIsRUFBRSxTQUFTLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDdEUsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLE1BQU07Z0JBQy9CLENBQUMsQ0FBRSxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFzQztnQkFDbkUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUNsQztZQUNELHVDQUF1QyxFQUFFLFNBQVMsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNoRixDQUFDLEdBQUcscURBQXFELENBQUMsTUFBTTtnQkFDOUQsQ0FBQyxDQUFDLHFEQUFxRCxDQUFDLENBQUMsQ0FBQztnQkFDMUQsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUMzRDtZQUNELGdCQUFnQixFQUFFLFNBQVMsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRyxzQkFBc0IsRUFBRSxTQUFTLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLDBCQUEwQjtZQUMxQixxQkFBcUI7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDckMsS0FBSztZQUNMLGNBQWM7WUFFZCxzQkFBc0IsRUFBRSw2QkFBNkIsQ0FBQyxzQkFBc0I7WUFDNUUsNkJBQTZCLEVBQUUsNkJBQTZCLENBQUMsNkJBQTZCO1lBQzFGLDRCQUE0QixFQUFFLDZCQUE2QixDQUFDLDRCQUE0QjtZQUN4RixzQ0FBc0MsRUFBRSw2QkFBNkIsQ0FBQyxzQ0FBc0M7WUFDNUcsd0JBQXdCLEVBQUUscUJBQXFCLENBQUMsMkJBQTJCO1lBQzNFLGtDQUFrQyxFQUFFLHFCQUFxQixDQUFDLDJCQUEyQjtZQUVyRiw0QkFBNEIsRUFBRSxNQUFNLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLENBQUM7WUFFbkYsU0FBUztTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUywwQkFBMEIsQ0FBbUIsTUFBUztRQUM5RCxPQUFPLElBQUksaUJBQWlCLENBQzFCLE1BQU0sRUFDTixFQUFFLEVBQ0YsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2pDLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { AppendOnlyTreeSnapshot, BaseOrMergeRollupPublicInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
2
1
|
/**
|
|
3
2
|
* Type representing the names of the trees for the base rollup.
|
|
4
3
|
*/
|
|
@@ -7,15 +6,5 @@ type BaseTreeNames = 'NoteHashTree' | 'ContractTree' | 'NullifierTree' | 'Public
|
|
|
7
6
|
* Type representing the names of the trees.
|
|
8
7
|
*/
|
|
9
8
|
export type TreeNames = BaseTreeNames | 'L1ToL2MessageTree' | 'Archive';
|
|
10
|
-
/**
|
|
11
|
-
* Type to assert that only the correct trees are checked when validating rollup tree outputs.
|
|
12
|
-
*/
|
|
13
|
-
export type AllowedTreeNames<T extends BaseOrMergeRollupPublicInputs | RootRollupPublicInputs> = T extends RootRollupPublicInputs ? TreeNames : BaseTreeNames;
|
|
14
|
-
/**
|
|
15
|
-
* Type to assert the correct object field is indexed when validating rollup tree outputs.
|
|
16
|
-
*/
|
|
17
|
-
export type OutputWithTreeSnapshot<T extends BaseOrMergeRollupPublicInputs | RootRollupPublicInputs> = {
|
|
18
|
-
[K in `end${AllowedTreeNames<T>}Snapshot`]: AppendOnlyTreeSnapshot;
|
|
19
|
-
};
|
|
20
9
|
export {};
|
|
21
10
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/block_builder/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/block_builder/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAC1F;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,mBAAmB,GAAG,SAAS,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { ContractDataSource, L1ToL2MessageSource, L2BlockSource } from '@aztec/circuit-types';
|
|
1
2
|
import { P2P } from '@aztec/p2p';
|
|
2
|
-
import { ContractDataSource, L1ToL2MessageSource, L2BlockSource } from '@aztec/types';
|
|
3
3
|
import { WorldStateSynchronizer } from '@aztec/world-state';
|
|
4
4
|
import { SequencerClientConfig } from '../config.js';
|
|
5
5
|
import { Sequencer, SequencerConfig } from '../index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAuC,MAAM,aAAa,CAAC;AAK9F;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC;;;;;;;;;OASG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,GAAG,EACd,sBAAsB,EAAE,sBAAsB,EAC9C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB;IA+B1C;;;OAGG;IACI,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAIpD;;OAEG;IACU,IAAI;IAIjB;;OAEG;IACI,OAAO;CAGf"}
|
package/dest/prover/empty.js
CHANGED
|
@@ -13,7 +13,7 @@ export class EmptyRollupProver {
|
|
|
13
13
|
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
14
14
|
*/
|
|
15
15
|
async getBaseRollupProof(_input, publicInputs) {
|
|
16
|
-
publicInputs.
|
|
16
|
+
publicInputs.aggregationObject = AggregationObject.makeFake();
|
|
17
17
|
return new Proof(Buffer.alloc(EMPTY_PROOF_SIZE, 0));
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
@@ -22,7 +22,7 @@ export class EmptyRollupProver {
|
|
|
22
22
|
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
23
23
|
*/
|
|
24
24
|
async getMergeRollupProof(_input, publicInputs) {
|
|
25
|
-
publicInputs.
|
|
25
|
+
publicInputs.aggregationObject = AggregationObject.makeFake();
|
|
26
26
|
return new Proof(Buffer.alloc(EMPTY_PROOF_SIZE, 0));
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
@@ -31,7 +31,7 @@ export class EmptyRollupProver {
|
|
|
31
31
|
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
32
32
|
*/
|
|
33
33
|
async getRootRollupProof(_input, publicInputs) {
|
|
34
|
-
publicInputs.
|
|
34
|
+
publicInputs.aggregationObject = AggregationObject.makeFake();
|
|
35
35
|
return new Proof(Buffer.alloc(EMPTY_PROOF_SIZE, 0));
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -54,4 +54,4 @@ export class EmptyPublicProver {
|
|
|
54
54
|
return new Proof(Buffer.alloc(EMPTY_PROOF_SIZE, 0));
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmVyL2VtcHR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtDQUFrQztBQUNsQyxPQUFPLEVBQ0wsaUJBQWlCLEVBSWpCLEtBQUssR0FLTixNQUFNLG9CQUFvQixDQUFDO0FBSTVCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBRTVCLDJGQUEyRjtBQUMzRixzQ0FBc0M7QUFFdEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBd0IsRUFBRSxZQUEyQztRQUM1RixZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQUMsTUFBeUIsRUFBRSxZQUEyQztRQUM5RixZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBd0IsRUFBRSxZQUFvQztRQUNyRixZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCOzs7T0FHRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxhQUF3QztRQUNsRSxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQixDQUFDLGFBQXVDO1FBQ3ZFLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRiJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { ExtendedContractData, L2Block } from '@aztec/types';
|
|
2
|
+
import { ExtendedContractData, L2Block } from '@aztec/circuit-types';
|
|
3
3
|
import { L2BlockReceiver } from '../receiver.js';
|
|
4
4
|
import { PublisherConfig } from './config.js';
|
|
5
5
|
/**
|
|
@@ -58,6 +58,11 @@ export interface L1PublisherTxSender {
|
|
|
58
58
|
* @param txHash - Hash of the tx to look for.
|
|
59
59
|
*/
|
|
60
60
|
getTransactionStats(txHash: string): Promise<TransactionStats | undefined>;
|
|
61
|
+
/**
|
|
62
|
+
* Returns the current state hash.
|
|
63
|
+
* @returns The current state hash of the rollup contract.
|
|
64
|
+
*/
|
|
65
|
+
getCurrentStateHash(): Promise<Buffer>;
|
|
61
66
|
}
|
|
62
67
|
/**
|
|
63
68
|
* Encoded block data and proof ready to be pushed to the L1 contract.
|
|
@@ -110,8 +115,12 @@ export declare class L1Publisher implements L2BlockReceiver {
|
|
|
110
115
|
interrupt(): void;
|
|
111
116
|
/** Restarts the publisher after calling `interrupt`. */
|
|
112
117
|
restart(): void;
|
|
113
|
-
|
|
114
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Verifies that the given value of start state hash equals that on the rollup contract
|
|
120
|
+
* @param startStateHash - The start state hash of the block we wish to publish.
|
|
121
|
+
* @returns Boolean indicating if the hashes are equal.
|
|
122
|
+
*/
|
|
123
|
+
private checkStartStateHash;
|
|
115
124
|
private sendProcessTx;
|
|
116
125
|
private sendEmitNewContractDataTx;
|
|
117
126
|
private getTransactionReceipt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"l1-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/l1-publisher.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"l1-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/l1-publisher.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAOrE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,wDAAwD;IACxD,MAAM,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,aAAa,CAAC,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEvE;;;;;;;;;OASG;IACH,4BAA4B,CAC1B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,uBAAuB,EAAE,oBAAoB,EAAE,GAC9C,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAEnC;;;;OAIG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;IAEtF;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAE3E;;;OAGG;IACH,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAYF;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,eAAe;IAMrC,OAAO,CAAC,QAAQ;IAL5B,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAkD;gBAEzC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,eAAe;IAI3E;;;;OAIG;IACU,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAkDnE;;;;;;OAMG;IACU,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE;IAoCjH;;;;;OAKG;IACI,SAAS;IAKhB,wDAAwD;IACjD,OAAO;IAId;;;;OAIG;YACW,mBAAmB;YAUnB,aAAa;YAWb,yBAAyB;YAezB,qBAAqB;cAWnB,kBAAkB;CAGnC"}
|