@aztec/prover-client 0.0.0-test.1 → 0.0.1-commit.5476d83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dest/block-factory/index.d.ts +2 -0
  2. package/dest/block-factory/index.d.ts.map +1 -0
  3. package/dest/block-factory/light.d.ts +38 -0
  4. package/dest/block-factory/light.d.ts.map +1 -0
  5. package/dest/block-factory/light.js +108 -0
  6. package/dest/config.d.ts +7 -7
  7. package/dest/config.d.ts.map +1 -1
  8. package/dest/config.js +11 -1
  9. package/dest/index.d.ts +1 -1
  10. package/dest/light/lightweight_checkpoint_builder.d.ts +28 -0
  11. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  12. package/dest/light/lightweight_checkpoint_builder.js +107 -0
  13. package/dest/mocks/fixtures.d.ts +8 -8
  14. package/dest/mocks/fixtures.d.ts.map +1 -1
  15. package/dest/mocks/fixtures.js +32 -14
  16. package/dest/mocks/test_context.d.ts +40 -31
  17. package/dest/mocks/test_context.d.ts.map +1 -1
  18. package/dest/mocks/test_context.js +134 -86
  19. package/dest/orchestrator/block-building-helpers.d.ts +36 -29
  20. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  21. package/dest/orchestrator/block-building-helpers.js +168 -188
  22. package/dest/orchestrator/block-proving-state.d.ts +68 -47
  23. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  24. package/dest/orchestrator/block-proving-state.js +281 -176
  25. package/dest/orchestrator/checkpoint-proving-state.d.ts +62 -0
  26. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  27. package/dest/orchestrator/checkpoint-proving-state.js +208 -0
  28. package/dest/orchestrator/epoch-proving-state.d.ts +40 -26
  29. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  30. package/dest/orchestrator/epoch-proving-state.js +143 -73
  31. package/dest/orchestrator/index.d.ts +1 -1
  32. package/dest/orchestrator/orchestrator.d.ts +35 -32
  33. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  34. package/dest/orchestrator/orchestrator.js +389 -239
  35. package/dest/orchestrator/orchestrator_metrics.d.ts +3 -1
  36. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  37. package/dest/orchestrator/orchestrator_metrics.js +9 -0
  38. package/dest/orchestrator/tx-proving-state.d.ts +13 -11
  39. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  40. package/dest/orchestrator/tx-proving-state.js +23 -40
  41. package/dest/prover-client/factory.d.ts +1 -1
  42. package/dest/prover-client/index.d.ts +1 -1
  43. package/dest/prover-client/prover-client.d.ts +4 -4
  44. package/dest/prover-client/prover-client.d.ts.map +1 -1
  45. package/dest/prover-client/prover-client.js +5 -4
  46. package/dest/prover-client/server-epoch-prover.d.ts +15 -11
  47. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  48. package/dest/prover-client/server-epoch-prover.js +11 -11
  49. package/dest/proving_broker/broker_prover_facade.d.ts +23 -16
  50. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  51. package/dest/proving_broker/broker_prover_facade.js +67 -41
  52. package/dest/proving_broker/config.d.ts +18 -9
  53. package/dest/proving_broker/config.d.ts.map +1 -1
  54. package/dest/proving_broker/config.js +22 -5
  55. package/dest/proving_broker/factory.d.ts +2 -2
  56. package/dest/proving_broker/factory.d.ts.map +1 -1
  57. package/dest/proving_broker/factory.js +5 -1
  58. package/dest/proving_broker/fixtures.d.ts +3 -2
  59. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  60. package/dest/proving_broker/fixtures.js +2 -1
  61. package/dest/proving_broker/index.d.ts +1 -1
  62. package/dest/proving_broker/proof_store/factory.d.ts +2 -2
  63. package/dest/proving_broker/proof_store/factory.js +1 -1
  64. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
  65. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
  66. package/dest/proving_broker/proof_store/gcs_proof_store.js +1 -0
  67. package/dest/proving_broker/proof_store/index.d.ts +2 -1
  68. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  69. package/dest/proving_broker/proof_store/index.js +1 -0
  70. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  71. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  72. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  73. package/dest/proving_broker/proving_agent.d.ts +4 -4
  74. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  75. package/dest/proving_broker/proving_agent.js +83 -47
  76. package/dest/proving_broker/proving_agent_instrumentation.d.ts +1 -1
  77. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -1
  78. package/dest/proving_broker/proving_broker.d.ts +13 -4
  79. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  80. package/dest/proving_broker/proving_broker.js +36 -23
  81. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  82. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  83. package/dest/proving_broker/proving_broker_database/memory.js +1 -1
  84. package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -2
  85. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  86. package/dest/proving_broker/proving_broker_database/persisted.js +12 -10
  87. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  88. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  89. package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
  90. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  91. package/dest/proving_broker/proving_job_controller.d.ts +9 -9
  92. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  93. package/dest/proving_broker/proving_job_controller.js +89 -61
  94. package/dest/proving_broker/rpc.d.ts +4 -6
  95. package/dest/proving_broker/rpc.d.ts.map +1 -1
  96. package/dest/proving_broker/rpc.js +1 -4
  97. package/dest/test/mock_proof_store.d.ts +9 -0
  98. package/dest/test/mock_proof_store.d.ts.map +1 -0
  99. package/dest/test/mock_proof_store.js +10 -0
  100. package/dest/test/mock_prover.d.ts +23 -17
  101. package/dest/test/mock_prover.d.ts.map +1 -1
  102. package/dest/test/mock_prover.js +38 -20
  103. package/package.json +32 -31
  104. package/src/block-factory/index.ts +1 -0
  105. package/src/block-factory/light.ts +137 -0
  106. package/src/config.ts +24 -8
  107. package/src/light/lightweight_checkpoint_builder.ts +142 -0
  108. package/src/mocks/fixtures.ts +42 -37
  109. package/src/mocks/test_context.ts +207 -115
  110. package/src/orchestrator/block-building-helpers.ts +256 -333
  111. package/src/orchestrator/block-proving-state.ts +323 -230
  112. package/src/orchestrator/checkpoint-proving-state.ts +301 -0
  113. package/src/orchestrator/epoch-proving-state.ts +187 -112
  114. package/src/orchestrator/orchestrator.ts +592 -299
  115. package/src/orchestrator/orchestrator_metrics.ts +20 -1
  116. package/src/orchestrator/tx-proving-state.ts +50 -64
  117. package/src/prover-client/prover-client.ts +16 -14
  118. package/src/prover-client/server-epoch-prover.ts +39 -21
  119. package/src/proving_broker/broker_prover_facade.ts +214 -126
  120. package/src/proving_broker/config.ts +24 -6
  121. package/src/proving_broker/factory.ts +2 -1
  122. package/src/proving_broker/fixtures.ts +7 -2
  123. package/src/proving_broker/proof_store/factory.ts +1 -1
  124. package/src/proving_broker/proof_store/gcs_proof_store.ts +5 -1
  125. package/src/proving_broker/proof_store/index.ts +1 -0
  126. package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
  127. package/src/proving_broker/proving_agent.ts +89 -47
  128. package/src/proving_broker/proving_broker.ts +53 -33
  129. package/src/proving_broker/proving_broker_database/memory.ts +3 -2
  130. package/src/proving_broker/proving_broker_database/persisted.ts +14 -12
  131. package/src/proving_broker/proving_broker_database.ts +2 -1
  132. package/src/proving_broker/proving_job_controller.ts +94 -82
  133. package/src/proving_broker/rpc.ts +1 -6
  134. package/src/test/mock_proof_store.ts +14 -0
  135. package/src/test/mock_prover.ts +164 -60
  136. package/dest/bin/get-proof-inputs.d.ts +0 -2
  137. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  138. package/dest/bin/get-proof-inputs.js +0 -51
  139. package/dest/block_builder/index.d.ts +0 -6
  140. package/dest/block_builder/index.d.ts.map +0 -1
  141. package/dest/block_builder/light.d.ts +0 -33
  142. package/dest/block_builder/light.d.ts.map +0 -1
  143. package/dest/block_builder/light.js +0 -82
  144. package/src/bin/get-proof-inputs.ts +0 -59
  145. package/src/block_builder/index.ts +0 -6
  146. package/src/block_builder/light.ts +0 -101
  147. /package/dest/{block_builder → block-factory}/index.js +0 -0
@@ -1,252 +1,342 @@
1
- import { SpongeBlob } from '@aztec/blob-lib';
2
- import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB, NUM_BASE_PARITY_PER_ROOT_PARITY, VK_TREE_HEIGHT } from '@aztec/constants';
3
- import { padArrayEnd } from '@aztec/foundation/collection';
1
+ import { encodeBlockEndBlobData } from '@aztec/blob-lib';
2
+ import { NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
4
3
  import { Fr } from '@aztec/foundation/fields';
5
- import { MembershipWitness, UnbalancedTreeStore } from '@aztec/foundation/trees';
6
- import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
7
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
8
- import { RootParityInput, RootParityInputs } from '@aztec/stdlib/parity';
9
- import { BlockRootRollupBlobData, BlockRootRollupData, BlockRootRollupInputs, ConstantRollupData, EmptyBlockRootRollupInputs, MergeRollupInputs, PreviousRollupData, SingleTxBlockRootRollupInputs } from '@aztec/stdlib/rollup';
10
- import { StateReference } from '@aztec/stdlib/tx';
11
- import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js';
4
+ import { assertLength } from '@aztec/foundation/serialize';
5
+ import { UnbalancedTreeStore } from '@aztec/foundation/trees';
6
+ import { ParityRootPrivateInputs } from '@aztec/stdlib/parity';
7
+ import { BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, TxMergeRollupPrivateInputs } from '@aztec/stdlib/rollup';
8
+ import { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
9
+ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-helpers.js';
12
10
  /**
13
11
  * The current state of the proving schedule for a given block. Managed by ProvingState.
14
12
  * Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
15
13
  */ export class BlockProvingState {
16
14
  index;
17
- globalVariables;
18
- newL1ToL2Messages;
19
- l1ToL2MessageSubtreeSiblingPath;
20
- l1ToL2MessageTreeSnapshotAfterInsertion;
21
- lastArchiveSnapshot;
22
- newArchiveSiblingPath;
23
- previousBlockHeader;
24
- parentEpoch;
25
- baseOrMergeProvingOutputs;
26
- baseParityProvingOutputs;
27
- rootParityProvingOutput;
28
- blockRootProvingOutput;
29
- blockRootRollupStarted;
30
- block;
31
- spongeBlobState;
15
+ blockNumber;
32
16
  totalNumTxs;
17
+ constants;
18
+ timestamp;
19
+ lastArchiveTreeSnapshot;
20
+ lastArchiveSiblingPath;
21
+ lastL1ToL2MessageTreeSnapshot;
22
+ lastL1ToL2MessageSubtreeRootSiblingPath;
23
+ newL1ToL2MessageTreeSnapshot;
24
+ headerOfLastBlockInPreviousCheckpoint;
25
+ startSpongeBlob;
26
+ parentCheckpoint;
27
+ baseOrMergeProofs;
28
+ baseParityProofs;
29
+ rootParityProof;
30
+ blockRootProof;
31
+ builtBlockHeader;
32
+ endState;
33
+ endSpongeBlob;
33
34
  txs;
35
+ isFirstBlock;
34
36
  error;
35
- constructor(index, globalVariables, newL1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, newArchiveSiblingPath, previousBlockHeader, parentEpoch){
37
+ constructor(index, blockNumber, totalNumTxs, constants, timestamp, lastArchiveTreeSnapshot, lastArchiveSiblingPath, lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, newL1ToL2MessageTreeSnapshot, headerOfLastBlockInPreviousCheckpoint, startSpongeBlob, parentCheckpoint){
36
38
  this.index = index;
37
- this.globalVariables = globalVariables;
38
- this.newL1ToL2Messages = newL1ToL2Messages;
39
- this.l1ToL2MessageSubtreeSiblingPath = l1ToL2MessageSubtreeSiblingPath;
40
- this.l1ToL2MessageTreeSnapshotAfterInsertion = l1ToL2MessageTreeSnapshotAfterInsertion;
41
- this.lastArchiveSnapshot = lastArchiveSnapshot;
42
- this.newArchiveSiblingPath = newArchiveSiblingPath;
43
- this.previousBlockHeader = previousBlockHeader;
44
- this.parentEpoch = parentEpoch;
45
- this.baseOrMergeProvingOutputs = new UnbalancedTreeStore(0);
46
- this.blockRootRollupStarted = false;
47
- this.txs = [];
48
- this.baseParityProvingOutputs = Array.from({
39
+ this.blockNumber = blockNumber;
40
+ this.totalNumTxs = totalNumTxs;
41
+ this.constants = constants;
42
+ this.timestamp = timestamp;
43
+ this.lastArchiveTreeSnapshot = lastArchiveTreeSnapshot;
44
+ this.lastArchiveSiblingPath = lastArchiveSiblingPath;
45
+ this.lastL1ToL2MessageTreeSnapshot = lastL1ToL2MessageTreeSnapshot;
46
+ this.lastL1ToL2MessageSubtreeRootSiblingPath = lastL1ToL2MessageSubtreeRootSiblingPath;
47
+ this.newL1ToL2MessageTreeSnapshot = newL1ToL2MessageTreeSnapshot;
48
+ this.headerOfLastBlockInPreviousCheckpoint = headerOfLastBlockInPreviousCheckpoint;
49
+ this.startSpongeBlob = startSpongeBlob;
50
+ this.parentCheckpoint = parentCheckpoint;
51
+ this.baseOrMergeProofs = new UnbalancedTreeStore(0);
52
+ this.baseParityProofs = Array.from({
49
53
  length: NUM_BASE_PARITY_PER_ROOT_PARITY
50
54
  }).map((_)=>undefined);
51
- this.totalNumTxs = 0;
52
- }
53
- get blockNumber() {
54
- return this.globalVariables.blockNumber.toNumber();
55
- }
56
- startNewBlock(numTxs, numBlobFields) {
57
- if (this.spongeBlobState) {
58
- throw new Error(`Block ${this.blockNumber} already initalised.`);
55
+ this.txs = [];
56
+ this.isFirstBlock = index === 0;
57
+ if (!totalNumTxs && !this.isFirstBlock) {
58
+ throw new Error(`Cannot create a block with 0 txs, unless it's the first block.`);
59
59
  }
60
- this.baseOrMergeProvingOutputs = new UnbalancedTreeStore(numTxs);
61
- // Initialise the sponge which will eventually absorb all tx effects to be added to the blob.
62
- // Like l1 to l2 messages, we need to know beforehand how many effects will be absorbed.
63
- this.spongeBlobState = SpongeBlob.init(numBlobFields);
64
- this.totalNumTxs = numTxs;
60
+ this.baseOrMergeProofs = new UnbalancedTreeStore(totalNumTxs);
61
+ }
62
+ get epochNumber() {
63
+ return this.parentCheckpoint.epochNumber;
65
64
  }
66
65
  // Adds a transaction to the proving state, returns it's index
67
66
  addNewTx(tx) {
68
- if (!this.spongeBlobState) {
69
- throw new Error(`Invalid block proving state, call startNewBlock before adding transactions.`);
67
+ if (!this.isAcceptingTxs()) {
68
+ throw new Error(`Cannot add more txs to block ${this.blockNumber}.`);
70
69
  }
71
70
  const txIndex = this.txs.length;
72
71
  this.txs[txIndex] = tx;
73
72
  return txIndex;
74
73
  }
74
+ isAcceptingTxs() {
75
+ return this.txs.length < this.totalNumTxs;
76
+ }
77
+ getProcessedTxs() {
78
+ return this.txs.map((t)=>t.processedTx);
79
+ }
80
+ tryStartProvingBase(txIndex) {
81
+ if (this.baseOrMergeProofs.getLeaf(txIndex)?.isProving) {
82
+ return false;
83
+ } else {
84
+ this.baseOrMergeProofs.setLeaf(txIndex, {
85
+ isProving: true
86
+ });
87
+ return true;
88
+ }
89
+ }
75
90
  setBaseRollupProof(txIndex, provingOutput) {
76
- return this.baseOrMergeProvingOutputs.setLeaf(txIndex, provingOutput);
91
+ return this.baseOrMergeProofs.setLeaf(txIndex, {
92
+ provingOutput
93
+ });
94
+ }
95
+ tryStartProvingMerge(location) {
96
+ if (this.baseOrMergeProofs.getNode(location)?.isProving) {
97
+ return false;
98
+ } else {
99
+ this.baseOrMergeProofs.setNode(location, {
100
+ isProving: true
101
+ });
102
+ return true;
103
+ }
77
104
  }
78
105
  setMergeRollupProof(location, provingOutput) {
79
- this.baseOrMergeProvingOutputs.setNode(location, provingOutput);
106
+ this.baseOrMergeProofs.setNode(location, {
107
+ provingOutput
108
+ });
109
+ }
110
+ tryStartProvingBaseParity(index) {
111
+ if (this.baseParityProofs[index]?.isProving) {
112
+ return false;
113
+ } else {
114
+ this.baseParityProofs[index] = {
115
+ isProving: true
116
+ };
117
+ return true;
118
+ }
80
119
  }
81
120
  // Stores a set of root parity inputs at the given index
82
121
  setBaseParityProof(index, provingOutput) {
83
122
  if (index >= NUM_BASE_PARITY_PER_ROOT_PARITY) {
84
123
  throw new Error(`Unable to set a base parity proofs at index ${index}. Expected at most ${NUM_BASE_PARITY_PER_ROOT_PARITY} proofs.`);
85
124
  }
86
- this.baseParityProvingOutputs[index] = provingOutput;
125
+ this.baseParityProofs[index] = {
126
+ provingOutput
127
+ };
128
+ }
129
+ tryStartProvingRootParity() {
130
+ if (this.rootParityProof?.isProving) {
131
+ return false;
132
+ } else {
133
+ this.rootParityProof = {
134
+ isProving: true
135
+ };
136
+ return true;
137
+ }
87
138
  }
88
139
  setRootParityProof(provingOutput) {
89
- this.rootParityProvingOutput = provingOutput;
140
+ this.rootParityProof = {
141
+ provingOutput
142
+ };
143
+ }
144
+ tryStartProvingBlockRoot() {
145
+ if (this.blockRootProof?.isProving) {
146
+ return false;
147
+ } else {
148
+ this.blockRootProof = {
149
+ isProving: true
150
+ };
151
+ return true;
152
+ }
90
153
  }
91
154
  setBlockRootRollupProof(provingOutput) {
92
- this.blockRootProvingOutput = provingOutput;
155
+ this.blockRootProof = {
156
+ provingOutput
157
+ };
158
+ return this.parentCheckpoint.setBlockRootRollupProof(this.index, provingOutput);
159
+ }
160
+ getBlockRootRollupOutput() {
161
+ return this.blockRootProof?.provingOutput?.inputs;
162
+ }
163
+ async buildBlockHeader() {
164
+ if (this.isAcceptingTxs()) {
165
+ throw new Error('All txs must be added to the block before building the header.');
166
+ }
167
+ if (!this.endState) {
168
+ throw new Error('Call `setEndState` first.');
169
+ }
170
+ if (!this.endSpongeBlob) {
171
+ throw new Error('Call `setEndSpongeBlob` first.');
172
+ }
173
+ const endSpongeBlob = this.endSpongeBlob.clone();
174
+ const endSpongeBlobHash = await endSpongeBlob.squeeze();
175
+ this.builtBlockHeader = new BlockHeader(this.lastArchiveTreeSnapshot, this.endState, endSpongeBlobHash, this.#getGlobalVariables(), this.#getTotalFees(), new Fr(this.#getTotalManaUsed()));
176
+ return this.builtBlockHeader;
177
+ }
178
+ getBuiltBlockHeader() {
179
+ return this.builtBlockHeader;
180
+ }
181
+ getStartSpongeBlob() {
182
+ return this.startSpongeBlob;
183
+ }
184
+ setEndSpongeBlob(endSpongeBlob) {
185
+ this.endSpongeBlob = endSpongeBlob;
186
+ }
187
+ getEndSpongeBlob() {
188
+ return this.endSpongeBlob;
189
+ }
190
+ setEndState(endState) {
191
+ this.endState = endState;
192
+ }
193
+ hasEndState() {
194
+ return !!this.endState;
195
+ }
196
+ getBlockEndBlobFields() {
197
+ return encodeBlockEndBlobData(this.getBlockEndBlobData());
198
+ }
199
+ getBlockEndBlobData() {
200
+ if (!this.endState) {
201
+ throw new Error('Call `setEndState` first.');
202
+ }
203
+ const partial = this.endState.partial;
204
+ return {
205
+ blockEndMarker: {
206
+ numTxs: this.totalNumTxs,
207
+ timestamp: this.timestamp,
208
+ blockNumber: this.blockNumber
209
+ },
210
+ blockEndStateField: {
211
+ l1ToL2MessageNextAvailableLeafIndex: this.newL1ToL2MessageTreeSnapshot.nextAvailableLeafIndex,
212
+ noteHashNextAvailableLeafIndex: partial.noteHashTree.nextAvailableLeafIndex,
213
+ nullifierNextAvailableLeafIndex: partial.nullifierTree.nextAvailableLeafIndex,
214
+ publicDataNextAvailableLeafIndex: partial.publicDataTree.nextAvailableLeafIndex,
215
+ totalManaUsed: this.#getTotalManaUsed()
216
+ },
217
+ lastArchiveRoot: this.lastArchiveTreeSnapshot.root,
218
+ noteHashRoot: partial.noteHashTree.root,
219
+ nullifierRoot: partial.nullifierTree.root,
220
+ publicDataRoot: partial.publicDataTree.root,
221
+ l1ToL2MessageRoot: this.isFirstBlock ? this.newL1ToL2MessageTreeSnapshot.root : undefined
222
+ };
93
223
  }
94
- // Returns the complete set of transaction proving state objects
95
- get allTxs() {
96
- return this.txs;
224
+ getBlockBlobData() {
225
+ return {
226
+ ...this.getBlockEndBlobData(),
227
+ txs: this.getTxEffects().map((t)=>t.toTxBlobData())
228
+ };
97
229
  }
98
- /** Returns the block number as an epoch number. Used for prioritizing proof requests. */ get epochNumber() {
99
- return this.parentEpoch.epochNumber;
230
+ getTxEffects() {
231
+ return this.txs.map((t)=>t.processedTx.txEffect);
100
232
  }
101
233
  getParentLocation(location) {
102
- return this.baseOrMergeProvingOutputs.getParentLocation(location);
234
+ return this.baseOrMergeProofs.getParentLocation(location);
103
235
  }
104
236
  getMergeRollupInputs(mergeLocation) {
105
- const [left, right] = this.baseOrMergeProvingOutputs.getChildren(mergeLocation);
237
+ const [left, right] = this.baseOrMergeProofs.getChildren(mergeLocation).map((c)=>c?.provingOutput);
106
238
  if (!left || !right) {
107
- throw new Error('At lease one child is not ready.');
239
+ throw new Error('At least one child is not ready for the merge rollup.');
108
240
  }
109
- return new MergeRollupInputs([
110
- this.#getPreviousRollupData(left),
111
- this.#getPreviousRollupData(right)
241
+ return new TxMergeRollupPrivateInputs([
242
+ toProofData(left),
243
+ toProofData(right)
112
244
  ]);
113
245
  }
114
- async getBlockRootRollupTypeAndInputs(proverId) {
115
- if (!this.rootParityProvingOutput) {
116
- throw new Error('Root parity is not ready.');
117
- }
118
- const proofs = this.#getChildProofsForBlockRoot();
119
- const nonEmptyProofs = proofs.filter((p)=>!!p);
120
- if (proofs.length !== nonEmptyProofs.length) {
121
- throw new Error('At lease one child is not ready for the block root.');
246
+ getBlockRootRollupTypeAndInputs() {
247
+ const provingOutputs = this.#getChildProvingOutputsForBlockRoot();
248
+ if (!provingOutputs.every((p)=>!!p)) {
249
+ throw new Error('At least one child is not ready for the block root rollup.');
122
250
  }
123
- const data = this.#getBlockRootRollupData(proverId);
124
- if (this.totalNumTxs === 0) {
125
- const constants = ConstantRollupData.from({
126
- lastArchive: this.lastArchiveSnapshot,
127
- globalVariables: this.globalVariables,
128
- vkTreeRoot: getVKTreeRoot(),
129
- protocolContractTreeRoot
130
- });
131
- return {
132
- rollupType: 'empty-block-root-rollup',
133
- inputs: EmptyBlockRootRollupInputs.from({
134
- data,
135
- constants,
136
- isPadding: false
137
- })
138
- };
251
+ const previousRollups = provingOutputs.map((p)=>toProofData(p));
252
+ if (this.isFirstBlock) {
253
+ return this.#getFirstBlockRootRollupTypeAndInputs(previousRollups);
139
254
  }
140
- const previousRollupData = await Promise.all(nonEmptyProofs.map((p)=>this.#getPreviousRollupData(p)));
141
- const blobData = await this.#getBlockRootRollupBlobData();
142
- if (previousRollupData.length === 1) {
255
+ const [leftRollup, rightRollup] = previousRollups;
256
+ if (!rightRollup) {
143
257
  return {
144
- rollupType: 'single-tx-block-root-rollup',
145
- inputs: new SingleTxBlockRootRollupInputs(previousRollupData, data, blobData)
258
+ rollupType: 'rollup-block-root-single-tx',
259
+ inputs: new BlockRootSingleTxRollupPrivateInputs(leftRollup, this.lastArchiveSiblingPath)
146
260
  };
147
261
  } else {
148
262
  return {
149
- rollupType: 'block-root-rollup',
150
- inputs: new BlockRootRollupInputs(previousRollupData, data, blobData)
263
+ rollupType: 'rollup-block-root',
264
+ inputs: new BlockRootRollupPrivateInputs([
265
+ leftRollup,
266
+ rightRollup
267
+ ], this.lastArchiveSiblingPath)
151
268
  };
152
269
  }
153
270
  }
154
- async getPaddingBlockRootInputs(proverId) {
155
- if (!this.rootParityProvingOutput) {
271
+ #getFirstBlockRootRollupTypeAndInputs([leftRollup, rightRollup]) {
272
+ if (!this.rootParityProof?.provingOutput) {
156
273
  throw new Error('Root parity is not ready.');
157
274
  }
158
- // Use the new block header and archive of the current block as the previous header and archiver of the next padding block.
159
- const newBlockHeader = await this.buildHeaderFromProvingOutputs();
160
- const newArchive = this.blockRootProvingOutput.inputs.newArchive;
161
- const data = BlockRootRollupData.from({
162
- l1ToL2Roots: this.#getRootParityData(this.rootParityProvingOutput),
163
- l1ToL2MessageSubtreeSiblingPath: this.l1ToL2MessageSubtreeSiblingPath,
164
- newArchiveSiblingPath: this.newArchiveSiblingPath,
165
- previousBlockHeader: newBlockHeader,
166
- proverId
167
- });
168
- const constants = ConstantRollupData.from({
169
- lastArchive: newArchive,
170
- globalVariables: this.globalVariables,
171
- vkTreeRoot: getVKTreeRoot(),
172
- protocolContractTreeRoot
173
- });
174
- return EmptyBlockRootRollupInputs.from({
175
- data,
176
- constants,
177
- isPadding: true
178
- });
275
+ const l1ToL2Roots = toProofData(this.rootParityProof.provingOutput);
276
+ if (!leftRollup) {
277
+ return {
278
+ rollupType: 'rollup-block-root-first-empty-tx',
279
+ inputs: new BlockRootEmptyTxFirstRollupPrivateInputs(l1ToL2Roots, this.lastArchiveTreeSnapshot, this.headerOfLastBlockInPreviousCheckpoint.state, this.constants, this.timestamp, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
280
+ };
281
+ } else if (!rightRollup) {
282
+ return {
283
+ rollupType: 'rollup-block-root-first-single-tx',
284
+ inputs: new BlockRootSingleTxFirstRollupPrivateInputs(l1ToL2Roots, leftRollup, this.lastL1ToL2MessageTreeSnapshot, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
285
+ };
286
+ } else {
287
+ return {
288
+ rollupType: 'rollup-block-root-first',
289
+ inputs: new BlockRootFirstRollupPrivateInputs(l1ToL2Roots, [
290
+ leftRollup,
291
+ rightRollup
292
+ ], this.lastL1ToL2MessageTreeSnapshot, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
293
+ };
294
+ }
179
295
  }
180
- getRootParityInputs() {
181
- if (!this.baseParityProvingOutputs.every((p)=>!!p)) {
296
+ getParityRootInputs() {
297
+ const baseParityProvingOutputs = this.baseParityProofs.filter((p)=>!!p?.provingOutput).map((p)=>p.provingOutput);
298
+ if (baseParityProvingOutputs.length !== this.baseParityProofs.length) {
182
299
  throw new Error('At lease one base parity is not ready.');
183
300
  }
184
- const children = this.baseParityProvingOutputs.map((p)=>this.#getRootParityData(p));
185
- return new RootParityInputs(children);
301
+ const children = baseParityProvingOutputs.map((p)=>toProofData(p));
302
+ return new ParityRootPrivateInputs(assertLength(children, NUM_BASE_PARITY_PER_ROOT_PARITY));
186
303
  }
187
304
  // Returns a specific transaction proving state
188
305
  getTxProvingState(txIndex) {
189
306
  return this.txs[txIndex];
190
307
  }
191
- async buildHeaderFromProvingOutputs(logger) {
192
- const previousRollupData = this.totalNumTxs === 0 ? [] : await Promise.all(this.#getChildProofsForBlockRoot().map((p)=>this.#getPreviousRollupData(p)));
193
- let endPartialState = this.previousBlockHeader.state.partial;
194
- if (this.totalNumTxs !== 0) {
195
- const previousRollupData = this.#getChildProofsForBlockRoot();
196
- const lastRollup = previousRollupData[previousRollupData.length - 1];
197
- if (!lastRollup) {
198
- throw new Error('End state of the block is not available. Last rollup is not ready yet.');
199
- }
200
- endPartialState = lastRollup.inputs.end;
308
+ async buildHeaderFromProvingOutputs() {
309
+ if (!this.blockRootProof?.provingOutput) {
310
+ throw new Error('Block root rollup is not ready.');
201
311
  }
202
- const endState = new StateReference(this.l1ToL2MessageTreeSnapshotAfterInsertion, endPartialState);
203
- return buildHeaderFromCircuitOutputs(previousRollupData.map((d)=>d.baseOrMergeRollupPublicInputs), this.rootParityProvingOutput.inputs, this.blockRootProvingOutput.inputs, endState, logger);
312
+ return await buildHeaderFromCircuitOutputs(this.blockRootProof.provingOutput.inputs);
204
313
  }
205
314
  isReadyForMergeRollup(location) {
206
- return this.baseOrMergeProvingOutputs.getSibling(location) !== undefined;
315
+ return !!this.baseOrMergeProofs.getSibling(location)?.provingOutput;
207
316
  }
208
317
  // Returns true if we have sufficient inputs to execute the block root rollup
209
318
  isReadyForBlockRootRollup() {
210
- const childProofs = this.#getChildProofsForBlockRoot();
211
- return this.block !== undefined && this.rootParityProvingOutput !== undefined && childProofs.every((p)=>!!p);
319
+ const childProofs = this.#getChildProvingOutputsForBlockRoot();
320
+ return (!this.isFirstBlock || !!this.rootParityProof?.provingOutput) && childProofs.every((p)=>!!p);
212
321
  }
213
322
  // Returns true if we have sufficient root parity inputs to execute the root parity circuit
214
323
  isReadyForRootParity() {
215
- return this.baseParityProvingOutputs.every((p)=>!!p);
324
+ return this.baseParityProofs.every((p)=>!!p?.provingOutput);
216
325
  }
217
326
  isComplete() {
218
- return !!this.blockRootProvingOutput;
327
+ return !!this.blockRootProof;
219
328
  }
220
- // Returns whether the proving state is still valid
221
329
  verifyState() {
222
- return this.parentEpoch.verifyState();
330
+ return this.parentCheckpoint.verifyState();
331
+ }
332
+ getError() {
333
+ return this.error;
223
334
  }
224
335
  reject(reason) {
225
336
  this.error = reason;
226
- this.parentEpoch.reject(reason);
227
- }
228
- #getBlockRootRollupData(proverId) {
229
- return BlockRootRollupData.from({
230
- l1ToL2Roots: this.#getRootParityData(this.rootParityProvingOutput),
231
- l1ToL2MessageSubtreeSiblingPath: this.l1ToL2MessageSubtreeSiblingPath,
232
- newArchiveSiblingPath: this.newArchiveSiblingPath,
233
- previousBlockHeader: this.previousBlockHeader,
234
- proverId
235
- });
337
+ this.parentCheckpoint.reject(reason);
236
338
  }
237
- async #getBlockRootRollupBlobData() {
238
- const txEffects = this.txs.map((txProvingState)=>txProvingState.processedTx.txEffect);
239
- const { blobFields, blobCommitments, blobsHash } = await buildBlobHints(txEffects);
240
- return BlockRootRollupBlobData.from({
241
- blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK),
242
- blobCommitments: padArrayEnd(blobCommitments, [
243
- Fr.ZERO,
244
- Fr.ZERO
245
- ], BLOBS_PER_BLOCK),
246
- blobsHash
247
- });
248
- }
249
- #getChildProofsForBlockRoot() {
339
+ #getChildProvingOutputsForBlockRoot() {
250
340
  if (this.totalNumTxs === 0) {
251
341
  return [];
252
342
  }
@@ -256,14 +346,29 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
256
346
  };
257
347
  // If there's only 1 tx, its base rollup proof will be stored at the root.
258
348
  return this.totalNumTxs === 1 ? [
259
- this.baseOrMergeProvingOutputs.getNode(rootLocation)
260
- ] : this.baseOrMergeProvingOutputs.getChildren(rootLocation);
349
+ this.baseOrMergeProofs.getNode(rootLocation)?.provingOutput
350
+ ] : this.baseOrMergeProofs.getChildren(rootLocation).map((c)=>c?.provingOutput);
351
+ }
352
+ #getGlobalVariables() {
353
+ if (this.txs.length) {
354
+ return this.txs[0].processedTx.globalVariables;
355
+ }
356
+ const constants = this.constants;
357
+ return GlobalVariables.from({
358
+ chainId: constants.chainId,
359
+ version: constants.version,
360
+ blockNumber: this.blockNumber,
361
+ slotNumber: constants.slotNumber,
362
+ timestamp: this.timestamp,
363
+ coinbase: constants.coinbase,
364
+ feeRecipient: constants.feeRecipient,
365
+ gasFees: constants.gasFees
366
+ });
261
367
  }
262
- #getPreviousRollupData({ inputs, proof, verificationKey }) {
263
- const leafIndex = getVKIndex(verificationKey.keyAsFields);
264
- return new PreviousRollupData(inputs, proof, verificationKey.keyAsFields, new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)));
368
+ #getTotalFees() {
369
+ return this.txs.reduce((acc, tx)=>acc.add(tx.processedTx.txEffect.transactionFee), Fr.ZERO);
265
370
  }
266
- #getRootParityData({ inputs, proof, verificationKey }) {
267
- return new RootParityInput(proof, verificationKey.keyAsFields, getVKSiblingPath(getVKIndex(verificationKey)), inputs);
371
+ #getTotalManaUsed() {
372
+ return this.txs.reduce((acc, tx)=>acc + BigInt(tx.processedTx.gasUsed.billedGas.l2Gas), 0n);
268
373
  }
269
374
  }
@@ -0,0 +1,62 @@
1
+ import { BatchedBlobAccumulator, type FinalBlobBatchingChallenges } from '@aztec/blob-lib';
2
+ import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
3
+ import { Fr } from '@aztec/foundation/fields';
4
+ import type { Tuple } from '@aztec/foundation/serialize';
5
+ import { type TreeNodeLocation } from '@aztec/foundation/trees';
6
+ import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
7
+ import { ParityBasePrivateInputs } from '@aztec/stdlib/parity';
8
+ import { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, CheckpointConstantData, CheckpointRollupPublicInputs, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs } from '@aztec/stdlib/rollup';
9
+ import type { CircuitName } from '@aztec/stdlib/stats';
10
+ import type { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
11
+ import type { BlockHeader } from '@aztec/stdlib/tx';
12
+ import type { UInt64 } from '@aztec/stdlib/types';
13
+ import { BlockProvingState } from './block-proving-state.js';
14
+ import type { EpochProvingState } from './epoch-proving-state.js';
15
+ export declare class CheckpointProvingState {
16
+ #private;
17
+ readonly index: number;
18
+ readonly constants: CheckpointConstantData;
19
+ readonly totalNumBlocks: number;
20
+ private readonly finalBlobBatchingChallenges;
21
+ private readonly headerOfLastBlockInPreviousCheckpoint;
22
+ private readonly lastArchiveSiblingPath;
23
+ private readonly l1ToL2Messages;
24
+ private readonly lastL1ToL2MessageTreeSnapshot;
25
+ private readonly lastL1ToL2MessageSubtreeRootSiblingPath;
26
+ private readonly newL1ToL2MessageTreeSnapshot;
27
+ private readonly newL1ToL2MessageSubtreeRootSiblingPath;
28
+ parentEpoch: EpochProvingState;
29
+ private onBlobAccumulatorSet;
30
+ private blockProofs;
31
+ private checkpointRootProof;
32
+ private blocks;
33
+ private startBlobAccumulator;
34
+ private endBlobAccumulator;
35
+ private blobFields;
36
+ private error;
37
+ readonly firstBlockNumber: number;
38
+ constructor(index: number, constants: CheckpointConstantData, totalNumBlocks: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint: BlockHeader, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, l1ToL2Messages: Fr[], lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, parentEpoch: EpochProvingState, onBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => void);
39
+ get epochNumber(): number;
40
+ startNewBlock(blockNumber: number, timestamp: UInt64, totalNumTxs: number, lastArchiveTreeSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>): BlockProvingState;
41
+ isAcceptingBlocks(): boolean;
42
+ setBlockRootRollupProof(blockIndex: number, provingOutput: PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
43
+ tryStartProvingBlockMerge(location: TreeNodeLocation): boolean;
44
+ setBlockMergeRollupProof(location: TreeNodeLocation, provingOutput: PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
45
+ tryStartProvingCheckpointRoot(): boolean;
46
+ setCheckpointRootRollupProof(provingOutput: PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
47
+ getBaseParityInputs(baseParityIndex: number): ParityBasePrivateInputs;
48
+ accumulateBlobs(startBlobAccumulator: BatchedBlobAccumulator): Promise<BatchedBlobAccumulator | undefined>;
49
+ getEndBlobAccumulator(): BatchedBlobAccumulator | undefined;
50
+ getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
51
+ getBlockMergeRollupInputs(mergeLocation: TreeNodeLocation): BlockMergeRollupPrivateInputs;
52
+ getCheckpointRootRollupType(): CircuitName;
53
+ getCheckpointRootRollupInputs(): CheckpointRootRollupPrivateInputs | CheckpointRootSingleBlockRollupPrivateInputs;
54
+ getBlockProvingStateByBlockNumber(blockNumber: number): BlockProvingState | undefined;
55
+ isReadyForBlockMerge(location: TreeNodeLocation): boolean;
56
+ isReadyForCheckpointRoot(): boolean;
57
+ verifyState(): boolean;
58
+ getError(): string | undefined;
59
+ cancel(): void;
60
+ reject(reason: string): void;
61
+ }
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1wcm92aW5nLXN0YXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL2NoZWNrcG9pbnQtcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLEtBQUssMkJBQTJCLEVBR2pDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUduQixLQUFLLDZDQUE2QyxFQUNsRCxLQUFLLHlDQUF5QyxFQUUvQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBdUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFFNUIsaUNBQWlDLEVBQ2pDLDRDQUE0QyxFQUM3QyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9B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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,EAGjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,6CAA6C,EAClD,KAAK,yCAAyC,EAE/C,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAc,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAE5B,iCAAiC,EACjC,4CAA4C,EAC7C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAmB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,sBAAsB;;aAef,KAAK,EAAE,MAAM;aACb,SAAS,EAAE,sBAAsB;aACjC,cAAc,EAAE,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,qCAAqC;IACtD,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,6BAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAC,uCAAuC;IAKxD,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,sCAAsC;IAIhD,WAAW,EAAE,iBAAiB;IACrC,OAAO,CAAC,oBAAoB;IAlC9B,OAAO,CAAC,WAAW,CAEjB;IACF,OAAO,CAAC,mBAAmB,CAEb;IACd,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,KAAK,CAAqB;IAClC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IAEzC,YACkB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,sBAAsB,EACjC,cAAc,EAAE,MAAM,EACrB,2BAA2B,EAAE,2BAA2B,EACxD,qCAAqC,EAAE,WAAW,EAClD,sBAAsB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,EACxD,cAAc,EAAE,EAAE,EAAE,EAEpB,6BAA6B,EAAE,sBAAsB,EACrD,uCAAuC,EAAE,KAAK,CAC7D,EAAE,EACF,OAAO,6CAA6C,CACrD,EAEgB,4BAA4B,EAAE,sBAAsB,EACpD,sCAAsC,EAAE,KAAK,CAC5D,EAAE,EACF,OAAO,6CAA6C,CACrD,EACM,WAAW,EAAE,iBAAiB,EAC7B,oBAAoB,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI,EAI3E;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAEM,aAAa,CAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,uBAAuB,EAAE,sBAAsB,EAC/C,sBAAsB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,GACvD,iBAAiB,CAuCnB;IAGM,iBAAiB,YAEvB;IAEM,uBAAuB,CAC5B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,6BAA6B,CAC1C,uBAAuB,EACvB,OAAO,yCAAyC,CACjD,GACA,gBAAgB,CAElB;IAEM,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,WAO1D;IAEM,wBAAwB,CAC7B,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,6BAA6B,CAC1C,uBAAuB,EACvB,OAAO,yCAAyC,CACjD,QAGF;IAEM,6BAA6B,YAOnC;IAEM,4BAA4B,CACjC,aAAa,EAAE,6BAA6B,CAC1C,4BAA4B,EAC5B,OAAO,yCAAyC,CACjD,GACA,gBAAgB,CAGlB;IAEM,mBAAmB,CAAC,eAAe,EAAE,MAAM,2BAUjD;IAEY,eAAe,CAAC,oBAAoB,EAAE,sBAAsB,+CAYxE;IAEM,qBAAqB,uCAE3B;IAEM,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,oBAElD;IAEM,yBAAyB,CAAC,aAAa,EAAE,gBAAgB,iCAO/D;IAEM,2BAA2B,IAAI,WAAW,CAEhD;IAEM,6BAA6B,qFA8BnC;IAEM,iCAAiC,CAAC,WAAW,EAAE,MAAM,iCAG3D;IAEM,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,WAErD;IAEM,wBAAwB,YAG9B;IAEM,WAAW,YAEjB;IAEM,QAAQ,uBAEd;IAGM,MAAM,SAEZ;IAEM,MAAM,CAAC,MAAM,EAAE,MAAM,QAG3B;CAQF"}