@aztec/aztec-node 0.0.1-commit.d3ec352c → 0.0.1-commit.fcb71a6
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/aztec-node/config.d.ts +5 -2
- package/dest/aztec-node/config.d.ts.map +1 -1
- package/dest/aztec-node/config.js +7 -1
- package/dest/aztec-node/server.d.ts +10 -22
- package/dest/aztec-node/server.d.ts.map +1 -1
- package/dest/aztec-node/server.js +61 -33
- package/package.json +24 -24
- package/src/aztec-node/config.ts +12 -8
- package/src/aztec-node/server.ts +86 -47
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ArchiverConfig } from '@aztec/archiver/config';
|
|
2
|
-
import { type GenesisStateConfig
|
|
2
|
+
import { type GenesisStateConfig } from '@aztec/ethereum/config';
|
|
3
|
+
import { type L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
4
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
4
5
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
5
6
|
import { type KeyStore } from '@aztec/node-keystore';
|
|
@@ -23,6 +24,8 @@ export type AztecNodeConfig = ArchiverConfig & SequencerClientConfig & Validator
|
|
|
23
24
|
disableValidator: boolean;
|
|
24
25
|
/** Whether to skip waiting for the archiver to be fully synced before starting other services */
|
|
25
26
|
skipArchiverInitialSync: boolean;
|
|
27
|
+
/** A flag to force verification of tx Chonk proofs. Only used for testnet */
|
|
28
|
+
debugForceTxProofVerification: boolean;
|
|
26
29
|
};
|
|
27
30
|
export declare const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig>;
|
|
28
31
|
/**
|
|
@@ -31,4 +34,4 @@ export declare const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig
|
|
|
31
34
|
*/
|
|
32
35
|
export declare function getConfigEnvVars(): AztecNodeConfig;
|
|
33
36
|
export declare function createKeyStoreForValidator(config: TxSenderConfig & SequencerClientConfig & SharedNodeConfig): KeyStore | undefined;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUEwQixNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE4QixNQUFNLHdCQUF3QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxLQUFLLG1CQUFtQixFQUE4QixNQUFNLHVDQUF1QyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE4QyxNQUFNLDBCQUEwQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBSWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBNEIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQXFCLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLEtBQUssc0JBQXNCLEVBQThCLE1BQU0sNkJBQTZCLENBQUM7QUFDdEcsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssY0FBYyxFQUNuQiw2QkFBNkIsRUFDOUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd4QyxPQUFPLEVBQUUsS0FBSyxhQUFhLEVBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQWlDLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0csT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQTRCLE1BQU0sMkJBQTJCLENBQUM7QUFJNUYsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUEwQixNQUFNLHVCQUF1QixDQUFDO0FBRXBGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxLQUFLLHFCQUFxQixFQUFFLENBQUM7QUFFckU7O0dBRUc7QUFDSCxNQUFNLE1BQU0sZUFBZSxHQUFHLGNBQWMsR0FDMUMscUJBQXFCLEdBQ3JCLHFCQUFxQixHQUNyQixzQkFBc0IsR0FDdEIsZ0JBQWdCLEdBQ2hCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxjQUFjLEdBQUcsb0JBQW9CLEdBQUcsWUFBWSxDQUFDLEdBQ2xGLFNBQVMsR0FDVCxlQUFlLEdBQ2YsY0FBYyxHQUNkLGdCQUFnQixHQUNoQixrQkFBa0IsR0FDbEIsYUFBYSxHQUNiLGFBQWEsR0FBRztJQUNkLDZCQUE2QjtJQUM3QixXQUFXLEVBQUUsbUJBQW1CLENBQUM7SUFDakMsc0RBQXNEO0lBQ3RELGdCQUFnQixFQUFFLE9BQU8sQ0FBQztJQUMxQixpR0FBaUc7SUFDakcsdUJBQXVCLEVBQUUsT0FBTyxDQUFDO0lBRWpDLDZFQUE2RTtJQUM3RSw2QkFBNkIsRUFBRSxPQUFPLENBQUM7Q0FDeEMsQ0FBQztBQUVKLGVBQU8sTUFBTSx1QkFBdUIsRUFBRSxrQkFBa0IsQ0FBQyxlQUFlLENBaUN2RSxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLGVBQWUsQ0FFbEQ7QUFvRUQsd0JBQWdCLDBCQUEwQixDQUN4QyxNQUFNLEVBQUUsY0FBYyxHQUFHLHFCQUFxQixHQUFHLGdCQUFnQixHQUNoRSxRQUFRLEdBQUcsU0FBUyxDQU10QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/aztec-node/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AACrF,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/aztec-node/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,uCAAuC,CAAC;AAC7G,OAAO,EAAE,KAAK,kBAAkB,EAA8C,MAAM,0BAA0B,CAAC;AAE/G,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,KAAK,sBAAsB,EAA8B,MAAM,6BAA6B,CAAC;AACtG,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,6BAA6B,EAC9B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,KAAK,qBAAqB,EAAiC,MAAM,gCAAgC,CAAC;AAC3G,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,2BAA2B,CAAC;AAI5F,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,KAAK,qBAAqB,EAAE,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,GAC1C,qBAAqB,GACrB,qBAAqB,GACrB,sBAAsB,GACtB,gBAAgB,GAChB,IAAI,CAAC,sBAAsB,EAAE,cAAc,GAAG,oBAAoB,GAAG,YAAY,CAAC,GAClF,SAAS,GACT,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,aAAa,GACb,aAAa,GAAG;IACd,6BAA6B;IAC7B,WAAW,EAAE,mBAAmB,CAAC;IACjC,sDAAsD;IACtD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iGAAiG;IACjG,uBAAuB,EAAE,OAAO,CAAC;IAEjC,6EAA6E;IAC7E,6BAA6B,EAAE,OAAO,CAAC;CACxC,CAAC;AAEJ,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CAiCvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,CAElD;AAoED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,cAAc,GAAG,qBAAqB,GAAG,gBAAgB,GAChE,QAAQ,GAAG,SAAS,CAMtB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { archiverConfigMappings } from '@aztec/archiver/config';
|
|
2
|
-
import { genesisStateConfigMappings
|
|
2
|
+
import { genesisStateConfigMappings } from '@aztec/ethereum/config';
|
|
3
|
+
import { l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
4
|
import { booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
4
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
6
|
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
@@ -43,6 +44,11 @@ export const aztecNodeConfigMappings = {
|
|
|
43
44
|
env: 'SKIP_ARCHIVER_INITIAL_SYNC',
|
|
44
45
|
description: 'Whether to skip waiting for the archiver to be fully synced before starting other services.',
|
|
45
46
|
...booleanConfigHelper(false)
|
|
47
|
+
},
|
|
48
|
+
debugForceTxProofVerification: {
|
|
49
|
+
env: 'DEBUG_FORCE_TX_PROOF_VERIFICATION',
|
|
50
|
+
description: 'Whether to skip waiting for the archiver to be fully synced before starting other services.',
|
|
51
|
+
...booleanConfigHelper(false)
|
|
46
52
|
}
|
|
47
53
|
};
|
|
48
54
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type BlobClientInterface } from '@aztec/blob-client/client';
|
|
2
2
|
import { ARCHIVE_HEIGHT, type L1_TO_L2_MSG_TREE_HEIGHT, type NOTE_HASH_TREE_HEIGHT, type NULLIFIER_TREE_HEIGHT, type PUBLIC_DATA_TREE_HEIGHT } from '@aztec/constants';
|
|
3
3
|
import { type EpochCacheInterface } from '@aztec/epoch-cache';
|
|
4
|
-
import {
|
|
4
|
+
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
5
5
|
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
6
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
7
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
8
8
|
import { type Logger } from '@aztec/foundation/log';
|
|
9
9
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
10
10
|
import { MembershipWitness, SiblingPath } from '@aztec/foundation/trees';
|
|
@@ -17,7 +17,7 @@ import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddre
|
|
|
17
17
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
18
18
|
import { type AztecNode, type AztecNodeAdmin, type AztecNodeAdminConfig, type GetContractClassLogsResponse, type GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
19
19
|
import { type AllowedElement, type ClientProtocolCircuitVerifier, type L2LogsSource, type Service, type WorldStateSyncStatus, type WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
20
|
-
import type { LogFilter,
|
|
20
|
+
import type { LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
21
21
|
import { type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
22
22
|
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
23
23
|
import type { Offense, SlashPayloadRound } from '@aztec/stdlib/slashing';
|
|
@@ -52,10 +52,11 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
52
52
|
private proofVerifier;
|
|
53
53
|
private telemetry;
|
|
54
54
|
private log;
|
|
55
|
+
private blobClient?;
|
|
55
56
|
private metrics;
|
|
56
57
|
private isUploadingSnapshot;
|
|
57
58
|
readonly tracer: Tracer;
|
|
58
|
-
constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, slasherClient: SlasherClientInterface | undefined, validatorsSentinel: Sentinel | undefined, epochPruneWatcher: EpochPruneWatcher | undefined, l1ChainId: number, version: number, globalVariableBuilder: GlobalVariableBuilderInterface, epochCache: EpochCacheInterface, packageVersion: string, proofVerifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, log?: Logger);
|
|
59
|
+
constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, slasherClient: SlasherClientInterface | undefined, validatorsSentinel: Sentinel | undefined, epochPruneWatcher: EpochPruneWatcher | undefined, l1ChainId: number, version: number, globalVariableBuilder: GlobalVariableBuilderInterface, epochCache: EpochCacheInterface, packageVersion: string, proofVerifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, log?: Logger, blobClient?: BlobClientInterface | undefined);
|
|
59
60
|
getWorldStateSyncStatus(): Promise<WorldStateSyncStatus>;
|
|
60
61
|
getL2Tips(): Promise<import("@aztec/stdlib/block").L2Tips>;
|
|
61
62
|
/**
|
|
@@ -68,7 +69,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
68
69
|
logger?: Logger;
|
|
69
70
|
publisher?: SequencerPublisher;
|
|
70
71
|
dateProvider?: DateProvider;
|
|
71
|
-
|
|
72
|
+
blobClient?: BlobClientInterface;
|
|
72
73
|
p2pClientDeps?: P2PClientDeps<P2PClientType.Full>;
|
|
73
74
|
}, options?: {
|
|
74
75
|
prefilledPublicData?: PublicDataTreeLeaf[];
|
|
@@ -150,21 +151,8 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
150
151
|
getChainId(): Promise<number>;
|
|
151
152
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
152
153
|
getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
* @param from - The block number from which to begin retrieving logs.
|
|
156
|
-
* @param limit - The maximum number of blocks to retrieve logs from.
|
|
157
|
-
* @returns An array of private logs from the specified range of blocks.
|
|
158
|
-
*/
|
|
159
|
-
getPrivateLogs(from: BlockNumber, limit: number): Promise<PrivateLog[]>;
|
|
160
|
-
/**
|
|
161
|
-
* Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
|
|
162
|
-
* @param tags - The tags to filter the logs by.
|
|
163
|
-
* @param logsPerTag - The maximum number of logs to return for each tag. By default no limit is set
|
|
164
|
-
* @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
|
|
165
|
-
* that tag.
|
|
166
|
-
*/
|
|
167
|
-
getLogsByTags(tags: Fr[], logsPerTag?: number): Promise<TxScopedL2Log[][]>;
|
|
154
|
+
getPrivateLogsByTags(tags: SiloedTag[]): Promise<TxScopedL2Log[][]>;
|
|
155
|
+
getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[]): Promise<TxScopedL2Log[][]>;
|
|
168
156
|
/**
|
|
169
157
|
* Gets public logs based on the provided filter.
|
|
170
158
|
* @param filter - The filter to apply to the logs.
|
|
@@ -341,4 +329,4 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
341
329
|
getSlashPayloads(): Promise<SlashPayloadRound[]>;
|
|
342
330
|
getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
|
|
343
331
|
}
|
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQXdCLE1BQU0seUJBQXlCLENBQUM7QUFDN0YsT0FBTyxFQUNMLGNBQWMsRUFFZCxLQUFLLHdCQUF3QixFQUM3QixLQUFLLHFCQUFxQixFQUMxQixLQUFLLHFCQUFxQixFQUMxQixLQUFLLHVCQUF1QixFQUM3QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBYyxLQUFLLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUUsT0FBTyxFQUNMLEtBQUssbUJBQW1CLEVBS3pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsWUFBWSxFQUFTLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSXpFLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLGFBQWEsRUFBb0QsTUFBTSxZQUFZLENBQUM7QUFFNUcsT0FBTyxFQUdMLGVBQWUsRUFDZixLQUFLLGtCQUFrQixFQUV4QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsS0FBSyxzQkFBc0IsRUFHNUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7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
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFNdkYsT0FBTyxFQUNMLGNBQWMsRUFFZCxLQUFLLHdCQUF3QixFQUM3QixLQUFLLHFCQUFxQixFQUMxQixLQUFLLHFCQUFxQixFQUMxQixLQUFLLHVCQUF1QixFQUM3QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBYyxLQUFLLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJMUUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxZQUFZLEVBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFPekUsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUssYUFBYSxFQUFvRCxNQUFNLFlBQVksQ0FBQztBQUU1RyxPQUFPLEVBR0wsZUFBZSxFQUNmLEtBQUssa0JBQWtCLEVBRXhCLE1BQU0seUJBQXlCLENBQUM7QUFHakMsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixLQUFLLHNCQUFzQixFQUc1QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBQ25CLEtBQUssV0FBVyxFQUNoQixLQUFLLE9BQU8sRUFFWixLQUFLLGFBQWEsRUFDbEIsS0FBSyxnQkFBZ0IsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFDVixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixRQUFRLEVBQ1IseUJBQXlCLEVBQzFCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFDTCxLQUFLLFNBQVMsRUFDZCxLQUFLLGNBQWMsRUFDbkIsS0FBSyxvQkFBb0IsRUFFekIsS0FBSyw0QkFBNEIsRUFDakMsS0FBSyxxQkFBcUIsRUFDM0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBQ25CLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssWUFBWSxFQUNqQixLQUFLLE9BQU8sRUFDWixLQUFLLG9CQUFvQixFQUN6QixLQUFLLHNCQUFzQixFQUU1QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25GLE9BQU8sRUFBYSxLQUFLLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sS0FBSyxFQUF5QixrQkFBa0IsRUFBOEIsTUFBTSxxQkFBcUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEcsT0FBTyxFQUNMLEtBQUssV0FBVyxFQUNoQixLQUFLLHFCQUFxQixJQUFJLDhCQUE4QixFQUM1RCxLQUFLLGVBQWUsRUFDcEIsc0JBQXNCLEVBQ3RCLEVBQUUsRUFDRixLQUFLLE1BQU0sRUFDWCxTQUFTLEVBRVQsS0FBSyxrQkFBa0IsRUFDeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RixPQUFPLEVBRUwsS0FBSyxlQUFlLEVBQ3BCLEtBQUssU0FBUyxFQUNkLEtBQUssTUFBTSxFQUdaLE1BQU0seUJBQXlCLENBQUM7QUFZakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBOEIsTUFBTSxhQUFhLENBQUM7QUFHL0U7O0dBRUc7QUFDSCxxQkFBYSxnQkFBaUIsWUFBVyxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVM7O0lBU3pFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZUFBZTtJQUNqQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHO0lBQ2pDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2hFLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFlBQVk7SUFDM0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0I7SUFDekQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBbUI7SUFDM0QsU0FBUyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxzQkFBc0I7SUFDakUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsZUFBZSxHQUFHLFNBQVM7SUFDekQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLEdBQUcsU0FBUztJQUNwRSxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsR0FBRyxTQUFTO0lBQzNELFNBQVMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLEdBQUcsU0FBUztJQUNuRSxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNO0lBQ3BDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU07SUFDbEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSw4QkFBOEI7SUFDeEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CO0lBQ2xELFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLE1BQU07SUFDekMsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsVUFBVSxDQUFDO0lBM0JyQixPQUFPLENBQUMsT0FBTyxDQUFjO0lBRzdCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBUztJQUVwQyxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLFlBQ1ksTUFBTSxFQUFFLGVBQWUsRUFDZCxTQUFTLEVBQUUsR0FBRyxFQUNkLFdBQVcsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUM3QyxVQUFVLEVBQUUsWUFBWSxFQUN4QixrQkFBa0IsRUFBRSxrQkFBa0IsRUFDdEMsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQ3hDLHNCQUFzQixFQUFFLHNCQUFzQixFQUM5QyxTQUFTLEVBQUUsZUFBZSxHQUFHLFNBQVMsRUFDdEMsYUFBYSxFQUFFLHNCQUFzQixHQUFHLFNBQVMsRUFDakQsa0JBQWtCLEVBQUUsUUFBUSxHQUFHLFNBQVMsRUFDeEMsaUJBQWlCLEVBQUUsaUJBQWlCLEdBQUcsU0FBUyxFQUNoRCxTQUFTLEVBQUUsTUFBTSxFQUNqQixPQUFPLEVBQUUsTUFBTSxFQUNmLHFCQUFxQixFQUFFLDhCQUE4QixFQUNyRCxVQUFVLEVBQUUsbUJBQW1CLEVBQy9CLGNBQWMsRUFBRSxNQUFNLEVBQ2pDLGFBQWEsRUFBRSw2QkFBNkIsRUFDNUMsU0FBUyxHQUFFLGVBQXNDLEVBQ2pELEdBQUcsU0FBdUIsRUFDMUIsVUFBVSxDQUFDLGlDQUFxQixFQU96QztJQUVZLHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUdwRTtJQUVNLFNBQVMsa0RBRWY7SUFFRDs7OztPQUlHO0lBQ0gsT0FBb0IsYUFBYSxDQUMvQixXQUFXLEVBQUUsZUFBZSxFQUM1QixJQUFJLEdBQUU7UUFDSixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7UUFDNUIsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ2hCLFNBQVMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDO1FBQy9CLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQztRQUM1QixVQUFVLENBQUMsRUFBRSxtQkFBbUIsQ0FBQztRQUNqQyxhQUFhLENBQUMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlDLEVBQ04sT0FBTyxHQUFFO1FBQ1AsbUJBQW1CLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBQzNDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFDO0tBQ3pCLEdBQ0wsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBdVUzQjtJQUVEOzs7T0FHRztJQUNJLFlBQVksSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUVqRDtJQUVNLGNBQWMsSUFBSSxhQUFhLENBRXJDO0lBRU0scUJBQXFCLElBQUksa0JBQWtCLENBRWpEO0lBRU0sTUFBTSxJQUFJLEdBQUcsQ0FFbkI7SUFFRDs7O09BR0c7SUFDSSxzQkFBc0IsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FFNUQ7SUFFTSxhQUFhLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FFbEQ7SUFFWSxxQkFBcUIsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FFOUQ7SUFFRDs7O09BR0c7SUFDSSxPQUFPLHFCQUViO0lBRVksV0FBVyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FvQjVDO0lBRUQ7Ozs7T0FJRztJQUNVLFFBQVEsQ0FBQyxNQUFNLEVBQUUsY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBRzFFO0lBRUQ7Ozs7T0FJRztJQUNVLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBR3ZFO0lBRUQ7Ozs7T0FJRztJQUNVLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FHeEU7SUFFRDs7Ozs7T0FLRztJQUNVLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBRTNFO0lBRVksa0JBQWtCLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBRTdGO0lBRUQ7OztPQUdHO0lBQ1Usa0JBQWtCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUVsRDtJQUVZLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FNbEQ7SUFFRDs7O09BR0c7SUFDVSxjQUFjLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUVsRDtJQUVZLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FFeEQ7SUFFRDs7O09BR0c7SUFDSSxjQUFjLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUV2QztJQUVEOzs7T0FHRztJQUNJLFVBQVUsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRW5DO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFbkM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsQ0FFeEU7SUFFTSxXQUFXLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsMkJBQTJCLEdBQUcsU0FBUyxDQUFDLENBRTFGO0lBRU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBRXpFO0lBRU0sK0JBQStCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FFN0c7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBRS9EO0lBRUQ7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBRTdFO0lBRUQ7OztPQUdHO0lBQ1UsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLGlCQUV6QjtJQW1CWSxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBZ0I1RDtJQUVNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLENBRXZFO0lBRUQ7O09BRUc7SUFDVSxJQUFJLGtCQWFoQjtJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRWxFO0lBRU0saUJBQWlCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUUxQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUUxRDtJQUVEOzs7O09BSUc7SUFDVSxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUUzRDtJQUVEOzs7Ozs7O09BT0c7SUFDVSxpQkFBaUIsQ0FDNUIsV0FBVyxFQUFFLGNBQWMsRUFDM0IsTUFBTSxFQUFFLFlBQVksRUFDcEIsVUFBVSxFQUFFLEVBQUUsRUFBRSxHQUNmLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBeUQ5QztJQUVEOzs7OztPQUtHO0lBQ1UsdUJBQXVCLENBQ2xDLFdBQVcsRUFBRSxjQUFjLEVBQzNCLFNBQVMsRUFBRSxNQUFNLEdBQ2hCLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxxQkFBcUIsQ0FBQyxDQUFDLENBR3BEO0lBRUQ7Ozs7O09BS0c7SUFDVSxzQkFBc0IsQ0FDakMsV0FBVyxFQUFFLGNBQWMsRUFDM0IsU0FBUyxFQUFFLE1BQU0sR0FDaEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLHFCQUFxQixDQUFDLENBQUMsQ0FHcEQ7SUFFWSwyQkFBMkIsQ0FDdEMsV0FBVyxFQUFFLGNBQWMsRUFDM0IsT0FBTyxFQUFFLEVBQUUsR0FDVixPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxjQUFjLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FNL0Q7SUFFWSw0QkFBNEIsQ0FDdkMsV0FBVyxFQUFFLGNBQWMsRUFDM0IsUUFBUSxFQUFFLEVBQUUsR0FDWCxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxxQkFBcUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQVN0RTtJQUVEOzs7OztPQUtHO0lBQ1UsaUNBQWlDLENBQzVDLFdBQVcsRUFBRSxjQUFjLEVBQzNCLGFBQWEsRUFBRSxFQUFFLEdBQ2hCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBUzdFO0lBRVkscUJBQXFCLENBQUMsYUFBYSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUt0RjtJQUVEOzs7O09BSUc7SUFDVSxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHdEU7SUFFRDs7OztPQUlHO0lBQ1UsaUJBQWlCLENBQUMsV0FBVyxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FLdkY7SUFFRDs7Ozs7T0FLRztJQUNVLHFCQUFxQixDQUNoQyxXQUFXLEVBQUUsY0FBYyxFQUMzQixTQUFTLEVBQUUsTUFBTSxHQUNoQixPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FHN0M7SUFFRDs7Ozs7T0FLRztJQUNVLHdCQUF3QixDQUNuQyxXQUFXLEVBQUUsY0FBYyxFQUMzQixTQUFTLEVBQUUsTUFBTSxHQUNoQixPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sdUJBQXVCLENBQUMsQ0FBQyxDQUd0RDtJQUVEOzs7OztPQUtHO0lBQ1UsNkJBQTZCLENBQ3hDLFdBQVcsRUFBRSxjQUFjLEVBQzNCLFNBQVMsRUFBRSxFQUFFLEdBQ1osT0FBTyxDQUFDLDBCQUEwQixHQUFHLFNBQVMsQ0FBQyxDQWNqRDtJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDVSxnQ0FBZ0MsQ0FDM0MsV0FBVyxFQUFFLGNBQWMsRUFDM0IsU0FBUyxFQUFFLEVBQUUsR0FDWixPQUFPLENBQUMsMEJBQTBCLEdBQUcsU0FBUyxDQUFDLENBY2pEO0lBRUssb0JBQW9CLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsQ0FhNUc7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ1Usa0JBQWtCLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQWExRztJQUVEOzs7T0FHRztJQUNVLGNBQWMsQ0FBQyxXQUFXLEdBQUUsY0FBeUIsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUtwRztJQUVEOzs7O09BSUc7SUFDVSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBRWpGO0lBRUQ7Ozs7T0FJRztJQUNVLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FFbEY7SUFFRDs7O1FBR0k7SUFJUyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixVQUFRLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBd0VwRztJQUVZLFNBQVMsQ0FDcEIsRUFBRSxFQUFFLEVBQUUsRUFDTixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxHQUFFO1FBQUUsWUFBWSxDQUFDLEVBQUUsT0FBTyxDQUFDO1FBQUMsa0JBQWtCLENBQUMsRUFBRSxPQUFPLENBQUE7S0FBTyxHQUNsRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FtQjdCO0lBRU0sU0FBUyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUloRDtJQUVZLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWUzRTtJQUVNLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQU94RTtJQUVNLGtDQUFrQyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTdFO0lBRU0sa0JBQWtCLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUVwRDtJQUVNLGlCQUFpQixDQUN0QixnQkFBZ0IsRUFBRSxVQUFVLEVBQzVCLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFDckIsTUFBTSxDQUFDLEVBQUUsVUFBVSxHQUNsQixPQUFPLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLENBRTNDO0lBRVksbUJBQW1CLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBMENoRTtJQUVZLFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBa0NoRjtJQUVZLFNBQVMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBSXRDO0lBRU0sVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLakM7SUFFTSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUt0RDtJQUVNLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsS0FBSyxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FTN0U7Q0F3Q0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,14 +6,17 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
6
6
|
}
|
|
7
7
|
import { createArchiver } from '@aztec/archiver';
|
|
8
8
|
import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
|
|
9
|
-
import {
|
|
9
|
+
import { createBlobClient } from '@aztec/blob-client/client';
|
|
10
|
+
import { createReadOnlyFileStoreBlobClients, createWritableFileStoreBlobClient } from '@aztec/blob-client/filestore';
|
|
10
11
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
11
12
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
12
|
-
import {
|
|
13
|
+
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
14
|
+
import { getPublicClient } from '@aztec/ethereum/client';
|
|
15
|
+
import { RegistryContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
13
16
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
14
17
|
import { compactArray, pick } from '@aztec/foundation/collection';
|
|
18
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
15
19
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
16
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
17
20
|
import { BadRequestError } from '@aztec/foundation/json-rpc';
|
|
18
21
|
import { createLogger } from '@aztec/foundation/log';
|
|
19
22
|
import { count } from '@aztec/foundation/string';
|
|
@@ -21,10 +24,11 @@ import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
|
21
24
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
22
25
|
import { KeystoreManager, loadKeystores, mergeKeystores } from '@aztec/node-keystore';
|
|
23
26
|
import { trySnapshotSync, uploadSnapshot } from '@aztec/node-lib/actions';
|
|
24
|
-
import { createL1TxUtilsWithBlobsFromEthSigner } from '@aztec/node-lib/factories';
|
|
27
|
+
import { createForwarderL1TxUtilsFromEthSigner, createL1TxUtilsWithBlobsFromEthSigner } from '@aztec/node-lib/factories';
|
|
25
28
|
import { createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
|
|
26
29
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
27
30
|
import { BlockBuilder, GlobalVariableBuilder, SequencerClient, createValidatorForAcceptingTxs } from '@aztec/sequencer-client';
|
|
31
|
+
import { CheckpointsBuilder } from '@aztec/sequencer-client';
|
|
28
32
|
import { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
29
33
|
import { AttestationsBlockWatcher, EpochPruneWatcher, createSlasher } from '@aztec/slasher';
|
|
30
34
|
import { CollectionLimitsConfig, PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
@@ -68,11 +72,12 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
68
72
|
proofVerifier;
|
|
69
73
|
telemetry;
|
|
70
74
|
log;
|
|
75
|
+
blobClient;
|
|
71
76
|
metrics;
|
|
72
77
|
// Prevent two snapshot operations to happen simultaneously
|
|
73
78
|
isUploadingSnapshot;
|
|
74
79
|
tracer;
|
|
75
|
-
constructor(config, p2pClient, blockSource, logsSource, contractDataSource, l1ToL2MessageSource, worldStateSynchronizer, sequencer, slasherClient, validatorsSentinel, epochPruneWatcher, l1ChainId, version, globalVariableBuilder, epochCache, packageVersion, proofVerifier, telemetry = getTelemetryClient(), log = createLogger('node')){
|
|
80
|
+
constructor(config, p2pClient, blockSource, logsSource, contractDataSource, l1ToL2MessageSource, worldStateSynchronizer, sequencer, slasherClient, validatorsSentinel, epochPruneWatcher, l1ChainId, version, globalVariableBuilder, epochCache, packageVersion, proofVerifier, telemetry = getTelemetryClient(), log = createLogger('node'), blobClient){
|
|
76
81
|
this.config = config;
|
|
77
82
|
this.p2pClient = p2pClient;
|
|
78
83
|
this.blockSource = blockSource;
|
|
@@ -92,6 +97,7 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
92
97
|
this.proofVerifier = proofVerifier;
|
|
93
98
|
this.telemetry = telemetry;
|
|
94
99
|
this.log = log;
|
|
100
|
+
this.blobClient = blobClient;
|
|
95
101
|
this.isUploadingSnapshot = false;
|
|
96
102
|
this.metrics = new NodeMetrics(telemetry, 'AztecNodeService');
|
|
97
103
|
this.tracer = telemetry.getTracer('AztecNodeService');
|
|
@@ -117,9 +123,6 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
117
123
|
const packageVersion = getPackageVersion() ?? '';
|
|
118
124
|
const telemetry = deps.telemetry ?? getTelemetryClient();
|
|
119
125
|
const dateProvider = deps.dateProvider ?? new DateProvider();
|
|
120
|
-
const blobSinkClient = deps.blobSinkClient ?? createBlobSinkClient(config, {
|
|
121
|
-
logger: createLogger('node:blob-sink:client')
|
|
122
|
-
});
|
|
123
126
|
const ethereumChain = createEthereumChain(config.l1RpcUrls, config.l1ChainId);
|
|
124
127
|
// Build a key store from file if given or from environment otherwise
|
|
125
128
|
let keyStoreManager;
|
|
@@ -150,7 +153,9 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
150
153
|
}
|
|
151
154
|
const publicClient = createPublicClient({
|
|
152
155
|
chain: ethereumChain.chainInfo,
|
|
153
|
-
transport: fallback(config.l1RpcUrls.map((url)=>http(url
|
|
156
|
+
transport: fallback(config.l1RpcUrls.map((url)=>http(url, {
|
|
157
|
+
batch: false
|
|
158
|
+
}))),
|
|
154
159
|
pollingInterval: config.viemPollingIntervalMS
|
|
155
160
|
});
|
|
156
161
|
const l1ContractsAddresses = await RegistryContract.collectAddresses(publicClient, config.l1Contracts.registryAddress, config.rollupVersion ?? 'canonical');
|
|
@@ -169,13 +174,27 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
169
174
|
if (config.rollupVersion !== Number(rollupVersionFromRollup)) {
|
|
170
175
|
log.warn(`Registry looked up and returned a rollup with version (${config.rollupVersion}), but this does not match with version detected from the rollup directly: (${rollupVersionFromRollup}).`);
|
|
171
176
|
}
|
|
177
|
+
const blobFileStoreMetadata = {
|
|
178
|
+
l1ChainId: config.l1ChainId,
|
|
179
|
+
rollupVersion: config.rollupVersion,
|
|
180
|
+
rollupAddress: config.l1Contracts.rollupAddress.toString()
|
|
181
|
+
};
|
|
182
|
+
const [fileStoreClients, fileStoreUploadClient] = await Promise.all([
|
|
183
|
+
createReadOnlyFileStoreBlobClients(config.blobFileStoreUrls, blobFileStoreMetadata, log),
|
|
184
|
+
createWritableFileStoreBlobClient(config.blobFileStoreUploadUrl, blobFileStoreMetadata, log)
|
|
185
|
+
]);
|
|
186
|
+
const blobClient = deps.blobClient ?? createBlobClient(config, {
|
|
187
|
+
logger: createLogger('node:blob-client:client'),
|
|
188
|
+
fileStoreClients,
|
|
189
|
+
fileStoreUploadClient
|
|
190
|
+
});
|
|
172
191
|
// attempt snapshot sync if possible
|
|
173
192
|
await trySnapshotSync(config, log);
|
|
174
193
|
const epochCache = await EpochCache.create(config.l1Contracts.rollupAddress, config, {
|
|
175
194
|
dateProvider
|
|
176
195
|
});
|
|
177
196
|
const archiver = await createArchiver(config, {
|
|
178
|
-
|
|
197
|
+
blobClient,
|
|
179
198
|
epochCache,
|
|
180
199
|
telemetry,
|
|
181
200
|
dateProvider
|
|
@@ -184,7 +203,7 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
184
203
|
});
|
|
185
204
|
// now create the merkle trees and the world state synchronizer
|
|
186
205
|
const worldStateSynchronizer = await createWorldStateSynchronizer(config, archiver, options.prefilledPublicData, telemetry);
|
|
187
|
-
const circuitVerifier = config.realProofs ? await BBCircuitVerifier.new(config) : new TestCircuitVerifier(config.proverTestVerificationDelayMs);
|
|
206
|
+
const circuitVerifier = config.realProofs || config.debugForceTxProofVerification ? await BBCircuitVerifier.new(config) : new TestCircuitVerifier(config.proverTestVerificationDelayMs);
|
|
188
207
|
if (!config.realProofs) {
|
|
189
208
|
log.warn(`Aztec node is accepting fake proofs`);
|
|
190
209
|
}
|
|
@@ -209,7 +228,8 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
209
228
|
blockBuilder,
|
|
210
229
|
blockSource: archiver,
|
|
211
230
|
l1ToL2MessageSource: archiver,
|
|
212
|
-
keyStoreManager
|
|
231
|
+
keyStoreManager,
|
|
232
|
+
fileStoreBlobUploadClient: fileStoreUploadClient
|
|
213
233
|
});
|
|
214
234
|
// If we have a validator client, register it as a source of offenses for the slasher,
|
|
215
235
|
// and have it register callbacks on the p2p client *before* we start it, otherwise messages
|
|
@@ -264,13 +284,20 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
264
284
|
// Validator enabled, create/start relevant service
|
|
265
285
|
let sequencer;
|
|
266
286
|
let slasherClient;
|
|
267
|
-
if (!config.disableValidator) {
|
|
287
|
+
if (!config.disableValidator && validatorClient) {
|
|
268
288
|
// We create a slasher only if we have a sequencer, since all slashing actions go through the sequencer publisher
|
|
269
289
|
// as they are executed when the node is selected as proposer.
|
|
270
290
|
const validatorAddresses = keyStoreManager ? NodeKeystoreAdapter.fromKeyStoreManager(keyStoreManager).getAddresses() : [];
|
|
271
291
|
slasherClient = await createSlasher(config, config.l1Contracts, getPublicClient(config), watchers, dateProvider, epochCache, validatorAddresses, undefined);
|
|
272
292
|
await slasherClient.start();
|
|
273
|
-
const l1TxUtils = await
|
|
293
|
+
const l1TxUtils = config.publisherForwarderAddress ? await createForwarderL1TxUtilsFromEthSigner(publicClient, keyStoreManager.createAllValidatorPublisherSigners(), config.publisherForwarderAddress, {
|
|
294
|
+
...config,
|
|
295
|
+
scope: 'sequencer'
|
|
296
|
+
}, {
|
|
297
|
+
telemetry,
|
|
298
|
+
logger: log.createChild('l1-tx-utils'),
|
|
299
|
+
dateProvider
|
|
300
|
+
}) : await createL1TxUtilsWithBlobsFromEthSigner(publicClient, keyStoreManager.createAllValidatorPublisherSigners(), {
|
|
274
301
|
...config,
|
|
275
302
|
scope: 'sequencer'
|
|
276
303
|
}, {
|
|
@@ -279,6 +306,11 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
279
306
|
dateProvider
|
|
280
307
|
});
|
|
281
308
|
// Create and start the sequencer client
|
|
309
|
+
const checkpointsBuilder = new CheckpointsBuilder({
|
|
310
|
+
...config,
|
|
311
|
+
l1GenesisTime,
|
|
312
|
+
slotDuration: Number(slotDuration)
|
|
313
|
+
}, archiver, dateProvider, telemetry);
|
|
282
314
|
sequencer = await SequencerClient.new(config, {
|
|
283
315
|
...deps,
|
|
284
316
|
epochCache,
|
|
@@ -287,12 +319,12 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
287
319
|
p2pClient,
|
|
288
320
|
worldStateSynchronizer,
|
|
289
321
|
slasherClient,
|
|
290
|
-
|
|
322
|
+
checkpointsBuilder,
|
|
291
323
|
l2BlockSource: archiver,
|
|
292
324
|
l1ToL2MessageSource: archiver,
|
|
293
325
|
telemetry,
|
|
294
326
|
dateProvider,
|
|
295
|
-
|
|
327
|
+
blobClient,
|
|
296
328
|
nodeKeyStore: keyStoreManager
|
|
297
329
|
});
|
|
298
330
|
}
|
|
@@ -302,7 +334,13 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
302
334
|
} else if (sequencer) {
|
|
303
335
|
log.warn(`Sequencer created but not started`);
|
|
304
336
|
}
|
|
305
|
-
|
|
337
|
+
const globalVariableBuilder = new GlobalVariableBuilder({
|
|
338
|
+
...config,
|
|
339
|
+
rollupVersion: BigInt(config.rollupVersion),
|
|
340
|
+
l1GenesisTime,
|
|
341
|
+
slotDuration: Number(slotDuration)
|
|
342
|
+
});
|
|
343
|
+
return new AztecNodeService(config, p2pClient, archiver, archiver, archiver, archiver, worldStateSynchronizer, sequencer, slasherClient, validatorsSentinel, epochPruneWatcher, ethereumChain.chainInfo.id, config.rollupVersion, globalVariableBuilder, epochCache, packageVersion, proofVerifier, telemetry, log, blobClient);
|
|
306
344
|
}
|
|
307
345
|
/**
|
|
308
346
|
* Returns the sequencer client instance.
|
|
@@ -439,22 +477,11 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
439
477
|
getContract(address) {
|
|
440
478
|
return this.contractDataSource.getContract(address);
|
|
441
479
|
}
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
* @param from - The block number from which to begin retrieving logs.
|
|
445
|
-
* @param limit - The maximum number of blocks to retrieve logs from.
|
|
446
|
-
* @returns An array of private logs from the specified range of blocks.
|
|
447
|
-
*/ getPrivateLogs(from, limit) {
|
|
448
|
-
return this.logsSource.getPrivateLogs(from, limit);
|
|
480
|
+
getPrivateLogsByTags(tags) {
|
|
481
|
+
return this.logsSource.getPrivateLogsByTags(tags);
|
|
449
482
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
* @param tags - The tags to filter the logs by.
|
|
453
|
-
* @param logsPerTag - The maximum number of logs to return for each tag. By default no limit is set
|
|
454
|
-
* @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
|
|
455
|
-
* that tag.
|
|
456
|
-
*/ getLogsByTags(tags, logsPerTag) {
|
|
457
|
-
return this.logsSource.getLogsByTags(tags, logsPerTag);
|
|
483
|
+
getPublicLogsByTagsFromContract(contractAddress, tags) {
|
|
484
|
+
return this.logsSource.getPublicLogsByTagsFromContract(contractAddress, tags);
|
|
458
485
|
}
|
|
459
486
|
/**
|
|
460
487
|
* Gets public logs based on the provided filter.
|
|
@@ -523,6 +550,7 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
523
550
|
await tryStop(this.p2pClient);
|
|
524
551
|
await tryStop(this.worldStateSynchronizer);
|
|
525
552
|
await tryStop(this.blockSource);
|
|
553
|
+
await tryStop(this.blobClient);
|
|
526
554
|
await tryStop(this.telemetry);
|
|
527
555
|
this.log.info(`Stopped Aztec Node`);
|
|
528
556
|
}
|
|
@@ -660,7 +688,7 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
660
688
|
}
|
|
661
689
|
async getL1ToL2MessageBlock(l1ToL2Message) {
|
|
662
690
|
const messageIndex = await this.l1ToL2MessageSource.getL1ToL2MessageIndex(l1ToL2Message);
|
|
663
|
-
return messageIndex ? BlockNumber(InboxLeaf.
|
|
691
|
+
return messageIndex ? BlockNumber.fromCheckpointNumber(InboxLeaf.checkpointNumberFromIndex(messageIndex)) : undefined;
|
|
664
692
|
}
|
|
665
693
|
/**
|
|
666
694
|
* Returns whether an L1 to L2 message is synced by archiver and if it's ready to be included in a block.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/aztec-node",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.fcb71a6",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -66,29 +66,29 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
70
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
71
|
-
"@aztec/blob-
|
|
72
|
-
"@aztec/constants": "0.0.1-commit.
|
|
73
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
74
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
75
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
76
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
77
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
78
|
-
"@aztec/merkle-tree": "0.0.1-commit.
|
|
79
|
-
"@aztec/node-keystore": "0.0.1-commit.
|
|
80
|
-
"@aztec/node-lib": "0.0.1-commit.
|
|
81
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
82
|
-
"@aztec/p2p": "0.0.1-commit.
|
|
83
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
84
|
-
"@aztec/prover-client": "0.0.1-commit.
|
|
85
|
-
"@aztec/sequencer-client": "0.0.1-commit.
|
|
86
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
87
|
-
"@aztec/slasher": "0.0.1-commit.
|
|
88
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
89
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
90
|
-
"@aztec/validator-client": "0.0.1-commit.
|
|
91
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
69
|
+
"@aztec/archiver": "0.0.1-commit.fcb71a6",
|
|
70
|
+
"@aztec/bb-prover": "0.0.1-commit.fcb71a6",
|
|
71
|
+
"@aztec/blob-client": "0.0.1-commit.fcb71a6",
|
|
72
|
+
"@aztec/constants": "0.0.1-commit.fcb71a6",
|
|
73
|
+
"@aztec/epoch-cache": "0.0.1-commit.fcb71a6",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.fcb71a6",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.fcb71a6",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.fcb71a6",
|
|
77
|
+
"@aztec/l1-artifacts": "0.0.1-commit.fcb71a6",
|
|
78
|
+
"@aztec/merkle-tree": "0.0.1-commit.fcb71a6",
|
|
79
|
+
"@aztec/node-keystore": "0.0.1-commit.fcb71a6",
|
|
80
|
+
"@aztec/node-lib": "0.0.1-commit.fcb71a6",
|
|
81
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.fcb71a6",
|
|
82
|
+
"@aztec/p2p": "0.0.1-commit.fcb71a6",
|
|
83
|
+
"@aztec/protocol-contracts": "0.0.1-commit.fcb71a6",
|
|
84
|
+
"@aztec/prover-client": "0.0.1-commit.fcb71a6",
|
|
85
|
+
"@aztec/sequencer-client": "0.0.1-commit.fcb71a6",
|
|
86
|
+
"@aztec/simulator": "0.0.1-commit.fcb71a6",
|
|
87
|
+
"@aztec/slasher": "0.0.1-commit.fcb71a6",
|
|
88
|
+
"@aztec/stdlib": "0.0.1-commit.fcb71a6",
|
|
89
|
+
"@aztec/telemetry-client": "0.0.1-commit.fcb71a6",
|
|
90
|
+
"@aztec/validator-client": "0.0.1-commit.fcb71a6",
|
|
91
|
+
"@aztec/world-state": "0.0.1-commit.fcb71a6",
|
|
92
92
|
"koa": "^2.16.1",
|
|
93
93
|
"koa-router": "^13.1.1",
|
|
94
94
|
"tslib": "^2.4.0",
|
package/src/aztec-node/config.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { type ArchiverConfig, archiverConfigMappings } from '@aztec/archiver/config';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
type L1ContractAddresses,
|
|
5
|
-
genesisStateConfigMappings,
|
|
6
|
-
l1ContractAddressesMapping,
|
|
7
|
-
} from '@aztec/ethereum';
|
|
2
|
+
import { type GenesisStateConfig, genesisStateConfigMappings } from '@aztec/ethereum/config';
|
|
3
|
+
import { type L1ContractAddresses, l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresses';
|
|
8
4
|
import { type ConfigMappingsType, booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
9
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
10
6
|
import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
|
|
@@ -57,6 +53,9 @@ export type AztecNodeConfig = ArchiverConfig &
|
|
|
57
53
|
disableValidator: boolean;
|
|
58
54
|
/** Whether to skip waiting for the archiver to be fully synced before starting other services */
|
|
59
55
|
skipArchiverInitialSync: boolean;
|
|
56
|
+
|
|
57
|
+
/** A flag to force verification of tx Chonk proofs. Only used for testnet */
|
|
58
|
+
debugForceTxProofVerification: boolean;
|
|
60
59
|
};
|
|
61
60
|
|
|
62
61
|
export const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig> = {
|
|
@@ -87,6 +86,11 @@ export const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig> = {
|
|
|
87
86
|
description: 'Whether to skip waiting for the archiver to be fully synced before starting other services.',
|
|
88
87
|
...booleanConfigHelper(false),
|
|
89
88
|
},
|
|
89
|
+
debugForceTxProofVerification: {
|
|
90
|
+
env: 'DEBUG_FORCE_TX_PROOF_VERIFICATION',
|
|
91
|
+
description: 'Whether to skip waiting for the archiver to be fully synced before starting other services.',
|
|
92
|
+
...booleanConfigHelper(false),
|
|
93
|
+
},
|
|
90
94
|
};
|
|
91
95
|
|
|
92
96
|
/**
|
|
@@ -132,7 +136,7 @@ function createKeyStoreFromWeb3Signer(config: ConfigRequiredToBuildKeyStore): Ke
|
|
|
132
136
|
function createKeyStoreFromPrivateKeys(config: ConfigRequiredToBuildKeyStore): KeyStore | undefined {
|
|
133
137
|
const validatorKeyStores: ValidatorKeyStore[] = [];
|
|
134
138
|
const ethPrivateKeys = config.validatorPrivateKeys
|
|
135
|
-
? config.validatorPrivateKeys.getValue().map(x => ethPrivateKeySchema.parse(x))
|
|
139
|
+
? config.validatorPrivateKeys.getValue().map((x: string) => ethPrivateKeySchema.parse(x))
|
|
136
140
|
: [];
|
|
137
141
|
|
|
138
142
|
if (!ethPrivateKeys.length) {
|
|
@@ -142,7 +146,7 @@ function createKeyStoreFromPrivateKeys(config: ConfigRequiredToBuildKeyStore): K
|
|
|
142
146
|
const feeRecipient = config.feeRecipient ?? AztecAddress.ZERO;
|
|
143
147
|
|
|
144
148
|
const publisherKeys = config.publisherPrivateKeys
|
|
145
|
-
? config.publisherPrivateKeys.map(k => ethPrivateKeySchema.parse(k.getValue()))
|
|
149
|
+
? config.publisherPrivateKeys.map((k: { getValue: () => string }) => ethPrivateKeySchema.parse(k.getValue()))
|
|
146
150
|
: [];
|
|
147
151
|
|
|
148
152
|
validatorKeyStores.push({
|
package/src/aztec-node/server.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { Archiver, createArchiver } from '@aztec/archiver';
|
|
2
2
|
import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
|
|
3
|
-
import { type
|
|
3
|
+
import { type BlobClientInterface, createBlobClient } from '@aztec/blob-client/client';
|
|
4
|
+
import {
|
|
5
|
+
type BlobFileStoreMetadata,
|
|
6
|
+
createReadOnlyFileStoreBlobClients,
|
|
7
|
+
createWritableFileStoreBlobClient,
|
|
8
|
+
} from '@aztec/blob-client/filestore';
|
|
4
9
|
import {
|
|
5
10
|
ARCHIVE_HEIGHT,
|
|
6
11
|
INITIAL_L2_BLOCK_NUM,
|
|
@@ -10,17 +15,14 @@ import {
|
|
|
10
15
|
type PUBLIC_DATA_TREE_HEIGHT,
|
|
11
16
|
} from '@aztec/constants';
|
|
12
17
|
import { EpochCache, type EpochCacheInterface } from '@aztec/epoch-cache';
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
createEthereumChain,
|
|
18
|
-
getPublicClient,
|
|
19
|
-
} from '@aztec/ethereum';
|
|
18
|
+
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
19
|
+
import { getPublicClient } from '@aztec/ethereum/client';
|
|
20
|
+
import { RegistryContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
21
|
+
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
20
22
|
import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
21
23
|
import { compactArray, pick } from '@aztec/foundation/collection';
|
|
24
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
22
25
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
23
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
24
26
|
import { BadRequestError } from '@aztec/foundation/json-rpc';
|
|
25
27
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
26
28
|
import { count } from '@aztec/foundation/string';
|
|
@@ -28,7 +30,10 @@ import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
|
28
30
|
import { MembershipWitness, SiblingPath } from '@aztec/foundation/trees';
|
|
29
31
|
import { KeystoreManager, loadKeystores, mergeKeystores } from '@aztec/node-keystore';
|
|
30
32
|
import { trySnapshotSync, uploadSnapshot } from '@aztec/node-lib/actions';
|
|
31
|
-
import {
|
|
33
|
+
import {
|
|
34
|
+
createForwarderL1TxUtilsFromEthSigner,
|
|
35
|
+
createL1TxUtilsWithBlobsFromEthSigner,
|
|
36
|
+
} from '@aztec/node-lib/factories';
|
|
32
37
|
import { type P2P, type P2PClientDeps, createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
|
|
33
38
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
34
39
|
import {
|
|
@@ -38,6 +43,7 @@ import {
|
|
|
38
43
|
type SequencerPublisher,
|
|
39
44
|
createValidatorForAcceptingTxs,
|
|
40
45
|
} from '@aztec/sequencer-client';
|
|
46
|
+
import { CheckpointsBuilder } from '@aztec/sequencer-client';
|
|
41
47
|
import { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
42
48
|
import {
|
|
43
49
|
AttestationsBlockWatcher,
|
|
@@ -82,7 +88,7 @@ import {
|
|
|
82
88
|
type WorldStateSynchronizer,
|
|
83
89
|
tryStop,
|
|
84
90
|
} from '@aztec/stdlib/interfaces/server';
|
|
85
|
-
import type { LogFilter,
|
|
91
|
+
import type { LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
86
92
|
import { InboxLeaf, type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
87
93
|
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
88
94
|
import type { Offense, SlashPayloadRound } from '@aztec/stdlib/slashing';
|
|
@@ -155,6 +161,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
155
161
|
private proofVerifier: ClientProtocolCircuitVerifier,
|
|
156
162
|
private telemetry: TelemetryClient = getTelemetryClient(),
|
|
157
163
|
private log = createLogger('node'),
|
|
164
|
+
private blobClient?: BlobClientInterface,
|
|
158
165
|
) {
|
|
159
166
|
this.metrics = new NodeMetrics(telemetry, 'AztecNodeService');
|
|
160
167
|
this.tracer = telemetry.getTracer('AztecNodeService');
|
|
@@ -184,7 +191,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
184
191
|
logger?: Logger;
|
|
185
192
|
publisher?: SequencerPublisher;
|
|
186
193
|
dateProvider?: DateProvider;
|
|
187
|
-
|
|
194
|
+
blobClient?: BlobClientInterface;
|
|
188
195
|
p2pClientDeps?: P2PClientDeps<P2PClientType.Full>;
|
|
189
196
|
} = {},
|
|
190
197
|
options: {
|
|
@@ -197,8 +204,6 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
197
204
|
const packageVersion = getPackageVersion() ?? '';
|
|
198
205
|
const telemetry = deps.telemetry ?? getTelemetryClient();
|
|
199
206
|
const dateProvider = deps.dateProvider ?? new DateProvider();
|
|
200
|
-
const blobSinkClient =
|
|
201
|
-
deps.blobSinkClient ?? createBlobSinkClient(config, { logger: createLogger('node:blob-sink:client') });
|
|
202
207
|
const ethereumChain = createEthereumChain(config.l1RpcUrls, config.l1ChainId);
|
|
203
208
|
|
|
204
209
|
// Build a key store from file if given or from environment otherwise
|
|
@@ -238,7 +243,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
238
243
|
|
|
239
244
|
const publicClient = createPublicClient({
|
|
240
245
|
chain: ethereumChain.chainInfo,
|
|
241
|
-
transport: fallback(config.l1RpcUrls.map((url: string) => http(url))),
|
|
246
|
+
transport: fallback(config.l1RpcUrls.map((url: string) => http(url, { batch: false }))),
|
|
242
247
|
pollingInterval: config.viemPollingIntervalMS,
|
|
243
248
|
});
|
|
244
249
|
|
|
@@ -266,6 +271,25 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
266
271
|
);
|
|
267
272
|
}
|
|
268
273
|
|
|
274
|
+
const blobFileStoreMetadata: BlobFileStoreMetadata = {
|
|
275
|
+
l1ChainId: config.l1ChainId,
|
|
276
|
+
rollupVersion: config.rollupVersion,
|
|
277
|
+
rollupAddress: config.l1Contracts.rollupAddress.toString(),
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
const [fileStoreClients, fileStoreUploadClient] = await Promise.all([
|
|
281
|
+
createReadOnlyFileStoreBlobClients(config.blobFileStoreUrls, blobFileStoreMetadata, log),
|
|
282
|
+
createWritableFileStoreBlobClient(config.blobFileStoreUploadUrl, blobFileStoreMetadata, log),
|
|
283
|
+
]);
|
|
284
|
+
|
|
285
|
+
const blobClient =
|
|
286
|
+
deps.blobClient ??
|
|
287
|
+
createBlobClient(config, {
|
|
288
|
+
logger: createLogger('node:blob-client:client'),
|
|
289
|
+
fileStoreClients,
|
|
290
|
+
fileStoreUploadClient,
|
|
291
|
+
});
|
|
292
|
+
|
|
269
293
|
// attempt snapshot sync if possible
|
|
270
294
|
await trySnapshotSync(config, log);
|
|
271
295
|
|
|
@@ -273,7 +297,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
273
297
|
|
|
274
298
|
const archiver = await createArchiver(
|
|
275
299
|
config,
|
|
276
|
-
{
|
|
300
|
+
{ blobClient, epochCache, telemetry, dateProvider },
|
|
277
301
|
{ blockUntilSync: !config.skipArchiverInitialSync },
|
|
278
302
|
);
|
|
279
303
|
|
|
@@ -284,9 +308,10 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
284
308
|
options.prefilledPublicData,
|
|
285
309
|
telemetry,
|
|
286
310
|
);
|
|
287
|
-
const circuitVerifier =
|
|
288
|
-
|
|
289
|
-
|
|
311
|
+
const circuitVerifier =
|
|
312
|
+
config.realProofs || config.debugForceTxProofVerification
|
|
313
|
+
? await BBCircuitVerifier.new(config)
|
|
314
|
+
: new TestCircuitVerifier(config.proverTestVerificationDelayMs);
|
|
290
315
|
if (!config.realProofs) {
|
|
291
316
|
log.warn(`Aztec node is accepting fake proofs`);
|
|
292
317
|
}
|
|
@@ -330,6 +355,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
330
355
|
blockSource: archiver,
|
|
331
356
|
l1ToL2MessageSource: archiver,
|
|
332
357
|
keyStoreManager,
|
|
358
|
+
fileStoreBlobUploadClient: fileStoreUploadClient,
|
|
333
359
|
});
|
|
334
360
|
|
|
335
361
|
// If we have a validator client, register it as a source of offenses for the slasher,
|
|
@@ -403,7 +429,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
403
429
|
// Validator enabled, create/start relevant service
|
|
404
430
|
let sequencer: SequencerClient | undefined;
|
|
405
431
|
let slasherClient: SlasherClientInterface | undefined;
|
|
406
|
-
if (!config.disableValidator) {
|
|
432
|
+
if (!config.disableValidator && validatorClient) {
|
|
407
433
|
// We create a slasher only if we have a sequencer, since all slashing actions go through the sequencer publisher
|
|
408
434
|
// as they are executed when the node is selected as proposer.
|
|
409
435
|
const validatorAddresses = keyStoreManager
|
|
@@ -422,14 +448,29 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
422
448
|
);
|
|
423
449
|
await slasherClient.start();
|
|
424
450
|
|
|
425
|
-
const l1TxUtils =
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
451
|
+
const l1TxUtils = config.publisherForwarderAddress
|
|
452
|
+
? await createForwarderL1TxUtilsFromEthSigner(
|
|
453
|
+
publicClient,
|
|
454
|
+
keyStoreManager!.createAllValidatorPublisherSigners(),
|
|
455
|
+
config.publisherForwarderAddress,
|
|
456
|
+
{ ...config, scope: 'sequencer' },
|
|
457
|
+
{ telemetry, logger: log.createChild('l1-tx-utils'), dateProvider },
|
|
458
|
+
)
|
|
459
|
+
: await createL1TxUtilsWithBlobsFromEthSigner(
|
|
460
|
+
publicClient,
|
|
461
|
+
keyStoreManager!.createAllValidatorPublisherSigners(),
|
|
462
|
+
{ ...config, scope: 'sequencer' },
|
|
463
|
+
{ telemetry, logger: log.createChild('l1-tx-utils'), dateProvider },
|
|
464
|
+
);
|
|
431
465
|
|
|
432
466
|
// Create and start the sequencer client
|
|
467
|
+
const checkpointsBuilder = new CheckpointsBuilder(
|
|
468
|
+
{ ...config, l1GenesisTime, slotDuration: Number(slotDuration) },
|
|
469
|
+
archiver,
|
|
470
|
+
dateProvider,
|
|
471
|
+
telemetry,
|
|
472
|
+
);
|
|
473
|
+
|
|
433
474
|
sequencer = await SequencerClient.new(config, {
|
|
434
475
|
...deps,
|
|
435
476
|
epochCache,
|
|
@@ -438,12 +479,12 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
438
479
|
p2pClient,
|
|
439
480
|
worldStateSynchronizer,
|
|
440
481
|
slasherClient,
|
|
441
|
-
|
|
482
|
+
checkpointsBuilder,
|
|
442
483
|
l2BlockSource: archiver,
|
|
443
484
|
l1ToL2MessageSource: archiver,
|
|
444
485
|
telemetry,
|
|
445
486
|
dateProvider,
|
|
446
|
-
|
|
487
|
+
blobClient,
|
|
447
488
|
nodeKeyStore: keyStoreManager!,
|
|
448
489
|
});
|
|
449
490
|
}
|
|
@@ -455,6 +496,13 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
455
496
|
log.warn(`Sequencer created but not started`);
|
|
456
497
|
}
|
|
457
498
|
|
|
499
|
+
const globalVariableBuilder = new GlobalVariableBuilder({
|
|
500
|
+
...config,
|
|
501
|
+
rollupVersion: BigInt(config.rollupVersion),
|
|
502
|
+
l1GenesisTime,
|
|
503
|
+
slotDuration: Number(slotDuration),
|
|
504
|
+
});
|
|
505
|
+
|
|
458
506
|
return new AztecNodeService(
|
|
459
507
|
config,
|
|
460
508
|
p2pClient,
|
|
@@ -469,12 +517,13 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
469
517
|
epochPruneWatcher,
|
|
470
518
|
ethereumChain.chainInfo.id,
|
|
471
519
|
config.rollupVersion,
|
|
472
|
-
|
|
520
|
+
globalVariableBuilder,
|
|
473
521
|
epochCache,
|
|
474
522
|
packageVersion,
|
|
475
523
|
proofVerifier,
|
|
476
524
|
telemetry,
|
|
477
525
|
log,
|
|
526
|
+
blobClient,
|
|
478
527
|
);
|
|
479
528
|
}
|
|
480
529
|
|
|
@@ -648,25 +697,12 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
648
697
|
return this.contractDataSource.getContract(address);
|
|
649
698
|
}
|
|
650
699
|
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
* @param from - The block number from which to begin retrieving logs.
|
|
654
|
-
* @param limit - The maximum number of blocks to retrieve logs from.
|
|
655
|
-
* @returns An array of private logs from the specified range of blocks.
|
|
656
|
-
*/
|
|
657
|
-
public getPrivateLogs(from: BlockNumber, limit: number): Promise<PrivateLog[]> {
|
|
658
|
-
return this.logsSource.getPrivateLogs(from, limit);
|
|
700
|
+
public getPrivateLogsByTags(tags: SiloedTag[]): Promise<TxScopedL2Log[][]> {
|
|
701
|
+
return this.logsSource.getPrivateLogsByTags(tags);
|
|
659
702
|
}
|
|
660
703
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
* @param tags - The tags to filter the logs by.
|
|
664
|
-
* @param logsPerTag - The maximum number of logs to return for each tag. By default no limit is set
|
|
665
|
-
* @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
|
|
666
|
-
* that tag.
|
|
667
|
-
*/
|
|
668
|
-
public getLogsByTags(tags: Fr[], logsPerTag?: number): Promise<TxScopedL2Log[][]> {
|
|
669
|
-
return this.logsSource.getLogsByTags(tags, logsPerTag);
|
|
704
|
+
public getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[]): Promise<TxScopedL2Log[][]> {
|
|
705
|
+
return this.logsSource.getPublicLogsByTagsFromContract(contractAddress, tags);
|
|
670
706
|
}
|
|
671
707
|
|
|
672
708
|
/**
|
|
@@ -747,6 +783,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
747
783
|
await tryStop(this.p2pClient);
|
|
748
784
|
await tryStop(this.worldStateSynchronizer);
|
|
749
785
|
await tryStop(this.blockSource);
|
|
786
|
+
await tryStop(this.blobClient);
|
|
750
787
|
await tryStop(this.telemetry);
|
|
751
788
|
this.log.info(`Stopped Aztec Node`);
|
|
752
789
|
}
|
|
@@ -929,7 +966,9 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
929
966
|
|
|
930
967
|
public async getL1ToL2MessageBlock(l1ToL2Message: Fr): Promise<BlockNumber | undefined> {
|
|
931
968
|
const messageIndex = await this.l1ToL2MessageSource.getL1ToL2MessageIndex(l1ToL2Message);
|
|
932
|
-
return messageIndex
|
|
969
|
+
return messageIndex
|
|
970
|
+
? BlockNumber.fromCheckpointNumber(InboxLeaf.checkpointNumberFromIndex(messageIndex))
|
|
971
|
+
: undefined;
|
|
933
972
|
}
|
|
934
973
|
|
|
935
974
|
/**
|