@aztec/ethereum 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108
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/account.d.ts +1 -1
- package/dest/chain.d.ts +1 -1
- package/dest/client.d.ts +2 -2
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +6 -2
- package/dest/config.d.ts +18 -46
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +40 -285
- package/dest/constants.d.ts +1 -1
- package/dest/contracts/empire_base.d.ts +8 -6
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_base.js +1 -1
- package/dest/contracts/empire_slashing_proposer.d.ts +8 -6
- package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/empire_slashing_proposer.js +18 -3
- package/dest/contracts/errors.d.ts +1 -1
- package/dest/contracts/errors.d.ts.map +1 -1
- package/dest/contracts/fee_asset_handler.d.ts +4 -4
- package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
- package/dest/contracts/fee_juice.d.ts +1 -1
- package/dest/contracts/fee_juice.d.ts.map +1 -1
- package/dest/contracts/governance.d.ts +16 -16
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +7 -3
- package/dest/contracts/governance_proposer.d.ts +7 -6
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +400 -12
- package/dest/contracts/gse.d.ts +1 -1
- package/dest/contracts/gse.d.ts.map +1 -1
- package/dest/contracts/inbox.d.ts +7 -3
- package/dest/contracts/inbox.d.ts.map +1 -1
- package/dest/contracts/inbox.js +4 -0
- package/dest/contracts/index.d.ts +1 -1
- package/dest/contracts/multicall.d.ts +5 -7
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/multicall.js +6 -4
- package/dest/contracts/registry.d.ts +1 -1
- package/dest/contracts/registry.d.ts.map +1 -1
- package/dest/contracts/rollup.d.ts +169 -118
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +714 -243
- package/dest/contracts/slasher_contract.d.ts +11 -1
- package/dest/contracts/slasher_contract.d.ts.map +1 -1
- package/dest/contracts/slasher_contract.js +18 -0
- package/dest/contracts/tally_slashing_proposer.d.ts +15 -7
- package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/tally_slashing_proposer.js +15 -5
- package/dest/contracts/utils.d.ts +1 -1
- package/dest/deploy_aztec_l1_contracts.d.ts +247 -0
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
- package/dest/deploy_aztec_l1_contracts.js +336 -0
- package/dest/deploy_l1_contract.d.ts +68 -0
- package/dest/deploy_l1_contract.d.ts.map +1 -0
- package/dest/deploy_l1_contract.js +312 -0
- package/dest/eth-signer/eth-signer.d.ts +1 -1
- package/dest/eth-signer/index.d.ts +1 -1
- package/dest/forwarder_proxy.d.ts +32 -0
- package/dest/forwarder_proxy.d.ts.map +1 -0
- package/dest/forwarder_proxy.js +93 -0
- package/dest/l1_artifacts.d.ts +17733 -6280
- package/dest/l1_artifacts.d.ts.map +1 -1
- package/dest/l1_artifacts.js +10 -5
- package/dest/l1_contract_addresses.d.ts +8 -4
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +5 -4
- package/dest/l1_reader.d.ts +4 -2
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +7 -1
- package/dest/l1_tx_utils/config.d.ts +59 -0
- package/dest/l1_tx_utils/config.d.ts.map +1 -0
- package/dest/l1_tx_utils/config.js +96 -0
- package/dest/l1_tx_utils/constants.d.ts +12 -0
- package/dest/l1_tx_utils/constants.d.ts.map +1 -0
- package/dest/l1_tx_utils/constants.js +39 -0
- package/dest/l1_tx_utils/factory.d.ts +24 -0
- package/dest/l1_tx_utils/factory.d.ts.map +1 -0
- package/dest/l1_tx_utils/factory.js +12 -0
- package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
- package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
- package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
- package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
- package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
- package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils/index-blobs.js +2 -0
- package/dest/l1_tx_utils/index.d.ts +12 -0
- package/dest/l1_tx_utils/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/index.js +12 -0
- package/dest/l1_tx_utils/interfaces.d.ts +76 -0
- package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
- package/dest/l1_tx_utils/interfaces.js +4 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts +94 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_tx_utils.js +623 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +26 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +26 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +83 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +323 -0
- package/dest/l1_tx_utils/signer.d.ts +4 -0
- package/dest/l1_tx_utils/signer.d.ts.map +1 -0
- package/dest/l1_tx_utils/signer.js +16 -0
- package/dest/l1_tx_utils/types.d.ts +67 -0
- package/dest/l1_tx_utils/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/types.js +26 -0
- package/dest/l1_tx_utils/utils.d.ts +4 -0
- package/dest/l1_tx_utils/utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/utils.js +14 -0
- package/dest/l1_types.d.ts +1 -1
- package/dest/publisher_manager.d.ts +8 -3
- package/dest/publisher_manager.d.ts.map +1 -1
- package/dest/publisher_manager.js +36 -8
- package/dest/queries.d.ts +1 -1
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +20 -14
- package/dest/test/chain_monitor.d.ts +29 -22
- package/dest/test/chain_monitor.d.ts.map +1 -1
- package/dest/test/chain_monitor.js +81 -38
- package/dest/test/delayed_tx_utils.d.ts +3 -3
- package/dest/test/delayed_tx_utils.d.ts.map +1 -1
- package/dest/test/delayed_tx_utils.js +2 -2
- package/dest/test/eth_cheat_codes.d.ts +36 -14
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.js +126 -31
- package/dest/test/eth_cheat_codes_with_state.d.ts +1 -1
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
- package/dest/test/index.d.ts +1 -1
- package/dest/test/rollup_cheat_codes.d.ts +23 -20
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
- package/dest/test/rollup_cheat_codes.js +82 -43
- package/dest/test/start_anvil.d.ts +4 -1
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +2 -1
- package/dest/test/tx_delayer.d.ts +1 -1
- package/dest/test/tx_delayer.d.ts.map +1 -1
- package/dest/test/tx_delayer.js +4 -3
- package/dest/test/upgrade_utils.d.ts +1 -1
- package/dest/test/upgrade_utils.d.ts.map +1 -1
- package/dest/test/upgrade_utils.js +3 -2
- package/dest/types.d.ts +57 -2
- package/dest/types.d.ts.map +1 -1
- package/dest/utils.d.ts +15 -3
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +28 -161
- package/dest/zkPassportVerifierAddress.d.ts +1 -1
- package/dest/zkPassportVerifierAddress.js +1 -1
- package/package.json +33 -14
- package/src/client.ts +3 -3
- package/src/config.ts +49 -358
- package/src/contracts/empire_base.ts +7 -6
- package/src/contracts/empire_slashing_proposer.ts +23 -8
- package/src/contracts/fee_asset_handler.ts +1 -1
- package/src/contracts/governance.ts +3 -3
- package/src/contracts/governance_proposer.ts +19 -9
- package/src/contracts/inbox.ts +7 -2
- package/src/contracts/multicall.ts +12 -10
- package/src/contracts/rollup.ts +374 -236
- package/src/contracts/slasher_contract.ts +22 -0
- package/src/contracts/tally_slashing_proposer.ts +21 -9
- package/src/deploy_aztec_l1_contracts.ts +557 -0
- package/src/deploy_l1_contract.ts +362 -0
- package/src/forwarder_proxy.ts +108 -0
- package/src/l1_artifacts.ts +14 -6
- package/src/l1_contract_addresses.ts +24 -20
- package/src/l1_reader.ts +10 -2
- package/src/l1_tx_utils/README.md +177 -0
- package/src/l1_tx_utils/config.ts +161 -0
- package/src/l1_tx_utils/constants.ts +29 -0
- package/src/l1_tx_utils/factory.ts +64 -0
- package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
- package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
- package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
- package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
- package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
- package/src/l1_tx_utils/index-blobs.ts +2 -0
- package/src/l1_tx_utils/index.ts +14 -0
- package/src/l1_tx_utils/interfaces.ts +86 -0
- package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
- package/src/l1_tx_utils/l1_tx_utils.ts +738 -0
- package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +77 -0
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +419 -0
- package/src/l1_tx_utils/signer.ts +28 -0
- package/src/l1_tx_utils/types.ts +85 -0
- package/src/l1_tx_utils/utils.ts +16 -0
- package/src/publisher_manager.ts +51 -9
- package/src/queries.ts +24 -10
- package/src/test/chain_monitor.ts +102 -44
- package/src/test/delayed_tx_utils.ts +2 -2
- package/src/test/eth_cheat_codes.ts +150 -31
- package/src/test/rollup_cheat_codes.ts +95 -53
- package/src/test/start_anvil.ts +4 -0
- package/src/test/tx_delayer.ts +5 -3
- package/src/test/upgrade_utils.ts +3 -2
- package/src/types.ts +62 -0
- package/src/utils.ts +41 -184
- package/src/zkPassportVerifierAddress.ts +1 -1
- package/dest/deploy_l1_contracts.d.ts +0 -211
- package/dest/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/deploy_l1_contracts.js +0 -1267
- package/dest/index.d.ts +0 -18
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -17
- package/dest/l1_tx_utils.d.ts +0 -250
- package/dest/l1_tx_utils.d.ts.map +0 -1
- package/dest/l1_tx_utils.js +0 -826
- package/dest/l1_tx_utils_with_blobs.d.ts +0 -19
- package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
- package/dest/l1_tx_utils_with_blobs.js +0 -85
- package/src/deploy_l1_contracts.ts +0 -1596
- package/src/index.ts +0 -17
- package/src/l1_tx_utils.ts +0 -1105
- package/src/l1_tx_utils_with_blobs.ts +0 -144
|
@@ -1,28 +1,43 @@
|
|
|
1
1
|
import { toBigIntBE, toHex } from '@aztec/foundation/bigint-buffer';
|
|
2
|
-
import { keccak256 } from '@aztec/foundation/crypto';
|
|
2
|
+
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
3
3
|
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
-
import {
|
|
5
|
+
import { pluralize } from '@aztec/foundation/string';
|
|
6
|
+
import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
7
|
+
import { foundry } from 'viem/chains';
|
|
6
8
|
/**
|
|
7
9
|
* A class that provides utility functions for interacting with ethereum (L1).
|
|
8
10
|
*/ export class EthCheatCodes {
|
|
9
11
|
rpcUrls;
|
|
12
|
+
dateProvider;
|
|
10
13
|
logger;
|
|
14
|
+
chain;
|
|
11
15
|
publicClient;
|
|
12
16
|
constructor(/**
|
|
13
17
|
* The RPC URL to use for interacting with the chain
|
|
14
18
|
*/ rpcUrls, /**
|
|
19
|
+
* The date provider to use for time operations
|
|
20
|
+
*/ dateProvider, /**
|
|
15
21
|
* The logger to use for the eth cheatcodes
|
|
16
|
-
*/ logger = createLogger('ethereum:cheat_codes')
|
|
22
|
+
*/ logger = createLogger('ethereum:cheat_codes'), /**
|
|
23
|
+
* The chain configuration provided to Anvil
|
|
24
|
+
*/ chain = foundry){
|
|
17
25
|
this.rpcUrls = rpcUrls;
|
|
26
|
+
this.dateProvider = dateProvider;
|
|
18
27
|
this.logger = logger;
|
|
28
|
+
this.chain = chain;
|
|
19
29
|
this.publicClient = createPublicClient({
|
|
20
|
-
transport: fallback(this.rpcUrls.map((url)=>http(url
|
|
30
|
+
transport: fallback(this.rpcUrls.map((url)=>http(url, {
|
|
31
|
+
batch: false
|
|
32
|
+
}))),
|
|
33
|
+
chain: chain
|
|
21
34
|
});
|
|
22
35
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
this.
|
|
36
|
+
rpcCall(method, params) {
|
|
37
|
+
this.logger.debug(`Calling ${method} with params: ${jsonStringify(params)} on ${this.rpcUrls.join(', ')}`);
|
|
38
|
+
return this.doRpcCall(method, params);
|
|
39
|
+
}
|
|
40
|
+
async doRpcCall(method, params) {
|
|
26
41
|
return await this.publicClient.transport.request({
|
|
27
42
|
method,
|
|
28
43
|
params
|
|
@@ -33,7 +48,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
33
48
|
* @returns True if automine is on, false otherwise
|
|
34
49
|
*/ async isAutoMining() {
|
|
35
50
|
try {
|
|
36
|
-
const res = await this.
|
|
51
|
+
const res = await this.doRpcCall('anvil_getAutomine', []);
|
|
37
52
|
return res;
|
|
38
53
|
} catch (err) {
|
|
39
54
|
this.logger.error(`Calling "anvil_getAutomine" failed with:`, err);
|
|
@@ -44,21 +59,21 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
44
59
|
* Get the current blocknumber
|
|
45
60
|
* @returns The current block number
|
|
46
61
|
*/ async blockNumber() {
|
|
47
|
-
const res = await this.
|
|
62
|
+
const res = await this.doRpcCall('eth_blockNumber', []);
|
|
48
63
|
return parseInt(res, 16);
|
|
49
64
|
}
|
|
50
65
|
/**
|
|
51
66
|
* Get the current chainId
|
|
52
67
|
* @returns The current chainId
|
|
53
68
|
*/ async chainId() {
|
|
54
|
-
const res = await this.
|
|
69
|
+
const res = await this.doRpcCall('eth_chainId', []);
|
|
55
70
|
return parseInt(res, 16);
|
|
56
71
|
}
|
|
57
72
|
/**
|
|
58
73
|
* Get the current timestamp
|
|
59
74
|
* @returns The current timestamp
|
|
60
75
|
*/ async timestamp() {
|
|
61
|
-
const res = await this.
|
|
76
|
+
const res = await this.doRpcCall('eth_getBlockByNumber', [
|
|
62
77
|
'latest',
|
|
63
78
|
true
|
|
64
79
|
]);
|
|
@@ -73,7 +88,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
73
88
|
}
|
|
74
89
|
async doMine(numberOfBlocks = 1) {
|
|
75
90
|
try {
|
|
76
|
-
await this.
|
|
91
|
+
await this.doRpcCall('hardhat_mine', [
|
|
77
92
|
numberOfBlocks
|
|
78
93
|
]);
|
|
79
94
|
} catch (err) {
|
|
@@ -84,7 +99,8 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
84
99
|
* Mines a single block with evm_mine
|
|
85
100
|
*/ async evmMine() {
|
|
86
101
|
try {
|
|
87
|
-
await this.
|
|
102
|
+
await this.doRpcCall('evm_mine', []);
|
|
103
|
+
this.logger.warn(`Mined 1 L1 block with evm_mine`);
|
|
88
104
|
} catch (err) {
|
|
89
105
|
throw new Error(`Error mining: ${err}`);
|
|
90
106
|
}
|
|
@@ -105,7 +121,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
105
121
|
this.logger.warn(`Set balance for ${account} to ${balance}`);
|
|
106
122
|
}
|
|
107
123
|
async getBalance(account) {
|
|
108
|
-
const res = await this.
|
|
124
|
+
const res = await this.doRpcCall('eth_getBalance', [
|
|
109
125
|
account.toString(),
|
|
110
126
|
'latest'
|
|
111
127
|
]);
|
|
@@ -142,7 +158,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
142
158
|
* @param seconds - The interval to use between blocks
|
|
143
159
|
*/ getIntervalMining() {
|
|
144
160
|
try {
|
|
145
|
-
return this.
|
|
161
|
+
return this.doRpcCall('anvil_getIntervalMining', []);
|
|
146
162
|
} catch (err) {
|
|
147
163
|
throw new Error(`Error getting interval mining: ${err}`);
|
|
148
164
|
}
|
|
@@ -206,7 +222,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
206
222
|
/**
|
|
207
223
|
* Set the next block timestamp and mines the block.
|
|
208
224
|
* Optionally resets interval mining so the next block is mined in `blockInterval` seconds from now.
|
|
209
|
-
*
|
|
225
|
+
* Always updates the injected date provider to follow L1 time.
|
|
210
226
|
* @param timestamp - The timestamp to set the next block to
|
|
211
227
|
*/ async warp(timestamp, opts = {}) {
|
|
212
228
|
let blockInterval = null;
|
|
@@ -226,8 +242,10 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
226
242
|
]);
|
|
227
243
|
// And mine a block so the timestamp goes into effect now
|
|
228
244
|
await this.doMine();
|
|
229
|
-
// Update the date provider
|
|
230
|
-
|
|
245
|
+
// Update the injected date provider so it follows L1 time
|
|
246
|
+
if ('setTime' in this.dateProvider) {
|
|
247
|
+
this.dateProvider.setTime(Number(timestamp) * 1000);
|
|
248
|
+
}
|
|
231
249
|
} catch (err) {
|
|
232
250
|
throw new Error(`Error warping: ${err}`);
|
|
233
251
|
} finally{
|
|
@@ -260,7 +278,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
260
278
|
* @param contract - The contract address
|
|
261
279
|
* @param slot - The storage slot
|
|
262
280
|
* @param value - The value to set the storage slot to
|
|
263
|
-
*/ async store(contract, slot, value) {
|
|
281
|
+
*/ async store(contract, slot, value, opts = {}) {
|
|
264
282
|
// for the rpc call, we need to change value to be a 32 byte hex string.
|
|
265
283
|
try {
|
|
266
284
|
await this.rpcCall('hardhat_setStorageAt', [
|
|
@@ -271,7 +289,9 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
271
289
|
} catch (err) {
|
|
272
290
|
throw new Error(`Error setting storage for contract ${contract} at ${slot}: ${err}`);
|
|
273
291
|
}
|
|
274
|
-
|
|
292
|
+
if (!opts.silent) {
|
|
293
|
+
this.logger.warn(`Set L1 storage for contract ${contract} at ${slot} to ${value}`);
|
|
294
|
+
}
|
|
275
295
|
}
|
|
276
296
|
/**
|
|
277
297
|
* Computes the slot value for a given map and key.
|
|
@@ -333,31 +353,28 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
333
353
|
* @param contract - The contract address
|
|
334
354
|
* @returns The bytecode for the contract
|
|
335
355
|
*/ async getBytecode(contract) {
|
|
336
|
-
|
|
356
|
+
return await this.doRpcCall('eth_getCode', [
|
|
337
357
|
contract.toString(),
|
|
338
358
|
'latest'
|
|
339
359
|
]);
|
|
340
|
-
return res;
|
|
341
360
|
}
|
|
342
361
|
/**
|
|
343
362
|
* Get the raw transaction object for a given transaction hash
|
|
344
363
|
* @param txHash - The transaction hash
|
|
345
364
|
* @returns The raw transaction
|
|
346
365
|
*/ async getRawTransaction(txHash) {
|
|
347
|
-
|
|
366
|
+
return await this.doRpcCall('debug_getRawTransaction', [
|
|
348
367
|
txHash
|
|
349
368
|
]);
|
|
350
|
-
return res;
|
|
351
369
|
}
|
|
352
370
|
/**
|
|
353
371
|
* Get the trace for a given transaction hash
|
|
354
372
|
* @param txHash - The transaction hash
|
|
355
373
|
* @returns The trace
|
|
356
374
|
*/ async debugTraceTransaction(txHash) {
|
|
357
|
-
|
|
375
|
+
return await this.doRpcCall('debug_traceTransaction', [
|
|
358
376
|
txHash
|
|
359
377
|
]);
|
|
360
|
-
return res;
|
|
361
378
|
}
|
|
362
379
|
/**
|
|
363
380
|
* Triggers a reorg of the given depth, removing those blocks from the chain.
|
|
@@ -373,9 +390,6 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
373
390
|
* Causes Anvil to reorg until the given block number is the new tip
|
|
374
391
|
* @param blockNumber - The block number that's going to be the new tip
|
|
375
392
|
*/ reorgTo(blockNumber) {
|
|
376
|
-
this.logger.info('reorgTo', {
|
|
377
|
-
blockNumber
|
|
378
|
-
});
|
|
379
393
|
if (blockNumber <= 0) {
|
|
380
394
|
throw new Error(`Can't reorg to block before genesis: ${blockNumber}`);
|
|
381
395
|
}
|
|
@@ -389,6 +403,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
389
403
|
await this.rpcCall('anvil_rollback', [
|
|
390
404
|
depth
|
|
391
405
|
]);
|
|
406
|
+
this.logger.warn(`Reorged L1 chain to block number ${blockNumber} (depth ${depth})`);
|
|
392
407
|
});
|
|
393
408
|
}
|
|
394
409
|
/**
|
|
@@ -418,10 +433,68 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
418
433
|
});
|
|
419
434
|
}
|
|
420
435
|
traceTransaction(txHash) {
|
|
421
|
-
return this.
|
|
436
|
+
return this.doRpcCall('trace_transaction', [
|
|
422
437
|
txHash
|
|
423
438
|
]);
|
|
424
439
|
}
|
|
440
|
+
async getTxPoolStatus() {
|
|
441
|
+
const { pending, queued } = await this.doRpcCall('txpool_status', []);
|
|
442
|
+
return {
|
|
443
|
+
pending: hexToNumber(pending),
|
|
444
|
+
queued: hexToNumber(queued)
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
async getTxPoolContents() {
|
|
448
|
+
const txpoolContent = await this.doRpcCall('txpool_content', []);
|
|
449
|
+
return mapTxPoolContent(txpoolContent);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Mines an empty block by temporarily removing all pending transactions from the mempool,
|
|
453
|
+
* mining a block, and then re-adding the transactions back to the pool.
|
|
454
|
+
*/ async mineEmptyBlock(blockCount = 1) {
|
|
455
|
+
await this.execWithPausedAnvil(async ()=>{
|
|
456
|
+
// Get all pending and queued transactions from the pool
|
|
457
|
+
const txs = await this.getTxPoolContents();
|
|
458
|
+
this.logger.debug(`Found ${txs.length} transactions in pool`);
|
|
459
|
+
// Get raw transactions before dropping them
|
|
460
|
+
const rawTxs = [];
|
|
461
|
+
for (const tx of txs){
|
|
462
|
+
try {
|
|
463
|
+
const rawTx = await this.doRpcCall('debug_getRawTransaction', [
|
|
464
|
+
tx.hash
|
|
465
|
+
]);
|
|
466
|
+
if (rawTx) {
|
|
467
|
+
rawTxs.push(rawTx);
|
|
468
|
+
this.logger.debug(`Got raw tx for ${tx.hash}`);
|
|
469
|
+
} else {
|
|
470
|
+
this.logger.warn(`No raw tx found for ${tx.hash}`);
|
|
471
|
+
}
|
|
472
|
+
} catch {
|
|
473
|
+
this.logger.warn(`Failed to get raw transaction for ${tx.hash}`);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
this.logger.debug(`Retrieved ${rawTxs.length} raw transactions`);
|
|
477
|
+
// Drop all transactions from the mempool
|
|
478
|
+
await this.doRpcCall('anvil_dropAllTransactions', []);
|
|
479
|
+
// Mine an empty block
|
|
480
|
+
await this.doMine(blockCount);
|
|
481
|
+
// Re-add the transactions to the pool
|
|
482
|
+
for (const rawTx of rawTxs){
|
|
483
|
+
try {
|
|
484
|
+
const txHash = await this.doRpcCall('eth_sendRawTransaction', [
|
|
485
|
+
rawTx
|
|
486
|
+
]);
|
|
487
|
+
this.logger.debug(`Re-added transaction ${txHash}`);
|
|
488
|
+
} catch (err) {
|
|
489
|
+
this.logger.warn(`Failed to re-add transaction: ${err}`);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
if (rawTxs.length !== txs.length) {
|
|
493
|
+
this.logger.warn(`Failed to add all txs back: had ${txs.length} but re-added ${rawTxs.length}`);
|
|
494
|
+
}
|
|
495
|
+
});
|
|
496
|
+
this.logger.warn(`Mined ${blockCount} empty L1 ${pluralize('block', blockCount)}`);
|
|
497
|
+
}
|
|
425
498
|
async execWithPausedAnvil(fn) {
|
|
426
499
|
const [blockInterval, wasAutoMining] = await Promise.all([
|
|
427
500
|
this.getIntervalMining(),
|
|
@@ -438,7 +511,7 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
438
511
|
silent: true
|
|
439
512
|
});
|
|
440
513
|
}
|
|
441
|
-
await fn();
|
|
514
|
+
return await fn();
|
|
442
515
|
} finally{
|
|
443
516
|
try {
|
|
444
517
|
// restore automine if necessary
|
|
@@ -462,4 +535,26 @@ import { createPublicClient, fallback, http } from 'viem';
|
|
|
462
535
|
}
|
|
463
536
|
}
|
|
464
537
|
}
|
|
538
|
+
async syncDateProvider() {
|
|
539
|
+
const timestamp = await this.timestamp();
|
|
540
|
+
if ('setTime' in this.dateProvider) {
|
|
541
|
+
this.dateProvider.setTime(timestamp * 1000);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
function mapTxPoolContent(content) {
|
|
546
|
+
const result = [];
|
|
547
|
+
const processPool = (pool, poolState)=>{
|
|
548
|
+
for (const txsByNonce of Object.values(pool)){
|
|
549
|
+
for (const tx of Object.values(txsByNonce)){
|
|
550
|
+
result.push({
|
|
551
|
+
...tx,
|
|
552
|
+
poolState
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
};
|
|
557
|
+
processPool(content.pending, 'pending');
|
|
558
|
+
processPool(content.queued, 'queued');
|
|
559
|
+
return result;
|
|
465
560
|
}
|
|
@@ -15,4 +15,4 @@ export declare class EthCheatCodesWithState extends EthCheatCodes {
|
|
|
15
15
|
*/
|
|
16
16
|
loadChainState(fileName: string): Promise<void>;
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2NoZWF0X2NvZGVzX3dpdGhfc3RhdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2V0aF9jaGVhdF9jb2Rlc193aXRoX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRDs7O0dBR0c7QUFDSCxxQkFBYSxzQkFBdUIsU0FBUSxhQUFhO0lBQ3ZEOzs7T0FHRztJQUNVLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FTM0Q7SUFFRDs7O09BR0c7SUFDVSxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBUTNEO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_cheat_codes_with_state.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes_with_state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"eth_cheat_codes_with_state.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes_with_state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3D;IAED;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3D;CACF"}
|
package/dest/test/index.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export * from './tx_delayer.js';
|
|
|
6
6
|
export * from './upgrade_utils.js';
|
|
7
7
|
export * from './chain_monitor.js';
|
|
8
8
|
export * from './rollup_cheat_codes.js';
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQyJ9
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { type ViemPublicClient } from '@aztec/ethereum';
|
|
2
1
|
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
|
-
import type {
|
|
2
|
+
import type { ViemPublicClient } from '@aztec/ethereum/types';
|
|
3
|
+
import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import type { DateProvider } from '@aztec/foundation/timer';
|
|
4
5
|
import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi';
|
|
5
6
|
import { type GetContractReturnType, type Hex } from 'viem';
|
|
6
7
|
import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
@@ -11,18 +12,18 @@ export declare class RollupCheatCodes {
|
|
|
11
12
|
private rollup;
|
|
12
13
|
private logger;
|
|
13
14
|
constructor(ethCheatCodes: EthCheatCodes, addresses: Pick<L1ContractAddresses, 'rollupAddress'>);
|
|
14
|
-
static create(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'
|
|
15
|
+
static create(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'>, dateProvider: DateProvider): RollupCheatCodes;
|
|
15
16
|
/** Returns the current slot */
|
|
16
|
-
getSlot(): Promise<
|
|
17
|
+
getSlot(): Promise<SlotNumber>;
|
|
17
18
|
/** Returns the current epoch */
|
|
18
|
-
getEpoch(): Promise<
|
|
19
|
+
getEpoch(): Promise<EpochNumber>;
|
|
19
20
|
/**
|
|
20
21
|
* Returns the pending and proven chain tips
|
|
21
22
|
* @returns The pending and proven chain tips
|
|
22
23
|
*/
|
|
23
24
|
getTips(): Promise<{
|
|
24
|
-
/** The pending chain tip */ pending:
|
|
25
|
-
/** The proven chain tip */ proven:
|
|
25
|
+
/** The pending chain tip */ pending: CheckpointNumber;
|
|
26
|
+
/** The proven chain tip */ proven: CheckpointNumber;
|
|
26
27
|
}>;
|
|
27
28
|
/**
|
|
28
29
|
* Logs the current state of the rollup contract.
|
|
@@ -31,34 +32,36 @@ export declare class RollupCheatCodes {
|
|
|
31
32
|
/** Fetches the epoch and slot duration config from the rollup contract */
|
|
32
33
|
getConfig(): Promise<{
|
|
33
34
|
/** Epoch duration */ epochDuration: bigint;
|
|
34
|
-
/** Slot duration */ slotDuration:
|
|
35
|
+
/** Slot duration */ slotDuration: number;
|
|
35
36
|
}>;
|
|
36
37
|
/**
|
|
37
38
|
* Advances time to the beginning of the given epoch
|
|
38
39
|
* @param epoch - The epoch to advance to
|
|
39
40
|
* @param opts - Options
|
|
40
41
|
*/
|
|
41
|
-
advanceToEpoch(epoch:
|
|
42
|
-
/**
|
|
43
|
-
|
|
42
|
+
advanceToEpoch(epoch: EpochNumber, opts?: {
|
|
43
|
+
/** Offset in seconds */
|
|
44
|
+
offset?: number;
|
|
44
45
|
}): Promise<bigint>;
|
|
45
46
|
/** Warps time in L1 until the next epoch */
|
|
46
|
-
advanceToNextEpoch(
|
|
47
|
-
/** Optional test date provider to update with the epoch timestamp */
|
|
48
|
-
updateDateProvider?: TestDateProvider;
|
|
49
|
-
}): Promise<void>;
|
|
47
|
+
advanceToNextEpoch(): Promise<void>;
|
|
50
48
|
/** Warps time in L1 until the beginning of the next slot. */
|
|
51
|
-
advanceToNextSlot(): Promise<bigint[]>;
|
|
49
|
+
advanceToNextSlot(): Promise<(bigint | SlotNumber)[]>;
|
|
52
50
|
/**
|
|
53
51
|
* Warps time in L1 equivalent to however many slots.
|
|
54
52
|
* @param howMany - The number of slots to advance.
|
|
55
53
|
*/
|
|
56
54
|
advanceSlots(howMany: number): Promise<void>;
|
|
57
55
|
/**
|
|
58
|
-
* Marks the specified
|
|
59
|
-
* @param
|
|
56
|
+
* Marks the specified checkpoint (or latest if none) as proven
|
|
57
|
+
* @param maybeCheckpointNumber - The checkpoint number to mark as proven (defaults to latest pending)
|
|
60
58
|
*/
|
|
61
|
-
markAsProven(
|
|
59
|
+
markAsProven(maybeCheckpointNumber?: number | bigint): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Overrides the inProgress field of the Inbox contract state
|
|
62
|
+
* @param howMuch - How many checkpoints to move it forward
|
|
63
|
+
*/
|
|
64
|
+
advanceInboxInProgress(howMuch: number | bigint): Promise<bigint>;
|
|
62
65
|
/**
|
|
63
66
|
* Executes an action impersonated as the owner of the Rollup contract.
|
|
64
67
|
* @param action - The action to execute
|
|
@@ -81,4 +84,4 @@ export declare class RollupCheatCodes {
|
|
|
81
84
|
*/
|
|
82
85
|
setProvingCostPerMana(ethValue: bigint): Promise<void>;
|
|
83
86
|
}
|
|
84
|
-
//# sourceMappingURL=
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9yb2xsdXBfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHNUYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFELE9BQU8sRUFDTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLEdBQUcsRUFNVCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCw4Q0FBOEM7QUFDOUMscUJBQWEsZ0JBQWdCO0lBT3pCLE9BQU8sQ0FBQyxhQUFhO0lBTnZCLE9BQU8sQ0FBQyxNQUFNLENBQW1CO0lBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQTREO0lBRTFFLE9BQU8sQ0FBQyxNQUFNLENBQXVDO0lBRXJELFlBQ1UsYUFBYSxFQUFFLGFBQWEsRUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFXdEQ7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUNYLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFDckQsWUFBWSxFQUFFLFlBQVksR0FDekIsZ0JBQWdCLENBR2xCO0lBRUQsK0JBQStCO0lBQ2xCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRzFDO0lBRUQsZ0NBQWdDO0lBQ25CLFFBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRzVDO0lBRUQ7OztPQUdHO0lBQ1UsT0FBTyxJQUFJLE9BQU8sQ0FBQztRQUM5Qiw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7UUFDdkQsMkJBQTJCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDO0tBQ3RELENBQUMsQ0FNRDtJQUVEOztPQUVHO0lBQ1UsV0FBVyxrQkFpQnZCO0lBRUQsMEVBQTBFO0lBQzdELFNBQVMsSUFBSSxPQUFPLENBQUM7UUFDaEMscUJBQXFCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztRQUM1QyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO0tBQzNDLENBQUMsQ0FNRDtJQUVEOzs7O09BSUc7SUFDVSxjQUFjLENBQ3pCLEtBQUssRUFBRSxXQUFXLEVBQ2xCLElBQUksR0FBRTtRQUNKLHdCQUF3QjtRQUN4QixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDWixtQkFZUDtJQUVELDRDQUE0QztJQUMvQixrQkFBa0Isa0JBVzlCO0lBRUQsNkRBQTZEO0lBQ2hELGlCQUFpQixxQ0FPN0I7SUFFRDs7O09BR0c7SUFDVSxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0saUJBT3hDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0saUJBK0IxRDtJQUVEOzs7T0FHRztJQUNJLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FtQ3ZFO0lBRUQ7OztPQUdHO0lBQ1UsT0FBTyxDQUNsQixNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBTXpHO0lBRUQ7O09BRUc7SUFDVSxVQUFVLGtCQU90QjtJQUVELDRDQUE0QztJQUMvQixvQkFBb0Isa0JBTWhDO0lBRUQ7OztPQUdHO0lBQ1Usc0JBQXNCLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLGlCQUlyRTtJQUVEOzs7T0FHRztJQUNVLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLGlCQVVsRDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,GAAG,EAMT,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,8CAA8C;AAC9C,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,aAAa;IANvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAA4D;IAE1E,OAAO,CAAC,MAAM,CAAuC;IAErD,YACU,aAAa,EAAE,aAAa,EACpC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,EAWtD;IAED,MAAM,CAAC,MAAM,CACX,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,EACrD,YAAY,EAAE,YAAY,GACzB,gBAAgB,CAGlB;IAED,+BAA+B;IAClB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAG1C;IAED,gCAAgC;IACnB,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAG5C;IAED;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC;QAC9B,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACvD,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACtD,CAAC,CAMD;IAED;;OAEG;IACU,WAAW,kBAiBvB;IAED,0EAA0E;IAC7D,SAAS,IAAI,OAAO,CAAC;QAChC,qBAAqB,CAAC,aAAa,EAAE,MAAM,CAAC;QAC5C,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC;KAC3C,CAAC,CAMD;IAED;;;;OAIG;IACU,cAAc,CACzB,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE;QACJ,wBAAwB;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,mBAYP;IAED,4CAA4C;IAC/B,kBAAkB,kBAW9B;IAED,6DAA6D;IAChD,iBAAiB,qCAO7B;IAED;;;OAGG;IACU,YAAY,CAAC,OAAO,EAAE,MAAM,iBAOxC;IAED;;;OAGG;IACI,YAAY,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,iBA+B1D;IAED;;;OAGG;IACI,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCvE;IAED;;;OAGG;IACU,OAAO,CAClB,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,iBAMzG;IAED;;OAEG;IACU,UAAU,kBAOtB;IAED,4CAA4C;IAC/B,oBAAoB,kBAMhC;IAED;;;OAGG;IACU,sBAAsB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,iBAIrE;IAED;;;OAGG;IACU,qBAAqB,CAAC,QAAQ,EAAE,MAAM,iBAUlD;CACF"}
|