@aztec-labs/ethereum 6.0.0-rc.1 → 6.0.0-rc.2

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.
@@ -10,11 +10,29 @@ export type L1EventLog<T> = {
10
10
  /** Event-specific arguments. */
11
11
  args: T;
12
12
  };
13
+ /** Whether a provider refused a log query for its range or response size, which a narrower range can fix. */
14
+ export declare function isLogRangeLimitError(err: unknown): boolean;
15
+ /** Whether a log query failed for a reason that fails every sub-range too, such as authentication or a rate limit. */
16
+ export declare function isPersistentLogFetchError(err: unknown): boolean;
13
17
  /**
14
- * Fetches L1 logs in a block range, halving the range at complete-block boundaries when the provider rejects it
15
- * (typically a log-range or response-size limit). A single block the provider cannot serve is a provider or history
16
- * failure and is thrown as such: a range this function returns is complete, and a failure is never reported as an
17
- * absence of logs.
18
+ * Fetches L1 logs in a block range, halving the range at complete-block boundaries when the provider refuses it for
19
+ * its range or response size.
20
+ *
21
+ * Only a refusal worded as a range or response-size limit is split on, and not when it also carries the marks of a
22
+ * failure that fails every sub-range too (an authentication failure, a rate limit, state the provider does not have).
23
+ * Anything else is rethrown as it arrived. Splitting on an unrecognized failure would turn one outage into hundreds of
24
+ * identical requests before reporting the same thing, and telling a range refusal apart from an outage by probing a
25
+ * narrower range adds requests and a heuristic that can misread a flaky provider. Failing is deliberate: a provider
26
+ * whose range-limit wording is not recognized is fixed by adding its wording to {@link LOG_RANGE_LIMIT_PATTERNS}, and
27
+ * the caller retries the whole fetch on its next sync.
28
+ *
29
+ * No request budget caps a call, because the recursion bounds itself: a refusal that persists down to a single block
30
+ * is thrown once the halving reaches that block, and a provider that serves only narrow ranges costs fewer than two
31
+ * requests per block in the range. A budget below that bound would fail a window that is making progress, and since
32
+ * the window is fetched again whole on the next sync, it would fail the same way every time.
33
+ *
34
+ * A single block the provider cannot serve is a provider or history failure and is thrown as such: a range this
35
+ * function returns is complete, and a failure is never reported as an absence of logs.
18
36
  */
19
37
  export declare function fetchLogsBisectingRange<T>(fromBlock: bigint, toBlock: bigint, fetch: (fromBlock: bigint, toBlock: bigint) => Promise<readonly T[]>): Promise<T[]>;
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RCw0Q0FBNEM7QUFDNUMsTUFBTSxNQUFNLFVBQVUsQ0FBQyxDQUFDLElBQUk7SUFDMUIsbURBQW1EO0lBQ25ELGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIscUJBQXFCO0lBQ3JCLFdBQVcsRUFBRSxRQUFRLENBQUM7SUFDdEIsa0RBQWtEO0lBQ2xELGlCQUFpQixFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7SUFDakMsZ0NBQWdDO0lBQ2hDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDVCxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsdUJBQXVCLENBQUMsQ0FBQyxFQUM3QyxTQUFTLEVBQUUsTUFBTSxFQUNqQixPQUFPLEVBQUUsTUFBTSxFQUNmLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUNuRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FjZCJ9
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RCw0Q0FBNEM7QUFDNUMsTUFBTSxNQUFNLFVBQVUsQ0FBQyxDQUFDLElBQUk7SUFDMUIsbURBQW1EO0lBQ25ELGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIscUJBQXFCO0lBQ3JCLFdBQVcsRUFBRSxRQUFRLENBQUM7SUFDdEIsa0RBQWtEO0lBQ2xELGlCQUFpQixFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7SUFDakMsZ0NBQWdDO0lBQ2hDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDVCxDQUFDO0FBZ0NGLDZHQUE2RztBQUM3Ryx3QkFBZ0Isb0JBQW9CLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBRzFEO0FBRUQsc0hBQXNIO0FBQ3RILHdCQUFnQix5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FNL0Q7QUE4QkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCx3QkFBc0IsdUJBQXVCLENBQUMsQ0FBQyxFQUM3QyxTQUFTLEVBQUUsTUFBTSxFQUNqQixPQUFPLEVBQUUsTUFBTSxFQUNmLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUNuRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FnQmQifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/contracts/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,4CAA4C;AAC5C,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,WAAW,EAAE,QAAQ,CAAC;IACtB,kDAAkD;IAClD,iBAAiB,EAAE,KAAK,MAAM,EAAE,CAAC;IACjC,gCAAgC;IAChC,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GACnE,OAAO,CAAC,CAAC,EAAE,CAAC,CAcd"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/contracts/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,4CAA4C;AAC5C,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,WAAW,EAAE,QAAQ,CAAC;IACtB,kDAAkD;IAClD,iBAAiB,EAAE,KAAK,MAAM,EAAE,CAAC;IACjC,gCAAgC;IAChC,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAgCF,6GAA6G;AAC7G,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAG1D;AAED,sHAAsH;AACtH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM/D;AA8BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GACnE,OAAO,CAAC,CAAC,EAAE,CAAC,CAgBd"}
@@ -1,15 +1,82 @@
1
1
  /**
2
- * Fetches L1 logs in a block range, halving the range at complete-block boundaries when the provider rejects it
3
- * (typically a log-range or response-size limit). A single block the provider cannot serve is a provider or history
4
- * failure and is thrown as such: a range this function returns is complete, and a failure is never reported as an
5
- * absence of logs.
2
+ * Message fragments providers use to refuse a log query for being too wide or returning too much, the failures a
3
+ * narrower range is known to fix. Matched on text because the JSON-RPC boundary leaves no error class or code behind
4
+ * that is common across providers. A refusal worded some other way is reported rather than split on: see
5
+ * {@link fetchLogsBisectingRange}.
6
+ */ const LOG_RANGE_LIMIT_PATTERNS = [
7
+ /(exceeds?|exceeded|over|beyond|limited to|no more than|maximum|max) .{0,40}blocks? range/i,
8
+ /blocks? range .{0,40}(too (large|wide|big)|exceed|limit)/i,
9
+ /range is too (large|wide|big)/i,
10
+ /too many (results|logs)/i,
11
+ /query returned more than/i,
12
+ /response size (is too large|exceeded)/i,
13
+ /result set too large/i,
14
+ /query timeout exceeded/i
15
+ ];
16
+ /**
17
+ * Message fragments of failures no narrower range can fix — an authentication failure, a rate limit, state or history
18
+ * the provider does not have — so splitting on them only multiplies the same request.
19
+ */ const LOG_FETCH_PERSISTENT_FAILURE_PATTERNS = [
20
+ /unauthori[sz]ed|forbidden|must be authenticated|invalid api key|api key is (missing|invalid)/i,
21
+ /rate limit|too many requests|compute units per second/i,
22
+ /missing trie node|header not found|unavailable on this node|pruned/i
23
+ ];
24
+ /** HTTP statuses a provider answers with for an authentication failure or a rate limit, whatever the range. */ const LOG_FETCH_PERSISTENT_HTTP_STATUSES = new Set([
25
+ 401,
26
+ 403,
27
+ 429
28
+ ]);
29
+ /** Whether a provider refused a log query for its range or response size, which a narrower range can fix. */ export function isLogRangeLimitError(err) {
30
+ const text = errorText(err);
31
+ return LOG_RANGE_LIMIT_PATTERNS.some((pattern)=>pattern.test(text));
32
+ }
33
+ /** Whether a log query failed for a reason that fails every sub-range too, such as authentication or a rate limit. */ export function isPersistentLogFetchError(err) {
34
+ if (errorChain(err).some((e)=>hasPersistentHttpStatus(e))) {
35
+ return true;
36
+ }
37
+ const text = errorText(err);
38
+ return LOG_FETCH_PERSISTENT_FAILURE_PATTERNS.some((pattern)=>pattern.test(text));
39
+ }
40
+ function hasPersistentHttpStatus(err) {
41
+ return typeof err === 'object' && err !== null && 'status' in err && typeof err.status === 'number' && LOG_FETCH_PERSISTENT_HTTP_STATUSES.has(err.status);
42
+ }
43
+ /** An error followed by its causes, since viem nests the provider's own error, not always as an `Error`. */ function errorChain(err) {
44
+ const chain = [];
45
+ let current = err;
46
+ for(let depth = 0; current !== undefined && current !== null && depth < 5; depth++){
47
+ chain.push(current);
48
+ current = typeof current === 'object' && 'cause' in current ? current.cause : undefined;
49
+ }
50
+ return chain;
51
+ }
52
+ /** The messages of an error and its causes, since viem nests the provider's own text. */ function errorText(err) {
53
+ return errorChain(err).map((e)=>e instanceof Error ? e.message : typeof e === 'string' ? e : JSON.stringify(e)).join(' | ');
54
+ }
55
+ /**
56
+ * Fetches L1 logs in a block range, halving the range at complete-block boundaries when the provider refuses it for
57
+ * its range or response size.
58
+ *
59
+ * Only a refusal worded as a range or response-size limit is split on, and not when it also carries the marks of a
60
+ * failure that fails every sub-range too (an authentication failure, a rate limit, state the provider does not have).
61
+ * Anything else is rethrown as it arrived. Splitting on an unrecognized failure would turn one outage into hundreds of
62
+ * identical requests before reporting the same thing, and telling a range refusal apart from an outage by probing a
63
+ * narrower range adds requests and a heuristic that can misread a flaky provider. Failing is deliberate: a provider
64
+ * whose range-limit wording is not recognized is fixed by adding its wording to {@link LOG_RANGE_LIMIT_PATTERNS}, and
65
+ * the caller retries the whole fetch on its next sync.
66
+ *
67
+ * No request budget caps a call, because the recursion bounds itself: a refusal that persists down to a single block
68
+ * is thrown once the halving reaches that block, and a provider that serves only narrow ranges costs fewer than two
69
+ * requests per block in the range. A budget below that bound would fail a window that is making progress, and since
70
+ * the window is fetched again whole on the next sync, it would fail the same way every time.
71
+ *
72
+ * A single block the provider cannot serve is a provider or history failure and is thrown as such: a range this
73
+ * function returns is complete, and a failure is never reported as an absence of logs.
6
74
  */ export async function fetchLogsBisectingRange(fromBlock, toBlock, fetch) {
75
+ let result;
7
76
  try {
8
- return [
9
- ...await fetch(fromBlock, toBlock)
10
- ];
77
+ result = await fetch(fromBlock, toBlock);
11
78
  } catch (err) {
12
- if (fromBlock >= toBlock) {
79
+ if (fromBlock >= toBlock || !shouldSplit(err)) {
13
80
  throw err;
14
81
  }
15
82
  const midBlock = fromBlock + (toBlock - fromBlock) / 2n;
@@ -22,4 +89,11 @@
22
89
  ...upper
23
90
  ];
24
91
  }
92
+ return [
93
+ ...result
94
+ ];
95
+ }
96
+ /** Whether a multi-block range that failed with `err` should be split. */ function shouldSplit(err) {
97
+ // Persistent first: a rate-limited response whose text also reads as a range limit still fails every sub-range.
98
+ return !isPersistentLogFetchError(err) && isLogRangeLimitError(err);
25
99
  }
@@ -4,7 +4,7 @@ import { Buffer32 } from '@aztec-labs/foundation/buffer';
4
4
  import { Fr } from '@aztec-labs/foundation/curves/bn254';
5
5
  import { EthAddress } from '@aztec-labs/foundation/eth-address';
6
6
  import { type ViemSignature } from '@aztec-labs/foundation/eth-signature';
7
- import { type AbiParameter, type Account, type GetContractReturnType, type Hex, type Log, type StateOverride, type TypedDataDefinition, type WatchContractEventReturnType } from 'viem';
7
+ import { type AbiParameter, type Account, type GetContractReturnType, type Hex, type Log, type StateOverride, type TransactionReceipt, type TypedDataDefinition, type WatchContractEventReturnType } from 'viem';
8
8
  import type { DeployAztecL1ContractsReturnType } from '../deploy_aztec_l1_contracts.js';
9
9
  import type { L1ContractAddresses } from '../l1_contract_addresses.js';
10
10
  import type { L1ReaderConfig } from '../l1_reader.js';
@@ -183,6 +183,14 @@ export type AttesterExitAuthorization = {
183
183
  deadline: bigint;
184
184
  signature: ViemSignature;
185
185
  };
186
+ /** Receipt and the unprocessed half-open range of a submitted authorization array. */
187
+ export type AttesterExitBatchResult = {
188
+ receipt: TransactionReceipt;
189
+ processedCount: number;
190
+ remainingCount: number;
191
+ remainingStartIndex: number | undefined;
192
+ remainingEndIndexExclusive: number | undefined;
193
+ };
186
194
  /**
187
195
  * Exit information for a validator
188
196
  */
@@ -506,22 +514,34 @@ export declare class RollupContract {
506
514
  buildAttesterExitTypedData(attester: EthAddress, deadline: bigint): TypedDataDefinition;
507
515
  /** Creates an attester exit authorization that can be submitted by another account. */
508
516
  createAttesterExitAuthorization(attester: EthAddress, deadline: bigint, signer: (typedData: TypedDataDefinition) => Promise<Hex>): Promise<AttesterExitAuthorization>;
517
+ /** Validates uniqueness, deadlines and EIP-712 signatures locally, without checking on-chain eligibility. */
518
+ validateAttesterExitAuthorizations(authorizations: AttesterExitAuthorization[]): Promise<void>;
519
+ /**
520
+ * Checks one authorization's signature against this rollup and chain with the rollup's ECDSA rules (v of 27 or 28,
521
+ * low s), without checking its deadline or other entries. `index` names the entry in errors.
522
+ */
523
+ validateAttesterExitSignature(authorization: AttesterExitAuthorization, index: number): Promise<void>;
524
+ private assertAttesterExitRollup;
509
525
  /** Initiates an attester exit. The transaction signer must be the position's attester. */
510
526
  initiateWithdrawByAttester(l1TxUtils: L1TxUtils, attester: EthAddress): ReturnType<L1TxUtils['sendAndMonitorTransaction']>;
511
527
  /** Relays one signed attester exit authorization. */
512
528
  initiateWithdrawByAttesterWithSignature(l1TxUtils: L1TxUtils, authorization: AttesterExitAuthorization): ReturnType<L1TxUtils['sendAndMonitorTransaction']>;
529
+ /** Simulates the selected batch endpoint without sending a transaction and returns the prefix that fits now. */
530
+ simulateAttesterExitBatch(authorizations: AttesterExitAuthorization[], upToLimit?: boolean): Promise<number>;
513
531
  /** Relays a signed attester exit batch that reverts unless every authorization can be processed. */
514
532
  initiateWithdrawByAttesterBatch(l1TxUtils: L1TxUtils, authorizations: AttesterExitAuthorization[]): ReturnType<L1TxUtils['sendAndMonitorTransaction']>;
515
533
  /** Relays the largest permitted prefix of a signed attester exit batch. */
516
534
  initiateWithdrawByAttesterBatchUpToLimit(l1TxUtils: L1TxUtils, authorizations: AttesterExitAuthorization[]): ReturnType<L1TxUtils['sendAndMonitorTransaction']>;
535
+ /** Submits signed exits and reports the processed prefix and remaining half-open index range from receipt events. */
536
+ submitAttesterExitBatch(l1TxUtils: L1TxUtils, authorizations: AttesterExitAuthorization[], upToLimit?: boolean): Promise<AttesterExitBatchResult>;
517
537
  getStakingAsset(): Promise<EthAddress>;
518
538
  getRewardConfig(): Promise<RewardConfig>;
519
539
  setupEpoch(l1TxUtils: L1TxUtils): Promise<{
520
- receipt: import("viem").TransactionReceipt;
540
+ receipt: TransactionReceipt;
521
541
  state: import("../l1_tx_utils/types.js").L1TxState;
522
542
  }>;
523
543
  vote(l1TxUtils: L1TxUtils, proposalId: bigint): Promise<{
524
- receipt: import("viem").TransactionReceipt;
544
+ receipt: TransactionReceipt;
525
545
  state: import("../l1_tx_utils/types.js").L1TxState;
526
546
  }>;
527
547
  /**
@@ -1442,25 +1462,6 @@ export declare class RollupContract {
1442
1462
  readonly internalType: "FeeAssetValue";
1443
1463
  }];
1444
1464
  readonly stateMutability: "view";
1445
- }, {
1446
- readonly type: "function";
1447
- readonly name: "getRegistryRewardOverrides";
1448
- readonly inputs: readonly [];
1449
- readonly outputs: readonly [{
1450
- readonly name: "";
1451
- readonly type: "tuple[2]";
1452
- readonly internalType: "struct RegistryRewardOverride[2]";
1453
- readonly components: readonly [{
1454
- readonly name: "registry";
1455
- readonly type: "address";
1456
- readonly internalType: "address";
1457
- }, {
1458
- readonly name: "sequencerReward";
1459
- readonly type: "uint96";
1460
- readonly internalType: "uint96";
1461
- }];
1462
- }];
1463
- readonly stateMutability: "view";
1464
1465
  }, {
1465
1466
  readonly type: "function";
1466
1467
  readonly name: "getRewardConfig";
@@ -1498,6 +1499,16 @@ export declare class RollupContract {
1498
1499
  readonly internalType: "contract IRewardDistributor";
1499
1500
  }];
1500
1501
  readonly stateMutability: "view";
1502
+ }, {
1503
+ readonly type: "function";
1504
+ readonly name: "getSequencerRewardCalculator";
1505
+ readonly inputs: readonly [];
1506
+ readonly outputs: readonly [{
1507
+ readonly name: "";
1508
+ readonly type: "address";
1509
+ readonly internalType: "address";
1510
+ }];
1511
+ readonly stateMutability: "view";
1501
1512
  }, {
1502
1513
  readonly type: "function";
1503
1514
  readonly name: "getSlasher";
@@ -2048,14 +2059,6 @@ export declare class RollupContract {
2048
2059
  }];
2049
2060
  }];
2050
2061
  readonly anonymous: false;
2051
- }, {
2052
- readonly type: "error";
2053
- readonly name: "RewardLib__DuplicateRegistryRewardOverride";
2054
- readonly inputs: readonly [{
2055
- readonly name: "registry";
2056
- readonly type: "address";
2057
- readonly internalType: "address";
2058
- }];
2059
2062
  }, {
2060
2063
  readonly type: "error";
2061
2064
  readonly name: "RewardLib__ZeroShares";
@@ -3331,6 +3334,16 @@ export declare class RollupContract {
3331
3334
  }];
3332
3335
  readonly outputs: readonly [];
3333
3336
  readonly stateMutability: "nonpayable";
3337
+ }, {
3338
+ readonly type: "function";
3339
+ readonly name: "setSequencerRewardCalculator";
3340
+ readonly inputs: readonly [{
3341
+ readonly name: "_calculator";
3342
+ readonly type: "address";
3343
+ readonly internalType: "address";
3344
+ }];
3345
+ readonly outputs: readonly [];
3346
+ readonly stateMutability: "nonpayable";
3334
3347
  }, {
3335
3348
  readonly type: "function";
3336
3349
  readonly name: "status";
@@ -4349,30 +4362,6 @@ export declare class RollupContract {
4349
4362
  readonly type: "address";
4350
4363
  readonly internalType: "address";
4351
4364
  }];
4352
- }, {
4353
- readonly type: "error";
4354
- readonly name: "RewardLib__CheckpointRewardsAboveMaximum";
4355
- readonly inputs: readonly [{
4356
- readonly name: "checkpointRewards";
4357
- readonly type: "uint256";
4358
- readonly internalType: "uint256";
4359
- }, {
4360
- readonly name: "maximumCheckpointRewards";
4361
- readonly type: "uint256";
4362
- readonly internalType: "uint256";
4363
- }];
4364
- }, {
4365
- readonly type: "error";
4366
- readonly name: "RewardLib__InvalidRegistryRewardOverride";
4367
- readonly inputs: readonly [{
4368
- readonly name: "registry";
4369
- readonly type: "address";
4370
- readonly internalType: "address";
4371
- }, {
4372
- readonly name: "sequencerReward";
4373
- readonly type: "uint256";
4374
- readonly internalType: "uint256";
4375
- }];
4376
4365
  }, {
4377
4366
  readonly type: "error";
4378
4367
  readonly name: "Rollup__CheckpointNotProven";
@@ -4769,6 +4758,33 @@ export declare class RollupContract {
4769
4758
  readonly type: "uint256";
4770
4759
  readonly internalType: "uint256";
4771
4760
  }];
4761
+ }, {
4762
+ readonly type: "error";
4763
+ readonly name: "SequencerRewardCalculatorLib__InsufficientGas";
4764
+ readonly inputs: readonly [{
4765
+ readonly name: "required";
4766
+ readonly type: "uint256";
4767
+ readonly internalType: "uint256";
4768
+ }, {
4769
+ readonly name: "available";
4770
+ readonly type: "uint256";
4771
+ readonly internalType: "uint256";
4772
+ }];
4773
+ }, {
4774
+ readonly type: "event";
4775
+ readonly name: "SequencerRewardCalculatorUpdated";
4776
+ readonly inputs: readonly [{
4777
+ readonly name: "oldCalculator";
4778
+ readonly type: "address";
4779
+ readonly indexed: false;
4780
+ readonly internalType: "address";
4781
+ }, {
4782
+ readonly name: "newCalculator";
4783
+ readonly type: "address";
4784
+ readonly indexed: false;
4785
+ readonly internalType: "address";
4786
+ }];
4787
+ readonly anonymous: false;
4772
4788
  }, {
4773
4789
  readonly type: "error";
4774
4790
  readonly name: "SignatureLib__InvalidSignature";
@@ -5509,22 +5525,6 @@ export declare class RollupContract {
5509
5525
  readonly type: "uint256";
5510
5526
  readonly internalType: "uint256";
5511
5527
  }];
5512
- }, {
5513
- readonly type: "error";
5514
- readonly name: "RewardLib__RegistryRewardOverrideAboveDefault";
5515
- readonly inputs: readonly [{
5516
- readonly name: "registry";
5517
- readonly type: "address";
5518
- readonly internalType: "address";
5519
- }, {
5520
- readonly name: "sequencerReward";
5521
- readonly type: "uint256";
5522
- readonly internalType: "uint256";
5523
- }, {
5524
- readonly name: "defaultSequencerReward";
5525
- readonly type: "uint256";
5526
- readonly internalType: "uint256";
5527
- }];
5528
5528
  }, {
5529
5529
  readonly type: "error";
5530
5530
  readonly name: "Rollup__UnavailableTempCheckpointLog";
@@ -5645,6 +5645,28 @@ export declare class RollupContract {
5645
5645
  readonly internalType: "bool";
5646
5646
  }];
5647
5647
  readonly stateMutability: "view";
5648
+ }, {
5649
+ readonly type: "function";
5650
+ readonly name: "getHasSubmittedFullEpoch";
5651
+ readonly inputs: readonly [{
5652
+ readonly name: "_epoch";
5653
+ readonly type: "uint256";
5654
+ readonly internalType: "Epoch";
5655
+ }, {
5656
+ readonly name: "_length";
5657
+ readonly type: "uint256";
5658
+ readonly internalType: "uint256";
5659
+ }, {
5660
+ readonly name: "_prover";
5661
+ readonly type: "address";
5662
+ readonly internalType: "address";
5663
+ }];
5664
+ readonly outputs: readonly [{
5665
+ readonly name: "";
5666
+ readonly type: "bool";
5667
+ readonly internalType: "bool";
5668
+ }];
5669
+ readonly stateMutability: "view";
5648
5670
  }, {
5649
5671
  readonly type: "function";
5650
5672
  readonly name: "invalidateInsufficientAttestations";
@@ -6422,18 +6444,9 @@ export declare class RollupContract {
6422
6444
  readonly type: "uint256";
6423
6445
  readonly internalType: "uint256";
6424
6446
  }, {
6425
- readonly name: "registryRewardOverrides";
6426
- readonly type: "tuple[2]";
6427
- readonly internalType: "struct RegistryRewardOverride[2]";
6428
- readonly components: readonly [{
6429
- readonly name: "registry";
6430
- readonly type: "address";
6431
- readonly internalType: "address";
6432
- }, {
6433
- readonly name: "sequencerReward";
6434
- readonly type: "uint96";
6435
- readonly internalType: "uint96";
6436
- }];
6447
+ readonly name: "sequencerRewardCalculator";
6448
+ readonly type: "address";
6449
+ readonly internalType: "address";
6437
6450
  }];
6438
6451
  }];
6439
6452
  readonly stateMutability: "nonpayable";
@@ -6603,4 +6616,4 @@ export declare class RollupContract {
6603
6616
  getTempCheckpointLogStorageSlot(checkpointNumber: CheckpointNumber, field: TempCheckpointLogField): Promise<bigint>;
6604
6617
  private computeTempCheckpointLogStorageSlot;
6605
6618
  }
6606
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL3JvbGx1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQWEsS0FBSyxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUtyRixPQUFPLEVBQ0wsS0FBSyxZQUFZLEVBQ2pCLEtBQUssT0FBTyxFQUVaLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUNSLEtBQUssR0FBRyxFQUVSLEtBQUssYUFBYSxFQUNsQixLQUFLLG1CQUFtQixFQUN4QixLQUFLLDRCQUE0QixFQVFsQyxNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEYsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0UsT0FBTyxLQUFLLEVBQUUsVUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0FHMUM7SUFFRCxzRUFBc0U7SUFDaEUsMkJBQTJCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBOEJ0RztJQUVELHNGQUFzRjtJQUN0RixNQUFNLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUU1RjtJQUVELGdGQUFnRjtJQUNoRixNQUFNLEtBQUssb0JBQW9CLElBQUksTUFBTSxDQUV4QztJQUVEOzs7O09BSUc7SUFDRywrQkFBK0IsQ0FDbkMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLEtBQUssRUFBRSxzQkFBc0IsR0FDNUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU1qQjtJQUVELE9BQU8sQ0FBQyxtQ0FBbUM7Q0FpQjVDIn0=
6619
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL3JvbGx1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQWEsS0FBSyxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUtyRixPQUFPLEVBQ0wsS0FBSyxZQUFZLEVBQ2pCLEtBQUssT0FBTyxFQUlaLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUNSLEtBQUssR0FBRyxFQUVSLEtBQUssYUFBYSxFQUNsQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLG1CQUFtQixFQUN4QixLQUFLLDRCQUE0QixFQVdsQyxNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEYsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0Us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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0FHMUM7SUFFRCxzRUFBc0U7SUFDaEUsMkJBQTJCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBOEJ0RztJQUVELHNGQUFzRjtJQUN0RixNQUFNLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUU1RjtJQUVELGdGQUFnRjtJQUNoRixNQUFNLEtBQUssb0JBQW9CLElBQUksTUFBTSxDQUV4QztJQUVEOzs7O09BSUc7SUFDRywrQkFBK0IsQ0FDbkMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLEtBQUssRUFBRSxzQkFBc0IsR0FDNUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU1qQjtJQUVELE9BQU8sQ0FBQyxtQ0FBbUM7Q0FpQjVDIn0=